summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorThomas Richter <thomas.richter@alumni.tu-berlin.de>2021-05-25 03:44:32 +0200
committerThomas Richter <thomas.richter@alumni.tu-berlin.de>2021-05-25 03:44:32 +0200
commitbe4049c46ebc1ce0836ba2659e2103c402d9757d (patch)
tree70a23a8fec2e0a42459bcf43556a48fb37c2340c /src
parent1dfee29db933f05601e632b5a61ddecaf66d21aa (diff)
parent289b8c1b9b3d7fa8be843cc1745e6b7d92e0b2bc (diff)
Merge branch 'cinecert:master' into master
Diffstat (limited to 'src')
-rw-r--r--src/Metadata.cpp131
-rw-r--r--src/Metadata.h31
2 files changed, 162 insertions, 0 deletions
diff --git a/src/Metadata.cpp b/src/Metadata.cpp
index 338b5ee..e12b312 100644
--- a/src/Metadata.cpp
+++ b/src/Metadata.cpp
@@ -90,6 +90,7 @@ static InterchangeObject* PHDRMetadataTrackSubDescriptor_Factory(const Dictionar
static InterchangeObject* PIMFDynamicMetadataDescriptor_Factory(const Dictionary* Dict) { return new PIMFDynamicMetadataDescriptor(Dict); }
static InterchangeObject* IABEssenceDescriptor_Factory(const Dictionary* Dict) { return new IABEssenceDescriptor(Dict); }
static InterchangeObject* IABSoundfieldLabelSubDescriptor_Factory(const Dictionary* Dict) { return new IABSoundfieldLabelSubDescriptor(Dict); }
+static InterchangeObject* JPEGXSPictureSubDescriptor_Factory(const Dictionary* Dict) { return new JPEGXSPictureSubDescriptor(Dict); }
void
@@ -146,6 +147,7 @@ ASDCP::MXF::Metadata_InitTypes(const Dictionary* Dict)
SetObjectFactory(Dict->ul(MDD_PIMFDynamicMetadataDescriptor), PIMFDynamicMetadataDescriptor_Factory);
SetObjectFactory(Dict->ul(MDD_IABEssenceDescriptor), IABEssenceDescriptor_Factory);
SetObjectFactory(Dict->ul(MDD_IABSoundfieldLabelSubDescriptor), IABSoundfieldLabelSubDescriptor_Factory);
+ SetObjectFactory(Dict->ul(MDD_JPEGXSPictureSubDescriptor), JPEGXSPictureSubDescriptor_Factory);
}
//------------------------------------------------------------------------------------------
@@ -5482,6 +5484,135 @@ IABSoundfieldLabelSubDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
return InterchangeObject::WriteToBuffer(Buffer);
}
+//------------------------------------------------------------------------------------------
+// JPEGXSPictureSubDescriptor
+
+//
+
+JPEGXSPictureSubDescriptor::JPEGXSPictureSubDescriptor(const Dictionary* d) : InterchangeObject(d), JPEGXSPpih(0), JPEGXSPlev(0), JPEGXSWf(0), JPEGXSHf(0), JPEGXSNc(0)
+{
+ assert(m_Dict);
+ m_UL = m_Dict->ul(MDD_JPEGXSPictureSubDescriptor);
+}
+
+JPEGXSPictureSubDescriptor::JPEGXSPictureSubDescriptor(const JPEGXSPictureSubDescriptor& rhs) : InterchangeObject(rhs.m_Dict)
+{
+ assert(m_Dict);
+ m_UL = m_Dict->ul(MDD_JPEGXSPictureSubDescriptor);
+ Copy(rhs);
+}
+
+
+//
+ASDCP::Result_t
+JPEGXSPictureSubDescriptor::InitFromTLVSet(TLVReader& TLVSet)
+{
+ assert(m_Dict);
+ Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
+ if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi16(OBJ_READ_ARGS(JPEGXSPictureSubDescriptor, JPEGXSPpih));
+ if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi16(OBJ_READ_ARGS(JPEGXSPictureSubDescriptor, JPEGXSPlev));
+ if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi16(OBJ_READ_ARGS(JPEGXSPictureSubDescriptor, JPEGXSWf));
+ if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi16(OBJ_READ_ARGS(JPEGXSPictureSubDescriptor, JPEGXSHf));
+ if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi8(OBJ_READ_ARGS(JPEGXSPictureSubDescriptor, JPEGXSNc));
+ if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(JPEGXSPictureSubDescriptor, JPEGXSComponentTable));
+ if ( ASDCP_SUCCESS(result) ) {
+ result = TLVSet.ReadUi16(OBJ_READ_ARGS_OPT(JPEGXSPictureSubDescriptor, JPEGXSCw));
+ JPEGXSCw.set_has_value( result == RESULT_OK );
+ }
+ if ( ASDCP_SUCCESS(result) ) {
+ result = TLVSet.ReadUi16(OBJ_READ_ARGS_OPT(JPEGXSPictureSubDescriptor, JPEGXSHsl));
+ JPEGXSHsl.set_has_value( result == RESULT_OK );
+ }
+ if ( ASDCP_SUCCESS(result) ) {
+ result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(JPEGXSPictureSubDescriptor, JPEGXSMaximumBitRate));
+ JPEGXSMaximumBitRate.set_has_value( result == RESULT_OK );
+ }
+ return result;
+}
+
+//
+ASDCP::Result_t
+JPEGXSPictureSubDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
+{
+ assert(m_Dict);
+ Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
+ if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi16(OBJ_WRITE_ARGS(JPEGXSPictureSubDescriptor, JPEGXSPpih));
+ if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi16(OBJ_WRITE_ARGS(JPEGXSPictureSubDescriptor, JPEGXSPlev));
+ if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi16(OBJ_WRITE_ARGS(JPEGXSPictureSubDescriptor, JPEGXSWf));
+ if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi16(OBJ_WRITE_ARGS(JPEGXSPictureSubDescriptor, JPEGXSHf));
+ if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS(JPEGXSPictureSubDescriptor, JPEGXSNc));
+ if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(JPEGXSPictureSubDescriptor, JPEGXSComponentTable));
+ if ( ASDCP_SUCCESS(result) && ! JPEGXSCw.empty() ) result = TLVSet.WriteUi16(OBJ_WRITE_ARGS_OPT(JPEGXSPictureSubDescriptor, JPEGXSCw));
+ if ( ASDCP_SUCCESS(result) && ! JPEGXSHsl.empty() ) result = TLVSet.WriteUi16(OBJ_WRITE_ARGS_OPT(JPEGXSPictureSubDescriptor, JPEGXSHsl));
+ if ( ASDCP_SUCCESS(result) && ! JPEGXSMaximumBitRate.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(JPEGXSPictureSubDescriptor, JPEGXSMaximumBitRate));
+ return result;
+}
+
+//
+void
+JPEGXSPictureSubDescriptor::Copy(const JPEGXSPictureSubDescriptor& rhs)
+{
+ InterchangeObject::Copy(rhs);
+ JPEGXSPpih = rhs.JPEGXSPpih;
+ JPEGXSPlev = rhs.JPEGXSPlev;
+ JPEGXSWf = rhs.JPEGXSWf;
+ JPEGXSHf = rhs.JPEGXSHf;
+ JPEGXSNc = rhs.JPEGXSNc;
+ JPEGXSComponentTable = rhs.JPEGXSComponentTable;
+ JPEGXSCw = rhs.JPEGXSCw;
+ JPEGXSHsl = rhs.JPEGXSHsl;
+ JPEGXSMaximumBitRate = rhs.JPEGXSMaximumBitRate;
+}
+
+//
+InterchangeObject*
+JPEGXSPictureSubDescriptor::Clone() const
+{
+ return new JPEGXSPictureSubDescriptor(*this);
+}
+
+//
+void
+JPEGXSPictureSubDescriptor::Dump(FILE* stream)
+{
+ char identbuf[IdentBufferLen];
+ *identbuf = 0;
+
+ if ( stream == 0 )
+ stream = stderr;
+
+ InterchangeObject::Dump(stream);
+ fprintf(stream, " %22s = %d\n", "JPEGXSPpih", JPEGXSPpih);
+ fprintf(stream, " %22s = %d\n", "JPEGXSPlev", JPEGXSPlev);
+ fprintf(stream, " %22s = %d\n", "JPEGXSWf", JPEGXSWf);
+ fprintf(stream, " %22s = %d\n", "JPEGXSHf", JPEGXSHf);
+ fprintf(stream, " %22s = %d\n", "JPEGXSNc", JPEGXSNc);
+ fprintf(stream, " %22s = %s\n", "JPEGXSComponentTable", JPEGXSComponentTable.EncodeString(identbuf, IdentBufferLen));
+ if ( ! JPEGXSCw.empty() ) {
+ fprintf(stream, " %22s = %d\n", "JPEGXSCw", JPEGXSCw.get());
+ }
+ if ( ! JPEGXSHsl.empty() ) {
+ fprintf(stream, " %22s = %d\n", "JPEGXSHsl", JPEGXSHsl.get());
+ }
+ if ( ! JPEGXSMaximumBitRate.empty() ) {
+ fprintf(stream, " %22s = %d\n", "JPEGXSMaximumBitRate", JPEGXSMaximumBitRate.get());
+ }
+}
+
+//
+ASDCP::Result_t
+JPEGXSPictureSubDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
+{
+ return InterchangeObject::InitFromBuffer(p, l);
+}
+
+//
+ASDCP::Result_t
+JPEGXSPictureSubDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
+{
+ return InterchangeObject::WriteToBuffer(Buffer);
+}
+
//
// end Metadata.cpp
//
diff --git a/src/Metadata.h b/src/Metadata.h
index 82bb7b9..28dd317 100644
--- a/src/Metadata.h
+++ b/src/Metadata.h
@@ -1373,6 +1373,37 @@ namespace ASDCP
virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&);
};
+ //
+ class JPEGXSPictureSubDescriptor : public InterchangeObject
+ {
+ JPEGXSPictureSubDescriptor();
+
+ public:
+ ui16_t JPEGXSPpih;
+ ui16_t JPEGXSPlev;
+ ui16_t JPEGXSWf;
+ ui16_t JPEGXSHf;
+ ui8_t JPEGXSNc;
+ Raw JPEGXSComponentTable;
+ optional_property<ui16_t > JPEGXSCw;
+ optional_property<ui16_t > JPEGXSHsl;
+ optional_property<ui32_t > JPEGXSMaximumBitRate;
+
+ JPEGXSPictureSubDescriptor(const Dictionary* d);
+ JPEGXSPictureSubDescriptor(const JPEGXSPictureSubDescriptor& rhs);
+ virtual ~JPEGXSPictureSubDescriptor() {}
+
+ const JPEGXSPictureSubDescriptor& operator=(const JPEGXSPictureSubDescriptor& rhs) { Copy(rhs); return *this; }
+ virtual void Copy(const JPEGXSPictureSubDescriptor& rhs);
+ virtual InterchangeObject *Clone() const;
+ virtual const char* HasName() { return "JPEGXSPictureSubDescriptor"; }
+ virtual Result_t InitFromTLVSet(TLVReader& TLVSet);
+ virtual Result_t WriteToTLVSet(TLVWriter& TLVSet);
+ virtual void Dump(FILE* = 0);
+ virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l);
+ virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&);
+ };
+
} // namespace MXF
} // namespace ASDCP