[vlc-devel] [PATCH 2/2] demux: asf: do ES audio selection for mms (fix #8797, #3400, #3797)
David Glaude
david.glaude at gmail.com
Sun Feb 15 17:38:10 CET 2015
Dear,
I am afraid this or some other change in modules/access/mms/mmsh.c or
modules/demux/asf/asf.c
David Glaude
2013-12-03 19:05 GMT+01:00 Francois Cartegnie <fcvlcdev at free.fr>:
> ---
> modules/access/mms/mmsh.c | 20 ++++++++++++++++++++
> modules/demux/asf/asf.c | 34 ++++++++++++++++++++++++++--------
> 2 files changed, 46 insertions(+), 8 deletions(-)
>
> diff --git a/modules/access/mms/mmsh.c b/modules/access/mms/mmsh.c
> index d354d28..414dfd4 100644
> --- a/modules/access/mms/mmsh.c
> +++ b/modules/access/mms/mmsh.c
> @@ -261,6 +261,26 @@ static int Control( access_t *p_access, int i_query,
> va_list args )
> *pb_bool = p_sys->asfh.stream[i_int].i_selected ? true :
> false;
> break;
>
> + case ACCESS_SET_PRIVATE_ID_STATE:
> + i_int = (int)va_arg( args, int );
> + b_bool = (bool)va_arg( args, int );
> + if( (i_int < 0) || (i_int > 127) )
> + return VLC_EGENERIC;
> + else
> + {
> + int i_cat = p_sys->asfh.stream[i_int].i_cat;
> + for ( int i=0; i< 128; i++ )
> + {
> + /* First unselect all streams from the same cat */
> + if ( i_cat == p_sys->asfh.stream[i].i_cat )
> + p_sys->asfh.stream[i].i_selected = false;
> + }
> + p_sys->asfh.stream[i_int].i_selected = true;
> + Stop( p_access );
> + Seek( p_access, p_access->info.i_pos );
> + return VLC_SUCCESS;
> + }
> +
> case ACCESS_SET_PAUSE_STATE:
> b_bool = (bool)va_arg( args, int );
> if( b_bool )
> diff --git a/modules/demux/asf/asf.c b/modules/demux/asf/asf.c
> index f169d37..bde94e6 100644
> --- a/modules/demux/asf/asf.c
> +++ b/modules/demux/asf/asf.c
> @@ -354,6 +354,7 @@ static int Control( demux_t *p_demux, int i_query,
> va_list args )
> demux_sys_t *p_sys = p_demux->p_sys;
> vlc_meta_t *p_meta;
> int64_t i64, *pi64;
> + int i;
> double f, *pf;
>
> switch( i_query )
> @@ -388,6 +389,20 @@ static int Control( demux_t *p_demux, int i_query,
> va_list args )
> }
> return SeekPercent( p_demux, i_query, args );
>
> + case DEMUX_SET_ES:
> + {
> + i = (int)va_arg( args, int );
> + int i_ret = stream_Control( p_demux->s,
> + STREAM_SET_PRIVATE_ID_STATE, i, true
> );
> + if ( i_ret == VLC_SUCCESS )
> + {
> + SeekPrepare( p_demux );
> + p_sys->i_seek_track = 0;
> + WaitKeyframe( p_demux );
> + }
> + return i_ret;
> + }
> +
> case DEMUX_GET_POSITION:
> if( p_sys->i_time < 0 ) return VLC_EGENERIC;
> if( p_sys->i_length > 0 )
> @@ -1003,15 +1018,18 @@ static int DemuxInit( demux_t *p_demux )
> tk->p_esp = NULL;
> tk->p_frame = NULL;
>
> - /* Check (in case of mms) if this track is selected (ie will
> receive data) */
> - if( !stream_Control( p_demux->s, STREAM_GET_PRIVATE_ID_STATE,
> - (int) p_sp->i_stream_number,
> &b_access_selected ) &&
> - !b_access_selected )
> + if ( strncmp( p_demux->psz_access, "mms", 3 ) )
> {
> - tk->i_cat = UNKNOWN_ES;
> - msg_Dbg( p_demux, "ignoring not selected stream(ID:%u) (by
> access)",
> - p_sp->i_stream_number );
> - continue;
> + /* Check (not mms) if this track is selected (ie will receive
> data) */
> + if( !stream_Control( p_demux->s, STREAM_GET_PRIVATE_ID_STATE,
> + (int) p_sp->i_stream_number,
> &b_access_selected ) &&
> + !b_access_selected )
> + {
> + tk->i_cat = UNKNOWN_ES;
> + msg_Dbg( p_demux, "ignoring not selected stream(ID:%u)
> (by access)",
> + p_sp->i_stream_number );
> + continue;
> + }
> }
>
> /* Find the associated extended_stream_properties if any */
> --
> 1.8.3.1
>
> _______________________________________________
> 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/20150215/d951bec0/attachment.html>
More information about the vlc-devel
mailing list