1

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

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

    //etc
}

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

PS 我需要它来填充 DirectShow 过滤器的 CMediaType,因此 bits_per_raw_sample 不合适,因为据我所知,它用于内部 libav 使用。

4

1 回答 1

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

于 2011-09-06T04:52:01.520 回答