如何在libav中使用PixelFormat获取像素位数

时间:2011-09-02 12:57:25

标签: c++ directshow libav

有没有办法从PixelFormat类型的codecContext.pix_fmt获取像素的位数?我是使用开关手动完成的:

switch (OUT_IMAGE_FORMAT)
{
    case PIX_FMT_RGB24:
        pVideoInfo->bmiHeader.biBitCount = 24;
        do_something();
        break;

    //etc
}

但每次libav添加或删除某些像素格式时都需要手动更新。或者,如果我需要添加一些之前不支持的像素格式。

P.S。我需要它来填充CMediaType for DirectShow过滤器,所以bits_per_raw_sample是不合适的,因为它是内部libav用法,我知道。

1 个答案:

答案 0 :(得分:1)

尝试使用

#include "libavutil/pixdesc.h"

pVideoInfo->bmiHeader.biBitCount =  av_get_bits_per_pixel(&av_pix_fmt_descriptors[OUT_IMAGE_FORMAT]);

http://ffmpeg.org/doxygen/trunk/pixfmt_8h.html