diff options
author | Alicia Boya García <ntrrgc@gmail.com> | 2019-12-19 17:58:56 +0100 |
---|---|---|
committer | Alicia Boya García <ntrrgc@gmail.com> | 2019-12-19 21:59:44 +0000 |
commit | b7d450b11834d0a510fdcb661ce105860338e2d6 (patch) | |
tree | 58d38289c6c884bc2c0f50933602a2cf0ef5aad3 | |
parent | 77f63c2457952ce6883002afe0dc9abe82b5e4e7 (diff) |
gstavviddec: Limit default number of decoder threads
When the `max-threads` property is not specified, GStreamer defaults to
the amount of CPU threads in the system.
The number of threads used in avdec has a direct impact on the latency
of the decoder, which is of as many frames as threads. Therefore, big
numbers of threads can make latency levels that can be problematic in
some applications.
For this reason, ffmpeg emits a warning when more than 16 threads are
requested.
This patch limits the default number of threads to 16. This affects only
computers with more than 16 CPU threads when using avviddec without
setting `max-threads`.
-rw-r--r-- | ext/libav/gstavviddec.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/ext/libav/gstavviddec.c b/ext/libav/gstavviddec.c index 650de2d..edde934 100644 --- a/ext/libav/gstavviddec.c +++ b/ext/libav/gstavviddec.c @@ -546,7 +546,8 @@ gst_ffmpegviddec_set_format (GstVideoDecoder * decoder, * to one frame per thread. We thus need to calculate the thread count ourselves */ if ((!(oclass->in_plugin->capabilities & AV_CODEC_CAP_AUTO_THREADS)) || (ffmpegdec->context->thread_type & FF_THREAD_FRAME)) - ffmpegdec->context->thread_count = gst_ffmpeg_auto_max_threads (); + ffmpegdec->context->thread_count = + MIN (gst_ffmpeg_auto_max_threads (), 16); else ffmpegdec->context->thread_count = 0; } else |