[vlc-devel] [PATCH 4/4] es_out: remove hacky control

Thomas Guillem thomas at gllm.fr
Tue Jul 17 18:59:36 CEST 2018


One other solution is to keep this control instead of using es_out_Replace.

But this control need to drain before deleting the decoder.

On Tue, Jul 17, 2018, at 18:57, Thomas Guillem wrote:
> ---
>  include/vlc_es_out.h         |  3 ---
>  src/input/es_out.c           | 21 ---------------------
>  src/input/es_out_timeshift.c | 35 -----------------------------------
>  3 files changed, 59 deletions(-)
> 
> diff --git a/include/vlc_es_out.h b/include/vlc_es_out.h
> index 380685e085..03dcef9e94 100644
> --- a/include/vlc_es_out.h
> +++ b/include/vlc_es_out.h
> @@ -64,9 +64,6 @@ enum es_out_query_e
>      ES_OUT_SET_GROUP_PCR,       /* arg1= int i_group, arg2=vlc_tick_t 
> i_pcr(microsecond!)*/
>      ES_OUT_RESET_PCR,           /* no arg */
>  
> -    /* Try not to use this one as it is a bit hacky */
> -    ES_OUT_SET_ES_FMT,         /* arg1= es_out_id_t* arg2=es_format_t* 
> */
> -
>      /* Allow preroll of data (data with dts/pts < i_pts for all ES will 
> be decoded but not displayed */
>      ES_OUT_SET_NEXT_DISPLAY_TIME,       /* arg1=int64_t 
> i_pts(microsecond) */
>      /* Set meta data for group (dynamic) (The vlc_meta_t is not 
> modified nor released) */
> diff --git a/src/input/es_out.c b/src/input/es_out.c
> index 3a23425510..3158bba3cf 100644
> --- a/src/input/es_out.c
> +++ b/src/input/es_out.c
> @@ -2593,27 +2593,6 @@ static int EsOutControlLocked( es_out_t *out, int 
> i_query, va_list args )
>          return VLC_EGENERIC;
>      }
>  
> -    case ES_OUT_SET_ES_FMT:
> -    {
> -        /* This ain't pretty but is need by some demuxers (eg. Ogg )
> -         * to update the p_extra data */
> -        es_out_id_t *es = va_arg( args, es_out_id_t * );
> -        es_format_t *p_fmt = va_arg( args, es_format_t * );
> -        if( es == NULL )
> -            return VLC_EGENERIC;
> -
> -        es_format_Clean( &es->fmt );
> -        es_format_Copy( &es->fmt, p_fmt );
> -
> -        if( es->p_dec )
> -        {
> -            EsDestroyDecoder( out, es );
> -            EsCreateDecoder( out, es );
> -        }
> -
> -        return VLC_SUCCESS;
> -    }
> -
>      case ES_OUT_SET_ES_SCRAMBLED_STATE:
>      {
>          es_out_id_t *es = va_arg( args, es_out_id_t * );
> diff --git a/src/input/es_out_timeshift.c b/src/input/es_out_timeshift.c
> index f20dc3c1dd..672a3ab7e0 100644
> --- a/src/input/es_out_timeshift.c
> +++ b/src/input/es_out_timeshift.c
> @@ -132,11 +132,6 @@ typedef struct attribute_packed
>              bool        b_bool;
>          } es_bool;
>          struct
> -        {
> -            es_out_id_t *p_es;
> -            es_format_t *p_fmt;
> -        } es_fmt;
> -        struct
>          {
>              int i_cat;
>              int i_policy;
> @@ -673,7 +668,6 @@ static int ControlLocked( es_out_t *p_out, int 
> i_query, va_list args )
>      case ES_OUT_SET_ES_DEFAULT:
>      case ES_OUT_SET_ES_STATE:
>      case ES_OUT_SET_ES_CAT_POLICY:
> -    case ES_OUT_SET_ES_FMT:
>      case ES_OUT_SET_TIMES:
>      case ES_OUT_SET_JITTER:
>      case ES_OUT_SET_EOS:
> @@ -1584,24 +1578,6 @@ static int CmdInitControl( ts_cmd_t *p_cmd, int 
> i_query, va_list args, bool b_co
>          p_cmd->u.control.u.es_bool.b_bool = (bool)va_arg( args, int );
>          break;
>  
> -    case ES_OUT_SET_ES_FMT:     /* arg1= es_out_id_t* arg2=es_format_t* 
> */
> -    {
> -        p_cmd->u.control.u.es_fmt.p_es = (es_out_id_t*)va_arg( args, 
> es_out_id_t * );
> -        es_format_t *p_fmt = (es_format_t*)va_arg( args, es_format_t 
> * );
> -
> -        if( b_copy )
> -        {
> -            p_cmd->u.control.u.es_fmt.p_fmt = malloc( sizeof(*p_fmt) );
> -            if( !p_cmd->u.control.u.es_fmt.p_fmt )
> -                return VLC_EGENERIC;
> -            es_format_Copy( p_cmd->u.control.u.es_fmt.p_fmt, p_fmt );
> -        }
> -        else
> -        {
> -            p_cmd->u.control.u.es_fmt.p_fmt = p_fmt;
> -        }
> -        break;
> -    }
>      case ES_OUT_SET_TIMES:
>      {
>          double f_position = (double)va_arg( args, double );
> @@ -1694,10 +1670,6 @@ static int CmdExecuteControl( es_out_t *p_out, 
> ts_cmd_t *p_cmd )
>          return es_out_Control( p_out, i_query, p_cmd-
> >u.control.u.es_policy.i_cat,
>                                                 p_cmd-
> >u.control.u.es_policy.i_policy );
>  
> -    case ES_OUT_SET_ES_FMT:     /* arg1= es_out_id_t* arg2=es_format_t* 
> */
> -        return es_out_Control( p_out, i_query, p_cmd-
> >u.control.u.es_fmt.p_es->p_es,
> -                                               p_cmd-
> >u.control.u.es_fmt.p_fmt );
> -
>      case ES_OUT_SET_TIMES:
>          return es_out_Control( p_out, i_query, p_cmd-
> >u.control.u.times.f_position,
>                                                 p_cmd-
> >u.control.u.times.i_time,
> @@ -1729,13 +1701,6 @@ static void CmdCleanControl( ts_cmd_t *p_cmd )
>          if( p_cmd->u.control.u.int_epg_evt.p_evt )
>              vlc_epg_event_Delete( p_cmd-
> >u.control.u.int_epg_evt.p_evt );
>          break;
> -    case ES_OUT_SET_ES_FMT:
> -        if( p_cmd->u.control.u.es_fmt.p_fmt )
> -        {
> -            es_format_Clean( p_cmd->u.control.u.es_fmt.p_fmt );
> -            free( p_cmd->u.control.u.es_fmt.p_fmt );
> -        }
> -        break;
>      }
>  }
>  
> -- 
> 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