[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