From fa54abf0b85239b00f8c16bba4dc1695c0ca6380 Mon Sep 17 00:00:00 2001 From: Richard Fuchs Date: Tue, 12 Aug 2025 13:01:10 -0400 Subject: [PATCH] MT#63317 split out ptime setting Change-Id: Id9a7e0a794ae74110c0c2169c23af98d66fbfade --- daemon/call.c | 43 ++++++++++++++++--------------------------- 1 file changed, 16 insertions(+), 27 deletions(-) diff --git a/daemon/call.c b/daemon/call.c index 76bdebdd3..f0dba2046 100644 --- a/daemon/call.c +++ b/daemon/call.c @@ -3010,35 +3010,22 @@ static void media_copy_format(struct call_media *media, struct call_media *src) media->format_str = call_str_cpy(&src->format_str); } - -// `media` can be NULL -__attribute__((nonnull(1, 3, 4))) -static void __media_init_from_flags(struct call_media *other_media, struct call_media *media, - struct stream_params *sp, sdp_ng_flags *flags) -{ - // codec and RTP payload types handling +__attribute__((nonnull(1, 2))) +static void media_set_ptime(struct call_media *media, struct stream_params *sp, int ptime, int ptime_rev) { if (sp->ptime > 0) { - if (media && !MEDIA_ISSET(media, PTIME_OVERRIDE)) + if (!MEDIA_ISSET(media, PTIME_OVERRIDE)) media->ptime = sp->ptime; - if (!MEDIA_ISSET(other_media, PTIME_OVERRIDE)) - other_media->ptime = sp->ptime; } - if (media && sp->maxptime > 0) { - media->maxptime = sp->maxptime; - } - if (media && flags->ptime > 0) { - media->ptime = flags->ptime; + media->maxptime = sp->maxptime; + if (ptime > 0) { + media->ptime = ptime; MEDIA_SET(media, PTIME_OVERRIDE); - MEDIA_SET(other_media, PTIME_OVERRIDE); - } - if (flags->rev_ptime > 0) { - other_media->ptime = flags->rev_ptime; - if (media) - MEDIA_SET(media, PTIME_OVERRIDE); - MEDIA_SET(other_media, PTIME_OVERRIDE); } + if (ptime_rev > 0) + MEDIA_SET(media, PTIME_OVERRIDE); } + unsigned int proto_num_ports(unsigned int sp_ports, struct call_media *media, sdp_ng_flags *flags, bool allow_offer_split) { @@ -3098,7 +3085,7 @@ static struct call_media * monologue_add_zero_media(struct call_monologue *sende media_update_crypto(sender_media, sp, flags); media_update_attrs(sender_media, sp); media_update_format(sender_media, sp); - __media_init_from_flags(sender_media, NULL, sp, flags); + media_set_ptime(sender_media, sp, flags->rev_ptime, flags->ptime); *num_ports_other = proto_num_ports(sp->num_ports, sender_media, flags, (flags->rtcp_mux_demux || flags->rtcp_mux_accept) ? true : false); __disable_streams(sender_media, *num_ports_other); @@ -3227,7 +3214,8 @@ int monologue_offer_answer(struct call_monologue *monologues[2], sdp_streams_q * media_update_format(sender_media, sp); media_copy_format(receiver_media, sender_media); media_set_address_family(receiver_media, sender_media, flags); - __media_init_from_flags(sender_media, receiver_media, sp, flags); + media_set_ptime(sender_media, sp, flags->rev_ptime, flags->ptime); + media_set_ptime(receiver_media, sp, flags->ptime, flags->rev_ptime); if (flags->opmode == OP_OFFER) { ilog(LOG_DEBUG, "Setting media recording slots to %u", flags->media_rec_slot_offer); @@ -3642,7 +3630,7 @@ int monologue_publish(struct call_monologue *ml, sdp_streams_q *streams, sdp_ng_ media_update_crypto(media, sp, flags); media_update_attrs(media, sp); media_update_format(media, sp); - __media_init_from_flags(media, NULL, sp, flags); + media_set_ptime(media, sp, flags->ptime, 0); codec_store_populate(&media->codecs, &sp->codecs, .allow_asymmetric = !!flags->allow_asymmetric_codecs); @@ -3737,7 +3725,8 @@ static int monologue_subscribe_request1(struct call_monologue *src_ml, struct ca media_update_crypto(dst_media, sp, flags); media_copy_format(dst_media, src_media); media_set_address_family(dst_media, src_media, flags); - __media_init_from_flags(src_media, dst_media, sp, flags); + media_set_ptime(src_media, sp, flags->rev_ptime, flags->ptime); + media_set_ptime(dst_media, sp, flags->ptime, flags->rev_ptime); codec_store_populate(&dst_media->codecs, &src_media->codecs, .allow_asymmetric = !!flags->allow_asymmetric_codecs); @@ -3846,7 +3835,7 @@ int monologue_subscribe_answer(struct call_monologue *dst_ml, sdp_ng_flags *flag media_update_flags(dst_media, sp); media_update_crypto(dst_media, sp, flags); media_update_format(dst_media, sp); - __media_init_from_flags(dst_media, NULL, sp, flags); + media_set_ptime(dst_media, sp, flags->ptime, 0); if (flags->allow_transcoding) { codec_store_populate(&dst_media->codecs, &sp->codecs,