[vlc-devel] [PATCH 1/6] bluray: Add some ES manipulation bases.
Rémi Denis-Courmont
remi at remlab.net
Thu Mar 8 19:36:10 CET 2012
Fine with me but the commit message sounds like gallicism.
Le jeudi 8 mars 2012 17:08:30 Hugo Beauzée-Luyssen, vous avez écrit :
> ---
> modules/access/bluray.c | 68
> +++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 66
> insertions(+), 2 deletions(-)
>
> diff --git a/modules/access/bluray.c b/modules/access/bluray.c
> index 303c3db..0f52cd4 100644
> --- a/modules/access/bluray.c
> +++ b/modules/access/bluray.c
> @@ -114,6 +114,7 @@ struct demux_sys_t
> vout_thread_t *p_vout;
>
> /* TS stream */
> + es_out_t *p_out;
> stream_t *p_parser;
> };
>
> @@ -125,6 +126,8 @@ struct subpicture_updater_sys_t
> /*************************************************************************
> **** * Local prototypes
>
> **************************************************************************
> ***/ +static es_out_t *esOutNew( demux_t *p_demux );
> +
> static int blurayControl(demux_t *, int, va_list);
> static int blurayDemux(demux_t *);
>
> @@ -280,6 +283,11 @@ static int blurayOpen( vlc_object_t *object )
> }
> }
>
> + p_sys->p_out = esOutNew( p_demux );
> + if (unlikely(p_sys->p_out == NULL)) {
> + goto error;
> + }
> +
> blurayResetParser( p_demux );
> if (!p_sys->p_parser) {
> msg_Err(p_demux, "Failed to create TS demuxer");
> @@ -324,7 +332,8 @@ static void blurayClose( vlc_object_t *object )
> vlc_object_release(p_sys->p_input);
> if (p_sys->p_parser)
> stream_Delete(p_sys->p_parser);
> -
> + if (p_sys->p_out != NULL)
> + es_out_Delete(p_sys->p_out);
> /* Titles */
> for (unsigned int i = 0; i < p_sys->i_title; i++)
> vlc_input_title_Delete(p_sys->pp_title[i]);
> @@ -334,6 +343,61 @@ static void blurayClose( vlc_object_t *object )
> }
>
> /*************************************************************************
> **** + * Elementary streams handling
> +
> **************************************************************************
> ***/ +
> +struct es_out_sys_t {
> + demux_t *p_demux;
> +};
> +
> +static es_out_id_t *esOutAdd( es_out_t *p_out, const es_format_t *p_fmt )
> +{
> + return es_out_Add( p_out->p_sys->p_demux->out, p_fmt );
> +}
> +
> +static int esOutSend( es_out_t *p_out, es_out_id_t *p_es, block_t *p_block
> ) +{
> + return es_out_Send( p_out->p_sys->p_demux->out, p_es, p_block );
> +}
> +
> +static void esOutDel( es_out_t *p_out, es_out_id_t *p_es )
> +{
> + es_out_Del( p_out->p_sys->p_demux->out, p_es );
> +}
> +
> +static int esOutControl( es_out_t *p_out, int i_query, va_list args )
> +{
> + return es_out_vaControl( p_out->p_sys->p_demux->out, i_query, args );
> +}
> +
> +static void esOutDestroy( es_out_t *p_out )
> +{
> + free( p_out->p_sys );
> + free( p_out );
> +}
> +
> +static es_out_t *esOutNew( demux_t *p_demux )
> +{
> + es_out_t *p_out = malloc( sizeof(*p_out) );
> + if ( unlikely(p_out == NULL) )
> + return NULL;
> +
> + p_out->pf_add = &esOutAdd;
> + p_out->pf_control = &esOutControl;
> + p_out->pf_del = &esOutDel;
> + p_out->pf_destroy = &esOutDestroy;
> + p_out->pf_send = &esOutSend;
> +
> + p_out->p_sys = malloc( sizeof(*p_out->p_sys) );
> + if ( unlikely( p_out->p_sys == NULL ) ) {
> + free( p_out );
> + return NULL;
> + }
> + p_out->p_sys->p_demux = p_demux;
> + return p_out;
> +}
> +
> +/*************************************************************************
> **** * subpicture_updater_t functions:
>
> **************************************************************************
> ***/ static int subpictureUpdaterValidate( subpicture_t *p_subpic,
> @@ -762,7 +826,7 @@ static void blurayResetParser( demux_t *p_demux )
> demux_sys_t *p_sys = p_demux->p_sys;
> if (p_sys->p_parser)
> stream_Delete(p_sys->p_parser);
> - p_sys->p_parser = stream_DemuxNew(p_demux, "ts", p_demux->out);
> + p_sys->p_parser = stream_DemuxNew(p_demux, "ts", p_sys->p_out);
> if (!p_sys->p_parser) {
> msg_Err(p_demux, "Failed to create TS demuxer");
> }
--
Rémi Denis-Courmont
http://www.remlab.net/
http://fi.linkedin.com/in/remidenis
More information about the vlc-devel
mailing list