]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
FS-7514: refresh req on vlc channel
authorSeven Du <dujinfang@gmail.com>
Tue, 26 Aug 2014 23:11:08 +0000 (07:11 +0800)
committerMichael Jerris <mike@jerris.com>
Thu, 28 May 2015 17:46:43 +0000 (12:46 -0500)
src/mod/formats/mod_vlc/mod_vlc.c

index 8c0d14e25538c30c1138b978ee7ddc107a954808..12bdb2d88805f69d2c8e19e613a30aed440377f3 100644 (file)
@@ -114,6 +114,7 @@ struct vlc_video_context {
        int height;
        int force_width;
        int force_height;
+       int video_refresh_req;
 };
 
 typedef struct vlc_video_context vlc_video_context_t;
@@ -345,6 +346,11 @@ static void vlc_video_channel_unlock_callback(void *data, void *id, void *const
                context->last_video_ts = now;
        }
 
+       if (context->video_refresh_req > 0) {
+               flag |= SFF_WAIT_KEY_FRAME;
+               context->video_refresh_req--;
+       }
+
        switch_core_codec_encode_video(codec, context->img, frame->data, &encoded_data_len, &flag);
 
        while(encoded_data_len) {
@@ -1465,6 +1471,9 @@ static switch_status_t vlc_receive_message(switch_core_session_t *session, switc
                        break;
                case SWITCH_MESSAGE_INDICATE_JITTER_BUFFER:
                        break;
+               case SWITCH_MESSAGE_INDICATE_VIDEO_REFRESH_REQ:
+                       tech_pvt->context->video_refresh_req = 1;
+                       break;
                default:
                        break;
        }