| From b7d450b11834d0a510fdcb661ce105860338e2d6 Mon Sep 17 00:00:00 2001 |
| From: =?UTF-8?q?Alicia=20Boya=20Garc=C3=ADa?= <ntrrgc@gmail.com> |
| Date: Thu, 19 Dec 2019 17:58:56 +0100 |
| Subject: [PATCH] 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`. |
| |
| Backport for 1.16.1. |
| --- |
| ext/libav/gstavviddec.c | 3 ++- |
| 1 file changed, 2 insertions(+), 1 deletion(-) |
| |
| 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 |
| @@ -494,7 +494,8 @@ |
| |
| if (ffmpegdec->max_threads == 0) { |
| if (!(oclass->in_plugin->capabilities & AV_CODEC_CAP_AUTO_THREADS)) |
| - 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 |
| -- |
| 2.23.0 |
| |