我正在使用AVFoundation录制视频,并且视频输出配置为以像素格式提供帧:CVPixelFormatType.CV32BGRA。
我选择此格式是因为,与yuv420p帧相比,使用此格式进行裁剪和其他转换要容易得多。但是,最终的格式需要为CVPixelFormatType.CV420YpCbCr8BiPlanarVideoRange,因此我现在尝试使用vImageConvert中的以下方法,但无法正确绑定它。
我正在尝试从Xamarin访问vImageConvert_ARGB8888To420Yp8_CbCr8 C函数,但它不受支持或至少未绑定。
我尝试了以下方法:
[DllImport("/System/Library/Frameworks/Accelerate.framework/Frameworks/vImage.framework/vImage")]
extern static vImageError vImageConvert_ARGB8888To420Yp8_CbCr8(ref vImageBuffer src, ref vImageBuffer destYp, ref vImageBuffer destCbCr, vImage_ARGBToYpCbCr info, [MarshalAs(UnmanagedType.LPArray)]uint[] permuteMap, vImageFlags flags);
但是,我未能找到info参数的正确类型。应该只是IntPtr吗?而且,当我需要调用此外部静态方法时,如何解析正确的类型?
我一直在关注以下问题:How to convert BGRA to RGBA in Xamarin.iOS?,但现在我陷入了info参数的类型上。
谢谢。