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

标签 ios avfoundation accelerate-framework vimage

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

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

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

vImage docsthis answer声明这可以使用矩阵乘法函数:

vImageMatrixMultiply_Planar8

但是,我一直找不到任何示例代码来做到这一点。

最佳答案

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

如果您有权访问 iOS 8 开发者种子,那么我建议您查看 vImageConvert_420Yp8_CbCr8ToARGB8888 .

关于ios - 如何使用 vImageMatrixMultiply 将 YUV 平面数据转换为 32 bpp、8bpc RGBX?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23899500/

相关文章:

swift - 为什么有时 Apple Accelerate 框架很慢?

ios - 如何在运行时区分 xcode 中的多个目标

ios - 录制时向我的视频添加音频 - Swift 4

ios - 使用 AVFoundation,如何从视频的所有帧中删除中间 400 像素

iOS 启用 kAudioUnitProperty_MeteringMode

ios - 来自 Accelerate 的 tanh 与 C 中的 tanh

iphone - iOS6 MKMapView 自定义注释不呈现

ios - 如何使用 UITableViewCell EditingStyle Insert 在单元格上显示 AccessoryView?

xcode - 如何仅在链接时有条件地使用静态库