more properties!
authorjhurst <jhurst@cinecert.com>
Tue, 2 Jul 2013 17:16:27 +0000 (17:16 +0000)
committerjhurst <>
Tue, 2 Jul 2013 17:16:27 +0000 (17:16 +0000)
src/AS_DCP_JP2K.cpp
src/MDD.cpp
src/MDD.h
src/Metadata.cpp
src/Metadata.h
src/as-02-wrap.cpp

index cf30869c3cb94e2345e29fa0b54c8247ddb8d0d6..b2f2eafb5fa66ec48b9ef3ed3bdb86b2a018b6e7 100755 (executable)
@@ -221,16 +221,6 @@ ASDCP::JP2K_PDesc_to_MD(const JP2K::PictureDescriptor& PDesc,
   EssenceDescriptor->StoredHeight = PDesc.StoredHeight;
   EssenceDescriptor->AspectRatio = PDesc.AspectRatio;
 
-  //  if ( m_Info.LabelSetType == LS_MXF_SMPTE )
-  //    {
-  // PictureEssenceCoding UL = 
-  // Video Line Map       ui32_t[VideoLineMapSize] = { 2, 4, 0, 0 }
-  // CaptureGamma         UL = 
-  // ComponentMaxRef      ui32_t = 4095
-  // ComponentMinRef      ui32_t = 0
-  // PixelLayout          byte_t[PixelLayoutSize] = s_PixelLayoutXYZ
-  //    }
-
   if ( PDesc.StoredWidth < 2049 )
     {
       EssenceDescriptor->PictureEssenceCoding.Set(dict.ul(MDD_JP2KEssenceCompression_2K));
@@ -352,16 +342,6 @@ ASDCP::JP2K_PDesc_to_MD(const JP2K::PictureDescriptor& PDesc,
   EssenceDescriptor->StoredHeight = PDesc.StoredHeight;
   EssenceDescriptor->AspectRatio = PDesc.AspectRatio;
 
-  //  if ( m_Info.LabelSetType == LS_MXF_SMPTE )
-  //    {
-  // PictureEssenceCoding UL = 
-  // Video Line Map       ui32_t[VideoLineMapSize] = { 2, 4, 0, 0 }
-  // CaptureGamma         UL = 
-  // ComponentMaxRef      ui32_t = 4095
-  // ComponentMinRef      ui32_t = 0
-  // PixelLayout          byte_t[PixelLayoutSize] = s_PixelLayoutXYZ
-  //    }
-
   if ( PDesc.StoredWidth < 2049 )
     {
       EssenceDescriptor->PictureEssenceCoding.Set(dict.ul(MDD_JP2KEssenceCompression_2K));
index 81dc51aba64f72c9c78e8e92b48e970a1b985950..fa88016084fbc775aeebc8177031e0b735350762 100644 (file)
@@ -1094,6 +1094,57 @@ static const ASDCP::MDDEntry s_MDD_Table[] = {
   { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 352
       0x04, 0x01, 0x02, 0x01, 0x01, 0x06, 0x01, 0x00 },
       {0}, false, "GenericPictureEssenceDescriptor_ColorPrimaries" },
+  { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 353
+      0x04, 0x01, 0x02, 0x02, 0x03, 0x01, 0x01, 0x11 },
+      {0}, false, "JP2KEssenceCompression_BroadcastProfile_1" },
+  { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 354
+      0x04, 0x01, 0x02, 0x02, 0x03, 0x01, 0x01, 0x12 },
+      {0}, false, "JP2KEssenceCompression_BroadcastProfile_2" },
+  { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 355
+      0x04, 0x01, 0x02, 0x02, 0x03, 0x01, 0x01, 0x13 },
+      {0}, false, "JP2KEssenceCompression_BroadcastProfile_3" },
+  { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 356
+      0x04, 0x01, 0x02, 0x02, 0x03, 0x01, 0x01, 0x14 },
+      {0}, false, "JP2KEssenceCompression_BroadcastProfile_4" },
+  { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 357
+      0x04, 0x01, 0x02, 0x02, 0x03, 0x01, 0x01, 0x15 },
+      {0}, false, "JP2KEssenceCompression_BroadcastProfile_5" },
+  { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 358
+      0x04, 0x01, 0x02, 0x02, 0x03, 0x01, 0x01, 0x16 },
+      {0}, false, "JP2KEssenceCompression_BroadcastProfile_6" },
+  { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 359
+      0x04, 0x01, 0x02, 0x02, 0x03, 0x01, 0x01, 0x17 },
+      {0}, false, "JP2KEssenceCompression_BroadcastProfile_7" },
+  { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x0e, // 360
+      0x04, 0x02, 0x01, 0x01, 0x06, 0x00, 0x00, 0x00 },
+      {0}, false, "WaveAudioDescriptor_ReferenceImageEditRate" },
+  { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x0e, // 361
+      0x04, 0x02, 0x01, 0x01, 0x06, 0x00, 0x00, 0x00 },
+      {0}, false, "WaveAudioDescriptor_ReferenceAudioAlignmentLevel" },
+  { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x0e, // 362
+      0x04, 0x01, 0x03, 0x02, 0x0b, 0x00, 0x00, 0x00 },
+      {0}, false, "GenericPictureEssenceDescriptor_AlternativeCenterCuts" },
+  { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x0e, // 363
+      0x04, 0x01, 0x05, 0x01, 0x13, 0x00, 0x00, 0x00 },
+      {0x32, 0x05}, true, "GenericPictureEssenceDescriptor_ActiveHeight" },
+  { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x0e, // 364
+      0x04, 0x01, 0x05, 0x01, 0x14, 0x00, 0x00, 0x00 },
+      {0x32, 0x04}, true, "GenericPictureEssenceDescriptor_ActiveWidth" },
+  { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x0e, // 365
+      0x04, 0x01, 0x05, 0x01, 0x15, 0x00, 0x00, 0x00 },
+      {0x32, 0x06}, true, "GenericPictureEssenceDescriptor_ActiveXOffset" },
+  { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x0e, // 366
+      0x04, 0x01, 0x05, 0x01, 0x16, 0x00, 0x00, 0x00 },
+      {0x32, 0x07}, true, "GenericPictureEssenceDescriptor_ActiveYOffset" },
+  { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x0e, // 367
+      0x03, 0x01, 0x01, 0x02, 0x02, 0x16, 0x00, 0x00 },
+      {0}, false, "TimedTextDescriptor_RFC5646LanguageTagList" },
+  { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 368
+      0x04, 0x01, 0x01, 0x01, 0x00, 0x04, 0x01, 0x00 },
+      {0}, false, "AlternativeCenterCuts_4x3" },
+  { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 369
+      0x04, 0x01, 0x01, 0x01, 0x00, 0x04, 0x02, 0x00 },
+      {0}, false, "AlternativeCenterCuts_14x9" },
   { {0}, {0}, false, 0 }
 };
 
