Author: anthm Date: Mon Feb 11 12:14:14 2008 New Revision: 7582 Modified: freeswitch/trunk/src/include/switch_module_interfaces.h freeswitch/trunk/src/mod/applications/mod_fsv/mod_fsv.c freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_glue.c Log: tweak Modified: freeswitch/trunk/src/include/switch_module_interfaces.h ============================================================================== --- freeswitch/trunk/src/include/switch_module_interfaces.h (original) +++ freeswitch/trunk/src/include/switch_module_interfaces.h Mon Feb 11 12:14:14 2008 @@ -509,6 +509,7 @@ switch_memory_pool_t *memory_pool; /*! private data for the codec module to store handle specific info */ void *private_info; + switch_payload_t agreed_pt; }; /*! \brief A table of settings and callbacks that define a paticular implementation of a codec */ Modified: freeswitch/trunk/src/mod/applications/mod_fsv/mod_fsv.c ============================================================================== --- freeswitch/trunk/src/mod/applications/mod_fsv/mod_fsv.c (original) +++ freeswitch/trunk/src/mod/applications/mod_fsv/mod_fsv.c Mon Feb 11 12:14:14 2008 @@ -216,12 +216,13 @@ switch_frame_t write_frame = {0}, vid_frame = {0}; int fd = -1; int bytes; - switch_codec_t *read_codec = NULL, codec = {0}, vid_codec = {0}; + switch_codec_t *read_codec = NULL, codec = {0}, vid_codec = {0}, *read_vid_codec; unsigned char *aud_buffer; unsigned char *vid_buffer; struct file_header h; uint32_t ts = 0, last = 0; switch_timer_t timer = {0}; + switch_payload_t pt = 0; aud_buffer = switch_core_session_alloc(session, SWITCH_RECOMMENDED_BUFFER_SIZE); vid_buffer = switch_core_session_alloc(session, SWITCH_RECOMMENDED_BUFFER_SIZE); @@ -243,6 +244,10 @@ switch_channel_set_variable(channel, "sip_force_video_fmtp", h.video_fmtp); switch_channel_answer(channel); + + if ((read_vid_codec = switch_core_session_get_video_read_codec(session))) { + pt = read_vid_codec->agreed_pt; + } write_frame.codec = &codec; write_frame.data = aud_buffer; @@ -304,7 +309,9 @@ } ts = ntohl(h->ts); - h->pt = vid_codec.implementation->ianacode; + if (pt) { + h->pt = pt; + } if (switch_channel_test_flag(channel, CF_VIDEO)) { switch_core_session_write_video_frame(session, &vid_frame, -1, 0); } Modified: freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_glue.c ============================================================================== --- freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_glue.c (original) +++ freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_glue.c Mon Feb 11 12:14:14 2008 @@ -1065,6 +1065,9 @@ tech_pvt->video_read_frame.codec = &tech_pvt->video_read_codec; tech_pvt->video_fmtp_out = switch_core_session_strdup(tech_pvt->session, tech_pvt->video_write_codec.fmtp_out); + + tech_pvt->video_write_codec.agreed_pt = tech_pvt->video_agreed_pt; + tech_pvt->video_read_codec.agreed_pt = tech_pvt->video_agreed_pt; switch_core_session_set_video_read_codec(tech_pvt->session, &tech_pvt->video_read_codec); switch_core_session_set_video_write_codec(tech_pvt->session, &tech_pvt->video_write_codec); } @@ -1137,6 +1140,9 @@ ); tech_pvt->read_frame.codec = &tech_pvt->read_codec; + tech_pvt->write_codec.agreed_pt = tech_pvt->agreed_pt; + tech_pvt->read_codec.agreed_pt = tech_pvt->agreed_pt; + switch_core_session_set_read_codec(tech_pvt->session, &tech_pvt->read_codec); switch_core_session_set_write_codec(tech_pvt->session, &tech_pvt->write_codec); tech_pvt->fmtp_out = switch_core_session_strdup(tech_pvt->session, tech_pvt->write_codec.fmtp_out); @@ -1903,6 +1909,8 @@ switch_channel_set_variable(tech_pvt->channel, SWITCH_REMOTE_VIDEO_IP_VARIABLE, tech_pvt->remote_sdp_audio_ip); switch_channel_set_variable(tech_pvt->channel, SWITCH_REMOTE_VIDEO_PORT_VARIABLE, tmp); switch_channel_set_variable(tech_pvt->channel, "sip_video_fmtp", tech_pvt->video_rm_fmtp); + switch_snprintf(tmp, sizeof(tmp), "%d", tech_pvt->video_agreed_pt); + switch_channel_set_variable(tech_pvt->channel, "sip_video_pt", tmp); break; } else { vmatch = 0;