switch_channel_set_flag(tech_pvt->channel, CF_REINVITE);
if (tech_pvt->mparams.num_codecs) {
- match = sofia_media_negotiate_sdp(session, r_sdp, SDP_TYPE_REQUEST);
+ match = sofia_media_negotiate_sdp(session, r_sdp, SDP_TYPE_RESPONSE);
}
if (match) {
if (switch_core_media_choose_port(tech_pvt->session, SWITCH_MEDIA_TYPE_AUDIO, 0) != SWITCH_STATUS_SUCCESS) {
recv_pt = pmap->recv_pt;
fmtp = pmap->rm_fmtp;
found++;
+ break;
}
}
switch_mutex_unlock(smh->sdp_mutex);
if (sdp_type == SDP_TYPE_REQUEST || !exists) {
+ int b4 = pmap->pt;
pmap->pt = (switch_payload_t) (local_pt ? local_pt : pt);
+
+ if (b4 == 97 && pmap->pt == 109) {
+ abort();
+ }
}
if (negotiated) {
pass_fmtp = switch_channel_get_variable(session->channel, "rtp_video_fmtp");
}
}
-
+
if (pass_fmtp) {
switch_snprintf(buf + strlen(buf), SDPBUFLEN - strlen(buf), "a=fmtp:%d %s\n", v_engine->cur_payload_map->pt, pass_fmtp);
}
fmtp = switch_event_get_header(map, imp->iananame);
}
+ if (smh->fmtps[i]) {
+ fmtp = smh->fmtps[i];
+ }
+
if (zstr(fmtp)) fmtp = imp->fmtp;
if (zstr(fmtp)) fmtp = (char *) pass_fmtp;
payload_map_t *pmap;
switch_mutex_lock(rtp_session->flag_mutex);
for (pmap = *rtp_session->pmaps; pmap && pmap->allocated; pmap = pmap->next) {
+
if (!pmap->negotiated) {
continue;
}
if (pmapP) {
*pmapP = pmap;
}
+ break;
}
}
switch_mutex_unlock(rtp_session->flag_mutex);
if (!accept_packet &&
!(rtp_session->rtp_bugs & RTP_BUG_ACCEPT_ANY_PAYLOAD) && !(rtp_session->rtp_bugs & RTP_BUG_ACCEPT_ANY_PACKETS)) {
/* drop frames of incorrect payload number and return CNG frame instead */
+
return_cng_frame();
}
}