diff options
Diffstat (limited to 'src/thirdparty/MediaInfo/MediaInfo/Text/File_Sdp.cpp')
-rw-r--r-- | src/thirdparty/MediaInfo/MediaInfo/Text/File_Sdp.cpp | 29 |
1 files changed, 18 insertions, 11 deletions
diff --git a/src/thirdparty/MediaInfo/MediaInfo/Text/File_Sdp.cpp b/src/thirdparty/MediaInfo/MediaInfo/Text/File_Sdp.cpp index d69abca6a..9df379a60 100644 --- a/src/thirdparty/MediaInfo/MediaInfo/Text/File_Sdp.cpp +++ b/src/thirdparty/MediaInfo/MediaInfo/Text/File_Sdp.cpp @@ -88,9 +88,9 @@ void File_Sdp::Streams_Finish() bool File_Sdp::Synchronize() { //Synchronizing - while (Buffer_Offset+3<=Buffer_Size) + while (Buffer_Offset+2<Buffer_Size) { - while (Buffer_Offset+3<=Buffer_Size) + while (Buffer_Offset+2<Buffer_Size) { if (Buffer[Buffer_Offset ]==0x51 && Buffer[Buffer_Offset+1]==0x15) @@ -99,16 +99,19 @@ bool File_Sdp::Synchronize() Buffer_Offset++; } - if (Buffer_Offset+3<=Buffer_Size) //Testing if size is coherant + if (IsSub) + break; // Found one file with unknown bytes at the end of the stream, so removing this integrity test for the moment + + if (Buffer_Offset+2<Buffer_Size) //Testing if size is coherant { - if (Buffer_Offset+3+Buffer[Buffer_Offset+2]==Buffer_Size) + if (Buffer_Offset+Buffer[Buffer_Offset+2]==Buffer_Size) break; - if (Buffer_Offset+3+Buffer[Buffer_Offset+2]+3>Buffer_Size) + if (Buffer_Offset+Buffer[Buffer_Offset+2]+3>Buffer_Size) return false; //Wait for more data - if (Buffer[Buffer_Offset+3+Buffer[Buffer_Offset+2] ]==0x51 - && Buffer[Buffer_Offset+3+Buffer[Buffer_Offset+2]+1]==0x15) + if (Buffer[Buffer_Offset+Buffer[Buffer_Offset+2] ]==0x51 + && Buffer[Buffer_Offset+Buffer[Buffer_Offset+2]+1]==0x15) break; //while() Buffer_Offset++; @@ -116,7 +119,7 @@ bool File_Sdp::Synchronize() } //Must have enough buffer for having header - if (Buffer_Offset+3>=Buffer_Size) + if (Buffer_Offset+2>=Buffer_Size) return false; //Synched is OK @@ -206,7 +209,10 @@ void File_Sdp::Header_Parse() #endif //MEDIAINFO_TRACE } - Header_Fill_Size(3+Length); + if (IsSub) + Header_Fill_Size(Buffer_Size); + else + Header_Fill_Size(Length); } //--------------------------------------------------------------------------- @@ -237,8 +243,9 @@ void File_Sdp::Data_Parse() Element_Begin1("SDP Footer"); Skip_B1( "Footer ID"); Skip_B2( "Footer Sequence number"); - Skip_B2( "SDP Cheksum"); - Skip_B2( "SMPTE 291 Cheksum"); + Skip_B1( "SDP Cheksum"); + if (Element_Offset<Element_Size) + Skip_XX(Element_Size-Element_Offset, "Unknown, out of specs"); Element_End0(); } |