summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorjhurst <jhurst@cinecert.com>2013-07-02 15:35:41 +0000
committerjhurst <>2013-07-02 15:35:41 +0000
commit2f6f8dbb08b63351bfa25d3a008a41dec78f7dde (patch)
tree3f498181136b18547fa0a12e78793b6ede3f9b1a /src
parent0cc43cc3765c003d60196ff45213c2835281a0c3 (diff)
finished optional properties
Diffstat (limited to 'src')
-rwxr-xr-xsrc/AS_DCP_JP2K.cpp60
-rw-r--r--src/MDD.cpp5
-rwxr-xr-xsrc/MXF.h2
-rwxr-xr-xsrc/Metadata.cpp113
-rwxr-xr-xsrc/Metadata.h16
-rwxr-xr-xsrc/asdcp-info.cpp2
-rwxr-xr-xsrc/asdcp-test.cpp2
7 files changed, 135 insertions, 65 deletions
diff --git a/src/AS_DCP_JP2K.cpp b/src/AS_DCP_JP2K.cpp
index b8400e1..cf30869 100755
--- a/src/AS_DCP_JP2K.cpp
+++ b/src/AS_DCP_JP2K.cpp
@@ -260,20 +260,20 @@ ASDCP::JP2K_PDesc_to_MD(const JP2K::PictureDescriptor& PDesc,
memcpy(tmp_buffer + 8, &PDesc.ImageComponents, sizeof(ASDCP::JP2K::ImageComponent_t) * MaxComponents);
const ui32_t pcomp_size = (sizeof(int) * 2) + (sizeof(ASDCP::JP2K::ImageComponent_t) * MaxComponents);
- memcpy(EssenceSubDescriptor->PictureComponentSizing.Data(), tmp_buffer, pcomp_size);
- EssenceSubDescriptor->PictureComponentSizing.Length(pcomp_size);
+ memcpy(EssenceSubDescriptor->PictureComponentSizing.get().Data(), tmp_buffer, pcomp_size);
+ EssenceSubDescriptor->PictureComponentSizing.get().Length(pcomp_size);
ui32_t precinct_set_size = 0, i;
for ( i = 0; PDesc.CodingStyleDefault.SPcod.PrecinctSize[i] != 0 && i < MaxPrecincts; i++ )
precinct_set_size++;
ui32_t csd_size = sizeof(CodingStyleDefault_t) - MaxPrecincts + precinct_set_size;
- memcpy(EssenceSubDescriptor->CodingStyleDefault.Data(), &PDesc.CodingStyleDefault, csd_size);
- EssenceSubDescriptor->CodingStyleDefault.Length(csd_size);
+ memcpy(EssenceSubDescriptor->CodingStyleDefault.get().Data(), &PDesc.CodingStyleDefault, csd_size);
+ EssenceSubDescriptor->CodingStyleDefault.get().Length(csd_size);
ui32_t qdflt_size = PDesc.QuantizationDefault.SPqcdLength + 1;
- memcpy(EssenceSubDescriptor->QuantizationDefault.Data(), &PDesc.QuantizationDefault, qdflt_size);
- EssenceSubDescriptor->QuantizationDefault.Length(qdflt_size);
+ memcpy(EssenceSubDescriptor->QuantizationDefault.get().Data(), &PDesc.QuantizationDefault, qdflt_size);
+ EssenceSubDescriptor->QuantizationDefault.get().Length(qdflt_size);
return RESULT_OK;
}
@@ -290,8 +290,8 @@ ASDCP::MD_to_JP2K_PDesc(const ASDCP::MXF::RGBAEssenceDescriptor& EssenceDescrip
PDesc.EditRate = EditRate;
PDesc.SampleRate = SampleRate;
- assert(EssenceDescriptor.ContainerDuration.cget() <= 0xFFFFFFFFL);
- PDesc.ContainerDuration = static_cast<ui32_t>(EssenceDescriptor.ContainerDuration.cget());
+ assert(EssenceDescriptor.ContainerDuration.const_get() <= 0xFFFFFFFFL);
+ PDesc.ContainerDuration = static_cast<ui32_t>(EssenceDescriptor.ContainerDuration.const_get());
PDesc.StoredWidth = EssenceDescriptor.StoredWidth;
PDesc.StoredHeight = EssenceDescriptor.StoredHeight;
PDesc.AspectRatio = EssenceDescriptor.AspectRatio;
@@ -308,11 +308,11 @@ ASDCP::MD_to_JP2K_PDesc(const ASDCP::MXF::RGBAEssenceDescriptor& EssenceDescrip
PDesc.Csize = EssenceSubDescriptor.Csize;
// PictureComponentSizing
- ui32_t tmp_size = EssenceSubDescriptor.PictureComponentSizing.Length();
+ ui32_t tmp_size = EssenceSubDescriptor.PictureComponentSizing.const_get().Length();
if ( tmp_size == 17 ) // ( 2 * sizeof(ui32_t) ) + 3 components * 3 byte each
{
- memcpy(&PDesc.ImageComponents, EssenceSubDescriptor.PictureComponentSizing.RoData() + 8, tmp_size - 8);
+ memcpy(&PDesc.ImageComponents, EssenceSubDescriptor.PictureComponentSizing.const_get().RoData() + 8, tmp_size - 8);
}
else
{
@@ -322,16 +322,16 @@ ASDCP::MD_to_JP2K_PDesc(const ASDCP::MXF::RGBAEssenceDescriptor& EssenceDescrip
// CodingStyleDefault
memset(&PDesc.CodingStyleDefault, 0, sizeof(CodingStyleDefault_t));
memcpy(&PDesc.CodingStyleDefault,
- EssenceSubDescriptor.CodingStyleDefault.RoData(),
- EssenceSubDescriptor.CodingStyleDefault.Length());
+ EssenceSubDescriptor.CodingStyleDefault.const_get().RoData(),
+ EssenceSubDescriptor.CodingStyleDefault.const_get().Length());
// QuantizationDefault
memset(&PDesc.QuantizationDefault, 0, sizeof(QuantizationDefault_t));
memcpy(&PDesc.QuantizationDefault,
- EssenceSubDescriptor.QuantizationDefault.RoData(),
- EssenceSubDescriptor.QuantizationDefault.Length());
+ EssenceSubDescriptor.QuantizationDefault.const_get().RoData(),
+ EssenceSubDescriptor.QuantizationDefault.const_get().Length());
- PDesc.QuantizationDefault.SPqcdLength = EssenceSubDescriptor.QuantizationDefault.Length() - 1;
+ PDesc.QuantizationDefault.SPqcdLength = EssenceSubDescriptor.QuantizationDefault.const_get().Length() - 1;
return RESULT_OK;
}
@@ -391,20 +391,20 @@ ASDCP::JP2K_PDesc_to_MD(const JP2K::PictureDescriptor& PDesc,
memcpy(tmp_buffer + 8, &PDesc.ImageComponents, sizeof(ASDCP::JP2K::ImageComponent_t) * MaxComponents);
const ui32_t pcomp_size = (sizeof(int) * 2) + (sizeof(ASDCP::JP2K::ImageComponent_t) * MaxComponents);
- memcpy(EssenceSubDescriptor->PictureComponentSizing.Data(), tmp_buffer, pcomp_size);
- EssenceSubDescriptor->PictureComponentSizing.Length(pcomp_size);
+ memcpy(EssenceSubDescriptor->PictureComponentSizing.get().Data(), tmp_buffer, pcomp_size);
+ EssenceSubDescriptor->PictureComponentSizing.get().Length(pcomp_size);
ui32_t precinct_set_size = 0, i;
for ( i = 0; PDesc.CodingStyleDefault.SPcod.PrecinctSize[i] != 0 && i < MaxPrecincts; i++ )
precinct_set_size++;
ui32_t csd_size = sizeof(CodingStyleDefault_t) - MaxPrecincts + precinct_set_size;
- memcpy(EssenceSubDescriptor->CodingStyleDefault.Data(), &PDesc.CodingStyleDefault, csd_size);
- EssenceSubDescriptor->CodingStyleDefault.Length(csd_size);
+ memcpy(EssenceSubDescriptor->CodingStyleDefault.get().Data(), &PDesc.CodingStyleDefault, csd_size);
+ EssenceSubDescriptor->CodingStyleDefault.get().Length(csd_size);
ui32_t qdflt_size = PDesc.QuantizationDefault.SPqcdLength + 1;
- memcpy(EssenceSubDescriptor->QuantizationDefault.Data(), &PDesc.QuantizationDefault, qdflt_size);
- EssenceSubDescriptor->QuantizationDefault.Length(qdflt_size);
+ memcpy(EssenceSubDescriptor->QuantizationDefault.get().Data(), &PDesc.QuantizationDefault, qdflt_size);
+ EssenceSubDescriptor->QuantizationDefault.get().Length(qdflt_size);
return RESULT_OK;
}
@@ -421,8 +421,8 @@ ASDCP::MD_to_JP2K_PDesc(const ASDCP::MXF::CDCIEssenceDescriptor& EssenceDescrip
PDesc.EditRate = EditRate;
PDesc.SampleRate = SampleRate;
- assert(EssenceDescriptor.ContainerDuration.cget() <= 0xFFFFFFFFL);
- PDesc.ContainerDuration = static_cast<ui32_t>(EssenceDescriptor.ContainerDuration.cget());
+ assert(EssenceDescriptor.ContainerDuration.const_get() <= 0xFFFFFFFFL);
+ PDesc.ContainerDuration = static_cast<ui32_t>(EssenceDescriptor.ContainerDuration.const_get());
PDesc.StoredWidth = EssenceDescriptor.StoredWidth;
PDesc.StoredHeight = EssenceDescriptor.StoredHeight;
PDesc.AspectRatio = EssenceDescriptor.AspectRatio;
@@ -439,11 +439,11 @@ ASDCP::MD_to_JP2K_PDesc(const ASDCP::MXF::CDCIEssenceDescriptor& EssenceDescrip
PDesc.Csize = EssenceSubDescriptor.Csize;
// PictureComponentSizing
- ui32_t tmp_size = EssenceSubDescriptor.PictureComponentSizing.Length();
+ ui32_t tmp_size = EssenceSubDescriptor.PictureComponentSizing.const_get().Length();
if ( tmp_size == 17 ) // ( 2 * sizeof(ui32_t) ) + 3 components * 3 byte each
{
- memcpy(&PDesc.ImageComponents, EssenceSubDescriptor.PictureComponentSizing.RoData() + 8, tmp_size - 8);
+ memcpy(&PDesc.ImageComponents, EssenceSubDescriptor.PictureComponentSizing.const_get().RoData() + 8, tmp_size - 8);
}
else
{
@@ -453,16 +453,16 @@ ASDCP::MD_to_JP2K_PDesc(const ASDCP::MXF::CDCIEssenceDescriptor& EssenceDescrip
// CodingStyleDefault
memset(&PDesc.CodingStyleDefault, 0, sizeof(CodingStyleDefault_t));
memcpy(&PDesc.CodingStyleDefault,
- EssenceSubDescriptor.CodingStyleDefault.RoData(),
- EssenceSubDescriptor.CodingStyleDefault.Length());
+ EssenceSubDescriptor.CodingStyleDefault.const_get().RoData(),
+ EssenceSubDescriptor.CodingStyleDefault.const_get().Length());
// QuantizationDefault
memset(&PDesc.QuantizationDefault, 0, sizeof(QuantizationDefault_t));
memcpy(&PDesc.QuantizationDefault,
- EssenceSubDescriptor.QuantizationDefault.RoData(),
- EssenceSubDescriptor.QuantizationDefault.Length());
+ EssenceSubDescriptor.QuantizationDefault.const_get().RoData(),
+ EssenceSubDescriptor.QuantizationDefault.const_get().Length());
- PDesc.QuantizationDefault.SPqcdLength = EssenceSubDescriptor.QuantizationDefault.Length() - 1;
+ PDesc.QuantizationDefault.SPqcdLength = EssenceSubDescriptor.QuantizationDefault.const_get().Length() - 1;
return RESULT_OK;
}
diff --git a/src/MDD.cpp b/src/MDD.cpp
index 069d07e..81dc51a 100644
--- a/src/MDD.cpp
+++ b/src/MDD.cpp
@@ -1085,8 +1085,6 @@ static const ASDCP::MDDEntry s_MDD_Table[] = {
{ { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 349
0x03, 0x02, 0x03, 0x20, 0x03, 0x00, 0x00, 0x00 },
{0}, false, "IMFAudioGroup_Dcm" },
-
-
{ { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x0c, // 350
0x06, 0x01, 0x01, 0x04, 0x02, 0x0f, 0x00, 0x00 },
{0}, false, "MaterialPackage_PackageMarker" },
@@ -1096,9 +1094,6 @@ 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" },
-
-
-
{ {0}, {0}, false, 0 }
};
diff --git a/src/MXF.h b/src/MXF.h
index dc06c7f..4af8993 100755
--- a/src/MXF.h
+++ b/src/MXF.h
@@ -237,7 +237,7 @@ namespace ASDCP
void reset(const PropertyType& rhs) { this->m_has_value = false; }
bool empty() const { return ! m_has_value; }
PropertyType& get() { return m_property; }
- const PropertyType& cget() const { return m_property; }
+ const PropertyType& const_get() const { return m_property; }
};
// base class of all metadata objects
diff --git a/src/Metadata.cpp b/src/Metadata.cpp
index 04d8392..733ed34 100755
--- a/src/Metadata.cpp
+++ b/src/Metadata.cpp
@@ -1973,9 +1973,18 @@ JPEG2000PictureSubDescriptor::InitFromTLVSet(TLVReader& TLVSet)
if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(JPEG2000PictureSubDescriptor, XTOsize));
if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(JPEG2000PictureSubDescriptor, YTOsize));
if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi16(OBJ_READ_ARGS(JPEG2000PictureSubDescriptor, Csize));
- if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(JPEG2000PictureSubDescriptor, PictureComponentSizing));
- if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(JPEG2000PictureSubDescriptor, CodingStyleDefault));
- if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(JPEG2000PictureSubDescriptor, QuantizationDefault));
+ if ( ASDCP_SUCCESS(result) ) {
+ result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(JPEG2000PictureSubDescriptor, PictureComponentSizing));
+ PictureComponentSizing.set_has_value( result == RESULT_OK );
+ }
+ if ( ASDCP_SUCCESS(result) ) {
+ result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(JPEG2000PictureSubDescriptor, CodingStyleDefault));
+ CodingStyleDefault.set_has_value( result == RESULT_OK );
+ }
+ if ( ASDCP_SUCCESS(result) ) {
+ result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(JPEG2000PictureSubDescriptor, QuantizationDefault));
+ QuantizationDefault.set_has_value( result == RESULT_OK );
+ }
return result;
}
@@ -1995,9 +2004,9 @@ JPEG2000PictureSubDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(JPEG2000PictureSubDescriptor, XTOsize));
if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(JPEG2000PictureSubDescriptor, YTOsize));
if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi16(OBJ_WRITE_ARGS(JPEG2000PictureSubDescriptor, Csize));
- if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(JPEG2000PictureSubDescriptor, PictureComponentSizing));
- if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(JPEG2000PictureSubDescriptor, CodingStyleDefault));
- if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(JPEG2000PictureSubDescriptor, QuantizationDefault));
+ if ( ASDCP_SUCCESS(result) && ! PictureComponentSizing.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(JPEG2000PictureSubDescriptor, PictureComponentSizing));
+ 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));
return result;
}
@@ -2042,9 +2051,15 @@ JPEG2000PictureSubDescriptor::Dump(FILE* stream)
fprintf(stream, " %22s = %d\n", "XTOsize", XTOsize);
fprintf(stream, " %22s = %d\n", "YTOsize", YTOsize);
fprintf(stream, " %22s = %d\n", "Csize", Csize);
- fprintf(stream, " %22s = %s\n", "PictureComponentSizing", PictureComponentSizing.EncodeString(identbuf, IdentBufferLen));
- fprintf(stream, " %22s = %s\n", "CodingStyleDefault", CodingStyleDefault.EncodeString(identbuf, IdentBufferLen));
- fprintf(stream, " %22s = %s\n", "QuantizationDefault", QuantizationDefault.EncodeString(identbuf, IdentBufferLen));
+ if ( ! PictureComponentSizing.empty() ) {
+ fprintf(stream, " %22s = %s\n", "PictureComponentSizing", PictureComponentSizing.get().EncodeString(identbuf, IdentBufferLen));
+ }
+ if ( ! CodingStyleDefault.empty() ) {
+ fprintf(stream, " %22s = %s\n", "CodingStyleDefault", CodingStyleDefault.get().EncodeString(identbuf, IdentBufferLen));
+ }
+ if ( ! QuantizationDefault.empty() ) {
+ fprintf(stream, " %22s = %s\n", "QuantizationDefault", QuantizationDefault.get().EncodeString(identbuf, IdentBufferLen));
+ }
}
//
@@ -2066,7 +2081,7 @@ JPEG2000PictureSubDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
//
-CDCIEssenceDescriptor::CDCIEssenceDescriptor(const Dictionary*& d) : GenericPictureEssenceDescriptor(d), m_Dict(d), ComponentDepth(0), ColorSiting(0), PaddingBits(0), BlackRefLevel(0), ColorRange(0)
+CDCIEssenceDescriptor::CDCIEssenceDescriptor(const Dictionary*& d) : GenericPictureEssenceDescriptor(d), m_Dict(d), ComponentDepth(0), HorizontalSubsampling(0), VerticalSubsampling(0), ReversedByteOrder(0), AlphaSampleDepth(0), WhiteReflevel(0)
{
assert(m_Dict);
m_UL = m_Dict->ul(MDD_CDCIEssenceDescriptor);
@@ -2086,10 +2101,7 @@ CDCIEssenceDescriptor::InitFromTLVSet(TLVReader& TLVSet)
{
assert(m_Dict);
Result_t result = GenericPictureEssenceDescriptor::InitFromTLVSet(TLVSet);
- if ( ASDCP_SUCCESS(result) ) {
- result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(CDCIEssenceDescriptor, ComponentDepth));
- ComponentDepth.set_has_value( result == RESULT_OK );
- }
+ if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(CDCIEssenceDescriptor, ComponentDepth));
if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(CDCIEssenceDescriptor, HorizontalSubsampling));
if ( ASDCP_SUCCESS(result) ) {
result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(CDCIEssenceDescriptor, VerticalSubsampling));
@@ -2132,7 +2144,7 @@ CDCIEssenceDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
{
assert(m_Dict);
Result_t result = GenericPictureEssenceDescriptor::WriteToTLVSet(TLVSet);
- if ( ASDCP_SUCCESS(result) && ! ComponentDepth.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(CDCIEssenceDescriptor, ComponentDepth));
+ if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(CDCIEssenceDescriptor, ComponentDepth));
if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(CDCIEssenceDescriptor, HorizontalSubsampling));
if ( ASDCP_SUCCESS(result) && ! VerticalSubsampling.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(CDCIEssenceDescriptor, VerticalSubsampling));
if ( ASDCP_SUCCESS(result) && ! ColorSiting.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(CDCIEssenceDescriptor, ColorSiting));
@@ -2173,9 +2185,7 @@ CDCIEssenceDescriptor::Dump(FILE* stream)
stream = stderr;
GenericPictureEssenceDescriptor::Dump(stream);
- if ( ! ComponentDepth.empty() ) {
- fprintf(stream, " %22s = %d\n", "ComponentDepth", ComponentDepth.get());
- }
+ fprintf(stream, " %22s = %d\n", "ComponentDepth", ComponentDepth);
fprintf(stream, " %22s = %d\n", "HorizontalSubsampling", HorizontalSubsampling);
if ( ! VerticalSubsampling.empty() ) {
fprintf(stream, " %22s = %d\n", "VerticalSubsampling", VerticalSubsampling.get());
@@ -2222,7 +2232,7 @@ CDCIEssenceDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
//
-MPEG2VideoDescriptor::MPEG2VideoDescriptor(const Dictionary*& d) : CDCIEssenceDescriptor(d), m_Dict(d), CodedContentType(0), LowDelay(0), ProfileAndLevel(0)
+MPEG2VideoDescriptor::MPEG2VideoDescriptor(const Dictionary*& d) : CDCIEssenceDescriptor(d), m_Dict(d), SingleSequence(0), CodedContentType(0), ClosedGOP(0), MaxGOP(0), BitRate(0)
{
assert(m_Dict);
m_UL = m_Dict->ul(MDD_MPEG2VideoDescriptor);
@@ -2242,12 +2252,39 @@ MPEG2VideoDescriptor::InitFromTLVSet(TLVReader& TLVSet)
{
assert(m_Dict);
Result_t result = CDCIEssenceDescriptor::InitFromTLVSet(TLVSet);
- if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi8(OBJ_READ_ARGS(MPEG2VideoDescriptor, CodedContentType));
+ if ( ASDCP_SUCCESS(result) ) {
+ result = TLVSet.ReadUi8(OBJ_READ_ARGS_OPT(MPEG2VideoDescriptor, SingleSequence));
+ SingleSequence.set_has_value( result == RESULT_OK );
+ }
+ if ( ASDCP_SUCCESS(result) ) {
+ result = TLVSet.ReadUi8(OBJ_READ_ARGS_OPT(MPEG2VideoDescriptor, ConstantBFrames));
+ ConstantBFrames.set_has_value( result == RESULT_OK );
+ }
+ if ( ASDCP_SUCCESS(result) ) {
+ result = TLVSet.ReadUi8(OBJ_READ_ARGS_OPT(MPEG2VideoDescriptor, CodedContentType));
+ CodedContentType.set_has_value( result == RESULT_OK );
+ }
if ( ASDCP_SUCCESS(result) ) {
result = TLVSet.ReadUi8(OBJ_READ_ARGS_OPT(MPEG2VideoDescriptor, LowDelay));
LowDelay.set_has_value( result == RESULT_OK );
}
if ( ASDCP_SUCCESS(result) ) {
+ result = TLVSet.ReadUi8(OBJ_READ_ARGS_OPT(MPEG2VideoDescriptor, ClosedGOP));
+ ClosedGOP.set_has_value( result == RESULT_OK );
+ }
+ if ( ASDCP_SUCCESS(result) ) {
+ result = TLVSet.ReadUi8(OBJ_READ_ARGS_OPT(MPEG2VideoDescriptor, IdenticalGOP));
+ IdenticalGOP.set_has_value( result == RESULT_OK );
+ }
+ if ( ASDCP_SUCCESS(result) ) {
+ result = TLVSet.ReadUi8(OBJ_READ_ARGS_OPT(MPEG2VideoDescriptor, MaxGOP));
+ MaxGOP.set_has_value( result == RESULT_OK );
+ }
+ if ( ASDCP_SUCCESS(result) ) {
+ result = TLVSet.ReadUi8(OBJ_READ_ARGS_OPT(MPEG2VideoDescriptor, BPictureCount));
+ BPictureCount.set_has_value( result == RESULT_OK );
+ }
+ if ( ASDCP_SUCCESS(result) ) {
result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(MPEG2VideoDescriptor, BitRate));
BitRate.set_has_value( result == RESULT_OK );
}
@@ -2264,8 +2301,14 @@ MPEG2VideoDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
{
assert(m_Dict);
Result_t result = CDCIEssenceDescriptor::WriteToTLVSet(TLVSet);
- if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS(MPEG2VideoDescriptor, CodedContentType));
+ if ( ASDCP_SUCCESS(result) && ! SingleSequence.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(MPEG2VideoDescriptor, SingleSequence));
+ if ( ASDCP_SUCCESS(result) && ! ConstantBFrames.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(MPEG2VideoDescriptor, ConstantBFrames));
+ if ( ASDCP_SUCCESS(result) && ! CodedContentType.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(MPEG2VideoDescriptor, CodedContentType));
if ( ASDCP_SUCCESS(result) && ! LowDelay.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(MPEG2VideoDescriptor, LowDelay));
+ if ( ASDCP_SUCCESS(result) && ! ClosedGOP.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(MPEG2VideoDescriptor, ClosedGOP));
+ if ( ASDCP_SUCCESS(result) && ! IdenticalGOP.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(MPEG2VideoDescriptor, IdenticalGOP));
+ if ( ASDCP_SUCCESS(result) && ! MaxGOP.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(MPEG2VideoDescriptor, MaxGOP));
+ if ( ASDCP_SUCCESS(result) && ! BPictureCount.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(MPEG2VideoDescriptor, BPictureCount));
if ( ASDCP_SUCCESS(result) && ! BitRate.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(MPEG2VideoDescriptor, BitRate));
if ( ASDCP_SUCCESS(result) && ! ProfileAndLevel.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(MPEG2VideoDescriptor, ProfileAndLevel));
return result;
@@ -2276,8 +2319,14 @@ void
MPEG2VideoDescriptor::Copy(const MPEG2VideoDescriptor& rhs)
{
CDCIEssenceDescriptor::Copy(rhs);
+ SingleSequence = rhs.SingleSequence;
+ ConstantBFrames = rhs.ConstantBFrames;
CodedContentType = rhs.CodedContentType;
LowDelay = rhs.LowDelay;
+ ClosedGOP = rhs.ClosedGOP;
+ IdenticalGOP = rhs.IdenticalGOP;
+ MaxGOP = rhs.MaxGOP;
+ BPictureCount = rhs.BPictureCount;
BitRate = rhs.BitRate;
ProfileAndLevel = rhs.ProfileAndLevel;
}
@@ -2293,10 +2342,30 @@ MPEG2VideoDescriptor::Dump(FILE* stream)
stream = stderr;
CDCIEssenceDescriptor::Dump(stream);
- fprintf(stream, " %22s = %d\n", "CodedContentType", CodedContentType);
+ if ( ! SingleSequence.empty() ) {
+ fprintf(stream, " %22s = %d\n", "SingleSequence", SingleSequence.get());
+ }
+ if ( ! ConstantBFrames.empty() ) {
+ fprintf(stream, " %22s = %d\n", "ConstantBFrames", ConstantBFrames.get());
+ }
+ if ( ! CodedContentType.empty() ) {
+ fprintf(stream, " %22s = %d\n", "CodedContentType", CodedContentType.get());
+ }
if ( ! LowDelay.empty() ) {
fprintf(stream, " %22s = %d\n", "LowDelay", LowDelay.get());
}
+ if ( ! ClosedGOP.empty() ) {
+ fprintf(stream, " %22s = %d\n", "ClosedGOP", ClosedGOP.get());
+ }
+ if ( ! IdenticalGOP.empty() ) {
+ fprintf(stream, " %22s = %d\n", "IdenticalGOP", IdenticalGOP.get());
+ }
+ if ( ! MaxGOP.empty() ) {
+ fprintf(stream, " %22s = %d\n", "MaxGOP", MaxGOP.get());
+ }
+ if ( ! BPictureCount.empty() ) {
+ fprintf(stream, " %22s = %d\n", "BPictureCount", BPictureCount.get());
+ }
if ( ! BitRate.empty() ) {
fprintf(stream, " %22s = %d\n", "BitRate", BitRate.get());
}
diff --git a/src/Metadata.h b/src/Metadata.h
index 007f22b..5121989 100755
--- a/src/Metadata.h
+++ b/src/Metadata.h
@@ -554,9 +554,9 @@ namespace ASDCP
ui32_t XTOsize;
ui32_t YTOsize;
ui16_t Csize;
- Raw PictureComponentSizing;
- Raw CodingStyleDefault;
- Raw QuantizationDefault;
+ optional_property<Raw> PictureComponentSizing;
+ optional_property<Raw> CodingStyleDefault;
+ optional_property<Raw> QuantizationDefault;
JPEG2000PictureSubDescriptor(const Dictionary*& d);
JPEG2000PictureSubDescriptor(const JPEG2000PictureSubDescriptor& rhs);
@@ -579,7 +579,7 @@ namespace ASDCP
public:
const Dictionary*& m_Dict;
- optional_property<ui32_t> ComponentDepth;
+ ui32_t ComponentDepth;
ui32_t HorizontalSubsampling;
optional_property<ui32_t> VerticalSubsampling;
optional_property<ui8_t> ColorSiting;
@@ -611,8 +611,14 @@ namespace ASDCP
public:
const Dictionary*& m_Dict;
- ui8_t CodedContentType;
+ optional_property<ui8_t> SingleSequence;
+ optional_property<ui8_t> ConstantBFrames;
+ optional_property<ui8_t> CodedContentType;
optional_property<ui8_t> LowDelay;
+ optional_property<ui8_t> ClosedGOP;
+ optional_property<ui8_t> IdenticalGOP;
+ optional_property<ui8_t> MaxGOP;
+ optional_property<ui8_t> BPictureCount;
optional_property<ui32_t> BitRate;
optional_property<ui8_t> ProfileAndLevel;
diff --git a/src/asdcp-info.cpp b/src/asdcp-info.cpp
index a8746bf..4a03bde 100755
--- a/src/asdcp-info.cpp
+++ b/src/asdcp-info.cpp
@@ -517,7 +517,7 @@ public:
if ( KM_SUCCESS(result) )
{
char buf[64];
- fprintf(stream, "ChannelAssignment: %s\n", descriptor->ChannelAssignment.EncodeString(buf, 64));
+ fprintf(stream, "ChannelAssignment: %s\n", descriptor->ChannelAssignment.const_get().EncodeString(buf, 64));
}
}
diff --git a/src/asdcp-test.cpp b/src/asdcp-test.cpp
index 13e3036..24d6b1e 100755
--- a/src/asdcp-test.cpp
+++ b/src/asdcp-test.cpp
@@ -1813,7 +1813,7 @@ show_file_info(CommandOptions& Options)
if ( ASDCP_SUCCESS(result) )
{
char buf[64];
- fprintf(stdout, " ChannelAssignment: %s\n", descriptor->ChannelAssignment.EncodeString(buf, 64));
+ fprintf(stdout, " ChannelAssignment: %s\n", descriptor->ChannelAssignment.const_get().EncodeString(buf, 64));
}
}
}