vlc | branch: master | Francois Cartegnie <[email protected]> | Sun Oct 19 18:44:11 2014 +0200| [1714b8ead2e6f14f94d25be86c608d845c830a0f] | committer: Francois Cartegnie
demux: libmp4: add quicktime pnot movie preview atoms > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=1714b8ead2e6f14f94d25be86c608d845c830a0f --- modules/demux/mp4/libmp4.c | 19 +++++++++++++++++++ modules/demux/mp4/libmp4.h | 13 +++++++++++++ 2 files changed, 32 insertions(+) diff --git a/modules/demux/mp4/libmp4.c b/modules/demux/mp4/libmp4.c index 802a348..0b9b205 100644 --- a/modules/demux/mp4/libmp4.c +++ b/modules/demux/mp4/libmp4.c @@ -3429,6 +3429,20 @@ static void MP4_FreeBox_tfra( MP4_Box_t *p_box ) FREENULL( p_box->data.p_tfra->p_sample_number ); } +static int MP4_ReadBox_pnot( stream_t *p_stream, MP4_Box_t *p_box ) +{ + if ( p_box->i_size != 20 ) + return 0; + MP4_READBOX_ENTER( MP4_Box_data_pnot_t ); + MP4_GET4BYTES( p_box->data.p_pnot->i_date ); + uint16_t i_version; + MP4_GET2BYTES( i_version ); + if ( i_version != 0 ) + MP4_READBOX_EXIT( 0 ); + MP4_GETFOURCC( p_box->data.p_pnot->i_type ); + MP4_GET2BYTES( p_box->data.p_pnot->i_index ); + MP4_READBOX_EXIT( 1 ); +} /* For generic */ static int MP4_ReadBox_default( stream_t *p_stream, MP4_Box_t *p_box ) @@ -3567,6 +3581,11 @@ static const struct { ATOM_pasp, MP4_ReadBox_pasp, MP4_FreeBox_Common, 0 }, { ATOM_keys, MP4_ReadBox_keys, MP4_FreeBox_keys, ATOM_meta }, + /* Quicktime preview atoms, all at root */ + { ATOM_pnot, MP4_ReadBox_pnot, MP4_FreeBox_Common, 0 }, + { ATOM_pict, MP4_ReadBox_Binary, MP4_FreeBox_Binary, 0 }, + { ATOM_PICT, MP4_ReadBox_Binary, MP4_FreeBox_Binary, 0 }, + /* Nothing to do with this box */ { ATOM_mdat, MP4_ReadBoxSkip, MP4_FreeBox_Common, 0 }, { ATOM_skip, MP4_ReadBoxSkip, MP4_FreeBox_Common, 0 }, diff --git a/modules/demux/mp4/libmp4.h b/modules/demux/mp4/libmp4.h index efd3774..347dbfe 100644 --- a/modules/demux/mp4/libmp4.h +++ b/modules/demux/mp4/libmp4.h @@ -54,6 +54,11 @@ #define ATOM_wide VLC_FOURCC( 'w', 'i', 'd', 'e' ) #define ATOM_binm VLC_FOURCC( 0x82, 0x82, 0x7f, 0x7d ) /* binary Computer Graphics Metafile */ +/* Quicktime preview */ +#define ATOM_pnot VLC_FOURCC( 'p', 'n', 'o', 't' ) +#define ATOM_pict VLC_FOURCC( 'p', 'i', 'c', 't' ) +#define ATOM_PICT VLC_FOURCC( 'P', 'I', 'C', 'T' ) + #define ATOM_data VLC_FOURCC( 'd', 'a', 't', 'a' ) #define ATOM_trak VLC_FOURCC( 't', 'r', 'a', 'k' ) @@ -1022,6 +1027,13 @@ typedef struct MP4_Box_data_trun_s typedef struct { + uint32_t i_date; + uint32_t i_type; + uint16_t i_index; +} MP4_Box_data_pnot_t; + +typedef struct +{ char *psz_text; } MP4_Box_data_string_t; @@ -1429,6 +1441,7 @@ typedef union MP4_Box_data_s MP4_Box_data_rmqu_t *p_rmqu; MP4_Box_data_rmvc_t *p_rmvc; + MP4_Box_data_pnot_t *p_pnot; MP4_Box_data_chpl_t *p_chpl; MP4_Box_data_tref_generic_t *p_tref_generic; _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
