Код преобразования NV12 в RGB24 в C++

Кто-нибудь знает, как преобразовать Intel Media SDK (версия: Media SDK 2010) H.264 видеоформат декодированный выходной формат NV12 в RGB888 (RGB24) бит преобразования?

По сути, выходной файл Media SDK-декодера будет в формате NV12, а для рендеринга необходим битовый формат RGB24, поэтому, если какой-либо код преобразования, доступный для преобразования NV12->RGB24, будет для нас большой помощью.

2 ответа

Решение

Посмотрите на преобразование YUV в RGB, и после этого вы можете использовать информацию о форматах пикселей YUV (ссылка направлена ​​на NV12) в качестве входных данных для первой ссылки и выполнить преобразование.

Проверьте этот код: https://github.com/andrechen/yuv2rgb Хотя это для NV21, но единственное отличие - это порядок байтов UV (VU). Все, что вам нужно сделать, это изменить порядок (функция loadvu):

static void loadvu(int& U, int& V, unsigned char const* &uv) {
    U = (*uv++) - 128;
    V = (*uv++) - 128;
}
Другие вопросы по тегам