Skip to content

Commit 95cba88

Browse files
+ MXF : support of HDR Vivid Metadata
1 parent 9d5c0a5 commit 95cba88

12 files changed

+299
-2
lines changed

Project/GNU/Library/Makefile.am

+1
Original file line numberDiff line numberDiff line change
@@ -226,6 +226,7 @@ lib@MediaInfoLib_LibName@_la_SOURCES = \
226226
../../../Source/MediaInfo/Video/File_Fraps.cpp \
227227
../../../Source/MediaInfo/Video/File_Lagarith.cpp \
228228
../../../Source/MediaInfo/Video/File_H263.cpp \
229+
../../../Source/MediaInfo/Video/File_HdrVividMetadata.cpp \
229230
../../../Source/MediaInfo/Video/File_Hevc.cpp \
230231
../../../Source/MediaInfo/Video/File_HuffYuv.cpp \
231232
../../../Source/MediaInfo/Video/File_Mpeg4v.cpp \

Project/MSVC2022/Library/MediaInfoLib.vcxproj

+2
Original file line numberDiff line numberDiff line change
@@ -498,6 +498,7 @@
498498
<ClCompile Include="..\..\..\Source\MediaInfo\Video\File_Av1.cpp" />
499499
<ClCompile Include="..\..\..\Source\MediaInfo\Video\File_CineForm.cpp" />
500500
<ClCompile Include="..\..\..\Source\MediaInfo\Video\File_DolbyVisionMetadata.cpp" />
501+
<ClCompile Include="..\..\..\Source\MediaInfo\Video\File_HdrVividMetadata.cpp" />
501502
<ClCompile Include="..\..\..\Source\MediaInfo\Video\File_Vp9.cpp" />
502503
<ClCompile Include="..\..\..\Source\MediaInfo\Video\File_Vvc.cpp" />
503504
<ClCompile Include="..\..\..\Source\MediaInfo\XmlUtils.cpp" />
@@ -905,6 +906,7 @@
905906
<ClInclude Include="..\..\..\Source\MediaInfo\Video\File_Av1.h" />
906907
<ClInclude Include="..\..\..\Source\MediaInfo\Video\File_CineForm.h" />
907908
<ClInclude Include="..\..\..\Source\MediaInfo\Video\File_DolbyVisionMetadata.h" />
909+
<ClInclude Include="..\..\..\Source\MediaInfo\Video\File_HdrVividMetadata.h" />
908910
<ClInclude Include="..\..\..\Source\MediaInfo\Video\File_Vp9.h" />
909911
<ClInclude Include="..\..\..\Source\MediaInfo\Video\File_Vvc.h" />
910912
<ClInclude Include="..\..\..\Source\MediaInfo\XmlUtils.h" />

Project/MSVC2022/Library/MediaInfoLib.vcxproj.filters

+6
Original file line numberDiff line numberDiff line change
@@ -851,6 +851,9 @@
851851
<ClCompile Include="..\..\..\Source\MediaInfo\Text\File_Pac.cpp">
852852
<Filter>Source Files\Text</Filter>
853853
</ClCompile>
854+
<ClCompile Include="..\..\..\Source\MediaInfo\Video\File_HdrVividMetadata.cpp">
855+
<Filter>Source Files\Video</Filter>
856+
</ClCompile>
854857
</ItemGroup>
855858
<ItemGroup>
856859
<ClInclude Include="..\..\..\Source\MediaInfo\File__Analyse_Automatic.h">
@@ -1606,5 +1609,8 @@
16061609
<ClInclude Include="..\..\..\Source\MediaInfo\Multiple\File_Mxf_Automated.h">
16071610
<Filter>Header Files\Multiple</Filter>
16081611
</ClInclude>
1612+
<ClInclude Include="..\..\..\Source\MediaInfo\Video\File_HdrVividMetadata.h">
1613+
<Filter>Header Files\Video</Filter>
1614+
</ClInclude>
16091615
</ItemGroup>
16101616
</Project>

Project/MSVC2022/Library/MediaInfoLib_UWP.vcxproj

