Я ищу самый быстрый способ преобразования одного массива YUV в массив RGBA .Например, для массива YCbYCr, представляющего собой последовательность байтов:
YCbYCr = Luma0, Cb0, Luma1, Cr0, Luma2, ...
, где 8-битные компоненты с синей и 8-битной цветоразностной цветовой разницей дискретизируются с периодом 2, но 8-битной яркостьюпроизводится выборка с периодом 1. Например:
- пиксель изображения (0,0) имеет luma0, Cr0-красную разность цветов, Cb0-синяя разность цветов
- пиксель изображения (0,1) имеет яркость 1, цветность Cr0 красный, цветность Cb0 синий
- пиксель изображения (0,2) имеет яркость 2, цветность Cr1 красный, цвет Cb1 синий цвет
- пиксель (0,3) имеет luma3, Cr1-красную разность цветов, Cb1-синюю цветность
- и т. д.
Должен быть получен массив RGBA:
RGBA = R0, G0, B0, A0, R1, G1, ...
, где все элементы являются беззнаковыми символами, а все биты каждого A # равны нулю.
Компонентом Luma в YCbYCr является 0..255 беззнаковых символа, Cb и Cr - -127 .. + 126 знаковых символов.Существует стандартный подход - умножение матриц, но оно очень медленное для приложений реального времени и работает с числами с плавающей запятой.Я ищу быстрый приближенный численный метод.