如何在Xamarin.iOS中将ARGB8888转换为420Yp8_CbCr8?

时间:2019-01-23 12:54:41

标签: xamarin yuv

我正在使用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参数的类型上。

谢谢。

0 个答案:

没有答案