[vlc-devel] [PATCH 1/2] input: add input_SetTime and input_SetPosition

Thomas Guillem thomas at gllm.fr
Thu Jun 21 12:08:10 CEST 2018


I propose something like that:

typedef struct
{
    int         i_type;
    union
    {
        vlc_value_t val;
        struct {
            mtime_t val;
            bool fast;
        } time;
        struct {
            float val;
            bool fast;
        } pos;
    }
} input_control_t;

On Thu, Jun 21, 2018, at 09:19, Thomas Guillem wrote:
> 
> On Thu, Jun 21, 2018, at 09:09, Rémi Denis-Courmont wrote:
>> Can't input controls be extended so we don't need a malloc and a new
>> union here?> 
> I guess so.
> 
>> 
>> Le 19 juin 2018 15:58:30 GMT+03:00, Zhao Zhili
>> <quinkblack at foxmail.com> a écrit :>>> ---
>>> 
>>> 
>>> 
>>> 
>>>  include/vlc_input.h        |  4 ++
>>> 
>>> 
>>> 
>>> 
>>>  src/input/input.c          | 93 +++++++++++++++++++++++++++++++++++-----------
>>>>>> 
>>> 
>>> 
>>>  src/input/input_internal.h |  1 -
>>> 
>>> 
>>> 
>>> 
>>>  src/input/var.c            |  8 ++--
>>> 
>>> 
>>> 
>>> 
>>>  src/libvlccore.sym         |  2 +
>>> 
>>> 
>>> 
>>> 
>>>  5 files changed, 81 insertions(+), 27 deletions(-)
>>> 
>>> 
>>> 
>>> 
>>> 
>>> 
>>> 
>>> 
>>> 
>>> diff --git a/include/vlc_input.h b/include/vlc_input.h
>>> 
>>> 
>>> 
>>> 
>>> index 16c566a..1d24fd1 100644
>>> 
>>> 
>>> 
>>> 
>>> --- a/include/vlc_input.h
>>> 
>>> 
>>> 
>>> 
>>> +++ b/include/vlc_input.h
>>> 
>>> 
>>> 
>>> 
>>> @@ -514,6 +514,10 @@ VLC_API int input_Control( input_thread_t *,
>>> int i_query, ...  );
>>>>>> 
>>> 
>>> 
>>>  
>>> 
>>> 
>>> 
>>> 
>>>  VLC_API void input_Close( input_thread_t * );
>>> 
>>> 
>>> 
>>> 
>>>  
>>> 
>>> 
>>> 
>>> 
>>> +VLC_API int input_SetTime( input_thread_t *, mtime_t i_time, bool
>>> b_fast );
>>>>>> 
>>> 
>>> 
>>> +
>>> 
>>> 
>>> 
>>> 
>>> +VLC_API int input_SetPosition( input_thread_t *, float f_position,
>>> bool b_fast );
>>>>>> 
>>> 
>>> 
>>> +
>>> 
>>> 
>>> 
>>> 
>>>  /**
>>> 
>>> 
>>> 
>>> 
>>>   * Create a new input_thread_t and start it.
>>> 
>>> 
>>> 
>>> 
>>>   *
>>> 
>>> 
>>> 
>>> 
>>> diff --git a/src/input/input.c b/src/input/input.c
>>> 
>>> 
>>> 
>>> 
>>> index a413683..a8ae021 100644
>>> 
>>> 
>>> 
>>> 
>>> --- a/src/input/input.c
>>> 
>>> 
>>> 
>>> 
>>> +++ b/src/input/input.c
>>> 
>>> 
>>> 
>>> 
>>> @@ -227,6 +227,46 @@ void input_Close( input_thread_t *p_input )
>>>>>> 
>>> 
>>> 
>>>      vlc_object_release( p_input );
>>> 
>>> 
>>> 
>>> 
>>>  }
>>> 
>>> 
>>> 
>>> 
>>>  
>>> 
>>> 
>>> 
>>> 
>>> +typedef struct input_seek_params_t {
>>> 
>>> 
>>> 
>>> 
>>> +    bool b_fast;
>>> 
>>> 
>>> 
>>> 
>>> +    union {
>>> 
>>> 
>>> 
>>> 
>>> +        mtime_t i_time;
>>> 
>>> 
>>> 
>>> 
>>> +        float f_position;
>>> 
>>> 
>>> 
>>> 
>>> +    };
>>> 
>>> 
>>> 
>>> 
>>> +} input_seek_params_t;
>>> 
>>> 
>>> 
>>> 
>>> +
>>> 
>>> 
>>> 
>>> 
>>> +int input_SetTime( input_thread_t *p_input, mtime_t i_time, bool
>>> b_fast )
>>>>>> 
>>> 
>>> 
>>> +{
>>> 
>>> 
>>> 
>>> 
>>> +    vlc_value_t val;
>>> 
>>> 
>>> 
>>> 
>>> +    input_seek_params_t *param;
>>> 
>>> 
>>> 
>>> 
>>> +
>>> 
>>> 
>>> 
>>> 
>>> +    param = malloc( sizeof(*param) );
>>> 
>>> 
>>> 
>>> 
>>> +    if( unlikely(param == NULL) )
>>> 
>>> 
>>> 
>>> 
>>> +        return VLC_ENOMEM;
>>> 
>>> 
>>> 
>>> 
>>> +
>>> 
>>> 
>>> 
>>> 
>>> +    param->b_fast = b_fast;
>>> 
>>> 
>>> 
>>> 
>>> +    param->i_time = i_time;
>>> 
>>> 
>>> 
>>> 
>>> +    val.p_address = param;
>>> 
>>> 
>>> 
>>> 
>>> +    input_ControlPush( p_input, INPUT_CONTROL_SET_TIME, &val );
>>>>>> 
>>> 
>>> 
>>> +    return VLC_SUCCESS;
>>> 
>>> 
>>> 
>>> 
>>> +}
>>> 
>>> 
>>> 
>>> 
>>> +
>>> 
>>> 
>>> 
>>> 
>>> +int input_SetPosition( input_thread_t *p_input, float f_position,
>>> bool b_fast )
>>>>>> 
>>> 
>>> 
>>> +{
>>> 
>>> 
>>> 
>>> 
>>> +    vlc_value_t val;
>>> 
>>> 
>>> 
>>> 
>>> +    input_seek_params_t *param;
>>> 
>>> 
>>> 
>>> 
>>> +
>>> 
>>> 
>>> 
>>> 
>>> +    param = malloc( sizeof(*param) );
>>> 
>>> 
>>> 
>>> 
>>> +    if( unlikely(param == NULL) )
>>> 
>>> 
>>> 
>>> 
>>> +        return VLC_ENOMEM;
>>> 
>>> 
>>> 
>>> 
>>> +
>>> 
>>> 
>>> 
>>> 
>>> +    param->b_fast = b_fast;
>>> 
>>> 
>>> 
>>> 
>>> +    param->f_position = f_position;
>>> 
>>> 
>>> 
>>> 
>>> +    val.p_address = param;
>>> 
>>> 
>>> 
>>> 
>>> +    input_ControlPush( p_input, INPUT_CONTROL_SET_POSITION, &val );
>>>>>> 
>>> 
>>> 
>>> +    return VLC_SUCCESS;
>>> 
>>> 
>>> 
>>> 
>>> +}
>>> 
>>> 
>>> 
>>> 
>>> +
>>> 
>>> 
>>> 
>>> 
>>>  /**
>>> 
>>> 
>>> 
>>> 
>>>   * Input destructor (called when the object's refcount reaches 0).
>>>>>> 
>>> 
>>> 
>>>   */
>>> 
>>> 
>>> 
>>> 
>>> @@ -616,30 +656,28 @@ static int MainLoopTryRepeat( input_thread_t
>>> *p_input )
>>>>>> 
>>> 
>>> 
>>>          var_SetInteger( p_input, "input-repeat", i_repeat );
>>> 
>>> 
>>> 
>>> 
>>>      }
>>> 
>>> 
>>> 
>>> 
>>>  
>>> 
>>> 
>>> 
>>> 
>>> +    input_thread_private_t *priv = input_priv(p_input);
>>> 
>>> 
>>> 
>>> 
>>>      /* Seek to start title/seekpoint */
>>> 
>>> 
>>> 
>>> 
>>> -    val.i_int = input_priv(p_input)->master->i_title_start -
>>> 
>>> 
>>> 
>>> 
>>> -        input_priv(p_input)->master->i_title_offset;
>>> 
>>> 
>>> 
>>> 
>>> -    if( val.i_int < 0 || val.i_int >= input_priv(p_input)->master-
>>>      >i_title )
>>>>>> 
>>> 
>>> 
>>> +    val.i_int = priv->master->i_title_start - priv->master-
>>>      >i_title_offset;
>>>>>> 
>>> 
>>> 
>>> +    if( val.i_int < 0 || val.i_int >= priv->master->i_title )
>>>>>> 
>>> 
>>> 
>>>          val.i_int = 0;
>>> 
>>> 
>>> 
>>> 
>>>      input_ControlPush( p_input,
>>> 
>>> 
>>> 
>>> 
>>>                         INPUT_CONTROL_SET_TITLE, &val );
>>> 
>>> 
>>> 
>>> 
>>>  
>>> 
>>> 
>>> 
>>> 
>>> -    val.i_int = input_priv(p_input)->master->i_seekpoint_start -
>>>>>> 
>>> 
>>> 
>>> -        input_priv(p_input)->master->i_seekpoint_offset;
>>> 
>>> 
>>> 
>>> 
>>> +    val.i_int = priv->master->i_seekpoint_start -
>>> 
>>> 
>>> 
>>> 
>>> +                priv->master->i_seekpoint_offset;
>>> 
>>> 
>>> 
>>> 
>>>      if( val.i_int > 0 /* TODO: check upper boundary */ )
>>> 
>>> 
>>> 
>>> 
>>>          input_ControlPush( p_input,
>>> 
>>> 
>>> 
>>> 
>>>                             INPUT_CONTROL_SET_SEEKPOINT, &val );
>>>>>> 
>>> 
>>> 
>>>  
>>> 
>>> 
>>> 
>>> 
>>>      /* Seek to start position */
>>> 
>>> 
>>> 
>>> 
>>> -    if( input_priv(p_input)->i_start > 0 )
>>> 
>>> 
>>> 
>>> 
>>> +    if( priv->i_start > 0 )
>>> 
>>> 
>>> 
>>> 
>>>      {
>>> 
>>> 
>>> 
>>> 
>>> -        val.i_int = input_priv(p_input)->i_start;
>>> 
>>> 
>>> 
>>> 
>>> -        input_ControlPush( p_input, INPUT_CONTROL_SET_TIME, &val );
>>>>>> 
>>> 
>>> 
>>> +        input_SetTime( p_input, priv->i_start, false );
>>> 
>>> 
>>> 
>>> 
>>>      }
>>> 
>>> 
>>> 
>>> 
>>>      else
>>> 
>>> 
>>> 
>>> 
>>>      {
>>> 
>>> 
>>> 
>>> 
>>> -        val.f_float = 0.f;
>>> 
>>> 
>>> 
>>> 
>>> -        input_ControlPush( p_input, INPUT_CONTROL_SET_POSITION,
>>>          &val );
>>>>>> 
>>> 
>>> 
>>> +        input_SetPosition( p_input, 0.0f, false );
>>> 
>>> 
>>> 
>>> 
>>>      }
>>> 
>>> 
>>> 
>>> 
>>>  
>>> 
>>> 
>>> 
>>> 
>>>      return VLC_SUCCESS;
>>> 
>>> 
>>> 
>>> 
>>> @@ -916,20 +954,16 @@ static void StartTitle( input_thread_t *
>>> p_input )
>>>>>> 
>>> 
>>> 
>>>  
>>> 
>>> 
>>> 
>>> 
>>>      if( priv->i_start > 0 )
>>> 
>>> 
>>> 
>>> 
>>>      {
>>> 
>>> 
>>> 
>>> 
>>> -        vlc_value_t s;
>>> 
>>> 
>>> 
>>> 
>>> -
>>> 
>>> 
>>> 
>>> 
>>>          msg_Dbg( p_input, "starting at time: %"PRId64"s",
>>> 
>>> 
>>> 
>>> 
>>>                   priv->i_start / CLOCK_FREQ );
>>> 
>>> 
>>> 
>>> 
>>>  
>>> 
>>> 
>>> 
>>> 
>>> -        s.i_int = priv->i_start;
>>> 
>>> 
>>> 
>>> 
>>> -        input_ControlPush( p_input, INPUT_CONTROL_SET_TIME, &s );
>>>>>> 
>>> 
>>> 
>>> +        input_SetTime( p_input, priv->i_start, false );
>>> 
>>> 
>>> 
>>> 
>>>      }
>>> 
>>> 
>>> 
>>> 
>>>      if( priv->i_stop > 0 && priv->i_stop <= priv->i_start )
>>> 
>>> 
>>> 
>>> 
>>>      {
>>> 
>>> 
>>> 
>>> 
>>>          msg_Warn( p_input, "invalid stop-time ignored" );
>>> 
>>> 
>>> 
>>> 
>>>          priv->i_stop = 0;
>>> 
>>> 
>>> 
>>> 
>>>      }
>>> 
>>> 
>>> 
>>> 
>>> -    priv->b_fast_seek = var_GetBool( p_input, "input-fast-seek" );
>>>>>> 
>>> 
>>> 
>>>  }
>>> 
>>> 
>>> 
>>> 
>>>  
>>> 
>>> 
>>> 
>>> 
>>>  static int SlaveCompare(const void *a, const void *b)
>>> 
>>> 
>>> 
>>> 
>>> @@ -1627,6 +1661,8 @@ static void ControlRelease( int i_type,
>>> vlc_value_t val )
>>>>>> 
>>> 
>>> 
>>>      case INPUT_CONTROL_SET_VIEWPOINT:
>>> 
>>> 
>>> 
>>> 
>>>      case INPUT_CONTROL_SET_INITIAL_VIEWPOINT:
>>> 
>>> 
>>> 
>>> 
>>>      case INPUT_CONTROL_UPDATE_VIEWPOINT:
>>> 
>>> 
>>> 
>>> 
>>> +    case INPUT_CONTROL_SET_TIME:
>>> 
>>> 
>>> 
>>> 
>>> +    case INPUT_CONTROL_SET_POSITION:
>>> 
>>> 
>>> 
>>> 
>>>          free( val.p_address );
>>> 
>>> 
>>> 
>>> 
>>>          break;
>>> 
>>> 
>>> 
>>> 
>>>      case INPUT_CONTROL_SET_RENDERER:
>>> 
>>> 
>>> 
>>> 
>>> @@ -1849,7 +1885,8 @@ static bool Control( input_thread_t *p_input,
>>>>>> 
>>> 
>>> 
>>>                  break;
>>> 
>>> 
>>> 
>>> 
>>>              }
>>> 
>>> 
>>> 
>>> 
>>>  
>>> 
>>> 
>>> 
>>> 
>>> -            float f_pos = val.f_float;
>>> 
>>> 
>>> 
>>> 
>>> +            input_seek_params_t *param = val.p_address;
>>> 
>>> 
>>> 
>>> 
>>> +            float f_pos = param->f_position;
>>> 
>>> 
>>> 
>>> 
>>>              if( f_pos < 0.f )
>>> 
>>> 
>>> 
>>> 
>>>                  f_pos = 0.f;
>>> 
>>> 
>>> 
>>> 
>>>              else if( f_pos > 1.f )
>>> 
>>> 
>>> 
>>> 
>>> @@ -1857,7 +1894,7 @@ static bool Control( input_thread_t *p_input,
>>>>>> 
>>> 
>>> 
>>>              /* Reset the decoders states and clock sync (before
>>>              calling the demuxer */
>>>>>> 
>>> 
>>> 
>>>              es_out_Control( input_priv(p_input)->p_es_out,
>>>              ES_OUT_RESET_PCR );
>>>>>> 
>>> 
>>> 
>>>              if( demux_Control( input_priv(p_input)->master-
>>>              >p_demux, DEMUX_SET_POSITION,
>>>>>> 
>>> 
>>> 
>>> -                               (double) f_pos, !input_priv(p_input)-
>>>                                 >b_fast_seek ) )
>>>>>> 
>>> 
>>> 
>>> +                               (double) f_pos, !param->b_fast ) )
>>>>>> 
>>> 
>>> 
>>>              {
>>> 
>>> 
>>> 
>>> 
>>>                  msg_Err( p_input, "INPUT_CONTROL_SET_POSITION "
>>>>>> 
>>> 
>>> 
>>>                           "%2.1f%% failed", (double)(f_pos * 100.f)
>>>                           );
>>>>>> 
>>> 
>>> 
>>> @@ -1877,6 +1914,7 @@ static bool Control( input_thread_t *p_input,
>>>>>> 
>>> 
>>> 
>>>          {
>>> 
>>> 
>>> 
>>> 
>>>              int64_t i_time;
>>> 
>>> 
>>> 
>>> 
>>>              int i_ret;
>>> 
>>> 
>>> 
>>> 
>>> +            input_seek_params_t *param;
>>> 
>>> 
>>> 
>>> 
>>>  
>>> 
>>> 
>>> 
>>> 
>>>              if( input_priv(p_input)->b_recording )
>>> 
>>> 
>>> 
>>> 
>>>              {
>>> 
>>> 
>>> 
>>> 
>>> @@ -1884,7 +1922,8 @@ static bool Control( input_thread_t *p_input,
>>>>>> 
>>> 
>>> 
>>>                  break;
>>> 
>>> 
>>> 
>>> 
>>>              }
>>> 
>>> 
>>> 
>>> 
>>>  
>>> 
>>> 
>>> 
>>> 
>>> -            i_time = val.i_int;
>>> 
>>> 
>>> 
>>> 
>>> +            param = val.p_address;
>>> 
>>> 
>>> 
>>> 
>>> +            i_time = param->i_time;
>>> 
>>> 
>>> 
>>> 
>>>              if( i_time < 0 )
>>> 
>>> 
>>> 
>>> 
>>>                  i_time = 0;
>>> 
>>> 
>>> 
>>> 
>>>  
>>> 
>>> 
>>> 
>>> 
>>> @@ -1893,7 +1932,7 @@ static bool Control( input_thread_t *p_input,
>>>>>> 
>>> 
>>> 
>>>  
>>> 
>>> 
>>> 
>>> 
>>>              i_ret = demux_Control( input_priv(p_input)->master-
>>>              >p_demux,
>>>>>> 
>>> 
>>> 
>>>                                     DEMUX_SET_TIME, i_time,
>>> 
>>> 
>>> 
>>> 
>>> -                                   !input_priv(p_input)-
>>>                                     >b_fast_seek );
>>>>>> 
>>> 
>>> 
>>> +                                   !param->b_fast );
>>> 
>>> 
>>> 
>>> 
>>>              if( i_ret )
>>> 
>>> 
>>> 
>>> 
>>>              {
>>> 
>>> 
>>> 
>>> 
>>>                  int64_t i_length;
>>> 
>>> 
>>> 
>>> 
>>> @@ -1905,7 +1944,7 @@ static bool Control( input_thread_t *p_input,
>>>>>> 
>>> 
>>> 
>>>                      double f_pos = (double)i_time /
>>>                      (double)i_length;
>>>>>> 
>>> 
>>> 
>>>                      i_ret = demux_Control( input_priv(p_input)->master-
>>>                      >p_demux,
>>>>>> 
>>> 
>>> 
>>>                                              DEMUX_SET_POSITION,
>>>                                              f_pos,
>>>>>> 
>>> 
>>> 
>>> -                                            !input_priv(p_input)-
>>>                                              >b_fast_seek );
>>>>>> 
>>> 
>>> 
>>> +                                            !param->b_fast );
>>>>>> 
>>> 
>>> 
>>>                  }
>>> 
>>> 
>>> 
>>> 
>>>              }
>>> 
>>> 
>>> 
>>> 
>>>              if( i_ret )
>>> 
>>> 
>>> 
>>> 
>>> @@ -2236,8 +2275,18 @@ static bool Control( input_thread_t *p_input,
>>>>>> 
>>> 
>>> 
>>>                  break;
>>> 
>>> 
>>> 
>>> 
>>>              }
>>> 
>>> 
>>> 
>>> 
>>>  
>>> 
>>> 
>>> 
>>> 
>>> -            val.i_int = time_offset;
>>> 
>>> 
>>> 
>>> 
>>> -            b_force_update = Control( p_input,
>>>              INPUT_CONTROL_SET_TIME, val );
>>>>>> 
>>> 
>>> 
>>> +            vlc_value_t seek_val;
>>> 
>>> 
>>> 
>>> 
>>> +            input_seek_params_t *param;
>>> 
>>> 
>>> 
>>> 
>>> +
>>> 
>>> 
>>> 
>>> 
>>> +            param = malloc( sizeof(*param) );
>>> 
>>> 
>>> 
>>> 
>>> +            if( unlikely(param == NULL) )
>>> 
>>> 
>>> 
>>> 
>>> +                break;
>>> 
>>> 
>>> 
>>> 
>>> +
>>> 
>>> 
>>> 
>>> 
>>> +            param->b_fast = false;
>>> 
>>> 
>>> 
>>> 
>>> +            param->i_time = time_offset;
>>> 
>>> 
>>> 
>>> 
>>> +            seek_val.p_address = param;
>>> 
>>> 
>>> 
>>> 
>>> +
>>> 
>>> 
>>> 
>>> 
>>> +            b_force_update = Control( p_input,
>>>              INPUT_CONTROL_SET_TIME, seek_val );
>>>>>> 
>>> 
>>> 
>>>              break;
>>> 
>>> 
>>> 
>>> 
>>>          }
>>> 
>>> 
>>> 
>>> 
>>>          case INPUT_CONTROL_SET_RENDERER:
>>> 
>>> 
>>> 
>>> 
>>> diff --git a/src/input/input_internal.h b/src/input/input_internal.h
>>>>>> 
>>> 
>>> 
>>> index c0b8ae4..bc38a09 100644
>>> 
>>> 
>>> 
>>> 
>>> --- a/src/input/input_internal.h
>>> 
>>> 
>>> 
>>> 
>>> +++ b/src/input/input_internal.h
>>> 
>>> 
>>> 
>>> 
>>> @@ -106,7 +106,6 @@ typedef struct input_thread_private_t
>>> 
>>> 
>>> 
>>> 
>>>      mtime_t     i_start;    /* :start-time,0 by default */
>>> 
>>> 
>>> 
>>> 
>>>      mtime_t     i_stop;     /* :stop-time, 0 if none */
>>> 
>>> 
>>> 
>>> 
>>>      mtime_t     i_time;     /* Current time */
>>> 
>>> 
>>> 
>>> 
>>> -    bool        b_fast_seek;/* :input-fast-seek */
>>> 
>>> 
>>> 
>>> 
>>>  
>>> 
>>> 
>>> 
>>> 
>>>      /* Output */
>>> 
>>> 
>>> 
>>> 
>>>      bool            b_out_pace_control; /* XXX Move it ot es_sout ?
>>>      */
>>>>>> 
>>> 
>>> 
>>> diff --git a/src/input/var.c b/src/input/var.c
>>> 
>>> 
>>> 
>>> 
>>> index 04c8cb0..717ae74 100644
>>> 
>>> 
>>> 
>>> 
>>> --- a/src/input/var.c
>>> 
>>> 
>>> 
>>> 
>>> +++ b/src/input/var.c
>>> 
>>> 
>>> 
>>> 
>>> @@ -593,8 +593,8 @@ static int PositionCallback( vlc_object_t
>>> *p_this, char const *psz_cmd,
>>>>>> 
>>> 
>>> 
>>>          var_Change( p_input, "time", VLC_VAR_SETVALUE, val );
>>>>>> 
>>> 
>>> 
>>>      }
>>> 
>>> 
>>> 
>>> 
>>>  
>>> 
>>> 
>>> 
>>> 
>>> -    input_ControlPush( p_input, INPUT_CONTROL_SET_POSITION, &newval
>>>      );
>>>>>> 
>>> 
>>> 
>>> -    return VLC_SUCCESS;
>>> 
>>> 
>>> 
>>> 
>>> +    return input_SetPosition( p_input, newval.f_float,
>>> 
>>> 
>>> 
>>> 
>>> +                              var_GetBool( p_input, "input-fast-
>>>                                seek" ) );
>>>>>> 
>>> 
>>> 
>>>  }
>>> 
>>> 
>>> 
>>> 
>>>  
>>> 
>>> 
>>> 
>>> 
>>>  static int TimeCallback( vlc_object_t *p_this, char const *psz_cmd,
>>>>>> 
>>> 
>>> 
>>> @@ -618,8 +618,8 @@ static int TimeCallback( vlc_object_t *p_this,
>>> char const *psz_cmd,
>>>>>> 
>>> 
>>> 
>>>          var_SetInteger( p_input, "intf-event", INPUT_EVENT_POSITION
>>>          );
>>>>>> 
>>> 
>>> 
>>>      }
>>> 
>>> 
>>> 
>>> 
>>>  
>>> 
>>> 
>>> 
>>> 
>>> -    input_ControlPush( p_input, INPUT_CONTROL_SET_TIME, &newval );
>>>>>> 
>>> 
>>> 
>>> -    return VLC_SUCCESS;
>>> 
>>> 
>>> 
>>> 
>>> +    return input_SetTime( p_input, newval.i_int,
>>> 
>>> 
>>> 
>>> 
>>> +                          var_GetBool( p_input, "input-fast-seek" )
>>>                            );
>>>>>> 
>>> 
>>> 
>>>  }
>>> 
>>> 
>>> 
>>> 
>>>  
>>> 
>>> 
>>> 
>>> 
>>>  static int TimeOffsetCallback( vlc_object_t *obj, char const
>>>  *varname,
>>>>>> 
>>> 
>>> 
>>> diff --git a/src/libvlccore.sym b/src/libvlccore.sym
>>> 
>>> 
>>> 
>>> 
>>> index e32a686..15a8af2 100644
>>> 
>>> 
>>> 
>>> 
>>> --- a/src/libvlccore.sym
>>> 
>>> 
>>> 
>>> 
>>> +++ b/src/libvlccore.sym
>>> 
>>> 
>>> 
>>> 
>>> @@ -205,6 +205,8 @@ input_resource_ResetAout
>>> 
>>> 
>>> 
>>> 
>>>  input_Start
>>> 
>>> 
>>> 
>>> 
>>>  input_Stop
>>> 
>>> 
>>> 
>>> 
>>>  input_vaControl
>>> 
>>> 
>>> 
>>> 
>>> +input_SetTime
>>> 
>>> 
>>> 
>>> 
>>> +input_SetPosition
>>> 
>>> 
>>> 
>>> 
>>>  vlc_readdir_helper_init
>>> 
>>> 
>>> 
>>> 
>>>  vlc_readdir_helper_finish
>>> 
>>> 
>>> 
>>> 
>>>  vlc_readdir_helper_additem
>>> 
>>> 
>>> 
>>> 
>> 
>> --
>> Envoyé de mon appareil Android avec Courriel K-9 Mail. Veuillez
>> excuser ma brièveté.>> _________________________________________________
>> vlc-devel mailing list
>> To unsubscribe or modify your subscription options:
>> https://mailman.videolan.org/listinfo/vlc-devel
> 
> _________________________________________________
> vlc-devel mailing list
> To unsubscribe or modify your subscription options:
> https://mailman.videolan.org/listinfo/vlc-devel

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.videolan.org/pipermail/vlc-devel/attachments/20180621/59892c0d/attachment.html>


More information about the vlc-devel mailing list