From 5647f479c4878bd8449afe34a455520808ac5dfe Mon Sep 17 00:00:00 2001 From: Richard Fuchs Date: Fri, 7 Jun 2024 10:44:23 -0400 Subject: [PATCH] MT#55283 support setting cc-opus-complexity Change-Id: I30130557420e1f53cf69f14e8bed2f3016e22397 --- lib/auxlib.c | 7 +++++++ lib/auxlib.h | 1 + lib/codeclib.c | 4 ++++ 3 files changed, 12 insertions(+) diff --git a/lib/auxlib.c b/lib/auxlib.c index 4b9e4a613..3c2c8c72a 100644 --- a/lib/auxlib.c +++ b/lib/auxlib.c @@ -175,6 +175,7 @@ void config_load(int *argc, char ***argv, GOptionEntry *app_entries, const char #else rtpe_common_config_ptr->default_log_level = LOG_DEBUG; #endif + rtpe_common_config_ptr->codec_chain_opus_complexity = -1; g_autoptr(GKeyFile) kf = g_key_file_new(); @@ -209,6 +210,7 @@ void config_load(int *argc, char ***argv, GOptionEntry *app_entries, const char { "codec-chain-runners",0,0, G_OPTION_ARG_INT, &rtpe_common_config_ptr->codec_chain_runners,"Number of chain runners per codec","INT" }, { "codec-chain-concurrency",0,0,G_OPTION_ARG_INT, &rtpe_common_config_ptr->codec_chain_concurrency,"Max concurrent codec jobs per runner","INT" }, { "codec-chain-async",0,0, G_OPTION_ARG_INT, &rtpe_common_config_ptr->codec_chain_async,"Number of background callback threads","INT" }, + { "codec-chain-opus-complexity",0,0,G_OPTION_ARG_INT, &rtpe_common_config_ptr->codec_chain_opus_complexity,"Opus encoding complexity (0..10)","INT" }, #endif { NULL, } }; @@ -402,6 +404,11 @@ out: if (rtpe_common_config_ptr->codec_chain_async < 0) rtpe_common_config_ptr->codec_chain_async = 0; + + if (rtpe_common_config_ptr->codec_chain_opus_complexity == -1) + rtpe_common_config_ptr->codec_chain_opus_complexity = 10; + if (rtpe_common_config_ptr->codec_chain_opus_complexity < 0 || rtpe_common_config_ptr->codec_chain_opus_complexity > 10) + die("Invalid value for --codec-chain-opus-complexity"); #endif #if HAVE_LIBURING diff --git a/lib/auxlib.h b/lib/auxlib.h index ce0cd6be0..3694871a2 100644 --- a/lib/auxlib.h +++ b/lib/auxlib.h @@ -42,6 +42,7 @@ struct rtpengine_common_config { int codec_chain_runners; int codec_chain_concurrency; int codec_chain_async; + int codec_chain_opus_complexity; }; extern struct rtpengine_common_config *rtpe_common_config_ptr; diff --git a/lib/codeclib.c b/lib/codeclib.c index b4d30b87b..1c3c0a2a5 100644 --- a/lib/codeclib.c +++ b/lib/codeclib.c @@ -5241,6 +5241,7 @@ static codec_cc_t *codec_cc_new_sync(codec_def_t *src, format_t *src_format, cod ret->pcma2opus.enc = cc_client_float2opus_new_ext(cc_client, (codec_chain_opus_arguments) { .bitrate = bitrate, + .complexity = rtpe_common_config_ptr->codec_chain_opus_complexity, }); ret->clear = cc_float2opus_clear; ret->clear_arg = ret->pcma2opus.enc; @@ -5267,6 +5268,7 @@ static codec_cc_t *codec_cc_new_sync(codec_def_t *src, format_t *src_format, cod ret->pcmu2opus.enc = cc_client_float2opus_new_ext(cc_client, (codec_chain_opus_arguments) { .bitrate = bitrate, + .complexity = rtpe_common_config_ptr->codec_chain_opus_complexity, }); ret->clear = cc_float2opus_clear; ret->clear_arg = ret->pcmu2opus.enc; @@ -5349,6 +5351,7 @@ static codec_cc_t *codec_cc_new_async(codec_def_t *src, format_t *src_format, co ret->pcma2opus.enc = cc_client_float2opus_new_ext(cc_client, (codec_chain_opus_arguments) { .bitrate = bitrate, + .complexity = rtpe_common_config_ptr->codec_chain_opus_complexity, }); ret->clear = cc_float2opus_clear; ret->clear_arg = ret->pcma2opus.enc; @@ -5381,6 +5384,7 @@ static codec_cc_t *codec_cc_new_async(codec_def_t *src, format_t *src_format, co ret->pcmu2opus.enc = cc_client_float2opus_new_ext(cc_client, (codec_chain_opus_arguments) { .bitrate = bitrate, + .complexity = rtpe_common_config_ptr->codec_chain_opus_complexity, }); ret->clear = cc_float2opus_clear; ret->clear_arg = ret->pcmu2opus.enc;