FS-7086 FS-6798 #resolve

This commit is contained in:
Anthony Minessale 2014-12-13 00:57:14 -06:00
parent e268a72603
commit 6dbb4162e8
1 changed files with 59 additions and 17 deletions

View File

@ -7363,6 +7363,7 @@ SWITCH_DECLARE(void) switch_core_media_patch_sdp(switch_core_session_t *session)
int bad = 0;
switch_media_handle_t *smh;
switch_rtp_engine_t *a_engine, *v_engine;
payload_map_t *pmap;
switch_assert(session);
@ -7393,10 +7394,22 @@ SWITCH_DECLARE(void) switch_core_media_patch_sdp(switch_core_session_t *session)
switch_channel_get_name(session->channel));
return;
}
a_engine->cur_payload_map->iananame = switch_core_session_strdup(session, "PROXY");
a_engine->cur_payload_map->rm_rate = 8000;
a_engine->cur_payload_map->adv_rm_rate = 8000;
a_engine->cur_payload_map->codec_ms = 20;
clear_pmaps(a_engine);
pmap = switch_core_media_add_payload_map(session,
SWITCH_MEDIA_TYPE_AUDIO,
"PROXY",
NULL,
SDP_TYPE_RESPONSE,
0,
8000,
8000,
1,
SWITCH_TRUE);
a_engine->cur_payload_map = pmap;
}
new_sdp = switch_core_session_alloc(session, len);
@ -7539,10 +7552,19 @@ SWITCH_DECLARE(void) switch_core_media_patch_sdp(switch_core_session_t *session)
} else if (!strncmp("m=video ", p, 8) && *(p + 8) != '0') {
if (!has_video) {
switch_core_media_choose_port(session, SWITCH_MEDIA_TYPE_VIDEO, 1);
v_engine->cur_payload_map->rm_encoding = "PROXY-VID";
v_engine->cur_payload_map->rm_rate = 90000;
v_engine->cur_payload_map->adv_rm_rate = 90000;
v_engine->cur_payload_map->codec_ms = 0;
clear_pmaps(v_engine);
pmap = switch_core_media_add_payload_map(session,
SWITCH_MEDIA_TYPE_AUDIO,
"PROXY-VID",
NULL,
SDP_TYPE_RESPONSE,
0,
90000,
90000,
1,
SWITCH_TRUE);
v_engine->cur_payload_map = pmap;
switch_snprintf(vport_buf, sizeof(vport_buf), "%u", v_engine->adv_sdp_port);
if (switch_channel_media_ready(session->channel) && !switch_rtp_ready(v_engine->rtp_session)) {
switch_channel_set_flag(session->channel, CF_VIDEO_POSSIBLE);
@ -8630,6 +8652,7 @@ SWITCH_DECLARE(void) switch_core_media_check_outgoing_proxy(switch_core_session_
switch_rtp_engine_t *a_engine, *v_engine;
switch_media_handle_t *smh;
const char *r_sdp = NULL;
payload_map_t *pmap;
switch_assert(session);
@ -8647,19 +8670,38 @@ SWITCH_DECLARE(void) switch_core_media_check_outgoing_proxy(switch_core_session_
v_engine = &smh->engines[SWITCH_MEDIA_TYPE_VIDEO];
switch_channel_set_flag(session->channel, CF_PROXY_MEDIA);
a_engine->cur_payload_map->iananame = switch_core_session_strdup(session, "PROXY");
a_engine->cur_payload_map->rm_rate = 8000;
a_engine->cur_payload_map->adv_rm_rate = 8000;
a_engine->cur_payload_map->codec_ms = 20;
clear_pmaps(a_engine);
clear_pmaps(v_engine);
pmap = switch_core_media_add_payload_map(session,
SWITCH_MEDIA_TYPE_AUDIO,
"PROXY",
NULL,
SDP_TYPE_RESPONSE,
0,
8000,
8000,
1,
SWITCH_TRUE);
a_engine->cur_payload_map = pmap;
if (switch_stristr("m=video", r_sdp)) {
switch_core_media_choose_port(session, SWITCH_MEDIA_TYPE_VIDEO, 1);
v_engine->cur_payload_map->rm_encoding = "PROXY-VID";
v_engine->cur_payload_map->rm_rate = 90000;
v_engine->cur_payload_map->adv_rm_rate = 90000;
v_engine->cur_payload_map->codec_ms = 0;
pmap = switch_core_media_add_payload_map(session,
SWITCH_MEDIA_TYPE_AUDIO,
"PROXY-VID",
NULL,
SDP_TYPE_RESPONSE,
0,
90000,
90000,
1,
SWITCH_TRUE);
v_engine->cur_payload_map = pmap;
switch_channel_set_flag(session->channel, CF_VIDEO);
switch_channel_set_flag(session->channel, CF_VIDEO_POSSIBLE);
}