From a526fabf937848823b02d5486a6ec38f8442bb1c Mon Sep 17 00:00:00 2001 From: jhurst Date: Wed, 21 Dec 2005 09:16:32 +0000 Subject: [PATCH] code-generated metadata! --- src/AS_DCP_MPEG2.cpp | 22 +- src/MXF.cpp | 9 + src/MXF.h | 2 + src/Metadata.cpp | 831 ++++++++++++++++++++++++++++++------------- src/Metadata.h | 476 ++++++++++++++----------- 5 files changed, 880 insertions(+), 460 deletions(-) diff --git a/src/AS_DCP_MPEG2.cpp b/src/AS_DCP_MPEG2.cpp index a126583..103cd44 100755 --- a/src/AS_DCP_MPEG2.cpp +++ b/src/AS_DCP_MPEG2.cpp @@ -40,8 +40,26 @@ ASDCP::Result_t ASDCP::MD_to_MPEG2_VDesc(MXF::MPEG2VideoDescriptor* VDescObj, MPEG2::VideoDescriptor& VDesc) { ASDCP_TEST_NULL(VDescObj); - VDesc = *((MPEG2::VideoDescriptor*)VDescObj); - VDesc.FrameRate = 0; + + VDesc.SampleRate = VDescObj->SampleRate; + VDesc.EditRate = VDescObj->SampleRate; + VDesc.FrameRate = VDescObj->SampleRate.Numerator; + VDesc.ContainerDuration = VDescObj->ContainerDuration; + + VDesc.FrameLayout = VDescObj->FrameLayout; + VDesc.StoredWidth = VDescObj->StoredWidth; + VDesc.StoredHeight = VDescObj->StoredHeight; + VDesc.AspectRatio = VDescObj->AspectRatio; + + VDesc.ComponentDepth = VDescObj->ComponentDepth; + VDesc.HorizontalSubsampling = VDescObj->HorizontalSubsampling; + VDesc.VerticalSubsampling = VDescObj->VerticalSubsampling; + VDesc.ColorSiting = VDescObj->ColorSiting; + VDesc.CodedContentType = VDescObj->CodedContentType; + + VDesc.LowDelay = VDescObj->LowDelay; + VDesc.BitRate = VDescObj->BitRate; + VDesc.ProfileAndLevel = VDescObj->ProfileAndLevel; return RESULT_OK; } diff --git a/src/MXF.cpp b/src/MXF.cpp index a04cfe2..faed567 100755 --- a/src/MXF.cpp +++ b/src/MXF.cpp @@ -927,6 +927,15 @@ ASDCP::MXF::OPAtomIndexFooter::Lookup(ui32_t frame_num, IndexTableSegment::Index //------------------------------------------------------------------------------------------ // +// +ASDCP::Result_t +ASDCP::MXF::InterchangeObject::InitFromTLVSet(TLVReader& TLVSet) +{ + Result_t result = TLVSet.ReadObject(OBJ_READ_ARGS(InterchangeObject, InstanceUID)); + if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(GenerationInterchangeObject, GenerationUID)); + return result; +} + // ASDCP::Result_t ASDCP::MXF::InterchangeObject::WriteToBuffer(ASDCP::FrameBuffer& Buffer) diff --git a/src/MXF.h b/src/MXF.h index caaecae..076e999 100755 --- a/src/MXF.h +++ b/src/MXF.h @@ -185,9 +185,11 @@ namespace ASDCP public: IPrimerLookup* m_Lookup; UID InstanceUID; + UUID GenerationUID; InterchangeObject() : m_Lookup(0) {} virtual ~InterchangeObject() {} + virtual Result_t InitFromTLVSet(TLVReader& TLVSet); virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&); virtual bool IsA(const byte_t* label); diff --git a/src/Metadata.cpp b/src/Metadata.cpp index 1335803..b1a11c2 100755 --- a/src/Metadata.cpp +++ b/src/Metadata.cpp @@ -35,9 +35,27 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include + //------------------------------------------------------------------------------------------ // +// +ASDCP::Result_t +ASDCP::MXF::Identification::InitFromTLVSet(TLVReader& TLVSet) +{ + Result_t result = InterchangeObject::InitFromTLVSet(TLVSet); + if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(Identification, ThisGenerationUID)); + if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(Identification, CompanyName)); + if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(Identification, ProductName)); + if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi16(OBJ_READ_ARGS(Identification, ProductVersion)); + if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(Identification, VersionString)); + if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(Identification, ProductUID)); + if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(Identification, ModificationDate)); + if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi16(OBJ_READ_ARGS(Identification, ToolkitVersion)); + if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(Identification, Platform)); + return result; +} + // ASDCP::Result_t ASDCP::MXF::Identification::InitFromBuffer(const byte_t* p, ui32_t l) @@ -49,22 +67,13 @@ ASDCP::MXF::Identification::InitFromBuffer(const byte_t* p, ui32_t l) if ( ASDCP_SUCCESS(result) ) { TLVReader MemRDR(m_ValueStart, m_ValueLength, m_Lookup); - - result = MemRDR.ReadObject(OBJ_READ_ARGS(InterchangeObject, InstanceUID)); - if ( ASDCP_SUCCESS(result) ) result = MemRDR.ReadObject(OBJ_READ_ARGS(Identification, ThisGenerationUID)); - if ( ASDCP_SUCCESS(result) ) result = MemRDR.ReadObject(OBJ_READ_ARGS(Identification, CompanyName)); - if ( ASDCP_SUCCESS(result) ) result = MemRDR.ReadObject(OBJ_READ_ARGS(Identification, ProductName)); - if ( ASDCP_SUCCESS(result) ) result = MemRDR.ReadUi16(OBJ_READ_ARGS(Identification, ProductVersion)); - if ( ASDCP_SUCCESS(result) ) result = MemRDR.ReadObject(OBJ_READ_ARGS(Identification, VersionString)); - if ( ASDCP_SUCCESS(result) ) result = MemRDR.ReadObject(OBJ_READ_ARGS(Identification, ProductUID)); - if ( ASDCP_SUCCESS(result) ) result = MemRDR.ReadObject(OBJ_READ_ARGS(Identification, ModificationDate)); - if ( ASDCP_SUCCESS(result) ) result = MemRDR.ReadUi16(OBJ_READ_ARGS(Identification, ToolkitVersion)); - if ( ASDCP_SUCCESS(result) ) result = MemRDR.ReadObject(OBJ_READ_ARGS(Identification, Platform)); + result = InitFromTLVSet(MemRDR); } return result; } + // ASDCP::Result_t ASDCP::MXF::Identification::WriteToBuffer(ASDCP::FrameBuffer& Buffer) @@ -77,48 +86,47 @@ ASDCP::MXF::Identification::WriteToBuffer(ASDCP::FrameBuffer& Buffer) void ASDCP::MXF::Identification::Dump(FILE* stream) { - char identbuf[IdentBufferLen]; +// char identbuf[IdentBufferLen]; if ( stream == 0 ) stream = stderr; - KLVPacket::Dump(stream, false); - fprintf(stream, " InstanceUID = %s\n", InstanceUID.ToString(identbuf)); - fprintf(stream, " ThisGenerationUID = %s\n", ThisGenerationUID.ToString(identbuf)); - fprintf(stream, " CompanyName = %s\n", CompanyName.ToString(identbuf)); - fprintf(stream, " ProductName = %s\n", ProductName.ToString(identbuf)); - fprintf(stream, " ProductVersion = %hu\n", ProductVersion); - fprintf(stream, " VersionString = %s\n", VersionString.ToString(identbuf)); - fprintf(stream, " ProductUID = %s\n", ProductUID.ToString(identbuf)); - fprintf(stream, " ModificationDate = %s\n", ModificationDate.ToString(identbuf)); - fprintf(stream, " ToolkitVersion = %hu\n", ToolkitVersion); - fprintf(stream, " Platform = %s\n", Platform.ToString(identbuf)); - + InterchangeObject::Dump(stream); fputs("==========================================================================\n", stream); } + //------------------------------------------------------------------------------------------ // +// +ASDCP::Result_t +ASDCP::MXF::ContentStorage::InitFromTLVSet(TLVReader& TLVSet) +{ + Result_t result = InterchangeObject::InitFromTLVSet(TLVSet); + if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(ContentStorage, Packages)); + if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(ContentStorage, EssenceContainerData)); + return result; +} + // ASDCP::Result_t ASDCP::MXF::ContentStorage::InitFromBuffer(const byte_t* p, ui32_t l) { + ASDCP_TEST_NULL(p); + Result_t result = KLVPacket::InitFromBuffer(p, l, s_MDD_Table[MDDindex_ContentStorage].ul); if ( ASDCP_SUCCESS(result) ) { TLVReader MemRDR(m_ValueStart, m_ValueLength, m_Lookup); - - result = MemRDR.ReadObject(OBJ_READ_ARGS(InterchangeObject, InstanceUID)); - if ( ASDCP_SUCCESS(result) ) result = MemRDR.ReadObject(OBJ_READ_ARGS(GenerationInterchangeObject, GenerationUID)); - if ( ASDCP_SUCCESS(result) ) result = MemRDR.ReadObject(OBJ_READ_ARGS(ContentStorage, Packages)); - if ( ASDCP_SUCCESS(result) ) result = MemRDR.ReadObject(OBJ_READ_ARGS(ContentStorage, EssenceContainerData)); + result = InitFromTLVSet(MemRDR); } return result; } + // ASDCP::Result_t ASDCP::MXF::ContentStorage::WriteToBuffer(ASDCP::FrameBuffer& Buffer) @@ -126,91 +134,67 @@ ASDCP::MXF::ContentStorage::WriteToBuffer(ASDCP::FrameBuffer& Buffer) return WriteKLToBuffer(Buffer, s_MDD_Table[MDDindex_ContentStorage].ul, 0); } + // void ASDCP::MXF::ContentStorage::Dump(FILE* stream) { - char identbuf[IdentBufferLen]; +// char identbuf[IdentBufferLen]; if ( stream == 0 ) stream = stderr; - KLVPacket::Dump(stream, false); - fprintf(stream, " InstanceUID = %s\n", InstanceUID.ToString(identbuf)); - fprintf(stream, " GenerationUID = %s\n", GenerationUID.ToString(identbuf)); - fprintf(stream, " Packages:\n"); Packages.Dump(stream); - fprintf(stream, " EssenceContainerData:\n"); EssenceContainerData.Dump(stream); - + InterchangeObject::Dump(stream); fputs("==========================================================================\n", stream); } + //------------------------------------------------------------------------------------------ // // ASDCP::Result_t -ASDCP::MXF::GenericPackage::InitFromBuffer(const byte_t* p, ui32_t l) +ASDCP::MXF::GenericPackage::InitFromTLVSet(TLVReader& TLVSet) { - TLVReader MemRDR(m_ValueStart, m_ValueLength, m_Lookup); - - Result_t result = MemRDR.ReadObject(OBJ_READ_ARGS(InterchangeObject, InstanceUID)); - // result = MemRDR.ReadObject(OBJ_READ_ARGS(InterchangeObject, InstanceUID)); - if ( ASDCP_SUCCESS(result) ) result = MemRDR.ReadObject(OBJ_READ_ARGS(GenerationInterchangeObject, GenerationUID)); - if ( ASDCP_SUCCESS(result) ) result = MemRDR.ReadObject(OBJ_READ_ARGS(GenericPackage, PackageUID)); - if ( ASDCP_SUCCESS(result) ) result = MemRDR.ReadObject(OBJ_READ_ARGS(GenericPackage, Name)); - if ( ASDCP_SUCCESS(result) ) result = MemRDR.ReadObject(OBJ_READ_ARGS(GenericPackage, PackageCreationDate)); - if ( ASDCP_SUCCESS(result) ) result = MemRDR.ReadObject(OBJ_READ_ARGS(GenericPackage, PackageModifiedDate)); - if ( ASDCP_SUCCESS(result) ) result = MemRDR.ReadObject(OBJ_READ_ARGS(GenericPackage, Tracks)); - + Result_t result = InterchangeObject::InitFromTLVSet(TLVSet); + if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(GenericPackage, PackageUID)); + if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(GenericPackage, Name)); + if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(GenericPackage, PackageCreationDate)); + if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(GenericPackage, PackageModifiedDate)); + if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(GenericPackage, Tracks)); return result; } + +//------------------------------------------------------------------------------------------ // -ASDCP::Result_t -ASDCP::MXF::GenericPackage::WriteToBuffer(ASDCP::FrameBuffer& Buffer) -{ - return WriteKLToBuffer(Buffer, s_MDD_Table[MDDindex_DefaultObject].ul, 0); -} // -void -ASDCP::MXF::GenericPackage::Dump(FILE* stream) +ASDCP::Result_t +ASDCP::MXF::MaterialPackage::InitFromTLVSet(TLVReader& TLVSet) { - char identbuf[IdentBufferLen]; - - if ( stream == 0 ) - stream = stderr; - - KLVPacket::Dump(stream, false); - fprintf(stream, " InstanceUID = %s\n", InstanceUID.ToString(identbuf)); - fprintf(stream, " GenerationUID = %s\n", GenerationUID.ToString(identbuf)); - fprintf(stream, " PackageUID = %s\n", PackageUID.ToString(identbuf)); - fprintf(stream, " Name = %s\n", Name.ToString(identbuf)); - fprintf(stream, " PackageCreationDate= %s\n", PackageCreationDate.ToString(identbuf)); - fprintf(stream, " PackageModifiedDate= %s\n", PackageModifiedDate.ToString(identbuf)); - fprintf(stream, " Tracks:\n"); Tracks.Dump(stream); - - fputs("==========================================================================\n", stream); + Result_t result = GenericPackage::InitFromTLVSet(TLVSet); + return result; } - -//------------------------------------------------------------------------------------------ -// - // ASDCP::Result_t ASDCP::MXF::MaterialPackage::InitFromBuffer(const byte_t* p, ui32_t l) { + ASDCP_TEST_NULL(p); + Result_t result = KLVPacket::InitFromBuffer(p, l, s_MDD_Table[MDDindex_MaterialPackage].ul); if ( ASDCP_SUCCESS(result) ) { - return GenericPackage::InitFromBuffer(p, l); + TLVReader MemRDR(m_ValueStart, m_ValueLength, m_Lookup); + result = InitFromTLVSet(MemRDR); } return result; } + // ASDCP::Result_t ASDCP::MXF::MaterialPackage::WriteToBuffer(ASDCP::FrameBuffer& Buffer) @@ -218,31 +202,50 @@ ASDCP::MXF::MaterialPackage::WriteToBuffer(ASDCP::FrameBuffer& Buffer) return WriteKLToBuffer(Buffer, s_MDD_Table[MDDindex_MaterialPackage].ul, 0); } + // void ASDCP::MXF::MaterialPackage::Dump(FILE* stream) { +// char identbuf[IdentBufferLen]; + + if ( stream == 0 ) + stream = stderr; + GenericPackage::Dump(stream); + fputs("==========================================================================\n", stream); } //------------------------------------------------------------------------------------------ // +// +ASDCP::Result_t +ASDCP::MXF::SourcePackage::InitFromTLVSet(TLVReader& TLVSet) +{ + Result_t result = GenericPackage::InitFromTLVSet(TLVSet); + return result; +} + // ASDCP::Result_t ASDCP::MXF::SourcePackage::InitFromBuffer(const byte_t* p, ui32_t l) { + ASDCP_TEST_NULL(p); + Result_t result = KLVPacket::InitFromBuffer(p, l, s_MDD_Table[MDDindex_SourcePackage].ul); if ( ASDCP_SUCCESS(result) ) { - return GenericPackage::InitFromBuffer(p, l); + TLVReader MemRDR(m_ValueStart, m_ValueLength, m_Lookup); + result = InitFromTLVSet(MemRDR); } return result; } + // ASDCP::Result_t ASDCP::MXF::SourcePackage::WriteToBuffer(ASDCP::FrameBuffer& Buffer) @@ -250,16 +253,50 @@ ASDCP::MXF::SourcePackage::WriteToBuffer(ASDCP::FrameBuffer& Buffer) return WriteKLToBuffer(Buffer, s_MDD_Table[MDDindex_SourcePackage].ul, 0); } + // void ASDCP::MXF::SourcePackage::Dump(FILE* stream) { +// char identbuf[IdentBufferLen]; + + if ( stream == 0 ) + stream = stderr; + GenericPackage::Dump(stream); + fputs("==========================================================================\n", stream); +} + + +//------------------------------------------------------------------------------------------ +// + +// +ASDCP::Result_t +ASDCP::MXF::GenericTrack::InitFromTLVSet(TLVReader& TLVSet) +{ + Result_t result = InterchangeObject::InitFromTLVSet(TLVSet); + if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(GenericTrack, TrackID)); + if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(GenericTrack, TrackNumber)); + if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(GenericTrack, TrackName)); + if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(GenericTrack, Sequence)); + return result; } + //------------------------------------------------------------------------------------------ // +// +ASDCP::Result_t +ASDCP::MXF::Track::InitFromTLVSet(TLVReader& TLVSet) +{ + Result_t result = GenericTrack::InitFromTLVSet(TLVSet); + if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(Track, EditRate)); + if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi64(OBJ_READ_ARGS(Track, Origin)); + return result; +} + // ASDCP::Result_t ASDCP::MXF::Track::InitFromBuffer(const byte_t* p, ui32_t l) @@ -271,20 +308,13 @@ ASDCP::MXF::Track::InitFromBuffer(const byte_t* p, ui32_t l) if ( ASDCP_SUCCESS(result) ) { TLVReader MemRDR(m_ValueStart, m_ValueLength, m_Lookup); - - result = MemRDR.ReadObject(OBJ_READ_ARGS(InterchangeObject, InstanceUID)); - if ( ASDCP_SUCCESS(result) ) result = MemRDR.ReadObject(OBJ_READ_ARGS(GenerationInterchangeObject, GenerationUID)); - if ( ASDCP_SUCCESS(result) ) result = MemRDR.ReadUi32(OBJ_READ_ARGS(GenericTrack, TrackID)); - if ( ASDCP_SUCCESS(result) ) result = MemRDR.ReadUi32(OBJ_READ_ARGS(GenericTrack, TrackNumber)); - if ( ASDCP_SUCCESS(result) ) result = MemRDR.ReadObject(OBJ_READ_ARGS(GenericTrack, TrackName)); - if ( ASDCP_SUCCESS(result) ) result = MemRDR.ReadObject(OBJ_READ_ARGS(GenericTrack, Sequence)); - if ( ASDCP_SUCCESS(result) ) result = MemRDR.ReadObject(OBJ_READ_ARGS(Track, EditRate)); - if ( ASDCP_SUCCESS(result) ) result = MemRDR.ReadUi64(OBJ_READ_ARGS(Track, Origin)); + result = InitFromTLVSet(MemRDR); } return result; } + // ASDCP::Result_t ASDCP::MXF::Track::WriteToBuffer(ASDCP::FrameBuffer& Buffer) @@ -292,31 +322,47 @@ ASDCP::MXF::Track::WriteToBuffer(ASDCP::FrameBuffer& Buffer) return WriteKLToBuffer(Buffer, s_MDD_Table[MDDindex_Track].ul, 0); } + // void ASDCP::MXF::Track::Dump(FILE* stream) { - char identbuf[IdentBufferLen]; +// char identbuf[IdentBufferLen]; if ( stream == 0 ) stream = stderr; - KLVPacket::Dump(stream, false); - fprintf(stream, " InstanceUID = %s\n", InstanceUID.ToString(identbuf)); - fprintf(stream, " GenerationUID = %s\n", GenerationUID.ToString(identbuf)); - fprintf(stream, " TrackID = %lu\n", TrackID); - fprintf(stream, " TrackNumber = %lu\n", TrackNumber); - fprintf(stream, " TrackName = %s\n", TrackName.ToString(identbuf)); - fprintf(stream, " Sequence = %s\n", Sequence.ToString(identbuf)); - fprintf(stream, " EditRate = %s\n", EditRate.ToString(identbuf)); - fprintf(stream, " Origin = %s\n", i64sz(Origin, identbuf)); - + GenericTrack::Dump(stream); fputs("==========================================================================\n", stream); } + //------------------------------------------------------------------------------------------ // +// +ASDCP::Result_t +ASDCP::MXF::StructuralComponent::InitFromTLVSet(TLVReader& TLVSet) +{ + Result_t result = InterchangeObject::InitFromTLVSet(TLVSet); + if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(StructuralComponent, DataDefinition)); + if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi64(OBJ_READ_ARGS(StructuralComponent, Duration)); + return result; +} + + +//------------------------------------------------------------------------------------------ +// + +// +ASDCP::Result_t +ASDCP::MXF::Sequence::InitFromTLVSet(TLVReader& TLVSet) +{ + Result_t result = StructuralComponent::InitFromTLVSet(TLVSet); + if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(Sequence, StructuralComponents)); + return result; +} + // ASDCP::Result_t ASDCP::MXF::Sequence::InitFromBuffer(const byte_t* p, ui32_t l) @@ -328,17 +374,13 @@ ASDCP::MXF::Sequence::InitFromBuffer(const byte_t* p, ui32_t l) if ( ASDCP_SUCCESS(result) ) { TLVReader MemRDR(m_ValueStart, m_ValueLength, m_Lookup); - - result = MemRDR.ReadObject(OBJ_READ_ARGS(InterchangeObject, InstanceUID)); - if ( ASDCP_SUCCESS(result) ) result = MemRDR.ReadObject(OBJ_READ_ARGS(GenerationInterchangeObject, GenerationUID)); - if ( ASDCP_SUCCESS(result) ) result = MemRDR.ReadObject(OBJ_READ_ARGS(StructuralComponent, DataDefinition)); - if ( ASDCP_SUCCESS(result) ) result = MemRDR.ReadUi64(OBJ_READ_ARGS(StructuralComponent, Duration)); - if ( ASDCP_SUCCESS(result) ) result = MemRDR.ReadObject(OBJ_READ_ARGS(Sequence, StructuralComponents)); + result = InitFromTLVSet(MemRDR); } return result; } + // ASDCP::Result_t ASDCP::MXF::Sequence::WriteToBuffer(ASDCP::FrameBuffer& Buffer) @@ -346,31 +388,35 @@ ASDCP::MXF::Sequence::WriteToBuffer(ASDCP::FrameBuffer& Buffer) return WriteKLToBuffer(Buffer, s_MDD_Table[MDDindex_Sequence].ul, 0); } + // void ASDCP::MXF::Sequence::Dump(FILE* stream) { - char identbuf[IdentBufferLen]; +// char identbuf[IdentBufferLen]; if ( stream == 0 ) stream = stderr; - const MDDEntry* Entry = GetMDDEntry(DataDefinition.Data()); - - KLVPacket::Dump(stream, false); - fprintf(stream, " InstanceUID = %s\n", InstanceUID.ToString(identbuf)); - fprintf(stream, " DataDefinition = %s (%s)\n", DataDefinition.ToString(identbuf), (Entry ? Entry->name : "Unknown")); - fprintf(stream, " Duration = %s\n", ui64sz(Duration, identbuf)); - fprintf(stream, " StructuralComponents:\n"); StructuralComponents.Dump(stream); - + StructuralComponent::Dump(stream); fputs("==========================================================================\n", stream); } - //------------------------------------------------------------------------------------------ // +// +ASDCP::Result_t +ASDCP::MXF::SourceClip::InitFromTLVSet(TLVReader& TLVSet) +{ + Result_t result = StructuralComponent::InitFromTLVSet(TLVSet); + if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi64(OBJ_READ_ARGS(SourceClip, StartPosition)); + if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(SourceClip, SourcePackageID)); + if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(SourceClip, SourceTrackID)); + return result; +} + // ASDCP::Result_t ASDCP::MXF::SourceClip::InitFromBuffer(const byte_t* p, ui32_t l) @@ -382,19 +428,13 @@ ASDCP::MXF::SourceClip::InitFromBuffer(const byte_t* p, ui32_t l) if ( ASDCP_SUCCESS(result) ) { TLVReader MemRDR(m_ValueStart, m_ValueLength, m_Lookup); - - result = MemRDR.ReadObject(OBJ_READ_ARGS(InterchangeObject, InstanceUID)); - if ( ASDCP_SUCCESS(result) ) result = MemRDR.ReadObject(OBJ_READ_ARGS(GenerationInterchangeObject, GenerationUID)); - if ( ASDCP_SUCCESS(result) ) result = MemRDR.ReadObject(OBJ_READ_ARGS(StructuralComponent, DataDefinition)); - if ( ASDCP_SUCCESS(result) ) result = MemRDR.ReadUi64(OBJ_READ_ARGS(SourceClip, StartPosition)); - if ( ASDCP_SUCCESS(result) ) result = MemRDR.ReadUi64(OBJ_READ_ARGS(StructuralComponent, Duration)); - if ( ASDCP_SUCCESS(result) ) result = MemRDR.ReadObject(OBJ_READ_ARGS(SourceClip, SourcePackageID)); - if ( ASDCP_SUCCESS(result) ) result = MemRDR.ReadUi32(OBJ_READ_ARGS(SourceClip, SourceTrackID)); + result = InitFromTLVSet(MemRDR); } return result; } + // ASDCP::Result_t ASDCP::MXF::SourceClip::WriteToBuffer(ASDCP::FrameBuffer& Buffer) @@ -402,22 +442,17 @@ ASDCP::MXF::SourceClip::WriteToBuffer(ASDCP::FrameBuffer& Buffer) return WriteKLToBuffer(Buffer, s_MDD_Table[MDDindex_SourceClip].ul, 0); } + // void ASDCP::MXF::SourceClip::Dump(FILE* stream) { - char identbuf[IdentBufferLen]; +// char identbuf[IdentBufferLen]; if ( stream == 0 ) stream = stderr; - KLVPacket::Dump(stream, false); - fprintf(stream, " InstanceUID = %s\n", InstanceUID.ToString(identbuf)); - fprintf(stream, " DataDefinition = %s\n", DataDefinition.ToString(identbuf)); - fprintf(stream, " StartPosition = %s\n", ui64sz(StartPosition, identbuf)); - fprintf(stream, " SourcePackageID = %s\n", SourcePackageID.ToString(identbuf)); - fprintf(stream, " SourcePackageID = %u\n", SourceTrackID); - + StructuralComponent::Dump(stream); fputs("==========================================================================\n", stream); } @@ -425,6 +460,17 @@ ASDCP::MXF::SourceClip::Dump(FILE* stream) //------------------------------------------------------------------------------------------ // +// +ASDCP::Result_t +ASDCP::MXF::TimecodeComponent::InitFromTLVSet(TLVReader& TLVSet) +{ + Result_t result = StructuralComponent::InitFromTLVSet(TLVSet); + if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi16(OBJ_READ_ARGS(TimecodeComponent, RoundedTimecodeBase)); + if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi64(OBJ_READ_ARGS(TimecodeComponent, StartTimecode)); + if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi8(OBJ_READ_ARGS(TimecodeComponent, DropFrame)); + return result; +} + // ASDCP::Result_t ASDCP::MXF::TimecodeComponent::InitFromBuffer(const byte_t* p, ui32_t l) @@ -436,19 +482,13 @@ ASDCP::MXF::TimecodeComponent::InitFromBuffer(const byte_t* p, ui32_t l) if ( ASDCP_SUCCESS(result) ) { TLVReader MemRDR(m_ValueStart, m_ValueLength, m_Lookup); - - result = MemRDR.ReadObject(OBJ_READ_ARGS(InterchangeObject, InstanceUID)); - if ( ASDCP_SUCCESS(result) ) result = MemRDR.ReadObject(OBJ_READ_ARGS(GenerationInterchangeObject, GenerationUID)); - if ( ASDCP_SUCCESS(result) ) result = MemRDR.ReadObject(OBJ_READ_ARGS(StructuralComponent, DataDefinition)); - if ( ASDCP_SUCCESS(result) ) result = MemRDR.ReadUi64(OBJ_READ_ARGS(StructuralComponent, Duration)); - if ( ASDCP_SUCCESS(result) ) result = MemRDR.ReadUi16(OBJ_READ_ARGS(TimecodeComponent, RoundedTimecodeBase)); - if ( ASDCP_SUCCESS(result) ) result = MemRDR.ReadUi64(OBJ_READ_ARGS(TimecodeComponent, StartTimecode)); - if ( ASDCP_SUCCESS(result) ) result = MemRDR.ReadUi8(OBJ_READ_ARGS(TimecodeComponent, DropFrame)); + result = InitFromTLVSet(MemRDR); } return result; } + // ASDCP::Result_t ASDCP::MXF::TimecodeComponent::WriteToBuffer(ASDCP::FrameBuffer& Buffer) @@ -456,82 +496,87 @@ ASDCP::MXF::TimecodeComponent::WriteToBuffer(ASDCP::FrameBuffer& Buffer) return WriteKLToBuffer(Buffer, s_MDD_Table[MDDindex_TimecodeComponent].ul, 0); } + // void ASDCP::MXF::TimecodeComponent::Dump(FILE* stream) { - char identbuf[IdentBufferLen]; +// char identbuf[IdentBufferLen]; if ( stream == 0 ) stream = stderr; - KLVPacket::Dump(stream, false); - fprintf(stream, " InstanceUID = %s\n", InstanceUID.ToString(identbuf)); - fprintf(stream, " DataDefinition = %s\n", DataDefinition.ToString(identbuf)); - fprintf(stream, " Duration = %s\n", ui64sz(Duration, identbuf)); - fprintf(stream, " RoundedTimecodeBase= %u\n", RoundedTimecodeBase); - fprintf(stream, " StartTimecode = %s\n", ui64sz(StartTimecode, identbuf)); - fprintf(stream, " DropFrame = %d\n", DropFrame); - + StructuralComponent::Dump(stream); fputs("==========================================================================\n", stream); } + //------------------------------------------------------------------------------------------ // // ASDCP::Result_t -ASDCP::MXF::WaveAudioDescriptor::InitFromBuffer(const byte_t* p, ui32_t l) +ASDCP::MXF::GenericDescriptor::InitFromTLVSet(TLVReader& TLVSet) +{ + Result_t result = InterchangeObject::InitFromTLVSet(TLVSet); + if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(GenericDescriptor, Locators)); + if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(GenericDescriptor, SubDescriptors)); + return result; +} + + +//------------------------------------------------------------------------------------------ +// + +// +ASDCP::Result_t +ASDCP::MXF::FileDescriptor::InitFromTLVSet(TLVReader& TLVSet) +{ + Result_t result = GenericDescriptor::InitFromTLVSet(TLVSet); + if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(FileDescriptor, LinkedTrackID)); + if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(FileDescriptor, SampleRate)); + if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi64(OBJ_READ_ARGS(FileDescriptor, ContainerDuration)); + if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(FileDescriptor, EssenceContainer)); + if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(FileDescriptor, Codec)); + return result; +} + +// +ASDCP::Result_t +ASDCP::MXF::FileDescriptor::InitFromBuffer(const byte_t* p, ui32_t l) { ASDCP_TEST_NULL(p); - Result_t result = KLVPacket::InitFromBuffer(p, l, s_MDD_Table[MDDindex_WaveAudioDescriptor].ul); + Result_t result = KLVPacket::InitFromBuffer(p, l, s_MDD_Table[MDDindex_FileDescriptor].ul); if ( ASDCP_SUCCESS(result) ) { TLVReader MemRDR(m_ValueStart, m_ValueLength, m_Lookup); - MXF::Rational TmpRat; - - //InterchangeObject_InstanceUID - result = MemRDR.ReadObject(OBJ_READ_ARGS(InterchangeObject, InstanceUID)); - if ( ASDCP_SUCCESS(result) ) result = MemRDR.ReadObject(OBJ_READ_ARGS(GenerationInterchangeObject, GenerationUID)); - if ( ASDCP_SUCCESS(result) ) result = MemRDR.ReadObject(OBJ_READ_ARGS(FileDescriptor, SampleRate)); - if ( ASDCP_SUCCESS(result) ) result = MemRDR.ReadUi64(OBJ_READ_ARGS(FileDescriptor, ContainerDuration)); - if ( ASDCP_SUCCESS(result) ) result = MemRDR.ReadUi32(OBJ_READ_ARGS(FileDescriptor, LinkedTrackID)); - if ( ASDCP_SUCCESS(result) ) result = MemRDR.ReadObject(OBJ_READ_ARGS(FileDescriptor, EssenceContainer)); - if ( ASDCP_SUCCESS(result) ) result = MemRDR.ReadObject(OBJ_READ_ARGS(GenericSoundEssenceDescriptor, AudioSamplingRate)); - if ( ASDCP_SUCCESS(result) ) result = MemRDR.ReadUi8(OBJ_READ_ARGS(GenericSoundEssenceDescriptor, Locked)); - if ( ASDCP_SUCCESS(result) ) result = MemRDR.ReadUi32(OBJ_READ_ARGS(GenericSoundEssenceDescriptor, ChannelCount)); - if ( ASDCP_SUCCESS(result) ) result = MemRDR.ReadUi32(OBJ_READ_ARGS(GenericSoundEssenceDescriptor, QuantizationBits)); - if ( ASDCP_SUCCESS(result) ) result = MemRDR.ReadUi16(OBJ_READ_ARGS(WaveAudioDescriptor, BlockAlign)); - if ( ASDCP_SUCCESS(result) ) result = MemRDR.ReadUi32(OBJ_READ_ARGS(WaveAudioDescriptor, AvgBps)); + result = InitFromTLVSet(MemRDR); } return result; } + // ASDCP::Result_t -ASDCP::MXF::WaveAudioDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer) +ASDCP::MXF::FileDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer) { - return WriteKLToBuffer(Buffer, s_MDD_Table[MDDindex_WaveAudioDescriptor].ul, 0); + return WriteKLToBuffer(Buffer, s_MDD_Table[MDDindex_FileDescriptor].ul, 0); } + // void -ASDCP::MXF::WaveAudioDescriptor::Dump(FILE* stream) +ASDCP::MXF::FileDescriptor::Dump(FILE* stream) { - char identbuf[IdentBufferLen]; +// char identbuf[IdentBufferLen]; if ( stream == 0 ) stream = stderr; - KLVPacket::Dump(stream, false); - fprintf(stream, " InstanceUID: %s\n", InstanceUID.ToString(identbuf)); - fprintf(stream, " LinkedTrackID: %lu\n", LinkedTrackID); - fprintf(stream, " EssenceContainer: %s\n", EssenceContainer.ToString(identbuf)); - fprintf(stream, "...\n"); - + GenericDescriptor::Dump(stream); fputs("==========================================================================\n", stream); } @@ -541,129 +586,151 @@ ASDCP::MXF::WaveAudioDescriptor::Dump(FILE* stream) // ASDCP::Result_t -ASDCP::MXF::MPEG2VideoDescriptor::InitFromBuffer(const byte_t* p, ui32_t l) +ASDCP::MXF::GenericSoundEssenceDescriptor::InitFromTLVSet(TLVReader& TLVSet) +{ + Result_t result = FileDescriptor::InitFromTLVSet(TLVSet); + if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(GenericSoundEssenceDescriptor, AudioSamplingRate)); + if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi8(OBJ_READ_ARGS(GenericSoundEssenceDescriptor, Locked)); + if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi8(OBJ_READ_ARGS(GenericSoundEssenceDescriptor, AudioRefLevel)); + if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi8(OBJ_READ_ARGS(GenericSoundEssenceDescriptor, ElectroSpatialFormulation)); + if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(GenericSoundEssenceDescriptor, ChannelCount)); + if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(GenericSoundEssenceDescriptor, QuantizationBits)); + if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi8(OBJ_READ_ARGS(GenericSoundEssenceDescriptor, DialNorm)); + if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(GenericSoundEssenceDescriptor, SoundEssenceCompression)); + return result; +} + +// +ASDCP::Result_t +ASDCP::MXF::GenericSoundEssenceDescriptor::InitFromBuffer(const byte_t* p, ui32_t l) { ASDCP_TEST_NULL(p); - Result_t result = KLVPacket::InitFromBuffer(p, l, s_MDD_Table[MDDindex_MPEG2VideoDescriptor].ul); + Result_t result = KLVPacket::InitFromBuffer(p, l, s_MDD_Table[MDDindex_GenericSoundEssenceDescriptor].ul); if ( ASDCP_SUCCESS(result) ) { TLVReader MemRDR(m_ValueStart, m_ValueLength, m_Lookup); - MXF::Rational TmpRat; - ui8_t tmp_delay; - - //InterchangeObject_InstanceUID - result = MemRDR.ReadObject(OBJ_READ_ARGS(InterchangeObject, InstanceUID)); - if ( ASDCP_SUCCESS(result) ) result = MemRDR.ReadObject(OBJ_READ_ARGS_R(FileDescriptor, SampleRate, TmpRat)); - SampleRate = TmpRat; - ui64_t tmpDuration = 0; - if ( ASDCP_SUCCESS(result) ) result = MemRDR.ReadUi64(OBJ_READ_ARGS_R(FileDescriptor, ContainerDuration, tmpDuration)); - ContainerDuration = tmpDuration; - if ( ASDCP_SUCCESS(result) ) result = MemRDR.ReadUi32(OBJ_READ_ARGS(FileDescriptor, LinkedTrackID)); - if ( ASDCP_SUCCESS(result) ) result = MemRDR.ReadObject(OBJ_READ_ARGS(FileDescriptor, EssenceContainer)); - if ( ASDCP_SUCCESS(result) ) result = MemRDR.ReadObject(OBJ_READ_ARGS_R(GenericPictureEssenceDescriptor, AspectRatio, TmpRat)); - AspectRatio = TmpRat; - if ( ASDCP_SUCCESS(result) ) result = MemRDR.ReadUi8(OBJ_READ_ARGS(GenericPictureEssenceDescriptor, FrameLayout)); - if ( ASDCP_SUCCESS(result) ) result = MemRDR.ReadUi32(OBJ_READ_ARGS(GenericPictureEssenceDescriptor, StoredWidth)); - if ( ASDCP_SUCCESS(result) ) result = MemRDR.ReadUi32(OBJ_READ_ARGS(GenericPictureEssenceDescriptor, StoredHeight)); - if ( ASDCP_SUCCESS(result) ) result = MemRDR.ReadUi32(OBJ_READ_ARGS(CDCIEssenceDescriptor, ComponentDepth)); - if ( ASDCP_SUCCESS(result) ) result = MemRDR.ReadUi32(OBJ_READ_ARGS(CDCIEssenceDescriptor, HorizontalSubsampling)); - if ( ASDCP_SUCCESS(result) ) result = MemRDR.ReadUi32(OBJ_READ_ARGS(CDCIEssenceDescriptor, VerticalSubsampling)); - if ( ASDCP_SUCCESS(result) ) result = MemRDR.ReadUi8(OBJ_READ_ARGS(CDCIEssenceDescriptor, ColorSiting)); - if ( ASDCP_SUCCESS(result) ) result = MemRDR.ReadUi8(OBJ_READ_ARGS(MPEG2VideoDescriptor, CodedContentType)); - if ( ASDCP_SUCCESS(result) ) result = MemRDR.ReadUi32(OBJ_READ_ARGS(MPEG2VideoDescriptor, BitRate)); - if ( ASDCP_SUCCESS(result) ) result = MemRDR.ReadUi8(OBJ_READ_ARGS(MPEG2VideoDescriptor, ProfileAndLevel)); - if ( ASDCP_SUCCESS(result) ) result = MemRDR.ReadUi8(OBJ_READ_ARGS_R(MPEG2VideoDescriptor, LowDelay, tmp_delay)); - LowDelay = (tmp_delay > 0); + result = InitFromTLVSet(MemRDR); } return result; } + // ASDCP::Result_t -ASDCP::MXF::MPEG2VideoDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer) +ASDCP::MXF::GenericSoundEssenceDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer) { - return WriteKLToBuffer(Buffer, s_MDD_Table[MDDindex_MPEG2VideoDescriptor].ul, 0); + return WriteKLToBuffer(Buffer, s_MDD_Table[MDDindex_GenericSoundEssenceDescriptor].ul, 0); } + // void -ASDCP::MXF::MPEG2VideoDescriptor::Dump(FILE* stream) +ASDCP::MXF::GenericSoundEssenceDescriptor::Dump(FILE* stream) { - char identbuf[IdentBufferLen]; +// char identbuf[IdentBufferLen]; if ( stream == 0 ) stream = stderr; - KLVPacket::Dump(stream, false); - fprintf(stream, " InstanceUID: %s\n", InstanceUID.ToString(identbuf)); - fprintf(stream, " LinkedTrackID: %lu\n", LinkedTrackID); - fprintf(stream, " EssenceContainer: %s\n", EssenceContainer.ToString(identbuf)); - ASDCP::MPEG2::VideoDescriptorDump(*this, stream); - + FileDescriptor::Dump(stream); fputs("==========================================================================\n", stream); } + //------------------------------------------------------------------------------------------ // // ASDCP::Result_t -ASDCP::MXF::FileDescriptor::InitFromBuffer(const byte_t* p, ui32_t l) +ASDCP::MXF::WaveAudioDescriptor::InitFromTLVSet(TLVReader& TLVSet) +{ + Result_t result = GenericSoundEssenceDescriptor::InitFromTLVSet(TLVSet); + if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi16(OBJ_READ_ARGS(WaveAudioDescriptor, BlockAlign)); + if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi8(OBJ_READ_ARGS(WaveAudioDescriptor, SequenceOffset)); + if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(WaveAudioDescriptor, AvgBps)); + return result; +} + +// +ASDCP::Result_t +ASDCP::MXF::WaveAudioDescriptor::InitFromBuffer(const byte_t* p, ui32_t l) { ASDCP_TEST_NULL(p); - Result_t result = KLVPacket::InitFromBuffer(p, l); // any of a variety of ULs, really + Result_t result = KLVPacket::InitFromBuffer(p, l, s_MDD_Table[MDDindex_WaveAudioDescriptor].ul); if ( ASDCP_SUCCESS(result) ) { TLVReader MemRDR(m_ValueStart, m_ValueLength, m_Lookup); - - result = MemRDR.ReadObject(OBJ_READ_ARGS(InterchangeObject, InstanceUID)); - if ( ASDCP_SUCCESS(result) ) result = MemRDR.ReadObject(OBJ_READ_ARGS(GenerationInterchangeObject, GenerationUID)); - if ( ASDCP_SUCCESS(result) ) result = MemRDR.ReadObject(OBJ_READ_ARGS(GenericDescriptor, Locators)); - if ( ASDCP_SUCCESS(result) ) result = MemRDR.ReadObject(OBJ_READ_ARGS(GenericDescriptor, SubDescriptors)); - if ( ASDCP_SUCCESS(result) ) result = MemRDR.ReadUi32(OBJ_READ_ARGS(FileDescriptor, LinkedTrackID)); - if ( ASDCP_SUCCESS(result) ) result = MemRDR.ReadObject(OBJ_READ_ARGS(FileDescriptor, SampleRate)); - if ( ASDCP_SUCCESS(result) ) result = MemRDR.ReadUi64(OBJ_READ_ARGS(FileDescriptor, ContainerDuration)); - if ( ASDCP_SUCCESS(result) ) result = MemRDR.ReadObject(OBJ_READ_ARGS(FileDescriptor, EssenceContainer)); - if ( ASDCP_SUCCESS(result) ) result = MemRDR.ReadObject(OBJ_READ_ARGS(FileDescriptor, Codec)); + result = InitFromTLVSet(MemRDR); } return result; } + // ASDCP::Result_t -ASDCP::MXF::FileDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer) +ASDCP::MXF::WaveAudioDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer) { - return WriteKLToBuffer(Buffer, s_MDD_Table[MDDindex_FileDescriptor].ul, 0); + return WriteKLToBuffer(Buffer, s_MDD_Table[MDDindex_WaveAudioDescriptor].ul, 0); } + // void -ASDCP::MXF::FileDescriptor::Dump(FILE* stream) +ASDCP::MXF::WaveAudioDescriptor::Dump(FILE* stream) { - char identbuf[IdentBufferLen]; +// char identbuf[IdentBufferLen]; if ( stream == 0 ) stream = stderr; - KLVPacket::Dump(stream, false); - fprintf(stream, " InstanceUID: %s\n", InstanceUID.ToString(identbuf)); - fprintf(stream, " GenerationUID: %lu\n", GenerationUID.ToString(identbuf)); - fprintf(stream, " LinkedTrackID: %lu\n", LinkedTrackID); - fprintf(stream, " EssenceContainer: %s\n", EssenceContainer.ToString(identbuf)); - fprintf(stream, "...\n"); - + GenericSoundEssenceDescriptor::Dump(stream); fputs("==========================================================================\n", stream); } + //------------------------------------------------------------------------------------------ // +// +ASDCP::Result_t +ASDCP::MXF::GenericPictureEssenceDescriptor::InitFromTLVSet(TLVReader& TLVSet) +{ + Result_t result = FileDescriptor::InitFromTLVSet(TLVSet); + if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi8(OBJ_READ_ARGS(GenericPictureEssenceDescriptor, FrameLayout)); + if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(GenericPictureEssenceDescriptor, StoredWidth)); + if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(GenericPictureEssenceDescriptor, StoredHeight)); + if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(GenericPictureEssenceDescriptor, DisplayWidth)); + if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(GenericPictureEssenceDescriptor, DisplayHeight)); + if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(GenericPictureEssenceDescriptor, AspectRatio)); + if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(GenericPictureEssenceDescriptor, Gamma)); + if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(GenericPictureEssenceDescriptor, PictureEssenceCoding)); + return result; +} + +// +ASDCP::Result_t +ASDCP::MXF::GenericPictureEssenceDescriptor::InitFromBuffer(const byte_t* p, ui32_t l) +{ + ASDCP_TEST_NULL(p); + + Result_t result = KLVPacket::InitFromBuffer(p, l, s_MDD_Table[MDDindex_GenericPictureEssenceDescriptor].ul); + + if ( ASDCP_SUCCESS(result) ) + { + TLVReader MemRDR(m_ValueStart, m_ValueLength, m_Lookup); + result = InitFromTLVSet(MemRDR); + } + + return result; +} + + // ASDCP::Result_t ASDCP::MXF::GenericPictureEssenceDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer) @@ -671,9 +738,53 @@ ASDCP::MXF::GenericPictureEssenceDescriptor::WriteToBuffer(ASDCP::FrameBuffer& B return WriteKLToBuffer(Buffer, s_MDD_Table[MDDindex_GenericPictureEssenceDescriptor].ul, 0); } + +// +void +ASDCP::MXF::GenericPictureEssenceDescriptor::Dump(FILE* stream) +{ +// char identbuf[IdentBufferLen]; + + if ( stream == 0 ) + stream = stderr; + + FileDescriptor::Dump(stream); + fputs("==========================================================================\n", stream); +} + + //------------------------------------------------------------------------------------------ // +// +ASDCP::Result_t +ASDCP::MXF::RGBAEssenceDescriptor::InitFromTLVSet(TLVReader& TLVSet) +{ + Result_t result = GenericPictureEssenceDescriptor::InitFromTLVSet(TLVSet); + if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(RGBAEssenceDescriptor, ComponentMaxRef)); + if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(RGBAEssenceDescriptor, ComponentMinRef)); + if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(RGBAEssenceDescriptor, PixelLayout)); + return result; +} + +// +ASDCP::Result_t +ASDCP::MXF::RGBAEssenceDescriptor::InitFromBuffer(const byte_t* p, ui32_t l) +{ + ASDCP_TEST_NULL(p); + + Result_t result = KLVPacket::InitFromBuffer(p, l, s_MDD_Table[MDDindex_RGBAEssenceDescriptor].ul); + + if ( ASDCP_SUCCESS(result) ) + { + TLVReader MemRDR(m_ValueStart, m_ValueLength, m_Lookup); + result = InitFromTLVSet(MemRDR); + } + + return result; +} + + // ASDCP::Result_t ASDCP::MXF::RGBAEssenceDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer) @@ -681,9 +792,63 @@ ASDCP::MXF::RGBAEssenceDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer) return WriteKLToBuffer(Buffer, s_MDD_Table[MDDindex_RGBAEssenceDescriptor].ul, 0); } + +// +void +ASDCP::MXF::RGBAEssenceDescriptor::Dump(FILE* stream) +{ +// char identbuf[IdentBufferLen]; + + if ( stream == 0 ) + stream = stderr; + + GenericPictureEssenceDescriptor::Dump(stream); + fputs("==========================================================================\n", stream); +} + + //------------------------------------------------------------------------------------------ // +// +ASDCP::Result_t +ASDCP::MXF::JPEG2000PictureSubDescriptor::InitFromTLVSet(TLVReader& TLVSet) +{ + Result_t result = InterchangeObject::InitFromTLVSet(TLVSet); + if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi16(OBJ_READ_ARGS(JPEG2000PictureSubDescriptor, Rsize)); + if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(JPEG2000PictureSubDescriptor, Xsize)); + if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(JPEG2000PictureSubDescriptor, Ysize)); + if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(JPEG2000PictureSubDescriptor, XOsize)); + if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(JPEG2000PictureSubDescriptor, YOsize)); + if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(JPEG2000PictureSubDescriptor, XTsize)); + if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(JPEG2000PictureSubDescriptor, YTsize)); + 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)); + return result; +} + +// +ASDCP::Result_t +ASDCP::MXF::JPEG2000PictureSubDescriptor::InitFromBuffer(const byte_t* p, ui32_t l) +{ + ASDCP_TEST_NULL(p); + + Result_t result = KLVPacket::InitFromBuffer(p, l, s_MDD_Table[MDDindex_JPEG2000PictureSubDescriptor].ul); + + if ( ASDCP_SUCCESS(result) ) + { + TLVReader MemRDR(m_ValueStart, m_ValueLength, m_Lookup); + result = InitFromTLVSet(MemRDR); + } + + return result; +} + + // ASDCP::Result_t ASDCP::MXF::JPEG2000PictureSubDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer) @@ -691,9 +856,147 @@ ASDCP::MXF::JPEG2000PictureSubDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buff return WriteKLToBuffer(Buffer, s_MDD_Table[MDDindex_JPEG2000PictureSubDescriptor].ul, 0); } + +// +void +ASDCP::MXF::JPEG2000PictureSubDescriptor::Dump(FILE* stream) +{ +// char identbuf[IdentBufferLen]; + + if ( stream == 0 ) + stream = stderr; + + InterchangeObject::Dump(stream); + fputs("==========================================================================\n", stream); +} + + //------------------------------------------------------------------------------------------ // +// +ASDCP::Result_t +ASDCP::MXF::CDCIEssenceDescriptor::InitFromTLVSet(TLVReader& TLVSet) +{ + Result_t result = GenericPictureEssenceDescriptor::InitFromTLVSet(TLVSet); + 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(CDCIEssenceDescriptor, VerticalSubsampling)); + if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi8(OBJ_READ_ARGS(CDCIEssenceDescriptor, ColorSiting)); + if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi8(OBJ_READ_ARGS(CDCIEssenceDescriptor, ReversedByteOrder)); + if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(CDCIEssenceDescriptor, BlackRefLevel)); + if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(CDCIEssenceDescriptor, WhiteReflevel)); + if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(CDCIEssenceDescriptor, ColorRange)); + return result; +} + +// +ASDCP::Result_t +ASDCP::MXF::CDCIEssenceDescriptor::InitFromBuffer(const byte_t* p, ui32_t l) +{ + ASDCP_TEST_NULL(p); + + Result_t result = KLVPacket::InitFromBuffer(p, l, s_MDD_Table[MDDindex_CDCIEssenceDescriptor].ul); + + if ( ASDCP_SUCCESS(result) ) + { + TLVReader MemRDR(m_ValueStart, m_ValueLength, m_Lookup); + result = InitFromTLVSet(MemRDR); + } + + return result; +} + + +// +ASDCP::Result_t +ASDCP::MXF::CDCIEssenceDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer) +{ + return WriteKLToBuffer(Buffer, s_MDD_Table[MDDindex_CDCIEssenceDescriptor].ul, 0); +} + + +// +void +ASDCP::MXF::CDCIEssenceDescriptor::Dump(FILE* stream) +{ +// char identbuf[IdentBufferLen]; + + if ( stream == 0 ) + stream = stderr; + + GenericPictureEssenceDescriptor::Dump(stream); + fputs("==========================================================================\n", stream); +} + + +//------------------------------------------------------------------------------------------ +// + +// +ASDCP::Result_t +ASDCP::MXF::MPEG2VideoDescriptor::InitFromTLVSet(TLVReader& TLVSet) +{ + 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(MPEG2VideoDescriptor, LowDelay)); + if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(MPEG2VideoDescriptor, BitRate)); + if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi8(OBJ_READ_ARGS(MPEG2VideoDescriptor, ProfileAndLevel)); + return result; +} + +// +ASDCP::Result_t +ASDCP::MXF::MPEG2VideoDescriptor::InitFromBuffer(const byte_t* p, ui32_t l) +{ + ASDCP_TEST_NULL(p); + + Result_t result = KLVPacket::InitFromBuffer(p, l, s_MDD_Table[MDDindex_MPEG2VideoDescriptor].ul); + + if ( ASDCP_SUCCESS(result) ) + { + TLVReader MemRDR(m_ValueStart, m_ValueLength, m_Lookup); + result = InitFromTLVSet(MemRDR); + } + + return result; +} + + +// +ASDCP::Result_t +ASDCP::MXF::MPEG2VideoDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer) +{ + return WriteKLToBuffer(Buffer, s_MDD_Table[MDDindex_MPEG2VideoDescriptor].ul, 0); +} + + +// +void +ASDCP::MXF::MPEG2VideoDescriptor::Dump(FILE* stream) +{ +// char identbuf[IdentBufferLen]; + + if ( stream == 0 ) + stream = stderr; + + CDCIEssenceDescriptor::Dump(stream); + fputs("==========================================================================\n", stream); +} + + +//------------------------------------------------------------------------------------------ +// + +// +ASDCP::Result_t +ASDCP::MXF::CryptographicFramework::InitFromTLVSet(TLVReader& TLVSet) +{ + Result_t result = InterchangeObject::InitFromTLVSet(TLVSet); + if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(CryptographicFramework, ContextSR)); + return result; +} + // ASDCP::Result_t ASDCP::MXF::CryptographicFramework::InitFromBuffer(const byte_t* p, ui32_t l) @@ -705,27 +1008,31 @@ ASDCP::MXF::CryptographicFramework::InitFromBuffer(const byte_t* p, ui32_t l) if ( ASDCP_SUCCESS(result) ) { TLVReader MemRDR(m_ValueStart, m_ValueLength, m_Lookup); - - result = MemRDR.ReadObject(OBJ_READ_ARGS(InterchangeObject, InstanceUID)); - if ( ASDCP_SUCCESS(result) ) result = MemRDR.ReadObject(OBJ_READ_ARGS(CryptographicFramework, ContextSR)); + result = InitFromTLVSet(MemRDR); } return result; } + +// +ASDCP::Result_t +ASDCP::MXF::CryptographicFramework::WriteToBuffer(ASDCP::FrameBuffer& Buffer) +{ + return WriteKLToBuffer(Buffer, s_MDD_Table[MDDindex_CryptographicFramework].ul, 0); +} + + // void ASDCP::MXF::CryptographicFramework::Dump(FILE* stream) { - char identbuf[IdentBufferLen]; +// char identbuf[IdentBufferLen]; if ( stream == 0 ) stream = stderr; - KLVPacket::Dump(stream, false); - fprintf(stream, " InstanceUID = %s\n", InstanceUID.ToString(identbuf)); - fprintf(stream, " ContextSR = %s\n", ContextSR.ToString(identbuf)); - + InterchangeObject::Dump(stream); fputs("==========================================================================\n", stream); } @@ -733,6 +1040,19 @@ ASDCP::MXF::CryptographicFramework::Dump(FILE* stream) //------------------------------------------------------------------------------------------ // +// +ASDCP::Result_t +ASDCP::MXF::CryptographicContext::InitFromTLVSet(TLVReader& TLVSet) +{ + Result_t result = InterchangeObject::InitFromTLVSet(TLVSet); + if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(CryptographicContext, ContextID)); + if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(CryptographicContext, SourceEssenceContainer)); + if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(CryptographicContext, CipherAlgorithm)); + if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(CryptographicContext, MICAlgorithm)); + if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(CryptographicContext, CryptographicKeyID)); + return result; +} + // ASDCP::Result_t ASDCP::MXF::CryptographicContext::InitFromBuffer(const byte_t* p, ui32_t l) @@ -744,38 +1064,35 @@ ASDCP::MXF::CryptographicContext::InitFromBuffer(const byte_t* p, ui32_t l) if ( ASDCP_SUCCESS(result) ) { TLVReader MemRDR(m_ValueStart, m_ValueLength, m_Lookup); - - result = MemRDR.ReadObject(OBJ_READ_ARGS(InterchangeObject, InstanceUID)); - if ( ASDCP_SUCCESS(result) ) result = MemRDR.ReadObject(OBJ_READ_ARGS(CryptographicContext, ContextID)); - if ( ASDCP_SUCCESS(result) ) result = MemRDR.ReadObject(OBJ_READ_ARGS(CryptographicContext, SourceEssenceContainer)); - if ( ASDCP_SUCCESS(result) ) result = MemRDR.ReadObject(OBJ_READ_ARGS(CryptographicContext, CipherAlgorithm)); - if ( ASDCP_SUCCESS(result) ) result = MemRDR.ReadObject(OBJ_READ_ARGS(CryptographicContext, MICAlgorithm)); - if ( ASDCP_SUCCESS(result) ) result = MemRDR.ReadObject(OBJ_READ_ARGS(CryptographicContext, CryptographicKeyID)); + result = InitFromTLVSet(MemRDR); } return result; } + +// +ASDCP::Result_t +ASDCP::MXF::CryptographicContext::WriteToBuffer(ASDCP::FrameBuffer& Buffer) +{ + return WriteKLToBuffer(Buffer, s_MDD_Table[MDDindex_CryptographicContext].ul, 0); +} + + // void ASDCP::MXF::CryptographicContext::Dump(FILE* stream) { - char identbuf[IdentBufferLen]; +// char identbuf[IdentBufferLen]; if ( stream == 0 ) stream = stderr; - KLVPacket::Dump(stream, false); - fprintf(stream, " InstanceUID = %s\n", InstanceUID.ToString(identbuf)); - fprintf(stream, " ContextID = %s\n", ContextID.ToString(identbuf)); - fprintf(stream, " SourceEssenceCnt = %s\n", SourceEssenceContainer.ToString(identbuf)); - fprintf(stream, " CipherAlgorithm = %s\n", CipherAlgorithm.ToString(identbuf)); - fprintf(stream, " MICAlgorithm = %s\n", MICAlgorithm.ToString(identbuf)); - fprintf(stream, " CryptographicKeyID = %s\n", CryptographicKeyID.ToString(identbuf)); - + InterchangeObject::Dump(stream); fputs("==========================================================================\n", stream); } + // // end MXF.cpp // diff --git a/src/Metadata.h b/src/Metadata.h index deb1abd..a9d05ab 100755 --- a/src/Metadata.h +++ b/src/Metadata.h @@ -38,240 +38,297 @@ namespace ASDCP { namespace MXF { + // Types + class RGBLayout : public IArchive + { + public: + struct element { + ui8_t Code; + ui8_t Depth; + } PictureElement[8]; + RGBLayout() { memset(PictureElement, 0, sizeof(PictureElement)); } + + // + Result_t ReadFrom(ASDCP::MemIOReader& Reader) { return RESULT_OK; } + Result_t WriteTo(ASDCP::MemIOWriter& Writer) { return RESULT_OK; } + }; + + class Raw : public IArchive + { + ASDCP_NO_COPY_CONSTRUCT(Raw); + + public: + byte_t* data; + Raw() {} + ~Raw() {} + + // + Result_t ReadFrom(ASDCP::MemIOReader& Reader) { return RESULT_OK; } + Result_t WriteTo(ASDCP::MemIOWriter& Writer) { return RESULT_OK; } + }; + + // + // class Identification : public InterchangeObject { ASDCP_NO_COPY_CONSTRUCT(Identification); public: - UUID ThisGenerationUID; - UTF16String CompanyName; - UTF16String ProductName; - ui16_t ProductVersion; - UTF16String VersionString; - UUID ProductUID; - Timestamp ModificationDate; - ui16_t ToolkitVersion; - UTF16String Platform; - - Identification() {} + UUID ThisGenerationUID; + UTF16String CompanyName; + UTF16String ProductName; + ui16_t ProductVersion; + UTF16String VersionString; + UUID ProductUID; + Timestamp ModificationDate; + ui16_t ToolkitVersion; + UTF16String Platform; + + Identification() : ProductVersion(0), ToolkitVersion(0) {} virtual ~Identification() {} + virtual Result_t InitFromTLVSet(TLVReader& TLVSet); virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l); virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&); virtual void Dump(FILE* = 0); }; - // class ContentStorage : public InterchangeObject { ASDCP_NO_COPY_CONSTRUCT(ContentStorage); public: - UUID GenerationUID; - Batch Packages; - Batch EssenceContainerData; + Batch Packages; + Batch EssenceContainerData; ContentStorage() {} virtual ~ContentStorage() {} + virtual Result_t InitFromTLVSet(TLVReader& TLVSet); virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l); virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&); virtual void Dump(FILE* = 0); }; - // + // class GenericPackage : public InterchangeObject { ASDCP_NO_COPY_CONSTRUCT(GenericPackage); public: - UMID PackageUID; - UUID GenerationUID; - UTF16String Name; - Timestamp PackageCreationDate; - Timestamp PackageModifiedDate; - Batch Tracks; - - GenericPackage() {} - virtual ~GenericPackage() {} - virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l) = 0; - virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&); - virtual void Dump(FILE* = 0) = 0; - }; + UMID PackageUID; + UTF16String Name; + Timestamp PackageCreationDate; + Timestamp PackageModifiedDate; + Batch Tracks; + GenericPackage() {} + virtual ~GenericPackage() {} + virtual Result_t InitFromTLVSet(TLVReader& TLVSet); + }; - // + // class MaterialPackage : public GenericPackage { ASDCP_NO_COPY_CONSTRUCT(MaterialPackage); public: - MaterialPackage() {} + + MaterialPackage() {} virtual ~MaterialPackage() {} + virtual Result_t InitFromTLVSet(TLVReader& TLVSet); virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l); virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&); virtual void Dump(FILE* = 0); - }; - + }; - // + // class SourcePackage : public GenericPackage { ASDCP_NO_COPY_CONSTRUCT(SourcePackage); public: - SourcePackage() {} + + SourcePackage() {} virtual ~SourcePackage() {} + virtual Result_t InitFromTLVSet(TLVReader& TLVSet); virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l); virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&); virtual void Dump(FILE* = 0); - }; + }; + + // + class GenericTrack : public InterchangeObject + { + ASDCP_NO_COPY_CONSTRUCT(GenericTrack); + + public: + ui32_t TrackID; + ui32_t TrackNumber; + UTF16String TrackName; + UUID Sequence; + + GenericTrack() : TrackID(0), TrackNumber(0) {} + virtual ~GenericTrack() {} + virtual Result_t InitFromTLVSet(TLVReader& TLVSet); + }; // - class Track : public InterchangeObject + class Track : public GenericTrack { ASDCP_NO_COPY_CONSTRUCT(Track); public: - UUID GenerationUID; - ui32_t TrackID; - ui32_t TrackNumber; - UTF16String TrackName; - UUID Sequence; - Rational EditRate; - ui64_t Origin; - - Track() {} + Rational EditRate; + ui64_t Origin; + + Track() : Origin(0) {} virtual ~Track() {} + virtual Result_t InitFromTLVSet(TLVReader& TLVSet); virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l); virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&); virtual void Dump(FILE* = 0); }; - // - class Sequence : public InterchangeObject + // + class StructuralComponent : public InterchangeObject + { + ASDCP_NO_COPY_CONSTRUCT(StructuralComponent); + + public: + UL DataDefinition; + ui64_t Duration; + + StructuralComponent() : Duration(0) {} + virtual ~StructuralComponent() {} + virtual Result_t InitFromTLVSet(TLVReader& TLVSet); + }; + + // + class Sequence : public StructuralComponent { ASDCP_NO_COPY_CONSTRUCT(Sequence); public: - UUID GenerationUID; - UL DataDefinition; - ui64_t Duration; - Batch StructuralComponents; + Batch StructuralComponents; - Sequence() {} + Sequence() {} virtual ~Sequence() {} + virtual Result_t InitFromTLVSet(TLVReader& TLVSet); virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l); virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&); virtual void Dump(FILE* = 0); - }; + }; - // - class SourceClip : public InterchangeObject + // + class SourceClip : public StructuralComponent { ASDCP_NO_COPY_CONSTRUCT(SourceClip); public: - UUID GenerationUID; - UL DataDefinition; - ui64_t StartPosition; - ui64_t Duration; - UMID SourcePackageID; - ui32_t SourceTrackID; - - SourceClip() {} + ui64_t StartPosition; + UMID SourcePackageID; + ui32_t SourceTrackID; + + SourceClip() : StartPosition(0), SourceTrackID(0) {} virtual ~SourceClip() {} + virtual Result_t InitFromTLVSet(TLVReader& TLVSet); virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l); virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&); virtual void Dump(FILE* = 0); - }; + }; - // - class TimecodeComponent : public InterchangeObject + // + class TimecodeComponent : public StructuralComponent { ASDCP_NO_COPY_CONSTRUCT(TimecodeComponent); public: - UUID GenerationUID; - UL DataDefinition; - ui64_t Duration; - ui16_t RoundedTimecodeBase; - ui64_t StartTimecode; - ui8_t DropFrame; - - TimecodeComponent() {} + ui16_t RoundedTimecodeBase; + ui64_t StartTimecode; + ui8_t DropFrame; + + TimecodeComponent() : RoundedTimecodeBase(0), StartTimecode(0), DropFrame(0) {} virtual ~TimecodeComponent() {} + virtual Result_t InitFromTLVSet(TLVReader& TLVSet); virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l); virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&); virtual void Dump(FILE* = 0); - }; - + }; + // - class MPEG2VideoDescriptor : public ASDCP::MPEG2::VideoDescriptor, public InterchangeObject + class GenericDescriptor : public InterchangeObject { - ASDCP_NO_COPY_CONSTRUCT(MPEG2VideoDescriptor); + ASDCP_NO_COPY_CONSTRUCT(GenericDescriptor); - public: - ui32_t LinkedTrackID; - UL EssenceContainer; + public: + Batch Locators; + Batch SubDescriptors; - MPEG2VideoDescriptor() : LinkedTrackID(0) {} - ~MPEG2VideoDescriptor() {} - virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l); - virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&); - virtual void Dump(FILE* = 0); + GenericDescriptor() {} + virtual ~GenericDescriptor() {} + virtual Result_t InitFromTLVSet(TLVReader& TLVSet); }; // - class FileDescriptor : public InterchangeObject + class FileDescriptor : public GenericDescriptor { ASDCP_NO_COPY_CONSTRUCT(FileDescriptor); - public: - UUID GenerationUID; - Batch Locators; - Batch SubDescriptors; - ui32_t LinkedTrackID; - Rational SampleRate; - ui64_t ContainerDuration; - UL EssenceContainer; - UL Codec; + public: + ui32_t LinkedTrackID; + Rational SampleRate; + ui64_t ContainerDuration; + UL EssenceContainer; + UL Codec; FileDescriptor() : LinkedTrackID(0), ContainerDuration(0) {} - ~FileDescriptor() {} + virtual ~FileDescriptor() {} + virtual Result_t InitFromTLVSet(TLVReader& TLVSet); virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l); virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&); virtual void Dump(FILE* = 0); }; // - class WaveAudioDescriptor : public FileDescriptor + class GenericSoundEssenceDescriptor : public FileDescriptor + { + ASDCP_NO_COPY_CONSTRUCT(GenericSoundEssenceDescriptor); + + public: + Rational AudioSamplingRate; + ui8_t Locked; + ui8_t AudioRefLevel; + ui8_t ElectroSpatialFormulation; + ui32_t ChannelCount; + ui32_t QuantizationBits; + ui8_t DialNorm; + UL SoundEssenceCompression; + + GenericSoundEssenceDescriptor() : Locked(0), AudioRefLevel(0), ElectroSpatialFormulation(0), ChannelCount(0), QuantizationBits(0), DialNorm(0) {} + virtual ~GenericSoundEssenceDescriptor() {} + virtual Result_t InitFromTLVSet(TLVReader& TLVSet); + virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l); + virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&); + virtual void Dump(FILE* = 0); + }; + + // + class WaveAudioDescriptor : public GenericSoundEssenceDescriptor { ASDCP_NO_COPY_CONSTRUCT(WaveAudioDescriptor); - public: - Rational AudioSamplingRate; - ui8_t Locked; - i8_t AudioRefLevel; - ui8_t ElectroSpatialFormulation; - ui32_t ChannelCount; - ui32_t QuantizationBits; - i8_t DialNorm; - UL SoundEssenceCompression; - ui16_t BlockAlign; - ui8_t SequenceOffset; - ui32_t AvgBps; - // Stream PeakEnvelope; - - WaveAudioDescriptor() : - Locked(false), AudioRefLevel(0), ElectroSpatialFormulation(0), - ChannelCount(0), QuantizationBits(0), DialNorm(0), BlockAlign(0), - SequenceOffset(0), AvgBps(0) {} - - ~WaveAudioDescriptor() {} - virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l); + public: + ui16_t BlockAlign; + ui8_t SequenceOffset; + ui32_t AvgBps; + + WaveAudioDescriptor() : BlockAlign(0), SequenceOffset(0), AvgBps(0) {} + virtual ~WaveAudioDescriptor() {} + virtual Result_t InitFromTLVSet(TLVReader& TLVSet); + virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l); virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&); - virtual void Dump(FILE* = 0); + virtual void Dump(FILE* = 0); }; // @@ -279,26 +336,22 @@ namespace ASDCP { ASDCP_NO_COPY_CONSTRUCT(GenericPictureEssenceDescriptor); - public: - ui8_t FrameLayout; - ui32_t StoredWidth; - ui32_t StoredHeight; - ui32_t DisplayWidth; - ui32_t DisplayHeight; - Rational AspectRatio; - ui32_t ComponentMaxRef; - ui32_t ComponentMinRef; - UL Gamma; - UL PictureEssenceCoding; - - GenericPictureEssenceDescriptor() : - FrameLayout(0), StoredWidth(0), StoredHeight(0), DisplayWidth(0), - DisplayHeight(0), ComponentMaxRef(0), ComponentMinRef(0) {} - - ~GenericPictureEssenceDescriptor() {} - // virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l); + public: + ui8_t FrameLayout; + ui32_t StoredWidth; + ui32_t StoredHeight; + ui32_t DisplayWidth; + ui32_t DisplayHeight; + Rational AspectRatio; + UL Gamma; + UL PictureEssenceCoding; + + GenericPictureEssenceDescriptor() : FrameLayout(0), StoredWidth(0), StoredHeight(0), DisplayWidth(0), DisplayHeight(0) {} + virtual ~GenericPictureEssenceDescriptor() {} + virtual Result_t InitFromTLVSet(TLVReader& TLVSet); + virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l); virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&); - // virtual void Dump(FILE* = 0); + virtual void Dump(FILE* = 0); }; // @@ -306,69 +359,88 @@ namespace ASDCP { ASDCP_NO_COPY_CONSTRUCT(RGBAEssenceDescriptor); - public: - class RGBLayout - { - public: - struct element { - ui8_t Code; - ui8_t Depth; - } PictureElement[8]; - RGBLayout() { memset(PictureElement, 0, sizeof(PictureElement)); } - }; - - RGBLayout PixelLayout; - - RGBAEssenceDescriptor() {} - ~RGBAEssenceDescriptor() {} - // virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l); + public: + ui32_t ComponentMaxRef; + ui32_t ComponentMinRef; + RGBLayout PixelLayout; + + RGBAEssenceDescriptor() : ComponentMaxRef(0), ComponentMinRef(0) {} + virtual ~RGBAEssenceDescriptor() {} + virtual Result_t InitFromTLVSet(TLVReader& TLVSet); + virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l); virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&); - // virtual void Dump(FILE* = 0); + virtual void Dump(FILE* = 0); }; - class Raw + // + class JPEG2000PictureSubDescriptor : public InterchangeObject { - ASDCP_NO_COPY_CONSTRUCT(Raw); + ASDCP_NO_COPY_CONSTRUCT(JPEG2000PictureSubDescriptor); public: - byte_t* data; - Raw() {} - ~Raw() {} - + ui16_t Rsize; + ui32_t Xsize; + ui32_t Ysize; + ui32_t XOsize; + ui32_t YOsize; + ui32_t XTsize; + ui32_t YTsize; + ui32_t XTOsize; + ui32_t YTOsize; + ui16_t Csize; + Raw PictureComponentSizing; + Raw CodingStyleDefault; + Raw QuantizationDefault; + + JPEG2000PictureSubDescriptor() : Rsize(0), Xsize(0), Ysize(0), XOsize(0), YOsize(0), XTsize(0), YTsize(0), XTOsize(0), YTOsize(0), Csize(0) {} + virtual ~JPEG2000PictureSubDescriptor() {} + virtual Result_t InitFromTLVSet(TLVReader& TLVSet); + virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l); + virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&); + virtual void Dump(FILE* = 0); }; // - class JPEG2000PictureSubDescriptor : public InterchangeObject + class CDCIEssenceDescriptor : public GenericPictureEssenceDescriptor { - ASDCP_NO_COPY_CONSTRUCT(JPEG2000PictureSubDescriptor); + ASDCP_NO_COPY_CONSTRUCT(CDCIEssenceDescriptor); public: - ui16_t Rsize; - ui32_t Xsize; - ui32_t Ysize; - ui32_t XOsize; - ui32_t YOsize; - ui32_t XTsize; - ui32_t YTsize; - ui32_t XTOsize; - ui32_t YTOsize; - ui16_t Csize; - Raw PictureComponentSizing; - Raw CodingStyleDefault; - Raw QuantizationDefault; - - JPEG2000PictureSubDescriptor() : - Rsize(0), Xsize(0), Ysize(0), - XOsize(0), YOsize(0), XTsize(0), - YTsize(0), XTOsize(0), YTOsize(0), - Csize(0) {} - - ~JPEG2000PictureSubDescriptor() {} - // virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l); + ui32_t ComponentDepth; + ui32_t HorizontalSubsampling; + ui32_t VerticalSubsampling; + ui8_t ColorSiting; + ui8_t ReversedByteOrder; + ui32_t BlackRefLevel; + ui32_t WhiteReflevel; + ui32_t ColorRange; + + CDCIEssenceDescriptor() : ComponentDepth(0), HorizontalSubsampling(0), VerticalSubsampling(0), ColorSiting(0), ReversedByteOrder(0), BlackRefLevel(0), WhiteReflevel(0), ColorRange(0) {} + virtual ~CDCIEssenceDescriptor() {} + virtual Result_t InitFromTLVSet(TLVReader& TLVSet); + virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l); virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&); - // virtual void Dump(FILE* = 0); - }; + virtual void Dump(FILE* = 0); + }; + // + class MPEG2VideoDescriptor : public CDCIEssenceDescriptor + { + ASDCP_NO_COPY_CONSTRUCT(MPEG2VideoDescriptor); + + public: + ui8_t CodedContentType; + ui8_t LowDelay; + ui32_t BitRate; + ui8_t ProfileAndLevel; + + MPEG2VideoDescriptor() : CodedContentType(0), LowDelay(0), BitRate(0), ProfileAndLevel(0) {} + virtual ~MPEG2VideoDescriptor() {} + virtual Result_t InitFromTLVSet(TLVReader& TLVSet); + virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l); + virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&); + virtual void Dump(FILE* = 0); + }; // class CryptographicFramework : public InterchangeObject @@ -376,14 +448,15 @@ namespace ASDCP ASDCP_NO_COPY_CONSTRUCT(CryptographicFramework); public: - UUID ContextSR; + UUID ContextSR; CryptographicFramework() {} - ~CryptographicFramework() {} + virtual ~CryptographicFramework() {} + virtual Result_t InitFromTLVSet(TLVReader& TLVSet); virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l); - // virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&); + virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&); virtual void Dump(FILE* = 0); - }; + }; // class CryptographicContext : public InterchangeObject @@ -391,18 +464,19 @@ namespace ASDCP ASDCP_NO_COPY_CONSTRUCT(CryptographicContext); public: - UUID ContextID; - UL SourceEssenceContainer; - UL CipherAlgorithm; - UL MICAlgorithm; - UUID CryptographicKeyID; + UUID ContextID; + UL SourceEssenceContainer; + UL CipherAlgorithm; + UL MICAlgorithm; + UUID CryptographicKeyID; CryptographicContext() {} - ~CryptographicContext() {} + virtual ~CryptographicContext() {} + virtual Result_t InitFromTLVSet(TLVReader& TLVSet); virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l); - // virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&); + virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&); virtual void Dump(FILE* = 0); - }; + }; } // namespace MXF } // namespace ASDCP -- 2.30.2