Код преобразования 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;
}