checkpoint
authorjhurst <jhurst@cinecert.com>
Mon, 25 Nov 2019 00:05:31 +0000 (16:05 -0800)
committerjhurst <jhurst@cinecert.com>
Mon, 25 Nov 2019 00:05:31 +0000 (16:05 -0800)
src/MDD.cpp
src/MDD.h
src/MXFTypes.h
src/Metadata.cpp
src/Metadata.h

index c8de0040752cb8e0f40de5ca1c364f62271be153..71aefca1aa5cf0f0dedf9331e673d22a4b27edbe 100644 (file)
@@ -1608,7 +1608,26 @@ static const ASDCP::MDDEntry s_MDD_Table[] = {
      {0}, false, "ACESFrameWrappedEssence" },
    { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 518
        0x03, 0x02, 0x01, 0x10, 0x00, 0x00, 0x00, 0x00 },
-     {0}, false, "DCAudioChannel_FSKSyncSignalChannel" },   
+     {0}, false, "DCAudioChannel_FSKSyncSignalChannel" },
+   { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x0e,
+       0x04, 0x01, 0x06, 0x03, 0x0f, 0x00, 0x00, 0x00 },
+     {0}, false, "JPEG2000PictureSubDescriptor_J2KExtendedCapabilities" }, // 519
+   { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x0e,
+       0x04, 0x01, 0x06, 0x03, 0x10, 0x00, 0x00, 0x00 },
+     {0}, false, "JPEG2000PictureSubDescriptor_J2KProfile" }, // 520
+   { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x0e,
+       0x04, 0x01, 0x06, 0x03, 0x11, 0x00, 0x00, 0x00 },
+     {0}, false, "JPEG2000PictureSubDescriptor_J2KCorrespondingProfile" }, // 521
+   { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x04, 0x01, 0x01,
+       0x03, 0x01, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00 },
+     {0}, false, "J2KExtendedCapabilities" }, // 522
+   { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0D,
+       0x04, 0x01, 0x02, 0x02, 0x03, 0x01, 0x08, 0x00 },
+     {0}, false, "HTJ2KPictureCodingScheme" }, // 523
+   { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0D,
+       0x04, 0x01, 0x02, 0x02, 0x03, 0x01, 0x08, 0x01 },
+     {0}, false, "HTJ2KPictureCodingSchemeGeneric" }, // 524
+   
    { {0}, {0}, false, 0 },
 
 };
index 23d6730d673081ea5c0de2f3dcac894a76261c5d..2de5af7adc9d6574ab215a56bc9b5797e5847dfe 100755 (executable)
--- a/src/MDD.h
+++ b/src/MDD.h
@@ -554,6 +554,12 @@ namespace ASDCP {
        MDD_ACESUncompressedMonoscopicWithAlpha, // 516
        MDD_ACESFrameWrappedEssence, // 517
        MDD_DCAudioChannel_FSKSyncSignalChannel, // 518
+       MDD_JPEG2000PictureSubDescriptor_J2KExtendedCapabilities, // 519
+       MDD_JPEG2000PictureSubDescriptor_J2KProfile, // 520
+       MDD_JPEG2000PictureSubDescriptor_J2KCorrespondingProfile, // 521
+       MDD_J2KExtendedCapabilities, // 522
+       MDD_HTJ2KPictureCodingScheme, // 523
+       MDD_HTJ2KPictureCodingSchemeGeneric, // 524
        MDD_Max
     }; // enum MDD_t
 
index c49fed9b6f07b267e1f5de0621865dc7c65a4db2..0c79e8c14537c01c80097490320bfe1000f7d609 100755 (executable)
@@ -688,6 +688,31 @@ namespace ASDCP
          const char* EncodeString(char* str_buf, ui32_t buf_len) const;
        };
 
+      class J2KExtendedCapabilities : public Kumu::IArchive
+        {
+        public:
+         i8_t Pcap;
+         i8_t Ccapi[16]; // this is certainly wrong, need the spec
+       
+         bool HasValue() const { return true; }
+         ui32_t ArchiveLength() const { return 0; }
+
+         bool Archive(Kumu::MemIOWriter* Writer) const {
+           return true;
+         }
+
+         bool Unarchive(Kumu::MemIOReader* Reader) {
+           return true;
+         }
+
+         const char* EncodeString(char* str_buf, ui32_t buf_len) const
+         {
+           str_buf[0] = 0;
+           return str_buf;
+         }
+
+      };
+
     } // namespace MXF
 } // namespace ASDCP
 
