如何使用 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?的主要内容,如果未能解决你的问题,请参考以下文章
如何在自动布局中使用约束标识符以及如何使用标识符更改约束? [迅速]