index 81a1411fc4a49f8c98845b15718a61f3759a9fb1..bb8db7a2abcf7d4079d607772b46854ed39147b9 100755 (executable)
--- a/src/MDD.h
+++ b/src/MDD.h
@@ -388,8 +388,24 @@ namespace ASDCP {
        MDD_MaterialPackage_PackageMarker, // 350
        MDD_GenericPictureEssenceDescriptor_CodingEquations, // 351
        MDD_GenericPictureEssenceDescriptor_ColorPrimaries, // 352
+       MDD_JP2KEssenceCompression_BroadcastProfile_1, // 353
+       MDD_JP2KEssenceCompression_BroadcastProfile_2, // 354
+       MDD_JP2KEssenceCompression_BroadcastProfile_3, // 355
+       MDD_JP2KEssenceCompression_BroadcastProfile_4, // 356
+       MDD_JP2KEssenceCompression_BroadcastProfile_5, // 357
+       MDD_JP2KEssenceCompression_BroadcastProfile_6, // 358
+       MDD_JP2KEssenceCompression_BroadcastProfile_7, // 359
+       MDD_WaveAudioDescriptor_ReferenceImageEditRate, // 360
+       MDD_WaveAudioDescriptor_ReferenceAudioAlignmentLevel, // 361
+       MDD_GenericPictureEssenceDescriptor_AlternativeCenterCuts, // 362
+       MDD_GenericPictureEssenceDescriptor_ActiveHeight, // 363
+       MDD_GenericPictureEssenceDescriptor_ActiveWidth, // 364
+       MDD_GenericPictureEssenceDescriptor_ActiveXOffset, // 365
+       MDD_GenericPictureEssenceDescriptor_ActiveYOffset, // 366
+       MDD_TimedTextDescriptor_RFC5646LanguageTagList, // 367
+       MDD_AlternativeCenterCuts_4x3, // 368
+       MDD_AlternativeCenterCuts_14x9, // 369
         MDD_Max
-
     }; // enum MDD_t
 
     //
