From 5de30a855b0c8dc6005f1183900df80635862de9 Mon Sep 17 00:00:00 2001 From: Donat Zenichev Date: Mon, 18 Dec 2023 11:34:39 +0100 Subject: [PATCH] MT#58716 Move transcoding flag to media Instead of using transcoding flag `_TRANSCODING` on the monologue level, we have to use that on the media level in order to properly reflect the level on which transocding is being used, and also to be able to selectively set this for specific media sessions. Change-Id: I9a25dc7be24f80b2b6ada816448a67933c762d86 --- daemon/call.c | 6 +++--- daemon/media_socket.c | 2 +- include/call.h | 3 ++- t/test-transcode.c | 2 +- 4 files changed, 7 insertions(+), 6 deletions(-) diff --git a/daemon/call.c b/daemon/call.c index bc3921b51..33ced38bf 100644 --- a/daemon/call.c +++ b/daemon/call.c @@ -227,7 +227,7 @@ next: media_update_stats(media); ssrc_collect_metrics(media); } - if (ML_ISSET(media->monologue, TRANSCODING)) + if (MEDIA_ISSET(media, TRANSCODING)) hlp->transcoded_media++; } @@ -2795,10 +2795,10 @@ static void media_update_transcoding_flag(struct call_media *media) { if (!media) return; - ML_CLEAR(media->monologue, TRANSCODING); + MEDIA_CLEAR(media, TRANSCODING); if (t_queue_find_custom(&media->media_subscribers, NULL, __sub_is_transcoding)) - ML_SET(media->monologue, TRANSCODING); + MEDIA_SET(media, TRANSCODING); } /* called with call->master_lock held in W */ diff --git a/daemon/media_socket.c b/daemon/media_socket.c index dc7f2a204..92c6491ae 100644 --- a/daemon/media_socket.c +++ b/daemon/media_socket.c @@ -1490,7 +1490,7 @@ static const char *kernelize_one(struct rtpengine_target_info *reti, GQueue *out if (proto_is_rtp(media->protocol)) { reti->rtp = 1; - if (!ML_ISSET(media->monologue, TRANSCODING)) { + if (!MEDIA_ISSET(media, TRANSCODING)) { reti->rtcp_fw = 1; if (media->protocol->avpf) reti->rtcp_fb_fw = 1; diff --git a/include/call.h b/include/call.h index 1c7551f63..dba821601 100644 --- a/include/call.h +++ b/include/call.h @@ -190,6 +190,7 @@ enum { #define MEDIA_FLAG_AUDIO_PLAYER 0x80000000 #define MEDIA_FLAG_LEGACY_OSRTP SHARED_FLAG_LEGACY_OSRTP #define MEDIA_FLAG_LEGACY_OSRTP_REV SHARED_FLAG_LEGACY_OSRTP_REV +#define MEDIA_FLAG_TRANSCODING 0x100000000LL /* struct call_monologue */ #define ML_FLAG_REC_FORWARDING 0x00010000 @@ -197,7 +198,7 @@ enum { #define ML_FLAG_DTMF_INJECTION_ACTIVE 0x00040000 #define ML_FLAG_DETECT_DTMF 0x00080000 #define ML_FLAG_NO_RECORDING 0x00100000 -#define ML_FLAG_TRANSCODING 0x00200000 +/* unused 0x00200000 */ #define ML_FLAG_BLOCK_SHORT 0x00400000 #define ML_FLAG_BLOCK_MEDIA 0x00800000 #define ML_FLAG_SILENCE_MEDIA 0x01000000 diff --git a/t/test-transcode.c b/t/test-transcode.c index ea1bfda12..3d6f576eb 100644 --- a/t/test-transcode.c +++ b/t/test-transcode.c @@ -257,7 +257,7 @@ static void __packet_seq_ts(const char *file, int line, struct call_media *media .sfd = &sfd, }; // from __stream_ssrc() - if (!ML_ISSET(media->monologue, TRANSCODING)) + if (!MEDIA_ISSET(media, TRANSCODING)) mp.ssrc_in->ssrc_map_out = ntohl(ssrc); mp.ssrc_out = get_ssrc_ctx(mp.ssrc_in->ssrc_map_out, other_media->monologue->ssrc_hash, SSRC_DIR_OUTPUT, NULL); payload_tracker_add(&mp.ssrc_in->tracker, pt_in & 0x7f);