From 11a746acd3de12e8b067283f977c6f7eaeb3ada1 Mon Sep 17 00:00:00 2001 From: Neels Hofmeyr Date: Thu, 26 Jan 2023 15:00:06 +0100 Subject: [codecs filter] use codecs filter on crcx ok Change-Id: I03753df567d1dc24852e6fbb681fbba81d2a545d --- src/libmsc/msc_a.c | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) (limited to 'src/libmsc/msc_a.c') diff --git a/src/libmsc/msc_a.c b/src/libmsc/msc_a.c index 387532d43..a7424e03c 100644 --- a/src/libmsc/msc_a.c +++ b/src/libmsc/msc_a.c @@ -577,11 +577,22 @@ static void msc_a_call_leg_ran_local_addr_available(struct msc_a *msc_a) return; } - /* Once a CI is known, we could also CRCX the CN side of the MGW endpoint, but it makes sense to wait for the - * codec to be determined by the Assignment Complete message, first. */ + codec_filter_run(&cc_trans->cc.codecs); + LOG_TRANS(cc_trans, LOGL_DEBUG, "Sending Assignment Command with codecs: %s\n", + codec_filter_to_str(&cc_trans->cc.codecs)); + + if (!cc_trans->cc.codecs.result.audio_codecs.count) { + LOG_TRANS(cc_trans, LOGL_ERROR, "Assignment not possible, no matching codec: %s\n", + codec_filter_to_str(&cc_trans->cc.codecs)); + call_leg_release(msc_a->cc.call_leg); + return; + } - if (mncc_bearer_cap_to_channel_type(&channel_type, &cc_trans->bearer_cap)) { - LOG_MSC_A(msc_a, LOGL_ERROR, "Cannot compose Channel Type from bearer capabilities\n"); + /* Compose 48.008 Channel Type from the current set of codecs determined from both local and remote codec + * capabilities. */ + if (sdp_audio_codecs_to_gsm0808_channel_type(&channel_type, &cc_trans->cc.codecs.result.audio_codecs)) { + LOG_MSC_A(msc_a, LOGL_ERROR, "Cannot compose Channel Type (Permitted Speech) from codecs: %s\n", + codec_filter_to_str(&cc_trans->cc.codecs)); trans_free(cc_trans); return; } -- cgit v1.2.3