index 733ed34eae2f7af7d513557cd551a08f3f8dcd60..d73fe69f0f7f8b3828ba5e0d20d415420517fb80 100755 (executable)
@@ -1489,6 +1489,14 @@ WaveAudioDescriptor::InitFromTLVSet(TLVReader& TLVSet)
     result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(WaveAudioDescriptor, ChannelAssignment));
     ChannelAssignment.set_has_value( result == RESULT_OK );
   }
+  if ( ASDCP_SUCCESS(result) ) {
+    result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(WaveAudioDescriptor, ReferenceImageEditRate));
+    ReferenceImageEditRate.set_has_value( result == RESULT_OK );
+  }
+  if ( ASDCP_SUCCESS(result) ) { 
+    result = TLVSet.ReadUi8(OBJ_READ_ARGS_OPT(WaveAudioDescriptor, ReferenceAudioAlignmentLevel));
+    ReferenceAudioAlignmentLevel.set_has_value( result == RESULT_OK );
+  }
   return result;
 }
 
@@ -1502,6 +1510,8 @@ WaveAudioDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
   if ( ASDCP_SUCCESS(result)  && ! SequenceOffset.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(WaveAudioDescriptor, SequenceOffset));
   if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(WaveAudioDescriptor, AvgBps));
   if ( ASDCP_SUCCESS(result)  && ! ChannelAssignment.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(WaveAudioDescriptor, ChannelAssignment));
+  if ( ASDCP_SUCCESS(result)  && ! ReferenceImageEditRate.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(WaveAudioDescriptor, ReferenceImageEditRate));
+  if ( ASDCP_SUCCESS(result)  && ! ReferenceAudioAlignmentLevel.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(WaveAudioDescriptor, ReferenceAudioAlignmentLevel));
   return result;
 }
 
@@ -1514,6 +1524,8 @@ WaveAudioDescriptor::Copy(const WaveAudioDescriptor& rhs)
   SequenceOffset = rhs.SequenceOffset;
   AvgBps = rhs.AvgBps;
   ChannelAssignment = rhs.ChannelAssignment;
+  ReferenceImageEditRate = rhs.ReferenceImageEditRate;
+  ReferenceAudioAlignmentLevel = rhs.ReferenceAudioAlignmentLevel;
 }
 
 //
@@ -1535,6 +1547,12 @@ WaveAudioDescriptor::Dump(FILE* stream)
   if ( ! ChannelAssignment.empty() ) {
     fprintf(stream, "  %22s = %s\n",  "ChannelAssignment", ChannelAssignment.get().EncodeString(identbuf, IdentBufferLen));
   }
+  if ( ! ReferenceImageEditRate.empty() ) {
+    fprintf(stream, "  %22s = %s\n",  "ReferenceImageEditRate", ReferenceImageEditRate.get().EncodeString(identbuf, IdentBufferLen));
+  }
+  if ( ! ReferenceAudioAlignmentLevel.empty() ) {
+    fprintf(stream, "  %22s = %d\n",  "ReferenceAudioAlignmentLevel", ReferenceAudioAlignmentLevel.get());
+  }
 }
 
 //
@@ -1556,7 +1574,7 @@ WaveAudioDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
 
 //
 
-GenericPictureEssenceDescriptor::GenericPictureEssenceDescriptor(const Dictionary*& d) : FileDescriptor(d), m_Dict(d), SignalStandard(0), SampledWidth(0), SampledXOffset(0), DisplayHeight(0), DisplayXOffset(0), DisplayF2Offset(0), AlphaTransparency(0), ImageAlignmentOffset(0), ImageEndOffset(0)
+GenericPictureEssenceDescriptor::GenericPictureEssenceDescriptor(const Dictionary*& d) : FileDescriptor(d), m_Dict(d), SignalStandard(0), SampledWidth(0), SampledXOffset(0), DisplayHeight(0), DisplayXOffset(0), DisplayF2Offset(0), AlphaTransparency(0), ImageAlignmentOffset(0), ImageEndOffset(0), ActiveWidth(0), ActiveXOffset(0)
 {
   assert(m_Dict);
   m_UL = m_Dict->ul(MDD_GenericPictureEssenceDescriptor);
@@ -1661,6 +1679,23 @@ GenericPictureEssenceDescriptor::InitFromTLVSet(TLVReader& TLVSet)
     result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, ColorPrimaries));
     ColorPrimaries.set_has_value( result == RESULT_OK );
   }
