]> 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:50:50 +0000 (14:50 -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/applications/mod_video_filter/mod_video_filter.c
src/mod/formats/mod_vlc/mod_vlc.c
src/switch_ivr_async.c

index 2d2086d178bff305ea43348a883216634980ebb8..725c59fb5c566c277c41eea56372f8d20410efb1 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 f2efabcdd52248c439ce42c7783e9220602779f4..c50a36955cbc7f04fc44842c3ab30c5f9eb9f9a9 100644 (file)
@@ -2357,7 +2357,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);
        }
 
@@ -2377,6 +2377,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_core_session_set_text_read_callback(session, NULL, NULL);
 
index dfedd930de8eb6a7c2f18b79837b0fcce019e70a..b0ba33b974e51ef882b76f7be6edf788cf51b3aa 100644 (file)
@@ -1182,6 +1182,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);
@@ -1200,13 +1203,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 7408767719b6755bf8cedef9afc8f506a89f4030..9327c515dda1ccd03b92613a82137dc7541ea682 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_engine_function(session, SWITCH_MEDIA_TYPE_VIDEO, decode_video_thread, &max_pictures);
 
@@ -764,6 +764,9 @@ SWITCH_STANDARD_APP(decode_video_function)
 
        switch_core_media_end_engine_function(session, SWITCH_MEDIA_TYPE_VIDEO);
        switch_core_session_video_reset(session);
+       switch_channel_clear_flag_recursive(channel, CF_VIDEO_DECODED_READ);
+
+
 }
 
 
index 070f4add9343092e8e0315a11818dc27d7c5ef44..0410c1ac83eb9839a8bf631efa8aba3501a2c3e7 100644 (file)
@@ -389,13 +389,11 @@ static switch_bool_t chromakey_bug_callback(switch_media_bug_t *bug, void *user_
        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 21abee61ed44986c9c8701f1ad669841d325a0a5..783d398c74e0045d47435feed5195d15fd8a5a0c 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 2c6ed39446e047f5899fa0b9cfa0c8e1093d28f7..7d9c9095a279ba9d72367a980858ce1e863bd9c8 100644 (file)
@@ -654,12 +654,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);
        }
 
@@ -717,6 +717,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);
        switch_channel_clear_flag(channel, CF_TEXT_ECHO);