[vlc-devel] [PATCH 03/21] video_output: set the deadline directly when the next frame date is known

Steve Lhomme robux4 at ycbcr.xyz
Tue Sep 15 14:36:08 CEST 2020


We already know the deadline from the previous frame timeout, the deadline for
the next frame takes precedence if there is one.

date_next can never be invalid now.

We replace the test on frame_by_frame by a test on deadline not being NULL, as
it makes more sense when setting its value.
---
 src/video_output/video_output.c | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/src/video_output/video_output.c b/src/video_output/video_output.c
index 906734b2cb1..32890966dd0 100644
--- a/src/video_output/video_output.c
+++ b/src/video_output/video_output.c
@@ -1501,7 +1501,6 @@ static int ThreadDisplayPicture(vout_thread_sys_t *vout, vlc_tick_t *deadline)
     const vlc_tick_t render_delay = vout_chrono_GetHigh(&sys->render) + VOUT_MWAIT_TOLERANCE;
 
     bool drop_next_frame = frame_by_frame;
-    vlc_tick_t date_next = VLC_TICK_INVALID;
 
     /* FIXME/XXX we must redisplay the last decoded picture (because
      * of potential vout updated, or filters update or SPU update)
@@ -1531,20 +1530,21 @@ static int ThreadDisplayPicture(vout_thread_sys_t *vout, vlc_tick_t *deadline)
              * the current one). */
             paused = true;
         }
+        else
         {
-            date_next = next_system_pts - render_delay;
+            const vlc_tick_t date_next = next_system_pts - render_delay;
             if (date_next <= system_now)
                 drop_next_frame = true;
+
+            if (deadline) {
+                if (*deadline == VLC_TICK_INVALID || date_next < *deadline)
+                    *deadline = date_next;
+            }
         }
     }
 
     bool force_refresh = !drop_next_frame && refresh;
 
-    if (!frame_by_frame) {
-        if (date_next != VLC_TICK_INVALID && date_next < *deadline)
-            *deadline = date_next;
-    }
-
     if (!first && !refresh && !drop_next_frame) {
         return VLC_EGENERIC;
     }
-- 
2.26.2



More information about the vlc-devel mailing list