vlc | branch: master | Francois Cartegnie <[email protected]> | Tue Sep 8 14:08:44 2015 +0200| [6bff31b4c3d180174d3f672526369884dc2bfdfc] | committer: Francois Cartegnie
demux: libmp4: set root container size before probing avoids late failures > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=6bff31b4c3d180174d3f672526369884dc2bfdfc --- modules/demux/mp4/libmp4.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/modules/demux/mp4/libmp4.c b/modules/demux/mp4/libmp4.c index 56dab62..4bd76e0 100644 --- a/modules/demux/mp4/libmp4.c +++ b/modules/demux/mp4/libmp4.c @@ -4118,10 +4118,9 @@ MP4_Box_t *MP4_BoxGetNextChunk( stream_t *s ) * The first box is a virtual box "root" and is the father for all first * level boxes for the file, a sort of virtual contener *****************************************************************************/ -MP4_Box_t *MP4_BoxGetRoot( stream_t *s ) +MP4_Box_t *MP4_BoxGetRoot( stream_t *p_stream ) { MP4_Box_t *p_root; - stream_t *p_stream; int i_result; p_root = calloc( 1, sizeof( MP4_Box_t ) ); @@ -4130,11 +4129,13 @@ MP4_Box_t *MP4_BoxGetRoot( stream_t *s ) p_root->i_type = ATOM_root; p_root->i_shortsize = 1; + int64_t i_size = stream_Size( p_stream ); + if( i_size > 0 ) + p_root->i_size = i_size; + /* could be a DASH stream for exemple, 0 means unknown or infinite size */ CreateUUID( &p_root->i_uuid, p_root->i_type ); - p_stream = s; - /* First get the moov */ i_result = MP4_ReadBoxContainerChildren( p_stream, p_root, ATOM_moov ); @@ -4144,8 +4145,7 @@ MP4_Box_t *MP4_BoxGetRoot( stream_t *s ) else if( MP4_BoxCount( p_root, "moov/mvex" ) > 0 ) return p_root; - p_root->i_size = stream_Size( s ); - if( stream_Tell( s ) + 8 < stream_Size( s ) ) + if( stream_Tell( p_stream ) + 8 < (uint64_t) stream_Size( p_stream ) ) { /* Get the rest of the file */ i_result = MP4_ReadBoxContainerChildren( p_stream, p_root, 0 ); _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
