From b648022cc477a325a349a06e586b2bd9bb7f7abb Mon Sep 17 00:00:00 2001 From: Francois Cartegnie <fcvlcdev@free.fr> Date: Wed, 24 Sep 2014 22:25:16 +0200 Subject: [PATCH] demux: mp4: flag incomplete boxes --- modules/demux/mp4/libmp4.c | 11 +++++++---- modules/demux/mp4/libmp4.h | 6 ++++++ 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/modules/demux/mp4/libmp4.c b/modules/demux/mp4/libmp4.c index a0e0c5e2d93e..be11d8d23f6b 100644 --- a/modules/demux/mp4/libmp4.c +++ b/modules/demux/mp4/libmp4.c @@ -3355,6 +3355,7 @@ unknown: msg_Warn( p_stream, "unknown box type c%3.3s (incompletely loaded)", (char*)&p_box->i_type+1 ); + p_box->e_flags |= BOX_FLAG_INCOMPLETE; return 1; } @@ -3914,12 +3915,14 @@ static void MP4_BoxDumpStructure_Internal( stream_t *s, } if( MP4_BOX_TYPE_ASCII() ) snprintf( &str[i_level * 4], sizeof(str) - 4*i_level, - "+ %4.4s size %"PRIu64" offset %ld", - (char*)&p_box->i_type, p_box->i_size, p_box->i_pos ); + "+ %4.4s size %"PRIu64" offset %ld%s", + (char*)&p_box->i_type, p_box->i_size, p_box->i_pos, + p_box->e_flags & BOX_FLAG_INCOMPLETE ? " (????)" : "" ); else snprintf( &str[i_level * 4], sizeof(str) - 4*i_level, - "+ c%3.3s size %"PRIu64" offset %ld", - (char*)&p_box->i_type+1, p_box->i_size, p_box->i_pos ); + "+ c%3.3s size %"PRIu64" offset %ld%s", + (char*)&p_box->i_type+1, p_box->i_size, p_box->i_pos, + p_box->e_flags & BOX_FLAG_INCOMPLETE ? " (????)" : "" ); msg_Dbg( s, "%s", str ); } p_child = p_box->p_first; diff --git a/modules/demux/mp4/libmp4.h b/modules/demux/mp4/libmp4.h index d4b68a31cef9..8e3195c13ef6 100644 --- a/modules/demux/mp4/libmp4.h +++ b/modules/demux/mp4/libmp4.h @@ -1376,6 +1376,12 @@ typedef struct MP4_Box_s uint32_t i_type; uint32_t i_shortsize; + enum + { + BOX_FLAG_NONE = 0, + BOX_FLAG_INCOMPLETE, + } e_flags; + UUID_t i_uuid; /* Set if i_type == "uuid" */ uint64_t i_size; /* always set so use it */ -- GitLab