2011-09-02 67 views
1

有没有什么办法从PixelFormat类型的codecContext.pix_fmt中获取像素的位数?我使用开关手动执行:如何使用libav中的PixelFormat获取像素位数

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

    //etc 
} 

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

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

回答

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

+0

这就是我要找的,但是有一个小小的问题仍悬而未决MSVC我与libav使用:错误LNK2001解析的外部符号_av_pix_fmt_descriptors。 As [this](http://ffmpeg.arrozcru.org/forum/viewtopic.php?f=8&t=1514)主题说我可以通过手动编辑我不想做的libav头文件或者通过重新声明av_pix_fmt_descriptors []。有没有更好的方法来解决这个问题? –

+1

您可以尝试使用此处描述的“解决方法”https://lists.libav.org/pipermail/ffmpeg-devel/2010-October/098473.html – istepura

相关问题