[vlc-devel] [PATCH 2/2] input: input: update time offset on each demux iteration

Filip Roséen filip at atch.se
Fri Jul 20 10:05:17 CEST 2018


fixes: #20833
---
 src/input/input.c | 12 +++++-------
 1 file changed, 5 insertions(+), 7 deletions(-)

diff --git a/src/input/input.c b/src/input/input.c
index 53606c809a..a19887e115 100644
--- a/src/input/input.c
+++ b/src/input/input.c
@@ -600,6 +600,9 @@ static void MainLoopDemux( input_thread_t *p_input, bool *pb_changed )
         if( demux_TestAndClearFlags( p_demux, INPUT_UPDATE_TITLE_LIST ) )
             UpdateTitleListfromDemux( p_input );
 
+        if( demux_Control( p_priv->master->p_demux, DEMUX_GET_TIME, &p_priv->i_time ) )
+            p_priv->i_time = 0;
+
         if( p_priv->master->b_title_demux )
         {
             i_ret = UpdateTitleSeekpointFromDemux( p_input );
@@ -668,7 +671,6 @@ static void MainLoopStatistics( input_thread_t *p_input )
 {
     input_thread_private_t *priv = input_priv(p_input);
     double f_position = 0.0;
-    vlc_tick_t i_time = 0;
     vlc_tick_t i_length = 0;
 
     /* update input status variables */
@@ -676,18 +678,14 @@ static void MainLoopStatistics( input_thread_t *p_input )
                        DEMUX_GET_POSITION, &f_position ) )
         f_position = 0.0;
 
-    if( demux_Control( priv->master->p_demux, DEMUX_GET_TIME, &i_time ) )
-        i_time = 0;
-    input_priv(p_input)->i_time = i_time;
-
     if( demux_Control( priv->master->p_demux, DEMUX_GET_LENGTH, &i_length ) )
         i_length = 0;
 
-    es_out_SetTimes( priv->p_es_out, f_position, i_time, i_length );
+    es_out_SetTimes( priv->p_es_out, f_position, priv->i_time, i_length );
 
     /* update current bookmark */
     vlc_mutex_lock( &priv->p_item->lock );
-    priv->bookmark.i_time_offset = i_time;
+    priv->bookmark.i_time_offset = priv->i_time;
 
     if( priv->stats != NULL )
         input_stats_Compute( priv->stats, priv->p_item->p_stats );
-- 
2.18.0


More information about the vlc-devel mailing list