Как получить количество пикселей в PixelFormat в libav - PullRequest
1 голос
/ 02 сентября 2011

Есть ли способ получить счетчик битов в пикселях из codecContext.pix_fmt типа PixelFormat? Я делаю это вручную, используя переключатель:

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

    //etc
}

, но это требует ручного обновления каждый раз, когда libav добавляет или удаляет некоторые форматы пикселей. Или если мне нужно будет добавить какой-нибудь пиксельный формат, который не был поддержан ранее.

P.S. Мне нужно, чтобы он заполнил CMediaType для фильтров DirectShow, так что bits_per_raw_sample не подходит, так как для внутреннего использования libav, как я знаю.

1 Ответ

1 голос
/ 06 сентября 2011

Попробуйте использовать

#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

...