]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
tweak
authorAnthony Minessale <anthony.minessale@gmail.com>
Mon, 11 Feb 2008 17:14:14 +0000 (17:14 +0000)
committerAnthony Minessale <anthony.minessale@gmail.com>
Mon, 11 Feb 2008 17:14:14 +0000 (17:14 +0000)
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@7582 d0543943-73ff-0310-b7d9-9358b9ac24b2

src/include/switch_module_interfaces.h
src/mod/applications/mod_fsv/mod_fsv.c
src/mod/endpoints/mod_sofia/sofia_glue.c

index fcf522b92911170d467bbfe64e45b7e7f45adbba..3b277f64cb0dff66a66aec4c8228116476fd7bf0 100644 (file)
@@ -509,6 +509,7 @@ struct switch_codec {
        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 */
index 7a09a2e839194d5916a0cdd1dd95e7accd0c1c9d..9e345cc92ca842425e4711ba6611f4dd26132083 100644 (file)
@@ -216,12 +216,13 @@ SWITCH_STANDARD_APP(play_fsv_function)
        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_STANDARD_APP(play_fsv_function)
 
        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 @@ SWITCH_STANDARD_APP(play_fsv_function)
                        }
                        
                        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);
                        }
index b98a2892b23b1ec08574a7c819f8f101f69893ca..0907e2fb721f864969a1c38a3eab8eabf0bc79a0 100644 (file)
@@ -1065,6 +1065,9 @@ switch_status_t sofia_glue_tech_set_video_codec(private_object_t *tech_pvt, int
                        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 @@ switch_status_t sofia_glue_tech_set_codec(private_object_t *tech_pvt, int force)
                                          );
        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 @@ uint8_t sofia_glue_negotiate_sdp(switch_core_session_t *session, sdp_session_t *
                                                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;