summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorjhurst <jhurst@cinecert.com>2019-11-24 16:05:31 -0800
committerjhurst <jhurst@cinecert.com>2019-11-24 16:05:31 -0800
commitcf8ae65acd6ffdc424604a4d3350b4eca47af220 (patch)
tree89fb7c23f3d404769a82869a9ed5859056b414cf /src
parentcf81f87c1517aabb892f0ea29ab5b6f7d8a09d47 (diff)
checkpoint
Diffstat (limited to 'src')
-rw-r--r--src/MDD.cpp21
-rwxr-xr-xsrc/MDD.h6
-rwxr-xr-xsrc/MXFTypes.h25
-rwxr-xr-xsrc/Metadata.cpp27
-rwxr-xr-xsrc/Metadata.h3
5 files changed, 81 insertions, 1 deletions
diff --git a/src/MDD.cpp b/src/MDD.cpp
index c8de004..71aefca 100644
--- a/src/MDD.cpp
+++ b/src/MDD.cpp
@@ -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 },
};
diff --git a/src/MDD.h b/src/MDD.h
index 23d6730..2de5af7 100755
--- 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
diff --git a/src/MXFTypes.h b/src/MXFTypes.h
index c49fed9..0c79e8c 100755
--- a/src/MXFTypes.h
+++ b/src/MXFTypes.h
@@ -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
diff --git a/src/Metadata.cpp b/src/Metadata.cpp
index b21dc23..d81b70a 100755
--- a/src/Metadata.cpp
+++ b/src/Metadata.cpp
@@ -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());
+ }
}
//
diff --git a/src/Metadata.h b/src/Metadata.h
index b2466ef..f572ce4 100755
--- a/src/Metadata.h
+++ b/src/Metadata.h
@@ -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);