From cb39fceddad43fcf151b5ab251f25c40a22bbde2 Mon Sep 17 00:00:00 2001 From: Neels Hofmeyr Date: Mon, 12 Sep 2022 03:40:16 +0200 Subject: [PATCH] codec t9n: use full speech_codec instead of enum mgcp_codec Change-Id: Ibfa6f94b394c7aed5f2c5196ea3a7e8fd41b9e67 --- include/osmocom/msc/codec_sdp_cc_t9n.h | 4 ++-- src/libmsc/codec_sdp_cc_t9n.c | 15 ++++++++++++++- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/include/osmocom/msc/codec_sdp_cc_t9n.h b/include/osmocom/msc/codec_sdp_cc_t9n.h index 150fd265b..8f91c788b 100644 --- a/include/osmocom/msc/codec_sdp_cc_t9n.h +++ b/include/osmocom/msc/codec_sdp_cc_t9n.h @@ -44,8 +44,8 @@ extern const struct codec_mapping codec_map[]; for ((CODEC_MAPPING) = codec_map; (CODEC_MAPPING) < codec_map + ARRAY_SIZE(codec_map); (CODEC_MAPPING)++) const struct codec_mapping *codec_mapping_by_speech_ver(enum gsm48_bcap_speech_ver speech_ver); -const struct codec_mapping *codec_mapping_by_gsm0808_speech_codec_type(enum gsm0808_speech_codec_type sct, - uint16_t cfg); +const struct codec_mapping *codec_mapping_by_gsm0808_speech_codec_type(enum gsm0808_speech_codec_type sct); +const struct codec_mapping *codec_mapping_by_gsm0808_speech_codec(const struct gsm0808_speech_codec *sc); const struct codec_mapping *codec_mapping_by_perm_speech(enum gsm0808_permitted_speech perm_speech); const struct codec_mapping *codec_mapping_by_subtype_name(const char *subtype_name); const struct codec_mapping *codec_mapping_by_mgcp_codec(enum mgcp_codecs mgcp); diff --git a/src/libmsc/codec_sdp_cc_t9n.c b/src/libmsc/codec_sdp_cc_t9n.c index 4ed5f48e7..22efa5fc0 100644 --- a/src/libmsc/codec_sdp_cc_t9n.c +++ b/src/libmsc/codec_sdp_cc_t9n.c @@ -222,7 +222,20 @@ const struct codec_mapping *codec_mapping_by_speech_ver(enum gsm48_bcap_speech_v return NULL; } +const struct codec_mapping *codec_mapping_by_gsm0808_speech_codec(const struct gsm0808_speech_codec *sc) +{ + const struct codec_mapping *m; + foreach_codec_mapping(m) { + if (!m->has_gsm0808_speech_codec) + continue; + if (m->gsm0808_speech_codec.type == sc->type) + return m; + /* FIXME: evaluate cfg bits? */ + } + return NULL; +} +const struct codec_mapping *codec_mapping_by_gsm0808_speech_codec_type(enum gsm0808_speech_codec_type sct); const struct codec_mapping *codec_mapping_by_gsm0808_speech_codec_type(enum gsm0808_speech_codec_type sct, uint16_t cfg) { const struct codec_mapping *m; @@ -405,7 +418,7 @@ void sdp_audio_codecs_from_speech_codec_list(struct sdp_audio_codecs *ac, const int i; for (i = 0; i < cl->len; i++) { const struct gsm0808_speech_codec *sc = &cl->codec[i]; - const struct codec_mapping *m = codec_mapping_by_gsm0808_speech_codec_type(sc->type, sc->cfg); + const struct codec_mapping *m = codec_mapping_by_gsm0808_speech_codec(sc); if (!m) continue; sdp_audio_codecs_add_copy(ac, &m->sdp);