如何使用 vImageMatrixMultiply 将 YUV 平面数据转换为 32 bpp、8bpc RGBX?

Posted

技术标签:

【中文标题】如何使用 vImageMatrixMultiply 将 YUV 平面数据转换为 32 bpp、8bpc RGBX?【英文标题】:How to use vImageMatrixMultiply to convert from YUV planer data to 32 bpp, 8bpc RGBX? 【发布时间】:2014-05-27 21:45:58 【问题描述】:

我有 YUV 平面数据 (420YpCbCr8BiPlanarFullRange),我想将其转换为 RBGX(RBGA,但 alpha 通道中有 255)。

void * const luminescencePlaneBytes = ...;
void * const cbChrominancePlaneBytes = ...;
void * const crChrominancePlaneBytes = ...;

// ... Convert YUV planar -> RBGX 32bpp, 8bpc.
void *convertedBytes = ... 

vImage docs 和 this answer 状态可以使用矩阵乘法函数:

vImageMatrixMultiply_Planar8

但是,我一直找不到任何示例代码来执行此操作。

【问题讨论】:

Fastest YUV420P to RGBA conversion on ios using the CPU的可能重复 @David - 是的!没看到那个,谢谢不幸的是,该问题的答案是使用vImageMatrixMultiply,这是我坚持的部分。我将重新表述这个问题,专门询问有关使用该功能的问题。 【参考方案1】:

420->RGBA888 涉及一些上采样,这意味着 vImageMatrixMultiply_Planar8 不会单独进行。您需要将色度通道的大小加倍。之后,您应该能够使用适当的矩阵来做到这一点。

如果您可以访问 iOS 8 开发者种子,那么我建议您查看vImageConvert_420Yp8_CbCr8ToARGB8888。

【讨论】:

以上是关于如何使用 vImageMatrixMultiply 将 YUV 平面数据转换为 32 bpp、8bpc RGBX?的主要内容,如果未能解决你的问题,请参考以下文章

如果加入条件,我该如何解决。如果使用字符串连接,我如何使用

如何使用本机反应创建登录以及如何验证会话

如何在自动布局中使用约束标识符以及如何使用标识符更改约束? [迅速]

如何使用 AngularJS 的 ng-model 创建一个数组以及如何使用 jquery 提交?

如何使用laravel保存所有行数据每个行名或相等

如何使用 Math.Net 连接矩阵。如何使用 Math.Net 调用特定的行或列?