engine->rtcp_mux = SWITCH_TRUE;
engine->remote_rtcp_port = engine->cur_payload_map->remote_sdp_port;
got_rtcp_mux++;
+
+ if (!smh->mparams->rtcp_audio_interval_msec) {
+ smh->mparams->rtcp_audio_interval_msec = SWITCH_RTCP_AUDIO_INTERVAL_MSEC;
+ }
#endif
} else if (!strcasecmp(attr->a_name, "candidate")) {
switch_channel_set_flag(smh->session->channel, CF_ICE);
if (!strcasecmp(attr->a_name, "rtcp-mux")) {
got_rtcp_mux = 1;
skip_rtcp = 1;
+ if (!smh->mparams->rtcp_video_interval_msec) {
+ smh->mparams->rtcp_video_interval_msec = SWITCH_RTCP_VIDEO_INTERVAL_MSEC;
+ }
} else if (!strcasecmp(attr->a_name, "ice-ufrag")) {
skip_rtcp = 1;
}
const char *vbw;
int bw = 256;
uint8_t fir = 0, nack = 0, pli = 0, tmmbr = 0, has_vid = 0;
+ const char *use_rtcp_mux = NULL;
switch_assert(session);
v_engine = &smh->engines[SWITCH_MEDIA_TYPE_VIDEO];
t_engine = &smh->engines[SWITCH_MEDIA_TYPE_TEXT];
- if ((!a_engine->rtcp_mux && !v_engine->rtcp_mux) &&
- (sdp_type == SDP_TYPE_REQUEST || switch_true(switch_channel_get_variable(session->channel, "rtcp_mux")))) {
+ use_rtcp_mux = switch_channel_get_variable(session->channel, "rtcp_mux");
+
+ if (use_rtcp_mux && switch_false(use_rtcp_mux)) {
+ a_engine->rtcp_mux = -1;
+ v_engine->rtcp_mux = -1;
+ }
+
+ if ((a_engine->rtcp_mux != -1 && !v_engine->rtcp_mux != -1) && (sdp_type == SDP_TYPE_REQUEST)) {
a_engine->rtcp_mux = 1;
v_engine->rtcp_mux = 1;
}