index b21dc23ba5ce19d6c4e9ea2096718bbe187cb737..d81b70a29464c371a9302e32413049aa9041ad1d 100755 (executable)
@@ -2125,6 +2125,18 @@ JPEG2000PictureSubDescriptor::InitFromTLVSet(TLVReader& TLVSet)
     result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(JPEG2000PictureSubDescriptor, J2CLayout));
     J2CLayout.set_has_value( result == RESULT_OK );
   }
+  if ( ASDCP_SUCCESS(result) ) {
+    result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(JPEG2000PictureSubDescriptor, J2KExtendedCapabilities));
+    J2KExtendedCapabilities.set_has_value( result == RESULT_OK );
+  }
+  if ( ASDCP_SUCCESS(result) ) { 
+    result = TLVSet.ReadUi16(OBJ_READ_ARGS_OPT(JPEG2000PictureSubDescriptor, J2KProfile));
+    J2KProfile.set_has_value( result == RESULT_OK );
+  }
+  if ( ASDCP_SUCCESS(result) ) { 
+    result = TLVSet.ReadUi16(OBJ_READ_ARGS_OPT(JPEG2000PictureSubDescriptor, J2KCorrespondingProfile));
+    J2KCorrespondingProfile.set_has_value( result == RESULT_OK );
+  }
   return result;
 }
 
@@ -2148,6 +2160,9 @@ JPEG2000PictureSubDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
   if ( ASDCP_SUCCESS(result)  && ! CodingStyleDefault.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(JPEG2000PictureSubDescriptor, CodingStyleDefault));
   if ( ASDCP_SUCCESS(result)  && ! QuantizationDefault.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(JPEG2000PictureSubDescriptor, QuantizationDefault));
   if ( ASDCP_SUCCESS(result)  && ! J2CLayout.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(JPEG2000PictureSubDescriptor, J2CLayout));
+  if ( ASDCP_SUCCESS(result)  && ! J2KExtendedCapabilities.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(JPEG2000PictureSubDescriptor, J2KExtendedCapabilities));
+  if ( ASDCP_SUCCESS(result)  && ! J2KProfile.empty() ) result = TLVSet.WriteUi16(OBJ_WRITE_ARGS_OPT(JPEG2000PictureSubDescriptor, J2KProfile));
+  if ( ASDCP_SUCCESS(result)  && ! J2KCorrespondingProfile.empty() ) result = TLVSet.WriteUi16(OBJ_WRITE_ARGS_OPT(JPEG2000PictureSubDescriptor, J2KCorrespondingProfile));
   return result;
 }
 
@@ -2170,6 +2185,9 @@ JPEG2000PictureSubDescriptor::Copy(const JPEG2000PictureSubDescriptor& rhs)
   CodingStyleDefault = rhs.CodingStyleDefault;
   QuantizationDefault = rhs.QuantizationDefault;
   J2CLayout = rhs.J2CLayout;
+  J2KExtendedCapabilities = rhs.J2KExtendedCapabilities;
+  J2KProfile = rhs.J2KProfile;
+  J2KCorrespondingProfile = rhs.J2KCorrespondingProfile;
 }
 
 //
@@ -2205,6 +2223,15 @@ JPEG2000PictureSubDescriptor::Dump(FILE* stream)
   if ( ! J2CLayout.empty() ) {
     fprintf(stream, "  %22s = %s\n",  "J2CLayout", J2CLayout.get().EncodeString(identbuf, IdentBufferLen));
   }
+  if ( ! J2KExtendedCapabilities.empty() ) {
+    fprintf(stream, "  %22s = %s\n",  "J2KExtendedCapabilities", J2KExtendedCapabilities.get().EncodeString(identbuf, IdentBufferLen));
+  }
+  if ( ! J2KProfile.empty() ) {
+    fprintf(stream, "  %22s = %d\n",  "J2KProfile", J2KProfile.get());
+  }
+  if ( ! J2KCorrespondingProfile.empty() ) {
+    fprintf(stream, "  %22s = %d\n",  "J2KCorrespondingProfile", J2KCorrespondingProfile.get());
+  }
 }
 
 //
index b2466ef07a4bc652a0255159a6503a533ff5e755..f572ce41c5afde135a7891e7094f65d7acf8e552 100755 (executable)
@@ -571,6 +571,9 @@ namespace ASDCP
           optional_property<Raw > CodingStyleDefault;
           optional_property<Raw > QuantizationDefault;
           optional_property<RGBALayout > J2CLayout;
+          optional_property<J2KExtendedCapabilities > J2KExtendedCapabilities;
+          optional_property<ui16_t > J2KProfile;
+          optional_property<ui16_t > J2KCorrespondingProfile;
 
       JPEG2000PictureSubDescriptor(const Dictionary*& d);
       JPEG2000PictureSubDescriptor(const JPEG2000PictureSubDescriptor& rhs);