]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
FS-10131: [freeswitch-core] Incorrect video decode flags in some places #resolve
authorAnthony Minessale <anthm@freeswitch.org>
Mon, 13 Mar 2017 19:50:28 +0000 (14:50 -0500)
committerAnthony Minessale <anthm@freeswitch.org>
Mon, 13 Mar 2017 19:51:46 +0000 (14:51 -0500)
src/mod/applications/mod_av/avformat.c
src/mod/applications/mod_conference/mod_conference.c
src/mod/applications/mod_cv/mod_cv.cpp
src/mod/applications/mod_fsv/mod_fsv.c
src/mod/formats/mod_vlc/mod_vlc.c
src/switch_ivr_async.c

index c97986ac6b4bf26d9e2aa392beff552e6decf845..21c6250ebb77a7f5f717e1a74130cfd810bc9d63 100644 (file)
@@ -844,7 +844,7 @@ SWITCH_STANDARD_APP(record_av_function)
                goto done;
        }
 
-       switch_channel_set_flag(channel, CF_VIDEO_DECODED_READ);
+       switch_channel_set_flag_recursive(channel, CF_VIDEO_DECODED_READ);
        switch_core_media_get_vid_params(session, &vid_params);
        switch_channel_set_flag(channel, CF_VIDEO_ECHO);
        switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "video size: %dx%d\n", vid_params.width, vid_params.height);
@@ -1120,6 +1120,8 @@ SWITCH_STANDARD_APP(record_av_function)
 
   end:
 
+       switch_channel_clear_flag_recursive(channel, CF_VIDEO_DECODED_READ);
+
        if (fc) {
                if (has_video) close_stream(fc, &video_st);
                if (has_audio) close_stream(fc, &audio_st);
index b9989e4087e3ee7df7704f6962afd573f75fb93f..309e2e0a7528d60d9d9daa78525372e1403fc45d 100644 (file)
@@ -2208,7 +2208,7 @@ SWITCH_STANDARD_APP(conference_function)
        switch_core_session_receive_message(session, &msg);
 
        if (conference_utils_test_flag(conference, CFLAG_TRANSCODE_VIDEO)) {
-               switch_channel_set_flag(channel, CF_VIDEO_DECODED_READ);
+               switch_channel_set_flag_recursive(channel, CF_VIDEO_DECODED_READ);
                switch_core_media_gen_key_frame(session);
        }
 
@@ -2227,6 +2227,9 @@ SWITCH_STANDARD_APP(conference_function)
                } while (member.loop_loop);
        }
 
+       switch_core_session_video_reset(session);
+       switch_channel_clear_flag_recursive(channel, CF_VIDEO_DECODED_READ);
+
        switch_core_session_set_video_read_callback(session, NULL, NULL);
 
        switch_channel_set_private(channel, "_conference_autocall_list_", NULL);
index ac643a3ff6dd176444c63caab0ee07f61bfaa301..1e134185e6ce93eba97911563f541ef188e425fa 100644 (file)
@@ -1115,6 +1115,9 @@ SWITCH_STANDARD_APP(cv_start_function)
 
     switch_core_session_set_video_read_callback(session, NULL, NULL);
 
+    switch_channel_clear_flag_recursive(channel, CF_VIDEO_DECODED_READ);
+    switch_channel_clear_flag_recursive(channel, CF_VIDEO_ECHO);
+
     uninit_context(&context);
 
     switch_core_session_reset(session, SWITCH_TRUE, SWITCH_TRUE);
@@ -1133,13 +1136,11 @@ static switch_bool_t cv_bug_callback(switch_media_bug_t *bug, void *user_data, s
     switch (type) {
     case SWITCH_ABC_TYPE_INIT:
         {
-            switch_channel_set_flag_recursive(channel, CF_VIDEO_DECODED_READ);
         }
         break;
     case SWITCH_ABC_TYPE_CLOSE:
         {
             switch_thread_rwlock_unlock(MODULE_INTERFACE->rwlock);
-            switch_channel_clear_flag_recursive(channel, CF_VIDEO_DECODED_READ);
             uninit_context(context);
         }
         break;
index e2c6f5af4d371336c5d84ce1913599018f960036..b6e0856ea48d6525a9103846985d970191e9eb4b 100644 (file)
@@ -749,7 +749,7 @@ SWITCH_STANDARD_APP(decode_video_function)
        switch_channel_answer(channel);
        switch_core_session_request_video_refresh(session);
 
-       switch_channel_set_flag(channel, CF_VIDEO_DECODED_READ);
+       switch_channel_set_flag_recursive(channel, CF_VIDEO_DECODED_READ);
 
        switch_core_media_start_video_function(session, decode_video_thread, &max_pictures);
 
@@ -764,6 +764,9 @@ SWITCH_STANDARD_APP(decode_video_function)
 
        switch_core_media_end_video_function(session);
        switch_core_session_video_reset(session);
+       switch_channel_clear_flag_recursive(channel, CF_VIDEO_DECODED_READ);
+
+
 }
 
 
index 3cd8a2cebb58292373f812527c176fa3de301cf5..ade3285d3c6c03cf6030e10e2bbc7e602a47c7f3 100644 (file)
@@ -1513,7 +1513,7 @@ SWITCH_STANDARD_APP(play_video_function)
        libvlc_video_set_format_callbacks(context->mp, video_format_setup_callback, video_format_clean_callback);
        libvlc_video_set_callbacks(context->mp, vlc_video_lock_callback, vlc_video_unlock_callback, vlc_video_display_callback, context);
 
-       switch_channel_set_flag(channel, CF_VIDEO_DECODED_READ);
+       switch_channel_set_flag_recursive(channel, CF_VIDEO_DECODED_READ);
 
  top:
 
@@ -1612,6 +1612,7 @@ end:
        }
 
        switch_core_session_video_reset(session);
+       switch_channel_clear_flag_recursive(channel, CF_VIDEO_DECODED_READ);
 
        if (vlc_handle) libvlc_release(vlc_handle);
 }
index 1e87cc27eb7e7dfbfa1e3aa1be28ee501a7d9067..bae214a9ee90960323f0176bcc80c2dbad90be6c 100644 (file)
@@ -653,12 +653,12 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_session_echo(switch_core_session_t *s
        }
 
        arg_recursion_check_start(args);
-
-       if (switch_true(switch_channel_get_variable(channel, "echo_decode_video"))) {
-               switch_channel_set_flag(channel, CF_VIDEO_DECODED_READ);
+       
+       if (switch_channel_var_true(channel, "echo_decode_video")) {
+               switch_channel_set_flag_recursive(channel, CF_VIDEO_DECODED_READ);
        }
 
-       if (switch_true(switch_channel_get_variable(channel, "echo_decode_audio"))) {
+       if (switch_channel_var_true(channel, "echo_decode_audio")) {
                switch_core_session_raw_read(session);
        }
 
@@ -715,6 +715,10 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_session_echo(switch_core_session_t *s
                }
        }
 
+       if (switch_channel_var_true(channel, "echo_decode_video")) {
+               switch_channel_clear_flag_recursive(channel, CF_VIDEO_DECODED_READ);
+       }
+
        switch_core_session_video_reset(session);
        switch_core_session_reset(session, SWITCH_TRUE, SWITCH_TRUE);