]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
FS-7513: only use timer when needed
authorAnthony Minessale <anthm@freeswitch.org>
Thu, 12 Feb 2015 03:52:15 +0000 (21:52 -0600)
committerMichael Jerris <mike@jerris.com>
Thu, 28 May 2015 17:47:00 +0000 (12:47 -0500)
src/mod/applications/mod_conference/mod_conference.c

index 44996dd448f62b58a0b641493a4446c8fec3fb91..d3763f3aa902558660c903fefec2f1cfe2681284 100644 (file)
@@ -1384,7 +1384,9 @@ static void *SWITCH_THREAD_FUNC conference_video_muxing_thread_run(switch_thread
 
        init_canvas(conference, vlayout);
 
-       switch_core_timer_init(&timer, "soft", 1, 90, conference->pool);
+       if (switch_test_flag(conference, CFLAG_MINIMIZE_VIDEO_ENCODING)) {
+               switch_core_timer_init(&timer, "soft", 1, 90, conference->pool);
+       }
 
        switch_mutex_lock(conference->canvas->cond_mutex);
 
@@ -1568,11 +1570,10 @@ static void *SWITCH_THREAD_FUNC conference_video_muxing_thread_run(switch_thread
                                need_keyframe = SWITCH_TRUE;
                                last_key_time = now;
                        }
-
-
-                       switch_core_timer_sync(&timer);
                        
                        if (switch_test_flag(conference, CFLAG_MINIMIZE_VIDEO_ENCODING)) {
+                               switch_core_timer_sync(&timer);
+
                                for (i = 0; write_codecs[i] && switch_core_codec_ready(&write_codecs[i]->codec) && i < MAX_MUX_CODECS; i++) {
                                        write_codecs[i]->frame.img = conference->canvas->img;
                                        write_canvas_image_to_codec_group(conference, write_codecs[i], i, timer.samplecount, need_refresh, need_keyframe);
@@ -1634,6 +1635,11 @@ static void *SWITCH_THREAD_FUNC conference_video_muxing_thread_run(switch_thread
                switch_core_codec_destroy(&write_codecs[i]->codec);
        }
 
+       if (switch_test_flag(conference, CFLAG_MINIMIZE_VIDEO_ENCODING)) {
+               switch_core_timer_destroy(&timer);
+       }
+
+
        destroy_canvas(&conference->canvas);
 
        return NULL;