Как использовать vImageMatrixMultiply для преобразования из данных YUV строгального станка в 32 bpp, 8bpc RGBX?
У меня есть плоские данные YUV (420YpCbCr8BiPlanarFullRange), и я хотел бы преобразовать их в RBGX (RBGA, но с 255 в альфа-канале).
void * const luminescencePlaneBytes = ...;
void * const cbChrominancePlaneBytes = ...;
void * const crChrominancePlaneBytes = ...;
// ... Convert YUV planar -> RBGX 32bpp, 8bpc.
void *convertedBytes = ...
Документы vImage и этот ответ утверждают, что это возможно с помощью функции умножения матриц:
vImageMatrixMultiply_Planar8
Тем не менее, я не смог найти пример кода, который делает это.
1 ответ
420->RGBA888 включает в себя некоторое повышение частоты дискретизации, что означает, что vImageMatrixMultiply_Planar8 не будет делать это в одиночку. Вам нужно будет удвоить размер каналов цветности. После этого вы сможете сделать это с соответствующей матрицей.
Если у вас есть доступ к семени разработчиков iOS 8, я рекомендую вам взглянуть на vImageConvert_420Yp8_CbCr8ToARGB8888.