GPUImage: есть ли функция обратного вызова, когда фильтр завершает обработку кадра из GPUImageVideoCamera

По сути, я хочу захватывать кадры с камеры iPhone, вводить их в пользовательский фильтр и получать результат от этого пользовательского фильтра в собственную память ЦП для дальнейшей обработки. Возникает вопрос, что камера отправляет фильтру 30 кадров в секунду. Как узнать, когда кадр выполняется этим фильтром? Другими словами, есть ли функция обратного вызова, когда фильтр завершает обработку каждого кадра с камеры? код выглядит следующим образом:

    videoCamera = [[GPUImageVideoCamera alloc] initWithSessionPreset:AVCaptureSessionPreset640x480 cameraPosition:AVCaptureDevicePositionBack];
    videoCamera.outputImageOrientation = UIInterfaceOrientationPortrait;
    MyOwnGPUFilter *mof=[[MyOwnGPUFilter alloc] init];
    [videoCamera addTarget:mof];
    [videoCamera startCameraCapture];

1 ответ

Решение

Для чего-то подобного я рекомендую использовать класс GPUImageRawDataOutput и установить его newFrameAvailableBlock, Если вы сделаете GPUImageRawDataOutput целью вашего фильтра, этот блок сработает, как только фильтр завершит обработку.

GPUImageRawDataOutput предоставляет вам прямой доступ к необработанным данным о цвете и использует наиболее эффективные средства, которые он может использовать. Это должно облегчить передачу этих цветовых байтов в процессорную обработку на стороне процессора.

Другие вопросы по тегам