YUV420转RGBA

来源:互联网 发布:免费一级域名注册 编辑:程序博客网 时间:2024/06/06 01:36

今天发现,在ffmpeg解码mp4视频的libavformat/mov.c中,有一个YUV420转RGBA的函数,特意单独提取出来,供以后参考,具体如下:

static uint32_t yuv_to_rgba(uint32_t ycbcr){    uint8_t r, g, b;    int y, cb, cr;    y  = (ycbcr >> 16) & 0xFF;    cr = (ycbcr >> 8)  & 0xFF;    cb =  ycbcr        & 0xFF;    b = av_clip_uint8((1164 * (y - 16)                     + 2018 * (cb - 128)) / 1000);    g = av_clip_uint8((1164 * (y - 16) -  813 * (cr - 128) -  391 * (cb - 128)) / 1000);    r = av_clip_uint8((1164 * (y - 16) + 1596 * (cr - 128)                    ) / 1000);    return (r << 16) | (g << 8) | b;}

上面的转换公式对于一般自己写格式转换的时候比较有用,但是ffmpeg其实是用汇编写的这个转换函数,据说速度是非常非常快的。

0 0