当我使用AVAsynchronousVideoCompositionRequest时,我可以获得更小的CVPixelBufferRef:sourceFrameByTrackID吗?

时间:2017-08-04 10:47:00

标签: ios objective-c avfoundation

我通过应用VideoCompositor协议使用自定义AVVideoCompositing。 我使用AVAsynchronousVideoCompositionRequest:sourceFrameByTrackID来获取CVPixelBufferRef,但看起来此函数返回了原始大小的Image。 当我尝试对其应用过滤器时,我遇到了内存问题。我认为这可能是因为图像尺寸过大。

CVPixelBufferRef resultPixels = [request sourceFrameByTrackID:request.sourceTrackIDs[0].intValue];
CIImage *sourceImage = [CIImage imageWithCVPixelBuffer:resultPixels];
sourceImage = [self.filterComplex applyFilterComplexOnCIImage:sourceImage];
sourceImage = [sourceImage imageByApplyingOrientation:[self orientationAtTransform:simpleLayerInstruction.transform]];
sourceImage = [self scaleAndResizeCIImage:sourceImage forRect:CGRectMake(0, 0, renderSize.width, renderSize.height)];
resultPixels = [self applyFilterComplexOnCIImage:sourceImage
                                         context:self.filterRenderContext.cIContext];
[request finishWithComposedVideoFrame:resultPixels];

使用CVPixelBufferRef时,我可以获得更小的AVAsynchronousVideoCompositionRequest:sourceFrameByTrackID 我可以先将结果pixel调整为较小的CVPixelBufferRef吗? 然后我可以创建一个较小的CIImage

0 个答案:

没有答案