From 9231719df5d33bc1f398a36a5f070a1de5213908 Mon Sep 17 00:00:00 2001 From: jhurst Date: Sat, 10 Dec 2016 19:57:45 +0000 Subject: o Added IMF App2e UL values and new MXF data types ColorPrimary and ThreeColorPrimaries (contributed by Schleich) o Added -o and -O options to as-02-wrap o Fixed as-02-wrap option -p when making 4:4:4 files o Simplified as-02-wrap syntax description --- src/Metadata.cpp | 38 +++++++++++++++++++++++++++++++++++++- 1 file changed, 37 insertions(+), 1 deletion(-) (limited to 'src/Metadata.cpp') diff --git a/src/Metadata.cpp b/src/Metadata.cpp index eed362b..b32ff42 100755 --- a/src/Metadata.cpp +++ b/src/Metadata.cpp @@ -1,5 +1,5 @@ /* -Copyright (c) 2005-2012, John Hurst +Copyright (c) 2005-2017, John Hurst All rights reserved. Redistribution and use in source and binary forms, with or without @@ -1710,6 +1710,22 @@ GenericPictureEssenceDescriptor::InitFromTLVSet(TLVReader& TLVSet) result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, VideoLineMap)); VideoLineMap.set_has_value( result == RESULT_OK ); } + if ( ASDCP_SUCCESS(result) ) { + result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, MasteringDisplayPrimaries)); + MasteringDisplayPrimaries.set_has_value( result == RESULT_OK ); + } + if ( ASDCP_SUCCESS(result) ) { + result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, MasteringDisplayWhitePointChromaticity)); + MasteringDisplayWhitePointChromaticity.set_has_value( result == RESULT_OK ); + } + if ( ASDCP_SUCCESS(result) ) { + result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, MasteringDisplayMaximumLuminance)); + MasteringDisplayMaximumLuminance.set_has_value( result == RESULT_OK ); + } + if ( ASDCP_SUCCESS(result) ) { + result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, MasteringDisplayMinimumLuminance)); + MasteringDisplayMinimumLuminance.set_has_value( result == RESULT_OK ); + } return result; } @@ -1750,6 +1766,10 @@ GenericPictureEssenceDescriptor::WriteToTLVSet(TLVWriter& TLVSet) if ( ASDCP_SUCCESS(result) && ! ActiveXOffset.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, ActiveXOffset)); if ( ASDCP_SUCCESS(result) && ! ActiveYOffset.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, ActiveYOffset)); if ( ASDCP_SUCCESS(result) && ! VideoLineMap.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, VideoLineMap)); + if ( ASDCP_SUCCESS(result) && ! MasteringDisplayPrimaries.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, MasteringDisplayPrimaries)); + if ( ASDCP_SUCCESS(result) && ! MasteringDisplayWhitePointChromaticity.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, MasteringDisplayWhitePointChromaticity)); + if ( ASDCP_SUCCESS(result) && ! MasteringDisplayMaximumLuminance.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, MasteringDisplayMaximumLuminance)); + if ( ASDCP_SUCCESS(result) && ! MasteringDisplayMinimumLuminance.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, MasteringDisplayMinimumLuminance)); return result; } @@ -1789,6 +1809,10 @@ GenericPictureEssenceDescriptor::Copy(const GenericPictureEssenceDescriptor& rhs ActiveXOffset = rhs.ActiveXOffset; ActiveYOffset = rhs.ActiveYOffset; VideoLineMap = rhs.VideoLineMap; + MasteringDisplayPrimaries = rhs.MasteringDisplayPrimaries; + MasteringDisplayWhitePointChromaticity = rhs.MasteringDisplayWhitePointChromaticity; + MasteringDisplayMaximumLuminance = rhs.MasteringDisplayMaximumLuminance; + MasteringDisplayMinimumLuminance = rhs.MasteringDisplayMinimumLuminance; } // @@ -1886,6 +1910,18 @@ GenericPictureEssenceDescriptor::Dump(FILE* stream) if ( ! VideoLineMap.empty() ) { fprintf(stream, " %22s = %s\n", "VideoLineMap", VideoLineMap.get().EncodeString(identbuf, IdentBufferLen)); } + if ( ! MasteringDisplayPrimaries.empty() ) { + fprintf(stream, " %22s = %s\n", "MasteringDisplayPrimaries", MasteringDisplayPrimaries.get().EncodeString(identbuf, IdentBufferLen)); + } + if ( ! MasteringDisplayWhitePointChromaticity.empty() ) { + fprintf(stream, " %22s = %s\n", "MasteringDisplayWhitePointChromaticity", MasteringDisplayWhitePointChromaticity.get().EncodeString(identbuf, IdentBufferLen)); + } + if ( ! MasteringDisplayMaximumLuminance.empty() ) { + fprintf(stream, " %22s = %d\n", "MasteringDisplayMaximumLuminance", MasteringDisplayMaximumLuminance.get()); + } + if ( ! MasteringDisplayMinimumLuminance.empty() ) { + fprintf(stream, " %22s = %d\n", "MasteringDisplayMinimumLuminance", MasteringDisplayMinimumLuminance.get()); + } } // -- cgit v1.2.3