我从一个AVAsset
中得到了一个CVPixelBufferRef
。 我想对它应用一个CIFilter
。 我使用以下代码:
CVPixelBufferRef pixelBuffer = ...
CVPixelBufferRef newPixelBuffer = // empty pixel buffer to fill
CIContex *context = // CIContext created from EAGLContext
CGAffineTransform preferredTransform = // AVAsset track preferred transform
CIImage *phase1 = [CIImage imageWithCVPixelBuffer:pixelBuffer];
CIImage *phase2 = [phase1 imageByApplyingTransform:preferredTransform];
CIImage *phase3 = [self applyFiltersToImage:phase2];
[context render:phase3 toCVPixelBuffer:newPixelBuffer bounds:phase3.extent colorSpace:CGColorSpaceCreateDeviceRGB()];
很不幸,我获得的结果方向不正确。例如,以纵向模式拍摄的视频是倒置的。我猜问题在于从 AVAsset
转换到 CoreImage
坐标系统(在XCode中为 phase2 显示预览也会呈现不正确的结果)。如何解决?