avcodec_get_hw_frames_parameters(), called by the user from get_format,
is allocating ctx->internal->hwaccel_priv_data. But the hardware
decoding setup may fail on the user side and it may fallback to software
decoding. In that case, ctx->internal->hwaccel_priv_data is still
allocated but not used anymore.

Fixes the following assert:

Assertion p_dst->hwaccel_threadsafe || (!dst->hwaccel && 
!dst->internal->hwaccel_priv_data) failed at src/libavcodec/pthread_frame.c:426
---
 libavcodec/decode.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/libavcodec/decode.c b/libavcodec/decode.c
index d1e10223f2..365fed68e5 100644
--- a/libavcodec/decode.c
+++ b/libavcodec/decode.c
@@ -1346,6 +1346,8 @@ int ff_get_format(AVCodecContext *avctx, const enum 
AVPixelFormat *fmt)
         if (!hw_config) {
             // No config available, so no extra setup required.
             ret = user_choice;
+            // Remove a potential failed hwaccel context
+            ff_hwaccel_uninit(avctx);
             break;
         }
         config = &hw_config->public;
-- 
2.45.2

_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".

Reply via email to