From f30b979ca20fa9589872328dbae05cb1dc7c64fd Mon Sep 17 00:00:00 2001 From: Lynne Date: Tue, 13 Jun 2023 04:04:28 +0200 Subject: [PATCH] pthread_frame: uninit the hwaccel of each frame thread The issue is that with a threadsafe hwaccel and multiple enabled frame threads, hwaccel->uninit() is never called. Previously, the function was guaranteed to never have any threads with hwaccel contexts, so it never bothered to uninit any. --- libavcodec/pthread_frame.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/libavcodec/pthread_frame.c b/libavcodec/pthread_frame.c index 28335231fd..008f3da43b 100644 --- a/libavcodec/pthread_frame.c +++ b/libavcodec/pthread_frame.c @@ -751,6 +751,10 @@ void ff_frame_thread_free(AVCodecContext *avctx, int thread_count) if (codec->close && p->thread_init != UNINITIALIZED) codec->close(ctx); + /* When using a threadsafe hwaccel, this is where + * each thread's context is uninit'd and freed. */ + ff_hwaccel_uninit(ctx); + if (ctx->priv_data) { if (codec->p.priv_class) av_opt_free(ctx->priv_data);