]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
FS-8914
authorAnthony Minessale <anthm@freeswitch.org>
Wed, 9 Mar 2016 06:15:23 +0000 (00:15 -0600)
committerAnthony Minessale <anthm@freeswitch.org>
Wed, 9 Mar 2016 06:15:23 +0000 (00:15 -0600)
src/switch_core_media.c

index 5e27f4db55318d76a97a302d87b9dcc5d748ef16..0ee1b943503528fa63aa852398d29affdce3468f 100644 (file)
@@ -2044,7 +2044,11 @@ static void check_jb_sync(switch_core_session_t *session)
 
        if (fps) {
                video_globals.fps = fps;
-               smh->vid_params.fps = fps;
+
+               if (smh->vid_params.fps != fps) {
+                       switch_channel_set_variable_printf(session->channel, "video_fps", "%d", fps);
+                       smh->vid_params.fps = fps;
+               }
        }
 
        switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session),
@@ -11193,10 +11197,11 @@ SWITCH_DECLARE(switch_status_t) switch_core_session_wait_for_video_input_params(
                switch_frame_t *read_frame;
                switch_status_t status;
                
-               if (switch_channel_test_flag(session->channel, CF_VIDEO_READY) && smh->vid_params.width && smh->vid_params.height) {
+               if (switch_channel_test_flag(session->channel, CF_VIDEO_READY) && smh->vid_params.width && smh->vid_params.height && smh->vid_params.fps) {
                        return SWITCH_STATUS_SUCCESS;
                }
 
+               switch_core_session_request_video_refresh(session);
                status = switch_core_session_read_frame(session, &read_frame, SWITCH_IO_FLAG_NONE, 0);
 
                if (!SWITCH_READ_ACCEPTABLE(status)) {
@@ -11291,14 +11296,22 @@ SWITCH_DECLARE(switch_status_t) switch_core_session_read_video_frame(switch_core
 
                decode_status = switch_core_codec_decode_video((*frame)->codec, *frame);
                
-               if ((*frame)->img) {//((*frame)->img && switch_channel_test_flag(session->channel, CF_VIDEO_DEBUG_READ)) {
+               if ((*frame)->img && switch_channel_test_flag(session->channel, CF_VIDEO_DEBUG_READ)) {
                        switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "IMAGE %dx%d %dx%d\n", 
                                                          (*frame)->img->w, (*frame)->img->h, (*frame)->img->d_w, (*frame)->img->d_h);
                }
 
                if ((*frame)->img && (*frame)->img->d_w && (*frame)->img->d_h) {
-                       smh->vid_params.width = (*frame)->img->d_w;
-                       smh->vid_params.height = (*frame)->img->d_h;
+
+                       if ((*frame)->img->d_w != smh->vid_params.width) {
+                               switch_channel_set_variable_printf(session->channel, "video_width", "%d", (*frame)->img->d_w);
+                               smh->vid_params.width = (*frame)->img->d_w;
+                       }
+
+                       if ((*frame)->img->d_h != smh->vid_params.height) {
+                               switch_channel_set_variable_printf(session->channel, "video_height", "%d", (*frame)->img->d_h);
+                               smh->vid_params.height = (*frame)->img->d_h;
+                       }
                }
 
                if (switch_test_flag((*frame), SFF_WAIT_KEY_FRAME)) {