有没有办法从PixelFormat类型的codecContext.pix_fmt获取像素的位计数?我使用开关手动进行操作:
switch (OUT_IMAGE_FORMAT)
{
case PIX_FMT_RGB24:
pVideoInfo->bmiHeader.biBitCount = 24;
do_something();
break;
//etc
}
但是,每次libav添加或删除某些像素格式时,都需要手动更新。或者,如果我需要添加一些以前不支持的像素格式。
附言我需要它来填充DirectShow过滤器的CMediaType,所以bits_per_raw_sample不适合,因为据我所知,它用于内部libav。
最佳答案
尝试使用
#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
关于c++ - 如何在libav中使用PixelFormat获取像素位数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7283735/