[vlc-commits] input: es_out: workaround median delay initial value with low_delay

Francois Cartegnie git at videolan.org
Fri Oct 18 13:42:52 CEST 2019


vlc | branch: master | Francois Cartegnie <fcvlcdev at free.fr> | Fri Jul 19 16:56:44 2019 +0200| [e9fc8253df5f3357c22771300d63f718fde7a232] | committer: Francois Cartegnie

input: es_out: workaround median delay initial value with low_delay

> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=e9fc8253df5f3357c22771300d63f718fde7a232
---

 src/input/es_out.c | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

diff --git a/src/input/es_out.c b/src/input/es_out.c
index b79c46d6fd..9b25dd7db6 100644
--- a/src/input/es_out.c
+++ b/src/input/es_out.c
@@ -3031,8 +3031,8 @@ static int EsOutVaControlLocked( es_out_t *out, int i_query, va_list args )
         }
 
         /* TODO do not use vlc_tick_now() but proper stream acquisition date */
-        bool b_extra_buffering_allowed = !input_priv(p_sys->p_input)->b_low_delay &&
-                                         EsOutIsExtraBufferingAllowed( out );
+        const bool b_low_delay = input_priv(p_sys->p_input)->b_low_delay;
+        bool b_extra_buffering_allowed = !b_low_delay && EsOutIsExtraBufferingAllowed( out );
         vlc_tick_t i_late = input_clock_Update(
                             p_pgrm->p_input_clock, VLC_OBJECT(p_sys->p_input),
                             input_priv(p_sys->p_input)->b_can_pace_control || p_sys->b_buffering,
@@ -3076,7 +3076,12 @@ static int EsOutVaControlLocked( es_out_t *out, int i_query, va_list args )
                 const vlc_tick_t i_jitter_max =
                         VLC_TICK_FROM_MS(var_InheritInteger( p_sys->p_input, "clock-jitter" ));
                 /* If the jitter increase is over our max or the total hits the maximum */
-                if( i_new_jitter > i_jitter_max || i_clock_total_delay > INPUT_PTS_DELAY_MAX )
+                if( i_new_jitter > i_jitter_max ||
+                    i_clock_total_delay > INPUT_PTS_DELAY_MAX ||
+                    /* jitter is always 0 due to median calculation first output
+                       and low delay can't allow non reversible jitter increase
+                       in branch below */
+                    (b_low_delay && i_late > i_jitter_max) )
                 {
                     msg_Err( p_sys->p_input,
                              "ES_OUT_SET_(GROUP_)PCR  is called %d ms late (jitter of %d ms ignored)",



More information about the vlc-commits mailing list