有没有办法从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用法,我知道。
答案 0 :(得分:1)
尝试使用
#include "libavutil/pixdesc.h"
pVideoInfo->bmiHeader.biBitCount = av_get_bits_per_pixel(&av_pix_fmt_descriptors[OUT_IMAGE_FORMAT]);