Как использовать 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.

Другие вопросы по тегам