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

Thomas Guillem thomas at gllm.fr
Wed Jul 18 11:09:46 CEST 2018


Forget about es_out_Replace. I will try to fix this control instead.
It's easier to keep the same es_out_id_t, even when changing the fmt.

On Tue, Jul 17, 2018, at 18:59, Thomas Guillem wrote:
> 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
> _______________________________________________
> 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