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

How to get pixel bit count using PixelFormat in libav

本文关键字:像素 PixelFormat libav      更新时间:2023-10-16

是否有办法从codecContext中获得像素的位计数?pix_fmt的类型PixelFormat?我手动使用switch:

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

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

注:我需要它来填充CMediaType的DirectShow过滤器,所以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