[vlc-devel] [PATCH 1/2] input: refactor Control for the next commit

Thomas Guillem thomas at gllm.fr
Mon Sep 3 17:58:00 CEST 2018


On Mon, Sep 3, 2018, at 17:56, Thomas Guillem wrote:
> ---
>  src/input/input.c | 52 ++++++++++++++++++++++++++---------------------
>  1 file changed, 29 insertions(+), 23 deletions(-)
> 
> diff --git a/src/input/input.c b/src/input/input.c
> index c76064107c..17901d4a6c 100644
> --- a/src/input/input.c
> +++ b/src/input/input.c
> @@ -1835,6 +1835,27 @@ static void 
> ControlInsertDemuxFilter( input_thread_t* p_input, const char* psz_d
>          msg_Dbg(p_input, "Failed to create demux filter %s", 
> psz_demux_chain);
>  }
>  
> +static int DemuxSetPostion(input_thread_t *p_input, double pos, bool 

Missing 'i' !

> fast)
> +{
> +    input_thread_private_t *priv = input_priv(p_input);
> +
> +    if (pos < 0.f )
> +        pos = 0.f;
> +    else if (pos > 1.f)
> +        pos = 1.f;
> +    return demux_Control(priv->master->p_demux, DEMUX_SET_POSITION,
> +                         pos, !fast);
> +}
> +
> +static int DemuxSetTime(input_thread_t *p_input, vlc_tick_t time, bool 
> fast)
> +{
> +    input_thread_private_t *priv = input_priv(p_input);
> +
> +    if (time < 0)
> +        time = 0;
> +    return demux_Control(priv->master->p_demux, DEMUX_SET_TIME, time, !
> fast);
> +}
> +
>  static bool Control( input_thread_t *p_input,
>                       int i_type, input_control_param_t param )
>  {
> @@ -1847,25 +1868,19 @@ static bool Control( input_thread_t *p_input,
>      switch( i_type )
>      {
>          case INPUT_CONTROL_SET_POSITION:
> -        {
>              if( priv->b_recording )
>              {
>                  msg_Err( p_input, "INPUT_CONTROL_SET_POSITION ignored 
> while recording" );
>                  break;
>              }
>  
> -            float f_pos = param.pos.f_val;
> -            if( f_pos < 0.f )
> -                f_pos = 0.f;
> -            else if( f_pos > 1.f )
> -                f_pos = 1.f;
>              /* Reset the decoders states and clock sync (before calling 
> the demuxer */
>              es_out_Control( priv->p_es_out, ES_OUT_RESET_PCR );
> -            if( demux_Control( priv->master->p_demux, 
> DEMUX_SET_POSITION,
> -                               (double) f_pos, !
> param.pos.b_fast_seek ) )
> +            if (DemuxSetPostion(p_input, (double) param.pos.f_val,
> +                                param.pos.b_fast_seek))
>              {
>                  msg_Err( p_input, "INPUT_CONTROL_SET_POSITION "
> -                         "%2.1f%% failed", (double)(f_pos * 100.f) );
> +                         "%2.1f%% failed", (double)(param.pos.f_val * 
> 100.f) );
>              }
>              else
>              {
> @@ -1876,11 +1891,9 @@ static bool Control( input_thread_t *p_input,
>                  b_force_update = true;
>              }
>              break;
> -        }
>  
>          case INPUT_CONTROL_SET_TIME:
>          {
> -            int64_t i_time;
>              int i_ret;
>  
>              if( priv->b_recording )
> @@ -1889,16 +1902,11 @@ static bool Control( input_thread_t *p_input,
>                  break;
>              }
>  
> -            i_time = param.time.i_val;
> -            if( i_time < 0 )
> -                i_time = 0;
> -
>              /* Reset the decoders states and clock sync (before calling 
> the demuxer */
>              es_out_Control( priv->p_es_out, ES_OUT_RESET_PCR );
>  
> -            i_ret = demux_Control( priv->master->p_demux,
> -                                   DEMUX_SET_TIME, i_time,
> -                                   !param.time.b_fast_seek );
> +            i_ret = DemuxSetTime(p_input, param.time.i_val, 
> +                                 param.time.b_fast_seek);
>              if( i_ret )
>              {
>                  int64_t i_length;
> @@ -1907,16 +1915,14 @@ static bool Control( input_thread_t *p_input,
>                  if( !demux_Control( priv->master->p_demux,
>                                      DEMUX_GET_LENGTH, &i_length ) && 
> i_length > 0 )
>                  {
> -                    double f_pos = (double)i_time / (double)i_length;
> -                    i_ret = demux_Control( priv->master->p_demux,
> -                                           DEMUX_SET_POSITION, f_pos,
> -                                           !param.time.b_fast_seek );
> +                    double f_pos = (double)param.time.i_val / 
> (double)i_length;
> +                    i_ret = DemuxSetPostion(p_input, f_pos, 
> param.time.b_fast_seek);
>                  }
>              }
>              if( i_ret )
>              {
>                  msg_Warn( p_input, "INPUT_CONTROL_SET_TIME %"PRId64
> -                         " failed or not possible", i_time );
> +                         " failed or not possible", param.time.i_val );
>              }
>              else
>              {
> -- 
> 2.18.0
> 
> _______________________________________________
> 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