From 1c03323ef7bcb2c680419e08baeeef376909fde9 Mon Sep 17 00:00:00 2001 From: Richard Fuchs Date: Tue, 11 Oct 2022 16:06:25 -0400 Subject: [PATCH] MT#55447 refactor codec_add_payload_type Split up this function into two parts so that they can be used individually. Eliminate the special 0x1 return value as this isn't used anywhere else. Move the error reporting into codec_make_payload_type_sup() where it belongs. Change-Id: Id2060272d87596a3db32d8776930a98b0f226b3b --- daemon/codec.c | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/daemon/codec.c b/daemon/codec.c index e00a69570..91de71ef3 100644 --- a/daemon/codec.c +++ b/daemon/codec.c @@ -3922,15 +3922,15 @@ static int handler_func_inject_dtmf(struct codec_handler *h, struct media_packet -// special return value `(void *) 0x1` to signal type mismatch static struct rtp_payload_type *codec_make_payload_type_sup(const str *codec_str, struct call_media *media) { struct rtp_payload_type *ret = codec_make_payload_type(codec_str, media->type_id); if (!ret) - return NULL; + goto err2; + // check for type mismatch and don't warn if it is if (!ret->codec_def || (media->type_id && ret->codec_def->media_type != media->type_id)) { payload_type_free(ret); - return (void *) 0x1; + return NULL; } // we must support both encoding and decoding if (!ret->codec_def->support_decoding) @@ -3945,23 +3945,19 @@ static struct rtp_payload_type *codec_make_payload_type_sup(const str *codec_str err: payload_type_free(ret); +err2: + ilogs(codec, LOG_WARN, "Codec '" STR_FORMAT "' requested for transcoding is not supported", + STR_FMT(codec_str)); return NULL; } -static struct rtp_payload_type *codec_add_payload_type(const str *codec, struct call_media *media, +static struct rtp_payload_type *codec_add_payload_type_pt(struct rtp_payload_type *pt, struct call_media *media, struct call_media *other_media, struct codec_store *extra_cs) { - struct rtp_payload_type *pt = codec_make_payload_type_sup(codec, media); - if (!pt) { - ilogs(codec, LOG_WARN, "Codec '" STR_FORMAT "' requested for transcoding is not supported", - STR_FMT(codec)); + if (!pt) return NULL; - } - if (pt == (void *) 0x1) - return NULL; - pt->payload_type = __unused_pt_number(media, other_media, extra_cs, pt); if (pt->payload_type < 0) { ilogs(codec, LOG_WARN, "Ran out of RTP payload type numbers while adding codec '" @@ -3973,6 +3969,13 @@ static struct rtp_payload_type *codec_add_payload_type(const str *codec, struct return pt; } +static struct rtp_payload_type *codec_add_payload_type(const str *codec, struct call_media *media, + struct call_media *other_media, struct codec_store *extra_cs) +{ + struct rtp_payload_type *pt = codec_make_payload_type_sup(codec, media); + return codec_add_payload_type_pt(pt, media, other_media, extra_cs); +} + #endif