用C ++编写的NV12到RGB24转换代码

时间:2012-04-20 10:40:57

标签: c++ winapi intel codec color-codes

有谁知道如何将英特尔媒体SDK(版本:Media SDK 2010)H.264视频帧解码输出NV12格式转换为RGB888(RGB24)位转换?

基本上Media SDK解码器输出将采用NV12格式,并且渲染需要RGB24位格式,因此,如果任何转换代码可用于转换NV12 - > RGB24将对我们有很大帮助。

2 个答案:

答案 0 :(得分:5)

查看YUV to RGB Conversion,然后您可以使用有关YUV pixel formats(链接指向NV12)的信息作为第一个链接的输入并进行转换。

答案 1 :(得分:3)

查看此代码: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;
}