vlc | branch: master | Francois Cartegnie <fcvlc...@free.fr> | Fri Oct 17 21:53:10 2014 +0200| [7a3abe039e62fe7446902e56a9ac672b36e1d158] | committer: Francois Cartegnie
demux: libmp4: add tsel atom > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=7a3abe039e62fe7446902e56a9ac672b36e1d158 --- modules/demux/mp4/libmp4.c | 15 +++++++++++++++ modules/demux/mp4/libmp4.h | 7 +++++++ 2 files changed, 22 insertions(+) diff --git a/modules/demux/mp4/libmp4.c b/modules/demux/mp4/libmp4.c index 53f4a32..3ace93e 100644 --- a/modules/demux/mp4/libmp4.c +++ b/modules/demux/mp4/libmp4.c @@ -3276,6 +3276,18 @@ static void MP4_FreeBox_sdtp( MP4_Box_t *p_box ) FREENULL( p_box->data.p_sdtp->p_sample_table ); } +static int MP4_ReadBox_tsel( stream_t *p_stream, MP4_Box_t *p_box ) +{ + MP4_READBOX_ENTER( MP4_Box_data_tsel_t ); + uint32_t i_version; + MP4_GET4BYTES( i_version ); + if ( i_version != 0 || i_read < 4 ) + MP4_READBOX_EXIT( 0 ); + MP4_GET4BYTES( p_box->data.p_tsel->i_switch_group ); + /* ignore list of attributes as es are present before switch */ + MP4_READBOX_EXIT( 1 ); +} + static int MP4_ReadBox_mfro( stream_t *p_stream, MP4_Box_t *p_box ) { MP4_READBOX_ENTER( MP4_Box_data_mfro_t ); @@ -3779,6 +3791,9 @@ static const struct { ATOM_vndr, MP4_ReadBox_String, MP4_FreeBox_String, ATOM_udta }, { ATOM_SDLN, MP4_ReadBox_String, MP4_FreeBox_String, ATOM_udta }, + /* udta, non meta */ + { ATOM_tsel, MP4_ReadBox_tsel, MP4_FreeBox_Common, ATOM_udta }, + /* iTunes/Quicktime meta info */ { ATOM_meta, MP4_ReadBox_meta, MP4_FreeBox_Common, 0 }, { ATOM_data, MP4_ReadBox_data, MP4_FreeBox_data, 0 }, diff --git a/modules/demux/mp4/libmp4.h b/modules/demux/mp4/libmp4.h index 6abfc29..f1c5d70 100644 --- a/modules/demux/mp4/libmp4.h +++ b/modules/demux/mp4/libmp4.h @@ -300,6 +300,7 @@ #define ATOM_covr VLC_FOURCC( 'c', 'o', 'v', 'r' ) #define ATOM_flvr VLC_FOURCC( 'f', 'l', 'v', 'r' ) #define ATOM_rtng VLC_FOURCC( 'r', 't', 'n', 'g' ) +#define ATOM_tsel VLC_FOURCC( 't', 's', 'e', 'l' ) #define ATOM_xid_ VLC_FOURCC( 'x', 'i', 'd', ' ' ) #define ATOM_chap VLC_FOURCC( 'c', 'h', 'a', 'p' ) @@ -1266,6 +1267,11 @@ typedef struct typedef struct { + uint32_t i_switch_group; +} MP4_Box_data_tsel_t; + +typedef struct +{ uint8_t i_version; uint32_t i_flags; @@ -1393,6 +1399,7 @@ typedef union MP4_Box_data_s MP4_Box_data_trex_t *p_trex; MP4_Box_data_mehd_t *p_mehd; MP4_Box_data_sdtp_t *p_sdtp; + MP4_Box_data_tsel_t *p_tsel; MP4_Box_data_tfra_t *p_tfra; MP4_Box_data_mfro_t *p_mfro; _______________________________________________ vlc-commits mailing list vlc-commits@videolan.org https://mailman.videolan.org/listinfo/vlc-commits