diff --git a/src/media/video/accel.cpp b/src/media/video/accel.cpp index 47876089bd6811eb75bc1bc9eee27aa69f9aa074..f14592d329a52a49d2e277aa8b41142e3e2b3c3f 100644 --- a/src/media/video/accel.cpp +++ b/src/media/video/accel.cpp @@ -54,7 +54,9 @@ getFormatCb(AVCodecContext* codecCtx, const AVPixelFormat* formats) return avcodec_default_get_format(codecCtx, formats); } - for (int i = 0; formats[i] != AV_PIX_FMT_NONE; i++) { + AVPixelFormat fallback = AV_PIX_FMT_NONE; + for (int i = 0; formats[i] != AV_PIX_FMT_NONE; ++i) { + fallback = formats[i]; if (formats[i] == accel->format()) { accel->setWidth(codecCtx->coded_width); accel->setHeight(codecCtx->coded_height); @@ -62,7 +64,6 @@ getFormatCb(AVCodecContext* codecCtx, const AVPixelFormat* formats) accel->setCodecCtx(codecCtx); if (accel->init()) return accel->format(); - break; } } @@ -70,14 +71,7 @@ getFormatCb(AVCodecContext* codecCtx, const AVPixelFormat* formats) RING_WARN("Falling back to software decoding"); codecCtx->get_format = avcodec_default_get_format; codecCtx->get_buffer2 = avcodec_default_get_buffer2; - for (int i = 0; formats[i] != AV_PIX_FMT_NONE; i++) { - auto desc = av_pix_fmt_desc_get(formats[i]); - if (desc && !(desc->flags & AV_PIX_FMT_FLAG_HWACCEL)) { - return formats[i]; - } - } - - return AV_PIX_FMT_NONE; + return fallback; } static int