+2
Original file line numberDiff line numberDiff line change
@@ -342,6 +342,7 @@
342342
<ClCompile Include="..\..\..\Source\MediaInfo\Video\File_Av1.cpp" />
343343
<ClCompile Include="..\..\..\Source\MediaInfo\Video\File_CineForm.cpp" />
344344
<ClCompile Include="..\..\..\Source\MediaInfo\Video\File_DolbyVisionMetadata.cpp" />
345+
<ClCompile Include="..\..\..\Source\MediaInfo\Video\File_HdrVividMetadata.cpp" />
345346
<ClCompile Include="..\..\..\Source\MediaInfo\XmlUtils.cpp" />
346347
<ClCompile Include="..\..\..\Source\MediaInfo\OutputHelpers.cpp" />
347348
<ClCompile Include="..\..\..\Source\MediaInfo\ExternalCommandHelpers.cpp" />
@@ -683,6 +684,7 @@
683684
<ClInclude Include="..\..\..\Source\MediaInfo\Video\File_Av1.h" />
684685
<ClInclude Include="..\..\..\Source\MediaInfo\Video\File_CineForm.h" />
685686
<ClInclude Include="..\..\..\Source\MediaInfo\Video\File_DolbyVisionMetadata.h" />
687+
<ClInclude Include="..\..\..\Source\MediaInfo\Video\File_HdrVividMetadata.h" />
686688
<ClInclude Include="..\..\..\Source\MediaInfo\XmlUtils.h" />
687689
<ClInclude Include="..\..\..\Source\MediaInfo\OutputHelpers.h" />
688690
<ClInclude Include="..\..\..\Source\MediaInfo\ExternalCommandHelpers.h" />

Project/Qt/MediaInfoLib.pro

+2
Original file line numberDiff line numberDiff line change
@@ -245,6 +245,7 @@ HEADERS += \
245245
../../Source/MediaInfo/Video/File_Flic.h \
246246
../../Source/MediaInfo/Video/File_Fraps.h \
247247
../../Source/MediaInfo/Video/File_H263.h \
248+
../../Source/MediaInfo/Video/File_HdrVividMetadata.h \
248249
../../Source/MediaInfo/Video/File_Hevc.h \
249250
../../Source/MediaInfo/Video/File_HuffYuv.h \
250251
../../Source/MediaInfo/Video/File_Lagarith.h \
@@ -485,6 +486,7 @@ SOURCES += \
485486
../../Source/MediaInfo/Video/File_Flic.cpp \
486487
../../Source/MediaInfo/Video/File_Fraps.cpp \
487488
../../Source/MediaInfo/Video/File_H263.cpp \
489+
../../Source/MediaInfo/Video/File_HdrVividMetadata.cpp \
488490
../../Source/MediaInfo/Video/File_Hevc.cpp \
489491
../../Source/MediaInfo/Video/File_HuffYuv.cpp \
490492
../../Source/MediaInfo/Video/File_Lagarith.cpp \

Source/MediaInfo/File__MultipleParsing.cpp

+6
Original file line numberDiff line numberDiff line change
@@ -158,6 +158,9 @@
158158
#if defined(MEDIAINFO_H263_YES)
159159
#include "MediaInfo/Video/File_H263.h"
160160
#endif
161+
#if 1 // TODO
162+
#include "MediaInfo/Video/File_HdrVividMetadata.h"
163+
#endif
161164
#if defined(MEDIAINFO_HEVC_YES)
162165
#include "MediaInfo/Video/File_Hevc.h"
163166
#endif
@@ -565,6 +568,9 @@ File__MultipleParsing::File__MultipleParsing()
565568
#if defined(MEDIAINFO_AVC_YES)
566569
Parser.push_back(new File_Avc());
567570
#endif
571+
#if 1 // TODO
572+
Parser.push_back(new File_HdrVividMetadata());
573+
#endif
568574
#if defined(MEDIAINFO_HEVC_YES)
569575
Parser.push_back(new File_Hevc());
570576
#endif

Source/MediaInfo/MediaInfo_File.cpp

+6
Original file line numberDiff line numberDiff line change
@@ -174,6 +174,9 @@
174174
#if defined(MEDIAINFO_H263_YES)
175175
#include "MediaInfo/Video/File_H263.h"
176176
#endif
177+
#if 1 // TODO
178+
#include "MediaInfo/Video/File_HdrVividMetadata.h"
179+
#endif
177180
#if defined(MEDIAINFO_HEVC_YES)
178181
#include "MediaInfo/Video/File_Hevc.h"
179182
#endif
@@ -987,6 +990,9 @@ int MediaInfo_Internal::ListFormats(const String &File_Name)
987990
#if defined(MEDIAINFO_AVC_YES)
988991
delete Info; Info=new File_Avc(); if (((Reader_File*)Reader)->Format_Test_PerParser(this, File_Name)>0) return 1;
989992
#endif
993+
#if 1 // TODO
994+
delete Info; Info = new File_HdrVividMetadata(); if (((Reader_File*)Reader)->Format_Test_PerParser(this, File_Name) > 0) return 1;
995+
#endif
990996
#if defined(MEDIAINFO_HEVC_YES)
991997
delete Info; Info=new File_Hevc(); if (((Reader_File*)Reader)->Format_Test_PerParser(this, File_Name)>0) return 1;
992998
#endif

