From 0e2e5627008038ac8fe8ddb40ba5c3c4c9557c7a Mon Sep 17 00:00:00 2001 From: Richard Fuchs Date: Mon, 27 Feb 2023 09:48:44 -0500 Subject: [PATCH] MT#56471 add codec_update_all_source_handlers() Change-Id: Id3917d5cc5ae8aae3e7d4a25ff2d88542bc020d7 --- daemon/codec.c | 19 +++++++++++++++++++ include/codec.h | 1 + 2 files changed, 20 insertions(+) diff --git a/daemon/codec.c b/daemon/codec.c index 8b5f0369e..cd6589c89 100644 --- a/daemon/codec.c +++ b/daemon/codec.c @@ -3853,6 +3853,25 @@ void codec_update_all_handlers(struct call_monologue *ml) { dialogue_unkernelize(ml); } +void codec_update_all_source_handlers(struct call_monologue *ml, const struct sdp_ng_flags *flags) { + for (GList *l = ml->subscriptions.head; l; l = l->next) { + struct call_subscription *cs = l->data; + struct call_monologue *source = cs->monologue; + + // iterate both simultaneously + GList *source_media_it = source->medias.head; + GList *sink_media_it = ml->medias.head; + while (source_media_it && sink_media_it) { + struct call_media *source_media = source_media_it->data; + struct call_media *sink_media = sink_media_it->data; + codec_handlers_update(source_media, sink_media, flags, NULL); + source_media_it = source_media_it->next; + sink_media_it = sink_media_it->next; + } + } + + dialogue_unkernelize(ml); +} void codec_calc_jitter(struct ssrc_ctx *ssrc, unsigned long ts, unsigned int clockrate, diff --git a/include/codec.h b/include/codec.h index affdb3a77..361860e98 100644 --- a/include/codec.h +++ b/include/codec.h @@ -104,6 +104,7 @@ struct codec_handler *codec_handler_make_media_player(const struct rtp_payload_t struct codec_handler *codec_handler_make_dummy(const struct rtp_payload_type *dst_pt, struct call_media *media); void codec_calc_jitter(struct ssrc_ctx *, unsigned long ts, unsigned int clockrate, const struct timeval *); void codec_update_all_handlers(struct call_monologue *ml); +void codec_update_all_source_handlers(struct call_monologue *ml, const struct sdp_ng_flags *flags); void codec_store_cleanup(struct codec_store *cs); void codec_store_init(struct codec_store *cs, struct call_media *);