+  if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(GenericPictureEssenceDescriptor, AlternativeCenterCuts));
+  if ( ASDCP_SUCCESS(result) ) { 
+    result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, ActiveWidth));
+    ActiveWidth.set_has_value( result == RESULT_OK );
+  }
+  if ( ASDCP_SUCCESS(result) ) { 
+    result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, ActiveHeight));
+    ActiveHeight.set_has_value( result == RESULT_OK );
+  }
+  if ( ASDCP_SUCCESS(result) ) { 
+    result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, ActiveXOffset));
+    ActiveXOffset.set_has_value( result == RESULT_OK );
+  }
+  if ( ASDCP_SUCCESS(result) ) { 
+    result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, ActiveYOffset));
+    ActiveYOffset.set_has_value( result == RESULT_OK );
+  }
   return result;
 }
 
@@ -1695,6 +1730,11 @@ GenericPictureEssenceDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
   if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(GenericPictureEssenceDescriptor, PictureEssenceCoding));
   if ( ASDCP_SUCCESS(result)  && ! CodingEquations.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, CodingEquations));
   if ( ASDCP_SUCCESS(result)  && ! ColorPrimaries.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, ColorPrimaries));
+  if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(GenericPictureEssenceDescriptor, AlternativeCenterCuts));
+  if ( ASDCP_SUCCESS(result)  && ! ActiveWidth.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, ActiveWidth));
+  if ( ASDCP_SUCCESS(result)  && ! ActiveHeight.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, ActiveHeight));
+  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));
   return result;
 }
 
@@ -1728,6 +1768,11 @@ GenericPictureEssenceDescriptor::Copy(const GenericPictureEssenceDescriptor& rhs
   PictureEssenceCoding = rhs.PictureEssenceCoding;
   CodingEquations = rhs.CodingEquations;
   ColorPrimaries = rhs.ColorPrimaries;
+  AlternativeCenterCuts = rhs.AlternativeCenterCuts;
+  ActiveWidth = rhs.ActiveWidth;
+  ActiveHeight = rhs.ActiveHeight;
+  ActiveXOffset = rhs.ActiveXOffset;
+  ActiveYOffset = rhs.ActiveYOffset;
 }
 
 //
@@ -1806,6 +1851,20 @@ GenericPictureEssenceDescriptor::Dump(FILE* stream)
   if ( ! ColorPrimaries.empty() ) {
     fprintf(stream, "  %22s = %s\n",  "ColorPrimaries", ColorPrimaries.get().EncodeString(identbuf, IdentBufferLen));
   }
+  fprintf(stream, "  %22s:\n",  "AlternativeCenterCuts");
+  AlternativeCenterCuts.Dump(stream);
+  if ( ! ActiveWidth.empty() ) {
+    fprintf(stream, "  %22s = %d\n",  "ActiveWidth", ActiveWidth.get());
+  }
+  if ( ! ActiveHeight.empty() ) {
+    fprintf(stream, "  %22s = %d\n",  "ActiveHeight", ActiveHeight.get());
+  }
+  if ( ! ActiveXOffset.empty() ) {
+    fprintf(stream, "  %22s = %d\n",  "ActiveXOffset", ActiveXOffset.get());
+  }
+  if ( ! ActiveYOffset.empty() ) {
+    fprintf(stream, "  %22s = %d\n",  "ActiveYOffset", ActiveYOffset.get());
+  }
 }
 
 //
@@ -2748,6 +2807,10 @@ TimedTextDescriptor::InitFromTLVSet(TLVReader& TLVSet)
   if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(TimedTextDescriptor, ResourceID));
   if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(TimedTextDescriptor, UCSEncoding));
   if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(TimedTextDescriptor, NamespaceURI));