Source/MediaInfo/Multiple/File_Mxf.cpp

+66-2
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
#include "MediaInfo/Multiple/File_Mxf.h"
2525
#include "MediaInfo/Multiple/File_Mxf_Automated.h"
2626
#include "MediaInfo/Video/File_DolbyVisionMetadata.h"
27+
#include "MediaInfo/Video/File_HdrVividMetadata.h"
2728
#include "MediaInfo/Audio/File_DolbyAudioMetadata.h"
2829
#if defined(MEDIAINFO_DVDIF_YES)
2930
#include "MediaInfo/Multiple/File_DvDif.h"
@@ -2653,7 +2654,7 @@ void File_Mxf::Streams_Finish_Essence(int32u EssenceUID, int128u TrackUID)
26532654
}
26542655
Finish(*Parser);
26552656
StreamKind_Last=Stream_Max;
2656-
if ((*Parser)->Count_Get(Stream_Video) && (*Parser)->Get(Stream_General, 0, General_Format)!=__T("Dolby Vision Metadata"))
2657+
if ((*Parser)->Count_Get(Stream_Video) && (*Parser)->Get(Stream_General, 0, General_Format)!=__T("Dolby Vision Metadata") && (*Parser)->Get(Stream_General, 0, General_Format) != __T("HDR Vivid Metadata"))
26572658
{
26582659
Stream_Prepare(Stream_Video);
26592660
if (IsSub)
@@ -3100,7 +3101,8 @@ void File_Mxf::Streams_Finish_Essence(int32u EssenceUID, int128u TrackUID)
31003101
{
31013102
// TODO: avoid this hack
31023103
const auto& Format = (*Parser)->Retrieve_Const(Stream_General, 0, General_Format);
3103-
if (Format == __T("Dolby Vision Metadata"))
3104+
if (Format == __T("Dolby Vision Metadata")
3105+
|| Format == __T("HDR Vivid Metadata"))
31043106
{
31053107
ToMergeLater.push_back(*Parser);
31063108
*Parser = nullptr;
@@ -6776,6 +6778,7 @@ void File_Mxf::Data_Parse()
67766778
GROUP(PHDRMetadataTrackSubDescriptor)
67776779
GROUP(OmneonVideoNetworksDescriptiveMetadataLinks)
67786780
GROUP(OmneonVideoNetworksDescriptiveMetadataData)
6781+
GROUP(HdrVividMetadataTrackSubDescriptor)
67796782
GROUP(FFV1PictureSubDescriptor)
67806783
GROUP(MGASoundEssenceDescriptor)
67816784
GROUP(MGAAudioMetadataSubDescriptor)
@@ -8051,6 +8054,9 @@ void File_Mxf::MXFGenericStreamDataElementKey_09_01()
80518054
#if 1
80528055
Parsers.push_back(new File_DolbyVisionMetadata);
80538056
#endif
8057+
#if 1
8058+
Parsers.push_back(new File_HdrVividMetadata);
8059+
#endif
80548060
#if defined(MEDIAINFO_ADM_YES)
80558061
Parsers.push_back(new File_Adm);
80568062
#endif
@@ -9152,6 +9158,44 @@ void File_Mxf::OmneonVideoNetworksDescriptiveMetadataItems()
91529158
}
91539159
}
91549160

9161+
//---------------------------------------------------------------------------
9162+
void File_Mxf::HdrVividMetadataTrackSubDescriptor()
9163+
{
9164+
ELEMENT_BEGIN()
9165+
ELEMENT_MIDDLE()
9166+
ELEM____UUID_(HdrVividDataDefinition)
9167+
ELEM____UUID_(HdrVividSourceTrackID)
9168+
ELEM____UUID_(HdrVividSimplePayloadSID)
9169+
ELEMENT_END()
9170+
GenerationInterchangeObject();
9171+
}
9172+
9173+
//---------------------------------------------------------------------------
9174+
void File_Mxf::HdrVividDataDefinition()
9175+
{
9176+
Info_UL(Data, "Data", nullptr); Element_Info1(Ztring().From_UUID(Data));
9177+
}
9178+
9179+
//---------------------------------------------------------------------------
9180+
void File_Mxf::HdrVividSourceTrackID()
9181+
{
9182+
//Parsing
9183+
Info_B4(Data, "Data"); Element_Info1(Data);
9184+
}
9185+
9186+
//---------------------------------------------------------------------------
9187+
void File_Mxf::HdrVividSimplePayloadSID()
9188+
{
9189+
//Parsing
9190+
Info_B4(Data, "Data"); Element_Info1(Data);
9191+
}
9192+
9193+
//---------------------------------------------------------------------------
9194+
void File_Mxf::HdrVividMetadataItem()
9195+
{
9196+
Skip_XX(Element_Size, "HDR Vivid data");
9197+
}
9198+
91559199
//---------------------------------------------------------------------------
91569200
void File_Mxf::TimelineTrack()
91579201
{
@@ -14602,6 +14646,7 @@ void File_Mxf::ChooseParser__FromEssence(const essences::iterator &Essence, cons
1460214646
case Essences::FrameWrappedISXDData: ChooseParser_Isxd(Essence, Descriptor); break;
1460314647
case Essences::FrameWrappedISXDData2: ChooseParser_Isxd(Essence, Descriptor); break;
1460414648
case Essences::PHDRImageMetadataItem: ChooseParser_Phdr(Essence, Descriptor); break;
14649+
case Essences::HdrVividMetadataItem: ChooseParser_HdrVivid(Essence, Descriptor); break;
1460514650
}
1460614651
}
1460714652

@@ -15271,6 +15316,25 @@ void File_Mxf::ChooseParser_Phdr(const essences::iterator& Essence, const descri
1527115316
ChooseParser_DolbyVisionFrameData(Essence, Descriptor);
1527215317
}
1527315318

15319+
//---------------------------------------------------------------------------
15320+
void File_Mxf::ChooseParser_HdrVivid(const essences::iterator& Essence, const descriptors::iterator& Descriptor)
15321+
{
15322+
Essence->second.StreamKind = Stream_Other;
15323+
Essence->second.Infos["MuxingMode_MoreInfo"] = "Contains additional metadata for other tracks";
15324+
15325+
//Filling
15326+
#if 1 // TODO
15327+
File_HdrVividMetadata* Parser=new File_HdrVividMetadata;
15328+
#else
15329+
//Filling
15330+
File__Analyze* Parser=new File_Unknown();
15331+
Open_Buffer_Init(Parser);
15332+
Parser->Stream_Prepare(Stream_Other);
15333+
Parser->Fill(Stream_Other, 0, Other_Format, "HDR Vivid Metadata");
15334+
#endif
15335+
Essence->second.Parsers.push_back(Parser);
15336+
}
15337+
1527415338
//---------------------------------------------------------------------------
1527515339
void File_Mxf::ChooseParser_DolbyVisionFrameData(const essences::iterator &Essence, const descriptors::iterator &Descriptor)
1527615340
{

Source/MediaInfo/Multiple/File_Mxf.h

+6
Original file line numberDiff line numberDiff line change
@@ -243,6 +243,11 @@ protected :
243243
void OmneonVideoNetworksDescriptiveMetadataLinks();
244244
void OmneonVideoNetworksDescriptiveMetadataData();
245245
void OmneonVideoNetworksDescriptiveMetadataItems();
246+
void HdrVividMetadataTrackSubDescriptor();
247+
void HdrVividDataDefinition();
248+
void HdrVividSourceTrackID();
249+
void HdrVividSimplePayloadSID();
250+
void HdrVividMetadataItem();
246251
void FFV1PictureSubDescriptor();
247252
void MGASoundEssenceDescriptor();
248253
void MGAAudioMetadataSubDescriptor();
@@ -1268,6 +1273,7 @@ protected :
12681273
void ChooseParser_Ffv1(const essences::iterator& Essence, const descriptors::iterator& Descriptor);
12691274
void ChooseParser_Isxd(const essences::iterator& Essence, const descriptors::iterator& Descriptor);
12701275
void ChooseParser_Phdr(const essences::iterator& Essence, const descriptors::iterator& Descriptor);
1276+
void ChooseParser_HdrVivid(const essences::iterator& Essence, const descriptors::iterator& Descriptor);
12711277
void ChooseParser_DolbyVisionFrameData(const essences::iterator& Essence, const descriptors::iterator& Descriptor);
12721278
void ChooseParser_Iab(const essences::iterator& Essence, const descriptors::iterator& Descriptor);
12731279
void ChooseParser_Mga(const essences::iterator& Essence, const descriptors::iterator& Descriptor);

Source/MediaInfo/Multiple/File_Mxf_Automated.h

+26
Original file line numberDiff line numberDiff line change
@@ -3778,6 +3778,10 @@ C(0E1F000000000000, "Barco")
37783778
C(0E20000000000000, "Apple Inc.")
37793779
C(0E21000000000000, "Fraunhofer")
37803780
C(0E22000000000000, "RED")
3781+
C(0E23000000000000, "CRIFST")
3782+
C(0E23060701010104, "Data Definition")
3783+
C(0E23060701010105, "Source Track ID")
3784+
C(0E23060701010106, "Simple Payload SID")
37813785
C(0F00000000000000, "Experimental")
37823786
C(4300000000000000, "Legacy (315M)")
37833787
default: return {};
@@ -3859,6 +3863,7 @@ C(0E09000000000000, "Dolby Laboratories Inc.")
38593863
C(0E09050201000100, "ISXD Data")
38603864
C(0E09050217000100, "ISXD Data")
38613865
C(0E09060701000100, "PHDR Image Metadata Item")
3866+
C(0E23060701010103, "HDR Vivid Metadata Item")
38623867
default: return {};
38633868
}
38643869
}
@@ -4504,6 +4509,8 @@ C(0E1F000000000000, "Barco")
45044509
C(0E20000000000000, "Apple Inc.")
45054510
C(0E21000000000000, "Fraunhofer")
45064511
C(0E22000000000000, "RED")
4512+
C(0E23000000000000, "CRIFST")
4513+
C(0E23060701010103, "HDR Vivid Track Sub Descriptor")
45074514
C(0F00000000000000, "Experimental")
45084515
default: return {};
45094516
}
@@ -5131,6 +5138,8 @@ C(0E1F000000000000, "Barco")
51315138
C(0E20000000000000, "Apple Inc.")
51325139
C(0E21000000000000, "Fraunhofer")
51335140
C(0E22000000000000, "RED")
5141+
C(0E23000000000000, "CRIFST")
5142+
C(0E23060701010103, "HDR Vivid Metadata Wrapping Frame")
51345143
C(0F00000000000000, "Experimental")
51355144
default: return {};
51365145
}
@@ -9030,6 +9039,15 @@ U(0E0B010301010101, OmneonVideoNetworksDescriptiveMetadataItems)
90309039
// 20 - Apple Inc.
90319040
// 21 - Fraunhofer
90329041
// 22 - RED
9042+
// 23 - CRIFST
9043+
// 06 - CRIFST 06
9044+
// 07 - CRIFST 0607
9045+
// 01 - CRIFST 0607.01
9046+
// 01 - CRIFST 0607.0101
9047+
// 01 - CRIFST 0607.010101
9048+
U(0E23060701010104, HdrVividDataDefinition)
9049+
U(0E23060701010105, HdrVividSourceTrackID)
9050+
U(0E23060701010106, HdrVividSimplePayloadSID)
90339051
// 0F - Experimental
90349052
// 43 - Legacy (315M)
90359053
}
@@ -9107,6 +9125,8 @@ U(0E04030115000700, AvidTechnologyInc_VC3_Custom)
91079125
U(0E09050201000100, FrameWrappedISXDData)
91089126
U(0E09050217000100, FrameWrappedISXDData2)
91099127
U(0E09060701000100, PHDRImageMetadataItem)
9128+
// 23 - CRIFST
9129+
U(0E23060701000100, HdrVividMetadataItem)
91109130
}
91119131

91129132
namespace GroupsPacks
@@ -9763,6 +9783,12 @@ U(0E0B010201020100, OmneonVideoNetworksDescriptiveMetadataData)
97639783
// 20 - Apple Inc.
97649784
// 21 - Fraunhofer
97659785
// 22 - RED
9786+
// 23 - CRIFST
9787+
// 01 - CRIFST 06
9788+
// 02 - CRIFST 0607
9789+
// 01 - CRIFST 0607.01
9790+
// 01 - CRIFST 0607.0101
9791+
U(0E23060701010103, HdrVividMetadataTrackSubDescriptor)
97669792
// 0F - Experimental
97679793
}
97689794
namespace Labels

0 commit comments

Comments
 (0)