From 61e95e658527217f10e5dec535562fe831d48778 Mon Sep 17 00:00:00 2001 From: Lionel DUCHATEAU Date: Fri, 1 Dec 2023 11:47:56 +0100 Subject: [PATCH 1/2] [Matroska] Support for several flags as Visual/Hearing Impaired, Commentary, Original, TextDescriptions --- Source/MediaInfo/Multiple/File_Mk.cpp | 84 +++++++++++++++++++++++++++ Source/MediaInfo/Multiple/File_Mk.h | 10 ++++ 2 files changed, 94 insertions(+) diff --git a/Source/MediaInfo/Multiple/File_Mk.cpp b/Source/MediaInfo/Multiple/File_Mk.cpp index 7c726a6ef5..bdd6ffa931 100644 --- a/Source/MediaInfo/Multiple/File_Mk.cpp +++ b/Source/MediaInfo/Multiple/File_Mk.cpp @@ -235,6 +235,11 @@ namespace Elements const int64u Segment_Tracks_TrackEntry_FlagEnabled=0x39; const int64u Segment_Tracks_TrackEntry_FlagDefault=0x8; const int64u Segment_Tracks_TrackEntry_FlagForced=0x15AA; + const int64u Segment_Tracks_TrackEntry_FlagHearingImpaired=0x15AB; + const int64u Segment_Tracks_TrackEntry_FlagVisualImpaired=0x15AC; + const int64u Segment_Tracks_TrackEntry_FlagTextDescriptions=0x15AD; + const int64u Segment_Tracks_TrackEntry_FlagOriginal=0x15AE; + const int64u Segment_Tracks_TrackEntry_FlagCommentary=0x15AF; const int64u Segment_Tracks_TrackEntry_FlagLacing=0x1C; const int64u Segment_Tracks_TrackEntry_MinCache=0x2DE7; const int64u Segment_Tracks_TrackEntry_MaxCache=0x2DF8; @@ -1379,6 +1384,16 @@ void File_Mk::Streams_Finish() //Flags Fill(StreamKind_Last, StreamPos_Last, "Default", Temp->second.Default?"Yes":"No"); Fill(StreamKind_Last, StreamPos_Last, "Forced", Temp->second.Forced?"Yes":"No"); + Fill(StreamKind_Last, StreamPos_Last, "Original", Temp->second.Original ? "Yes" : "No"); + + if (StreamKind_Last != Stream_Video) + { + Fill(StreamKind_Last, StreamPos_Last, "Hearing Impaired", Temp->second.HearingImpaired ? "Yes" : "No"); + Fill(StreamKind_Last, StreamPos_Last, "Commentary", Temp->second.Commentary ? "Yes" : "No"); + Fill(StreamKind_Last, StreamPos_Last, "Text Descriptions", Temp->second.TextDescriptions ? "Yes" : "No"); + } + else + Fill(StreamKind_Last, StreamPos_Last, "Visual Impaired", Temp->second.VisualImpaired ? "Yes" : "No"); } //Chapters @@ -1860,6 +1875,11 @@ void File_Mk::Data_Parse() ATO2(Segment_Tracks_TrackEntry_FlagEnabled, "FlagEnabled") ATO2(Segment_Tracks_TrackEntry_FlagDefault, "FlagDefault") ATO2(Segment_Tracks_TrackEntry_FlagForced, "FlagForced") + ATO2(Segment_Tracks_TrackEntry_FlagHearingImpaired, "FlagHearingImpaired") + ATO2(Segment_Tracks_TrackEntry_FlagVisualImpaired, "FlagVisualImpaired") + ATO2(Segment_Tracks_TrackEntry_FlagTextDescriptions, "FlagTextDescriptions") + ATO2(Segment_Tracks_TrackEntry_FlagOriginal, "FlagOriginal") + ATO2(Segment_Tracks_TrackEntry_FlagCommentary, "FlagCommentary") ATO2(Segment_Tracks_TrackEntry_FlagLacing, "FlagLacing") ATO2(Segment_Tracks_TrackEntry_MinCache, "MinCache") ATO2(Segment_Tracks_TrackEntry_MaxCache, "MaxCache") @@ -4028,6 +4048,70 @@ void File_Mk::Segment_Tracks_TrackEntry_FlagForced() Stream[TrackNumber].Forced=UInteger?true:false; FILLING_END(); } +//--------------------------------------------------------------------------- +void File_Mk::Segment_Tracks_TrackEntry_FlagHearingImpaired() +{ + //Parsing + int64u UInteger = UInteger_Get(); + + FILLING_BEGIN(); + if (Segment_Info_Count > 1) + return; //First element has the priority + Stream[TrackNumber].HearingImpaired = UInteger ? true : false; + FILLING_END(); +} + +//--------------------------------------------------------------------------- +void File_Mk::Segment_Tracks_TrackEntry_FlagVisualImpaired() +{ + //Parsing + int64u UInteger = UInteger_Get(); + + FILLING_BEGIN(); + if (Segment_Info_Count > 1) + return; //First element has the priority + Stream[TrackNumber].VisualImpaired = UInteger ? true : false; + FILLING_END(); +} + +//--------------------------------------------------------------------------- +void File_Mk::Segment_Tracks_TrackEntry_FlagTextDescriptions() +{ + //Parsing + int64u UInteger = UInteger_Get(); + + FILLING_BEGIN(); + if (Segment_Info_Count > 1) + return; //First element has the priority + Stream[TrackNumber].TextDescriptions = UInteger ? true : false; + FILLING_END(); +} + +//--------------------------------------------------------------------------- +void File_Mk::Segment_Tracks_TrackEntry_FlagOriginal() +{ + //Parsing + int64u UInteger = UInteger_Get(); + + FILLING_BEGIN(); + if (Segment_Info_Count > 1) + return; //First element has the priority + Stream[TrackNumber].Original = UInteger ? true : false; + FILLING_END(); +} + +//--------------------------------------------------------------------------- +void File_Mk::Segment_Tracks_TrackEntry_FlagCommentary() +{ + //Parsing + int64u UInteger = UInteger_Get(); + + FILLING_BEGIN(); + if (Segment_Info_Count > 1) + return; //First element has the priority + Stream[TrackNumber].Commentary = UInteger ? true : false; + FILLING_END(); +} //--------------------------------------------------------------------------- void File_Mk::Segment_Tracks_TrackEntry_Language() diff --git a/Source/MediaInfo/Multiple/File_Mk.h b/Source/MediaInfo/Multiple/File_Mk.h index 7b26562e88..07915e2b8f 100644 --- a/Source/MediaInfo/Multiple/File_Mk.h +++ b/Source/MediaInfo/Multiple/File_Mk.h @@ -163,6 +163,11 @@ private : void Segment_Tracks_TrackEntry_FlagEnabled(){UInteger_Info();}; void Segment_Tracks_TrackEntry_FlagDefault(); void Segment_Tracks_TrackEntry_FlagForced(); + void Segment_Tracks_TrackEntry_FlagHearingImpaired(); + void Segment_Tracks_TrackEntry_FlagVisualImpaired(); + void Segment_Tracks_TrackEntry_FlagTextDescriptions(); + void Segment_Tracks_TrackEntry_FlagOriginal(); + void Segment_Tracks_TrackEntry_FlagCommentary(); void Segment_Tracks_TrackEntry_FlagLacing(){UInteger_Info();}; void Segment_Tracks_TrackEntry_MinCache(){UInteger_Info();}; void Segment_Tracks_TrackEntry_MaxCache(){UInteger_Info();}; @@ -381,6 +386,11 @@ private : bool Searching_TimeStamp_Start; bool Default; bool Forced; + bool HearingImpaired; + bool VisualImpaired; + bool TextDescriptions; + bool Original; + bool Commentary; int64u ContentCompAlgo; size_t ContentCompSettings_Buffer_Size; int8u* ContentCompSettings_Buffer; From 41d4c2166ef37a7195f823dbb62ea233bcb53918 Mon Sep 17 00:00:00 2001 From: Lionel DUCHATEAU Date: Fri, 1 Dec 2023 15:57:24 +0100 Subject: [PATCH 2/2] Remove spaces from last commit --- Source/MediaInfo/Multiple/File_Mk.cpp | 40 +++++++++++++-------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/Source/MediaInfo/Multiple/File_Mk.cpp b/Source/MediaInfo/Multiple/File_Mk.cpp index bdd6ffa931..b6d2410ee9 100644 --- a/Source/MediaInfo/Multiple/File_Mk.cpp +++ b/Source/MediaInfo/Multiple/File_Mk.cpp @@ -1384,16 +1384,16 @@ void File_Mk::Streams_Finish() //Flags Fill(StreamKind_Last, StreamPos_Last, "Default", Temp->second.Default?"Yes":"No"); Fill(StreamKind_Last, StreamPos_Last, "Forced", Temp->second.Forced?"Yes":"No"); - Fill(StreamKind_Last, StreamPos_Last, "Original", Temp->second.Original ? "Yes" : "No"); + Fill(StreamKind_Last, StreamPos_Last, "Original", Temp->second.Original?"Yes":"No"); if (StreamKind_Last != Stream_Video) { - Fill(StreamKind_Last, StreamPos_Last, "Hearing Impaired", Temp->second.HearingImpaired ? "Yes" : "No"); - Fill(StreamKind_Last, StreamPos_Last, "Commentary", Temp->second.Commentary ? "Yes" : "No"); - Fill(StreamKind_Last, StreamPos_Last, "Text Descriptions", Temp->second.TextDescriptions ? "Yes" : "No"); + Fill(StreamKind_Last, StreamPos_Last, "HearingImpaired", Temp->second.HearingImpaired?"Yes":"No"); + Fill(StreamKind_Last, StreamPos_Last, "Commentary", Temp->second.Commentary?"Yes":"No"); + Fill(StreamKind_Last, StreamPos_Last, "TextDescriptions", Temp->second.TextDescriptions?"Yes":"No"); } else - Fill(StreamKind_Last, StreamPos_Last, "Visual Impaired", Temp->second.VisualImpaired ? "Yes" : "No"); + Fill(StreamKind_Last, StreamPos_Last, "VisualImpaired", Temp->second.VisualImpaired?"Yes":"No"); } //Chapters @@ -4052,12 +4052,12 @@ void File_Mk::Segment_Tracks_TrackEntry_FlagForced() void File_Mk::Segment_Tracks_TrackEntry_FlagHearingImpaired() { //Parsing - int64u UInteger = UInteger_Get(); + int64u UInteger=UInteger_Get(); FILLING_BEGIN(); - if (Segment_Info_Count > 1) + if (Segment_Info_Count>1) return; //First element has the priority - Stream[TrackNumber].HearingImpaired = UInteger ? true : false; + Stream[TrackNumber].HearingImpaired=UInteger?true:false; FILLING_END(); } @@ -4065,12 +4065,12 @@ void File_Mk::Segment_Tracks_TrackEntry_FlagHearingImpaired() void File_Mk::Segment_Tracks_TrackEntry_FlagVisualImpaired() { //Parsing - int64u UInteger = UInteger_Get(); + int64u UInteger=UInteger_Get(); FILLING_BEGIN(); - if (Segment_Info_Count > 1) + if (Segment_Info_Count>1) return; //First element has the priority - Stream[TrackNumber].VisualImpaired = UInteger ? true : false; + Stream[TrackNumber].VisualImpaired=UInteger?true:false; FILLING_END(); } @@ -4078,12 +4078,12 @@ void File_Mk::Segment_Tracks_TrackEntry_FlagVisualImpaired() void File_Mk::Segment_Tracks_TrackEntry_FlagTextDescriptions() { //Parsing - int64u UInteger = UInteger_Get(); + int64u UInteger=UInteger_Get(); FILLING_BEGIN(); - if (Segment_Info_Count > 1) + if (Segment_Info_Count>1) return; //First element has the priority - Stream[TrackNumber].TextDescriptions = UInteger ? true : false; + Stream[TrackNumber].TextDescriptions=UInteger?true:false; FILLING_END(); } @@ -4091,12 +4091,12 @@ void File_Mk::Segment_Tracks_TrackEntry_FlagTextDescriptions() void File_Mk::Segment_Tracks_TrackEntry_FlagOriginal() { //Parsing - int64u UInteger = UInteger_Get(); + int64u UInteger=UInteger_Get(); FILLING_BEGIN(); - if (Segment_Info_Count > 1) + if (Segment_Info_Count>1) return; //First element has the priority - Stream[TrackNumber].Original = UInteger ? true : false; + Stream[TrackNumber].Original=UInteger?true:false; FILLING_END(); } @@ -4104,12 +4104,12 @@ void File_Mk::Segment_Tracks_TrackEntry_FlagOriginal() void File_Mk::Segment_Tracks_TrackEntry_FlagCommentary() { //Parsing - int64u UInteger = UInteger_Get(); + int64u UInteger=UInteger_Get(); FILLING_BEGIN(); - if (Segment_Info_Count > 1) + if (Segment_Info_Count>1) return; //First element has the priority - Stream[TrackNumber].Commentary = UInteger ? true : false; + Stream[TrackNumber].Commentary=UInteger?true:false; FILLING_END(); }