aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndreas Rheinhardt <andreas.rheinhardt@outlook.com>2022-08-16 15:49:41 +0200
committerAndreas Rheinhardt <andreas.rheinhardt@outlook.com>2023-11-01 20:16:02 +0100
commiteba73142adc776d7fe0639d3cff23d878da0174a (patch)
tree27c0d97b1c45698370f6032c1c94735c7f4eb0e8
parent0c44f63b0282e2e830d5bf479016984cff69221a (diff)
downloadffmpeg-eba73142adc776d7fe0639d3cff23d878da0174a.tar.gz
avcodec/vp9: Join extradata buffer pools
Up until now each thread had its own buffer pool for extradata buffers when using frame-threading. Each thread can have at most three references to extradata and in the long run, each thread's bufferpool seems to fill up with three entries. But given that at any given time there can be at most 2 + number of threads entries used (the oldest thread can have two references to preceding frames that are not currently decoded and each thread has its own current frame, but there can be no references to any other frames), this is wasteful. This commit therefore uses a single buffer pool that is synced across threads. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
-rw-r--r--libavcodec/vp9.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/libavcodec/vp9.c b/libavcodec/vp9.c
index 26144c0a99..75e2e1d329 100644
--- a/libavcodec/vp9.c
+++ b/libavcodec/vp9.c
@@ -1845,6 +1845,8 @@ static int vp9_decode_update_thread_context(AVCodecContext *dst, const AVCodecCo
return ret;
}
}
+ ff_refstruct_replace(&s->frame_extradata_pool, ssrc->frame_extradata_pool);
+ s->frame_extradata_pool_size = ssrc->frame_extradata_pool_size;
s->s.h.invisible = ssrc->s.h.invisible;
s->s.h.keyframe = ssrc->s.h.keyframe;