基本上,我想从iPhone相机中抓取帧,将它们输入到自定义过滤器,并将自定义过滤器的结果输入到我自己的CPU内存中,以便进一步处理。问题是相机每秒向滤镜发送30帧,我如何知道该滤镜何时完成?换句话说,当滤镜完成处理相机中的每一帧时,是否有回调函数?代码如下:
videoCamera = [[GPUImageVideoCamera alloc] initWithSessionPreset:AVCaptureSessionPreset640x480 cameraPosition:AVCaptureDevicePositionBack];
videoCamera.outputImageOrientation = UIInterfaceOrientationPortrait;
MyOwnGPUFilter *mof=[[MyOwnGPUFilter alloc] init];
[videoCamera addTarget:mof];
[videoCamera startCameraCapture];
答案 0 :(得分:1)
对于类似的内容,我建议使用GPUImageRawDataOutput类并设置其newFrameAvailableBlock
。如果将GPUImageRawDataOutput作为过滤器的目标,则在过滤器完成处理的瞬间将触发该块。
GPUImageRawDataOutput使您可以直接访问原始颜色数据,并使用最有效的方法将其拉下来。这样可以很容易地将这些颜色字节传递给CPU端处理。