[vlc-devel] [PATCH] input: read the "clock-jitter" variable only once

Thomas Guillem thomas at gllm.fr
Fri Aug 14 10:12:03 CEST 2020


LGTM

On Thu, Aug 13, 2020, at 14:10, Steve Lhomme wrote:
> It's not going to change after the init.
> ---
>  src/input/es_out.c         | 16 ++++++++--------
>  src/input/input.c          |  1 +
>  src/input/input_internal.h |  1 +
>  3 files changed, 10 insertions(+), 8 deletions(-)
> 
> diff --git a/src/input/es_out.c b/src/input/es_out.c
> index 7fad533e65d..e4b840ed750 100644
> --- a/src/input/es_out.c
> +++ b/src/input/es_out.c
> @@ -3169,12 +3169,14 @@ static int EsOutVaControlLocked( es_out_t *out, 
> input_source_t *source,
>              return VLC_EGENERIC;
>          }
>  
> +        input_thread_private_t *priv = input_priv(p_sys->p_input);
> +
>          /* TODO do not use vlc_tick_now() but proper stream 
> acquisition date */
> -        const bool b_low_delay = 
> input_priv(p_sys->p_input)->b_low_delay;
> +        const bool b_low_delay = priv->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,
> +                            priv->b_can_pace_control || 
> p_sys->b_buffering,
>                              b_extra_buffering_allowed,
>                              i_pcr, vlc_tick_now() );
>  
> @@ -3190,8 +3192,8 @@ static int EsOutVaControlLocked( es_out_t *out, 
> input_source_t *source,
>          {
>              /* Last pcr/clock update was late. We need to compensate 
> by offsetting
>                 from the clock the rendering dates */
> -            if( i_late > 0 && ( !input_priv(p_sys->p_input)->p_sout ||
> -                            
> !input_priv(p_sys->p_input)->b_out_pace_control ) )
> +            if( i_late > 0 && ( !priv->p_sout ||
> +                            !priv->b_out_pace_control ) )
>              {
>                  /* input_clock_GetJitter returns compound delay:
>                   * - initial pts delay (buffering/caching)
> @@ -3212,15 +3214,13 @@ static int EsOutVaControlLocked( es_out_t *out, 
> input_source_t *source,
>                   *    and flush buffers (because all previous pts will 
> now be late) */
>  
>                  /* Avoid dangerously high value */
> -                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 ||
> +                if( i_new_jitter > priv->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) )
> +                    (b_low_delay && i_late > priv->i_jitter_max) )
>                  {
>                      msg_Err( p_sys->p_input,
>                               "ES_OUT_SET_(GROUP_)PCR  is called %d ms 
> late (jitter of %d ms ignored)",
> diff --git a/src/input/input.c b/src/input/input.c
> index d6256fef47b..28de738f8ab 100644
> --- a/src/input/input.c
> +++ b/src/input/input.c
> @@ -397,6 +397,7 @@ static input_thread_t *Create( vlc_object_t 
> *p_parent,
>      input_ConfigVarInit( p_input );
>  
>      priv->b_low_delay = var_InheritBool( p_input, "low-delay" );
> +    priv->i_jitter_max = VLC_TICK_FROM_MS(var_InheritInteger( p_input, 
> "clock-jitter" ));
>  
>      /* Remove 'Now playing' info as it is probably outdated */
>      input_item_SetNowPlaying( p_item, NULL );
> diff --git a/src/input/input_internal.h b/src/input/input_internal.h
> index f99e6805eb7..0bc67098f3c 100644
> --- a/src/input/input_internal.h
> +++ b/src/input/input_internal.h
> @@ -490,6 +490,7 @@ typedef struct input_thread_private_t
>  
>      /* Delays */
>      bool        b_low_delay;
> +    vlc_tick_t  i_jitter_max;
>  
>      /* Output */
>      bool            b_out_pace_control; /* XXX Move it ot es_sout ? */
> -- 
> 2.26.2
> 
> _______________________________________________
> vlc-devel mailing list
> To unsubscribe or modify your subscription options:
> https://mailman.videolan.org/listinfo/vlc-devel


More information about the vlc-devel mailing list