xamarin - 如何在 Xamarin.iOS 中将 ARGB8888 转换为 420Yp8_CbCr8?
问题描述
我正在使用 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 吗?如果我需要调用这个外部静态方法时如何解析正确的类型?
我在关注这个 SO 问题:How to convert BGRA to RGBA in Xamarin.iOS? 但现在我被困在 info 参数的类型上。
谢谢。
解决方案
推荐阅读
- python - python中的束类型和字典类型有什么区别?
- matching - 用于相似匹配的局部敏感度散列
- sqlite - 如何在 ruby-on-rails 中设置 Sqlite3 的日志模式
- python - 如何将歌曲/目录添加到 Python MPD 播放列表
- java - 哪个是更好的选择?@Async 有或没有 ThreadPoolExecutor?
- c - 使用 Renesas G1E 工具链进行交叉编译。尽管库文件已经存在于 lib 目录中,但出现链接器错误
- react-native - React Navigator 不工作并且不移动到下一个屏幕
- asp.net-core - 对在整个 ASP.NET Core 3 应用程序中使用完全相同的 HTTPContextAccessor 实例感到困惑?
- reactjs - React-Apollo:推荐订阅多个不需要 UI 更新的事件的方式
- c# - 是否可以从 Web 应用程序调用 Windows 服务或进程?