summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlicia Boya García <ntrrgc@gmail.com>2019-12-19 17:58:56 +0100
committerAlicia Boya García <ntrrgc@gmail.com>2019-12-19 21:59:44 +0000
commitb7d450b11834d0a510fdcb661ce105860338e2d6 (patch)
tree58d38289c6c884bc2c0f50933602a2cf0ef5aad3
parent77f63c2457952ce6883002afe0dc9abe82b5e4e7 (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.c3
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