]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
[core] add SEND_RTCP_MESSAGE:
authorRyan Mitchell <rjm@tcl.net>
Fri, 17 Sep 2021 03:17:28 +0000 (20:17 -0700)
committerDragos Oancea <dragos@signalwire.com>
Fri, 1 Oct 2021 13:46:34 +0000 (13:46 +0000)
toggle send rtcp events off fire_rtcp_events.
eval most common path first when checking flags.

src/include/switch_types.h
src/switch_core_media.c
src/switch_rtp.c

index 958f2b136ac83a1581f3dee159428f049e87dd4d..059023e450dc430b66af88e040eaed1331c7dfc5 100644 (file)
@@ -843,6 +843,7 @@ typedef enum {
        SWITCH_RTP_FLAG_PASSTHRU,
        SWITCH_RTP_FLAG_SECURE_SEND_MKI,
        SWITCH_RTP_FLAG_SECURE_RECV_MKI,
+       SWITCH_RTP_FLAG_AUDIO_FIRE_SEND_RTCP_EVENT,
        SWITCH_RTP_FLAG_VIDEO_FIRE_SEND_RTCP_EVENT,
        SWITCH_RTP_FLAG_INVALID
 } switch_rtp_flag_t;
index 57273d96f1b987ad672117103003599a6d360b24..40180edc38592a80957f36e67586a7b7c49d9c05 100644 (file)
@@ -8775,6 +8775,9 @@ SWITCH_DECLARE(switch_status_t) switch_core_media_activate_rtp(switch_core_sessi
                switch_channel_set_variable(session->channel, "rtp_use_timer_name", timer_name);
 
 
+               if (switch_channel_var_true(session->channel, "fire_rtcp_events")) {
+                       flags[SWITCH_RTP_FLAG_AUDIO_FIRE_SEND_RTCP_EVENT] = 1;
+               }
 
                a_engine->rtp_session = switch_rtp_new(a_engine->local_sdp_ip,
                                                                                           a_engine->local_sdp_port,
@@ -9511,8 +9514,9 @@ SWITCH_DECLARE(switch_status_t) switch_core_media_activate_rtp(switch_core_sessi
                                flags[SWITCH_RTP_FLAG_TMMBR]++;
                        }
 
-                       if (switch_channel_var_true(session->channel, "enable_send_rtcp_message_event_video")) { 
-                               flags[SWITCH_RTP_FLAG_VIDEO_FIRE_SEND_RTCP_EVENT] = 1;
+                       if (switch_channel_var_true(session->channel, "fire_rtcp_events") && 
+                               switch_channel_var_true(session->channel, "enable_send_rtcp_message_event_video")) { 
+                                       flags[SWITCH_RTP_FLAG_VIDEO_FIRE_SEND_RTCP_EVENT] = 1;
                        }
                        
                        v_engine->rtp_session = switch_rtp_new(a_engine->local_sdp_ip,
index 59882a122a6e9209793f7488a35fd1d3bceff4a0..e2fcf454192b5ce069a171f437e01a881c90899f 100644 (file)
@@ -2286,9 +2286,8 @@ static int check_rtcp_and_ice(switch_rtp_t *rtp_session)
                                rtcp_generate_report_block(rtp_session, rtcp_report_block, nack_dup);
                                rtp_session->rtcp_send_msg.header.count = 1; /* reception report block count */
                                stats->sent_pkt_count = 0;
-                               /* send event for audio, or video if flag set */
-                               if (rtp_session->flags[SWITCH_RTP_FLAG_VIDEO_FIRE_SEND_RTCP_EVENT] || 
-                                       !(rtp_session->flags[SWITCH_RTP_FLAG_VIDEO] || rtp_session->flags[SWITCH_RTP_FLAG_TEXT])) {
+                               if ((!rtp_session->flags[SWITCH_RTP_FLAG_VIDEO] && rtp_session->flags[SWITCH_RTP_FLAG_AUDIO_FIRE_SEND_RTCP_EVENT]) ||
+                                       (rtp_session->flags[SWITCH_RTP_FLAG_VIDEO] && rtp_session->flags[SWITCH_RTP_FLAG_VIDEO_FIRE_SEND_RTCP_EVENT])) {
                                        switch_send_rtcp_event(rtp_session, sr, rtcp_report_block);
                                }
                        }