From 8d962f9a1d5e342e9121bfa5f4aa81a1a8daf28d Mon Sep 17 00:00:00 2001 From: Neels Hofmeyr Date: Fri, 23 Sep 2022 19:08:52 +0200 Subject: [PATCH] use gsm0808_speech_codec Change-Id: Ie72afae98f8efc04231af6f9e71daa9e84562bca --- src/libmsc/codec_sdp_cc_t9n.c | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/src/libmsc/codec_sdp_cc_t9n.c b/src/libmsc/codec_sdp_cc_t9n.c index 22efa5fc0..200bd8584 100644 --- a/src/libmsc/codec_sdp_cc_t9n.c +++ b/src/libmsc/codec_sdp_cc_t9n.c @@ -222,29 +222,30 @@ 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 *codec_mapping_by_gsm0808_speech_codec_type(enum gsm0808_speech_codec_type sct) { const struct codec_mapping *m; foreach_codec_mapping(m) { if (!m->has_gsm0808_speech_codec) continue; - if (m->gsm0808_speech_codec.type == sc->type) + if (m->gsm0808_speech_codec.type == sct) 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 *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 == sct) - return m; - /* TODO: evaluate cfg bits? */ + if (m->gsm0808_speech_codec.type != sc->type) + continue; + /* Return only those where sc->cfg is a subset of m->gsm0808_speech_codec.cfg. */ + if ((m->gsm0808_speech_codec.cfg & sc->cfg) != sc->cfg) + continue; + return m; } return NULL; }