Скажем, я использую av_hwdevice_find_type_by_name("cuda")
, как в здесь . Мне нужно преобразовать декодированные кадры в RGB, используя SwsContext
. По своему опыту я знаю, что при использовании декодера cuda / cuvid я получаю кадры в формате AV_PIX_FMT_NV12
, хотя каждая структура, на которую я смотрю, говорит либо AV_PIX_FMT_NONE
, либо AV_PIX_FMT_YUV420P
.
В каком поле какой структуры я могу получить значение AV_PIX_FMT_NV12
, чтобы я мог удалить свой жестко запрограммированный исходный формат при моем вызове SwsContext.sws_scale
? Спасибо!
Обновление:
Похоже, я могу получить это:
AVCodecContext* avctx;
...
frames_ctx = (AVHWFramesContext*)avctx->hw_frames_ctx->data;
AVPixelFormat pixel_fmt = frames_ctx->sw_format;
... после декодирования хотя бы одного кадра. Не уверен, что это правильный путь.