[vlc-devel] [PATCH] MKV: Void and CRC32 are not unknown elements

Steve Lhomme robUx4 at videolabs.io
Fri Feb 27 15:41:40 CET 2015


---
 modules/demux/mkv/matroska_segment_parse.cpp | 27 ++++++++++++++-------------
 1 file changed, 14 insertions(+), 13 deletions(-)

diff --git a/modules/demux/mkv/matroska_segment_parse.cpp b/modules/demux/mkv/matroska_segment_parse.cpp
index ff47a2b5..271d42a 100644
--- a/modules/demux/mkv/matroska_segment_parse.cpp
+++ b/modules/demux/mkv/matroska_segment_parse.cpp
@@ -110,7 +110,7 @@ void matroska_segment_c::ParseSeekHead( KaxSeekHead *seekhead )
                         spos.ReadData( es.I_O() );
                         i_pos = (int64_t)segment->GetGlobalPosition( uint64( spos ) );
                     }
-                    else
+                    else if ( !MKV_IS_ID( l, EbmlVoid ) && !MKV_IS_ID( l, EbmlCrc32 ))
                     {
                         /* Many mkvmerge files hit this case. It seems to be a broken SeekHead */
                         msg_Dbg( &sys.demuxer, "|   |   + Unknown (%s)", typeid(*l).name() );
@@ -161,12 +161,13 @@ void matroska_segment_c::ParseSeekHead( KaxSeekHead *seekhead )
                     LoadSeekHeadItem( EBML_INFO(KaxAttachments), i_pos );
                 }
 #ifdef MKV_DEBUG
-                else
+                else if( id != EBML_ID(KaxCluster) && id != EBML_ID(EbmlVoid) &&
+                         id != EBML_ID(EbmlCrc32))
                     msg_Dbg( &sys.demuxer, "|   - unknown seekhead reference at %" PRId64, i_pos );
 #endif
             }
         }
-        else
+        else if ( !MKV_IS_ID( l, EbmlVoid ) && !MKV_IS_ID( l, EbmlCrc32 ))
             msg_Dbg( &sys.demuxer, "|   |   + ParseSeekHead Unknown (%s)", typeid(*l).name() );
     }
     delete ep;
@@ -481,20 +482,20 @@ void matroska_segment_c::ParseTrackEntry( KaxTrackEntry *m )
                                 {
                                     tk->p_compression_data = new KaxContentCompSettings( *(KaxContentCompSettings*)l4 );
                                 }
-                                else
+                                else if ( !MKV_IS_ID( l4, EbmlVoid ) )
                                 {
                                     MkvTree( sys.demuxer, 6, "Unknown (%s)", typeid(*l4).name() );
                                 }
                             }
                         }
                         // ContentEncryption Unsupported
-                        else
+                        else if ( !MKV_IS_ID( l3, EbmlVoid ) )
                         {
                             MkvTree( sys.demuxer, 5, "Unknown (%s)", typeid(*l3).name() );
                         }
                     }
                 }
-                else
+                else if ( !MKV_IS_ID( l2, EbmlVoid ) )
                 {
                     MkvTree( sys.demuxer, 4, "Unknown (%s)", typeid(*l2).name() );
                 }
@@ -632,7 +633,7 @@ void matroska_segment_c::ParseTrackEntry( KaxTrackEntry *m )
 
 //                    msg_Dbg( &sys.demuxer, "   |   |   |   + gamma=%f", float( gamma ) );
 //                }
-                else
+                else if ( !MKV_IS_ID( l, EbmlVoid ) )
                 {
                     msg_Dbg( &sys.demuxer, "|   |   |   |   + Unknown (%s)", typeid(*l).name() );
                 }
@@ -696,13 +697,13 @@ void matroska_segment_c::ParseTrackEntry( KaxTrackEntry *m )
                     tk->fmt.audio.i_bitspersample = uint8( abits );
                     msg_Dbg( &sys.demuxer, "|   |   |   |   + abits=%u", uint8( abits ) );
                 }
-                else
+                else if ( !MKV_IS_ID( l, EbmlVoid ) )
                 {
                     msg_Dbg( &sys.demuxer, "|   |   |   |   + Unknown (%s)", typeid(*l).name() );
                 }
             }
         }
-        else
+        else if ( !MKV_IS_ID( l, EbmlVoid ) )
         {
             msg_Dbg( &sys.demuxer, "|   |   |   + Unknown (%s)",
                      typeid(*l).name() );
@@ -768,7 +769,7 @@ void matroska_segment_c::ParseTracks( KaxTracks *tracks )
         {
             ParseTrackEntry( static_cast<KaxTrackEntry *>(l) );
         }
-        else
+        else if ( !MKV_IS_ID( l, EbmlVoid ) )
         {
             msg_Dbg( &sys.demuxer, "|   |   + Unknown (%s)", typeid(*l).name() );
         }
@@ -948,7 +949,7 @@ void matroska_segment_c::ParseInfo( KaxInfo *info )
                 msg_Err( &sys.demuxer, "Error while reading Chapter Tranlate");
             }
         }
-        else
+        else if ( !MKV_IS_ID( l, EbmlVoid ) )
         {
             msg_Dbg( &sys.demuxer, "|   |   + Unknown (%s)", typeid(*l).name() );
         }
@@ -1223,14 +1224,14 @@ void matroska_segment_c::ParseChapters( KaxChapters *chapters )
                 {
                     // FIXME to implement
                 }
-                else
+                else if ( !MKV_IS_ID( l, EbmlVoid ) )
                 {
                     msg_Dbg( &sys.demuxer, "|   |   |   + Unknown (%s)", typeid(*l).name() );
                 }
             }
             stored_editions.push_back( p_edition );
         }
-        else
+        else if ( !MKV_IS_ID( l, EbmlVoid ) )
         {
             msg_Dbg( &sys.demuxer, "|   |   + Unknown (%s)", typeid(*l).name() );
         }
-- 
2.2.2




More information about the vlc-devel mailing list