Skip to content

Commit 33d6b57

Browse files
+ MPEG-4: Handle correctly mett track format
1 parent 9cc3987 commit 33d6b57

File tree

2 files changed

+47
-5
lines changed

2 files changed

+47
-5
lines changed

Source/MediaInfo/Multiple/File_Mpeg4.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -217,7 +217,7 @@ private :
217217
void moov_trak_mdia_minf_stbl_stsd_xxxxSound();
218218
void moov_trak_mdia_minf_stbl_stsd_xxxxText();
219219
void moov_trak_mdia_minf_stbl_stsd_xxxxVideo();
220-
void moov_trak_mdia_minf_stbl_stsd_xxxxOthers();
220+
void moov_trak_mdia_minf_stbl_stsd_xxxxOthers(const string& CodecIDAddition);
221221
void moov_trak_mdia_minf_stbl_stsd_xxxx_alac();
222222
void moov_trak_mdia_minf_stbl_stsd_xxxx_AALP();
223223
void moov_trak_mdia_minf_stbl_stsd_xxxx_ACLR();

Source/MediaInfo/Multiple/File_Mpeg4_Elements.cpp

+46-4
Original file line numberDiff line numberDiff line change
@@ -789,6 +789,7 @@ namespace Elements
789789
const int64u moov_trak_mdia_minf_stbl_stsd_mebx_keys=0x6B657973;
790790
const int64u moov_trak_mdia_minf_stbl_stsd_mebx_keys_PHDR=0x50484452;
791791
const int64u moov_trak_mdia_minf_stbl_stsd_mebx_keys_PHDR_keyd=0x6B657964;
792+
const int64u moov_trak_mdia_minf_stbl_stsd_mett=0x6D657474;
792793
const int64u moov_trak_mdia_minf_stbl_stsd_mp4a=0x6D703461;
793794
const int64u moov_trak_mdia_minf_stbl_stsd_mp4s=0x6D703473;
794795
const int64u moov_trak_mdia_minf_stbl_stsd_mp4v=0x6D703476;
@@ -5724,8 +5725,44 @@ void File_Mpeg4::moov_trak_mdia_minf_stbl_stsd_tx3g_ftab()
57245725
void File_Mpeg4::moov_trak_mdia_minf_stbl_stsd_xxxx()
57255726
{
57265727
//Parsing
5727-
Skip_B6( "Reserved");
5728-
Skip_B2( "Data reference index");
5728+
string CodecIDAddition;
5729+
if (StreamKind_Last==Stream_Max)
5730+
{
5731+
switch (Element_Code)
5732+
{
5733+
case Elements::moov_trak_mdia_minf_stbl_stsd_mett:
5734+
{
5735+
string mime_format;
5736+
Element_Name("Metadata");
5737+
Skip_String(SizeUpTo0(), "content_encoding");
5738+
Skip_B1( "zero");
5739+
Get_String(SizeUpTo0(), CodecIDAddition, "mime_format");
5740+
Skip_B1( "zero");
5741+
break;
5742+
}
5743+
default:
5744+
{
5745+
auto NotAscii=false;
5746+
if (Element_Size>=6)
5747+
{
5748+
for (auto Current=Buffer+Buffer_Offset, End=Current+6; Current<End; Current++)
5749+
{
5750+
if (!IsAsciiLower(*Current) && !IsAsciiUpper(*Current))
5751+
NotAscii=true;
5752+
}
5753+
}
5754+
if (Element_Size<6 || !NotAscii)
5755+
{
5756+
Skip_XX(Element_Size, "(Unknown)");
5757+
}
5758+
}
5759+
}
5760+
}
5761+
if (!Element_Offset)
5762+
{
5763+
Skip_B6( "Reserved");
5764+
Skip_B2( "Data reference index");
5765+
}
57295766

57305767
//Test of buggy files
57315768
if (StreamKind_Last==Stream_Other && Element_Code==0x61766331) //"avc1"
@@ -5767,7 +5804,7 @@ void File_Mpeg4::moov_trak_mdia_minf_stbl_stsd_xxxx()
57675804
case Stream_Video : moov_trak_mdia_minf_stbl_stsd_xxxxVideo(); break;
57685805
case Stream_Audio : moov_trak_mdia_minf_stbl_stsd_xxxxSound(); break;
57695806
case Stream_Text : moov_trak_mdia_minf_stbl_stsd_xxxxText (); break;
5770-
default : moov_trak_mdia_minf_stbl_stsd_xxxxOthers();
5807+
default : moov_trak_mdia_minf_stbl_stsd_xxxxOthers(CodecIDAddition);
57715808
}
57725809

57735810
if (Element_IsWaitingForMoreData())
@@ -6633,7 +6670,7 @@ void File_Mpeg4::moov_trak_mdia_minf_stbl_stsd_xxxxVideo()
66336670
}
66346671

66356672
//---------------------------------------------------------------------------
6636-
void File_Mpeg4::moov_trak_mdia_minf_stbl_stsd_xxxxOthers()
6673+
void File_Mpeg4::moov_trak_mdia_minf_stbl_stsd_xxxxOthers(const string& CodecIDAddition)
66376674
{
66386675
switch (Element_Code)
66396676
{
@@ -6646,6 +6683,11 @@ void File_Mpeg4::moov_trak_mdia_minf_stbl_stsd_xxxxOthers()
66466683
if (Element_Code)
66476684
{
66486685
CodecID_Fill(Ztring().From_CC4((int32u)Element_Code), StreamKind_Last, StreamPos_Last, InfoCodecID_Format_Mpeg4);
6686+
if (!CodecIDAddition.empty())
6687+
{
6688+
auto CodecID=Retrieve(Stream_Other, StreamPos_Last, Other_CodecID).To_UTF8();
6689+
Fill(Stream_Other, StreamPos_Last, Other_CodecID, CodecID+'-'+CodecIDAddition, true, true);
6690+
}
66496691
}
66506692

66516693
FILLING_BEGIN();

0 commit comments

Comments
 (0)