vlc | branch: master | Francois Cartegnie <fcvlc...@free.fr> | Fri Dec 12 14:38:01 2014 +0100| [e4c7e797046fe7665869f34d1294bfa85edefd14] | committer: Francois Cartegnie
demux: mp4: add DASH major and switch demuxer accordingly > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=e4c7e797046fe7665869f34d1294bfa85edefd14 --- modules/demux/mp4/libmp4.h | 1 + modules/demux/mp4/mp4.c | 32 +++++++++++++++++++++++--------- 2 files changed, 24 insertions(+), 9 deletions(-) diff --git a/modules/demux/mp4/libmp4.h b/modules/demux/mp4/libmp4.h index bccf302..798255e 100644 --- a/modules/demux/mp4/libmp4.h +++ b/modules/demux/mp4/libmp4.h @@ -35,6 +35,7 @@ #define MAJOR_isml VLC_FOURCC( 'i', 's', 'm', 'l' ) #define MAJOR_isom VLC_FOURCC( 'i', 's', 'o', 'm' ) #define MAJOR_qt__ VLC_FOURCC( 'q', 't', ' ', ' ' ) +#define MAJOR_dash VLC_FOURCC( 'd', 'a', 's', 'h' ) #define ATOM_root VLC_FOURCC( 'r', 'o', 'o', 't' ) #define ATOM_uuid VLC_FOURCC( 'u', 'u', 'i', 'd' ) diff --git a/modules/demux/mp4/mp4.c b/modules/demux/mp4/mp4.c index aecc247..42a5f70 100644 --- a/modules/demux/mp4/mp4.c +++ b/modules/demux/mp4/mp4.c @@ -84,6 +84,7 @@ struct demux_sys_t bool b_fastseekable; bool b_seekmode; bool b_smooth; /* Is it Smooth Streaming? */ + bool b_dash; bool b_index_probed; bool b_fragments_probed; @@ -626,15 +627,6 @@ static int Open( vlc_object_t * p_this ) if ( !p_sys->moovfragment.p_moox && !p_sys->b_smooth ) goto error; - if ( p_sys->b_smooth ) - { - p_demux->pf_demux = DemuxFrg; - } - else if( p_sys->b_fragmented ) - { - p_demux->pf_demux = DemuxAsLeaf; - } - if( p_sys->b_smooth ) { if( InitTracks( p_demux ) != VLC_SUCCESS ) @@ -672,18 +664,40 @@ static int Open( vlc_object_t * p_this ) case MAJOR_isml: msg_Dbg( p_demux, "PIFF (= isml = fMP4) file" ); break; + case MAJOR_dash: + msg_Dbg( p_demux, "DASH Stream file" ); + p_sys->b_dash = true; + break; default: msg_Dbg( p_demux, "unrecognized major file specification (%4.4s).", (char*)&BOXDATA(p_ftyp)->i_major_brand ); break; } + /* also lookup in compatibility list */ + for(uint32_t i=0; i<BOXDATA(p_ftyp)->i_compatible_brands_count; i++) + { + if (BOXDATA(p_ftyp)->i_compatible_brands[i] == MAJOR_dash) + { + msg_Dbg( p_demux, "DASH Stream file" ); + p_sys->b_dash = true; + } + } } else { msg_Dbg( p_demux, "file type box missing (assuming ISO Media file)" ); } + if ( p_sys->b_smooth || p_sys->b_dash ) + { + p_demux->pf_demux = DemuxFrg; + } + else if( p_sys->b_fragmented ) + { + p_demux->pf_demux = DemuxAsLeaf; + } + /* the file need to have one moov box */ p_sys->moovfragment.p_moox = MP4_BoxGet( p_sys->p_root, "/moov", 0 ); if( !p_sys->moovfragment.p_moox ) _______________________________________________ vlc-commits mailing list vlc-commits@videolan.org https://mailman.videolan.org/listinfo/vlc-commits