Hwaccel с AVCodec в FFMPEG? - PullRequest
       60

Hwaccel с AVCodec в FFMPEG?

1 голос
/ 10 апреля 2019

Я использую AVCodec в качестве декодера видеопотока и хотел бы узнать, возможно ли использовать аппаратное ускорение с hwaccel через FFMPEG?или он уже используется по умолчанию?Я уже перечислил доступные кодеки, но я не понимаю, как реализовать их в моем коде.

    AVHWAccel* pHwaccel = NULL;
    pHwaccel = av_hwaccel_next(NULL);

    while(pHwaccel!=NULL)
    {
        TkCore::Logger::info("%s", pHwaccel->name);
        pHwaccel = av_hwaccel_next(pHwaccel);
    }

Я получаю: h264_qsv, h264_vaapi, h264_vdpaufor h264.Я видел, что команда: AVHWAccel * ff_find_hwaccel (codecID enum codec_id, enum PixelFormat pix_fmt) устарела.Заранее благодарю за помощь.

Ответы [ 2 ]

0 голосов
/ 15 апреля 2019

Я понял вызов декодера с помощью "avcodec_find_encoder", но я не вижу, как применить аппаратное ускорение к этому декодированному кадру ... Я видел, что pix_fmt смог назначить материальное ускорение, например, если pix_fmt = Этоточно так, как это было в h264.Вопрос только в том, какая функция используется для ускорения vdpau ...

0 голосов
/ 11 апреля 2019

См. этот поток на libav-user. По сути, после перечисления ускоренных кодеков hw вы можете попытаться найти соответствующий декодер с помощью avcodec_find_decoder_by_name (поскольку структура AVHWAccel имеет поле имени), а затем использовать его для декодирования. Но тогда вам нужно знать кодек заранее. Если вы используете avformat_open_input, вы можете просто попытаться найти соответствующий ускоренный декодер hw по идентификатору кодека из информации о потоке, затем открыть ускоренный кодек hw по имени и использовать его.

...