From 5655312b504414f7981008c0c789207e49326825 Mon Sep 17 00:00:00 2001 From: cjee21 <77721854+cjee21@users.noreply.github.com> Date: Wed, 29 Jan 2025 17:51:53 +0800 Subject: [PATCH 1/3] MP4: Extract Samsung Model Number (`udta/smta/mdln`) --- .../MediaInfo/MediaInfo_Config_Automatic.cpp | 1 + Source/MediaInfo/Multiple/File_Mpeg4.h | 2 ++ .../Multiple/File_Mpeg4_Elements.cpp | 27 +++++++++++++++++++ .../Text/Language/DefaultLanguage.csv | 1 + 4 files changed, 31 insertions(+) diff --git a/Source/MediaInfo/MediaInfo_Config_Automatic.cpp b/Source/MediaInfo/MediaInfo_Config_Automatic.cpp index 6e6d36e2c..e16508eaa 100644 --- a/Source/MediaInfo/MediaInfo_Config_Automatic.cpp +++ b/Source/MediaInfo/MediaInfo_Config_Automatic.cpp @@ -1168,6 +1168,7 @@ void MediaInfo_Config_DefaultLanguage (Translation &Info) "SamplesPerFrame;Samples per frame\n" "SamplingCount;Samples count\n" "SamplingRate;Sampling rate\n" + "Samsung_Model_Number;Samsung model number\n" "Save;Save\n" "ScanOrder;Scan order\n" "ScanOrder_Original;Original scan order\n" diff --git a/Source/MediaInfo/Multiple/File_Mpeg4.h b/Source/MediaInfo/Multiple/File_Mpeg4.h index 1efecaa6d..9c73c4369 100644 --- a/Source/MediaInfo/Multiple/File_Mpeg4.h +++ b/Source/MediaInfo/Multiple/File_Mpeg4.h @@ -370,6 +370,8 @@ private : void moov_udta_rtng(); void moov_udta_ptv (); void moov_udta_Sel0(); + void moov_udta_smta(); + void moov_udta_smta_mdln(); void moov_udta_tags(); void moov_udta_tags_meta(); void moov_udta_tags_tseg(); diff --git a/Source/MediaInfo/Multiple/File_Mpeg4_Elements.cpp b/Source/MediaInfo/Multiple/File_Mpeg4_Elements.cpp index ba8c100fe..74ab89876 100644 --- a/Source/MediaInfo/Multiple/File_Mpeg4_Elements.cpp +++ b/Source/MediaInfo/Multiple/File_Mpeg4_Elements.cpp @@ -967,6 +967,8 @@ namespace Elements const int64u moov_udta_ptv =0x70747620; const int64u moov_udta_rtng=0x72746E67; const int64u moov_udta_Sel0=0x53656C30; + const int64u moov_udta_smta=0x736d7461; + const int64u moov_udta_smta_mdln=0x6d646c6e; const int64u moov_udta_tags=0x74616773; const int64u moov_udta_tags_meta=0x6D657461; const int64u moov_udta_tags_tseg=0x74736567; @@ -1431,6 +1433,10 @@ void File_Mpeg4::Data_Parse() ATOM(moov_udta_ptv ) ATOM(moov_udta_rtng) ATOM(moov_udta_Sel0) + LIST(moov_udta_smta) + ATOM_BEGIN + ATOM(moov_udta_smta_mdln) + ATOM_END LIST(moov_udta_tags) ATOM_BEGIN ATOM(moov_udta_tags_meta) @@ -9809,6 +9815,27 @@ void File_Mpeg4::moov_udta_Sel0() Skip_XX(Element_Size, "Data"); } +//--------------------------------------------------------------------------- +void File_Mpeg4::moov_udta_smta() +{ + NAME_VERSION_FLAG("Samsung Metadata"); +} + +//--------------------------------------------------------------------------- +void File_Mpeg4::moov_udta_smta_mdln() +{ + Element_Name("Model Number"); + + //Parsing + string SamsungModelNumber; + Get_String(Element_Size, SamsungModelNumber, "Value"); + + //Filling + FILLING_BEGIN(); + Fill(Stream_General, 0, "Samsung_Model_Number", SamsungModelNumber); + FILLING_END(); +} + //--------------------------------------------------------------------------- void File_Mpeg4::moov_udta_tags() { diff --git a/Source/Resource/Text/Language/DefaultLanguage.csv b/Source/Resource/Text/Language/DefaultLanguage.csv index b9a3a45f8..382ddbd9d 100644 --- a/Source/Resource/Text/Language/DefaultLanguage.csv +++ b/Source/Resource/Text/Language/DefaultLanguage.csv @@ -1139,6 +1139,7 @@ SamplePeakLevel_Album;Sample peak level (album) SamplesPerFrame;Samples per frame SamplingCount;Samples count SamplingRate;Sampling rate +Samsung_Model_Number;Samsung model number Save;Save ScanOrder;Scan order ScanOrder_Original;Original scan order From 626cc5c77e564c72cb25a79206217bdfcc430b14 Mon Sep 17 00:00:00 2001 From: cjee21 <77721854+cjee21@users.noreply.github.com> Date: Wed, 29 Jan 2025 17:54:11 +0800 Subject: [PATCH 2/3] MP4: Video Compressor Name --- Source/MediaInfo/Multiple/File_Mpeg4_Elements.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/Source/MediaInfo/Multiple/File_Mpeg4_Elements.cpp b/Source/MediaInfo/Multiple/File_Mpeg4_Elements.cpp index 74ab89876..752b80b1e 100644 --- a/Source/MediaInfo/Multiple/File_Mpeg4_Elements.cpp +++ b/Source/MediaInfo/Multiple/File_Mpeg4_Elements.cpp @@ -6285,6 +6285,7 @@ void File_Mpeg4::moov_trak_mdia_minf_stbl_stsd_xxxxVideo() int16u Width, Height, Depth, ColorTableID; int8u CompressorName_Size; + Ztring CompressorName; bool IsGreyscale; Skip_B2( "Version"); Skip_B2( "Revision level"); @@ -6302,12 +6303,12 @@ void File_Mpeg4::moov_trak_mdia_minf_stbl_stsd_xxxxVideo() { //This is pascal string Skip_B1( "Compressor name size"); - Skip_UTF8(CompressorName_Size, "Compressor name"); + Get_UTF8(CompressorName_Size, CompressorName, "Compressor name"); Skip_XX(32-1-CompressorName_Size, "Padding"); } else //this is hard-coded 32-byte string - Skip_UTF8(32, "Compressor name"); + Get_UTF8(32, CompressorName, "Compressor name"); Get_B2 (Depth, "Depth"); if (Depth>0x20 && Depth<0x40) { @@ -6345,6 +6346,7 @@ void File_Mpeg4::moov_trak_mdia_minf_stbl_stsd_xxxxVideo() CodecID_Fill(Codec, Stream_Video, StreamPos_Last, InfoCodecID_Format_Mpeg4); Fill(Stream_Video, StreamPos_Last, Video_Codec, Codec, true); Fill(Stream_Video, StreamPos_Last, Video_Codec_CC, Codec, true); + Fill(Stream_Video, StreamPos_Last, Video_Encoded_Library, CompressorName); if (Codec==__T("drms")) Fill(Stream_Video, StreamPos_Last, Video_Encryption, "iTunes"); if (Codec==__T("encv")) From d878b2da04457ba4dd0ed11cbb4fa1dfd6ee760a Mon Sep 17 00:00:00 2001 From: cjee21 <77721854+cjee21@users.noreply.github.com> Date: Wed, 29 Jan 2025 18:00:25 +0800 Subject: [PATCH 3/3] MP4: Handle `com.android.version` --- Source/MediaInfo/MediaInfo_Config_Automatic.cpp | 1 + Source/MediaInfo/Multiple/File_Mpeg4_Elements.cpp | 2 ++ Source/Resource/Text/Language/DefaultLanguage.csv | 1 + 3 files changed, 4 insertions(+) diff --git a/Source/MediaInfo/MediaInfo_Config_Automatic.cpp b/Source/MediaInfo/MediaInfo_Config_Automatic.cpp index e16508eaa..e19fda69f 100644 --- a/Source/MediaInfo/MediaInfo_Config_Automatic.cpp +++ b/Source/MediaInfo/MediaInfo_Config_Automatic.cpp @@ -215,6 +215,7 @@ void MediaInfo_Config_DefaultLanguage (Translation &Info) "Alignment_Split;Split across interleaves\n" "All;All\n" "AlternateGroup;Alternate group\n" + "Android_Version;Android version\n" "Archival_Location;Archival location\n" "Arranger;Arranger\n" "ArtDirector;ArtDirector\n" diff --git a/Source/MediaInfo/Multiple/File_Mpeg4_Elements.cpp b/Source/MediaInfo/Multiple/File_Mpeg4_Elements.cpp index 752b80b1e..0410ab439 100644 --- a/Source/MediaInfo/Multiple/File_Mpeg4_Elements.cpp +++ b/Source/MediaInfo/Multiple/File_Mpeg4_Elements.cpp @@ -3987,6 +3987,8 @@ void File_Mpeg4::moov_meta_ilst_xxxx_data() Fill(Stream_General, 0, "Media/History/UUID", Value); else if (Parameter=="com.android.capture.fps") FrameRate_Real=Value; + else if (Parameter=="com.android.version") + Fill(Stream_General, 0, "Android_Version", Value); else if (Parameter=="com.universaladid.idregistry") { Fill(Stream_General, 0, "UniversalAdID_Registry", Value); diff --git a/Source/Resource/Text/Language/DefaultLanguage.csv b/Source/Resource/Text/Language/DefaultLanguage.csv index 382ddbd9d..3b8dcc55b 100644 --- a/Source/Resource/Text/Language/DefaultLanguage.csv +++ b/Source/Resource/Text/Language/DefaultLanguage.csv @@ -186,6 +186,7 @@ Alignment_Aligned;Aligned on interleaves Alignment_Split;Split across interleaves All;All AlternateGroup;Alternate group +Android_Version;Android version Archival_Location;Archival location Arranger;Arranger ArtDirector;ArtDirector