diff options
author | Lynne <dev@lynne.ee> | 2023-06-13 04:04:28 +0200 |
---|---|---|
committer | Lynne <dev@lynne.ee> | 2023-06-15 22:00:40 +0200 |
commit | f30b979ca20fa9589872328dbae05cb1dc7c64fd (patch) | |
tree | 60d143c9e3bdf2a14b5c2da469f9472346032a0d | |
parent | 41be6a5593ab498f8069f0dd11e7d7cebb1f6811 (diff) | |
download | ffmpeg-f30b979ca20fa9589872328dbae05cb1dc7c64fd.tar.gz |
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.
-rw-r--r-- | libavcodec/pthread_frame.c | 4 |
1 files changed, 4 insertions, 0 deletions
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); |