+  if ( ASDCP_SUCCESS(result) ) {
+    result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(TimedTextDescriptor, RFC5646LanguageTagList));
+    RFC5646LanguageTagList.set_has_value( result == RESULT_OK );
+  }
   return result;
 }
 
@@ -2760,6 +2823,7 @@ TimedTextDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
   if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(TimedTextDescriptor, ResourceID));
   if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(TimedTextDescriptor, UCSEncoding));
   if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(TimedTextDescriptor, NamespaceURI));
+  if ( ASDCP_SUCCESS(result)  && ! RFC5646LanguageTagList.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(TimedTextDescriptor, RFC5646LanguageTagList));
   return result;
 }
 
@@ -2771,6 +2835,7 @@ TimedTextDescriptor::Copy(const TimedTextDescriptor& rhs)
   ResourceID = rhs.ResourceID;
   UCSEncoding = rhs.UCSEncoding;
   NamespaceURI = rhs.NamespaceURI;
+  RFC5646LanguageTagList = rhs.RFC5646LanguageTagList;
 }
 
 //
@@ -2787,6 +2852,9 @@ TimedTextDescriptor::Dump(FILE* stream)
   fprintf(stream, "  %22s = %s\n",  "ResourceID", ResourceID.EncodeString(identbuf, IdentBufferLen));
   fprintf(stream, "  %22s = %s\n",  "UCSEncoding", UCSEncoding.EncodeString(identbuf, IdentBufferLen));
   fprintf(stream, "  %22s = %s\n",  "NamespaceURI", NamespaceURI.EncodeString(identbuf, IdentBufferLen));
+  if ( ! RFC5646LanguageTagList.empty() ) {
+    fprintf(stream, "  %22s = %s\n",  "RFC5646LanguageTagList", RFC5646LanguageTagList.get().EncodeString(identbuf, IdentBufferLen));
+  }
 }
 
 //
index 5121989ccdfb99e03a4173bf634699cad81a148e..5c282b34e25e2c28f917695eb143b831e2f3c81f 100755 (executable)
@@ -448,6 +448,8 @@ namespace ASDCP
           optional_property<ui8_t> SequenceOffset;
           ui32_t AvgBps;
           optional_property<UL> ChannelAssignment;
+          optional_property<Rational> ReferenceImageEditRate;
+          optional_property<ui8_t> ReferenceAudioAlignmentLevel;
 
       WaveAudioDescriptor(const Dictionary*& d);
       WaveAudioDescriptor(const WaveAudioDescriptor& rhs);
@@ -495,6 +497,11 @@ namespace ASDCP
           UL PictureEssenceCoding;
           optional_property<UL> CodingEquations;
           optional_property<UL> ColorPrimaries;
+          Batch<UL> AlternativeCenterCuts;
+          optional_property<ui32_t> ActiveWidth;
+          optional_property<ui32_t> ActiveHeight;
+          optional_property<ui32_t> ActiveXOffset;
+          optional_property<ui32_t> ActiveYOffset;
 
       GenericPictureEssenceDescriptor(const Dictionary*& d);
       GenericPictureEssenceDescriptor(const GenericPictureEssenceDescriptor& rhs);
@@ -746,6 +753,7 @@ namespace ASDCP
           UUID ResourceID;
           UTF16String UCSEncoding;
           UTF16String NamespaceURI;
+          optional_property<UTF16String> RFC5646LanguageTagList;
 
       TimedTextDescriptor(const Dictionary*& d);
       TimedTextDescriptor(const TimedTextDescriptor& rhs);
index 5066d6e813541191c732de4969b7d7b1b608c8fd..57515c43be4235ef5500716e6c162787b94413da 100755 (executable)
@@ -415,6 +415,7 @@ write_JP2K_file(CommandOptions& Options)
                                       reinterpret_cast<ASDCP::MXF::JPEG2000PictureSubDescriptor*>(essence_sub_descriptors.back()));
 
       /// TODO: set with magic or some such thing
+      essence_descriptor->PictureEssenceCoding = UL(g_dict->ul(MDD_JP2KEssenceCompression_BroadcastProfile_1));
       essence_descriptor->ComponentMaxRef = 4095;
       essence_descriptor->ComponentMinRef = 0;
     }