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 предоставляет вам прямой доступ к необработанным данным о цвете и использует наиболее эффективные средства, которые он может использовать. Это должно облегчить передачу этих цветовых байтов в процессорную обработку на стороне процессора.