summaryrefslogtreecommitdiff
path: root/src/Metadata.cpp
diff options
context:
space:
mode:
authorjhurst <jhurst@cinecert.com>2012-02-02 01:58:43 +0000
committerjhurst <>2012-02-02 01:58:43 +0000
commit99f3c9bd7e314ed2342598ad0e2357c68c79e732 (patch)
tree09b3986d426dead4cbd63774db9ce1c5ac216a1e /src/Metadata.cpp
parent1e0a44f949436b95b7def495dcaff9232dadf750 (diff)
make way for MCA
Diffstat (limited to 'src/Metadata.cpp')
-rwxr-xr-xsrc/Metadata.cpp554
1 files changed, 553 insertions, 1 deletions
diff --git a/src/Metadata.cpp b/src/Metadata.cpp
index aeedbde..f62f273 100755
--- a/src/Metadata.cpp
+++ b/src/Metadata.cpp
@@ -1,5 +1,5 @@
/*
-Copyright (c) 2005-2009, John Hurst
+Copyright (c) 2005-2012, John Hurst
All rights reserved.
Redistribution and use in source and binary forms, with or without
@@ -69,6 +69,10 @@ static InterchangeObject* TimedTextDescriptor_Factory(const Dictionary*& Dict) {
static InterchangeObject* TimedTextResourceSubDescriptor_Factory(const Dictionary*& Dict) { return new TimedTextResourceSubDescriptor(Dict); }
static InterchangeObject* StereoscopicPictureSubDescriptor_Factory(const Dictionary*& Dict) { return new StereoscopicPictureSubDescriptor(Dict); }
static InterchangeObject* NetworkLocator_Factory(const Dictionary*& Dict) { return new NetworkLocator(Dict); }
+static InterchangeObject* MCALabelSubDescriptor_Factory(const Dictionary*& Dict) { return new MCALabelSubDescriptor(Dict); }
+static InterchangeObject* AudioChannelLabelSubDescriptor_Factory(const Dictionary*& Dict) { return new AudioChannelLabelSubDescriptor(Dict); }
+static InterchangeObject* SoundfieldGroupLabelSubDescriptor_Factory(const Dictionary*& Dict) { return new SoundfieldGroupLabelSubDescriptor(Dict); }
+static InterchangeObject* GroupOfSoundfieldGroupsLabelSubDescriptor_Factory(const Dictionary*& Dict) { return new GroupOfSoundfieldGroupsLabelSubDescriptor(Dict); }
void
@@ -104,6 +108,10 @@ ASDCP::MXF::Metadata_InitTypes(const Dictionary*& Dict)
SetObjectFactory(Dict->ul(MDD_TimedTextResourceSubDescriptor), TimedTextResourceSubDescriptor_Factory);
SetObjectFactory(Dict->ul(MDD_StereoscopicPictureSubDescriptor), StereoscopicPictureSubDescriptor_Factory);
SetObjectFactory(Dict->ul(MDD_NetworkLocator), NetworkLocator_Factory);
+ SetObjectFactory(Dict->ul(MDD_MCALabelSubDescriptor), MCALabelSubDescriptor_Factory);
+ SetObjectFactory(Dict->ul(MDD_AudioChannelLabelSubDescriptor), AudioChannelLabelSubDescriptor_Factory);
+ SetObjectFactory(Dict->ul(MDD_SoundfieldGroupLabelSubDescriptor), SoundfieldGroupLabelSubDescriptor_Factory);
+ SetObjectFactory(Dict->ul(MDD_GroupOfSoundfieldGroupsLabelSubDescriptor), GroupOfSoundfieldGroupsLabelSubDescriptor_Factory);
}
//------------------------------------------------------------------------------------------
@@ -152,6 +160,21 @@ Identification::WriteToTLVSet(TLVWriter& TLVSet)
//
void
+Identification::Copy(const Identification& rhs)
+{
+ ThisGenerationUID = rhs.ThisGenerationUID;
+ CompanyName = rhs.CompanyName;
+ ProductName = rhs.ProductName;
+ ProductVersion = rhs.ProductVersion;
+ VersionString = rhs.VersionString;
+ ProductUID = rhs.ProductUID;
+ ModificationDate = rhs.ModificationDate;
+ ToolkitVersion = rhs.ToolkitVersion;
+ Platform = rhs.Platform;
+}
+
+//
+void
Identification::Dump(FILE* stream)
{
char identbuf[IdentBufferLen];
@@ -217,6 +240,14 @@ ContentStorage::WriteToTLVSet(TLVWriter& TLVSet)
//
void
+ContentStorage::Copy(const ContentStorage& rhs)
+{
+ Packages = rhs.Packages;
+ EssenceContainerData = rhs.EssenceContainerData;
+}
+
+//
+void
ContentStorage::Dump(FILE* stream)
{
char identbuf[IdentBufferLen];
@@ -279,6 +310,15 @@ EssenceContainerData::WriteToTLVSet(TLVWriter& TLVSet)
//
void
+EssenceContainerData::Copy(const EssenceContainerData& rhs)
+{
+ LinkedPackageUID = rhs.LinkedPackageUID;
+ IndexSID = rhs.IndexSID;
+ BodySID = rhs.BodySID;
+}
+
+//
+void
EssenceContainerData::Dump(FILE* stream)
{
char identbuf[IdentBufferLen];
@@ -344,6 +384,17 @@ GenericPackage::WriteToTLVSet(TLVWriter& TLVSet)
//
void
+GenericPackage::Copy(const GenericPackage& rhs)
+{
+ PackageUID = rhs.PackageUID;
+ Name = rhs.Name;
+ PackageCreationDate = rhs.PackageCreationDate;
+ PackageModifiedDate = rhs.PackageModifiedDate;
+ Tracks = rhs.Tracks;
+}
+
+//
+void
GenericPackage::Dump(FILE* stream)
{
char identbuf[IdentBufferLen];
@@ -385,6 +436,12 @@ MaterialPackage::WriteToTLVSet(TLVWriter& TLVSet)
//
void
+MaterialPackage::Copy(const MaterialPackage& rhs)
+{
+}
+
+//
+void
MaterialPackage::Dump(FILE* stream)
{
char identbuf[IdentBufferLen];
@@ -439,6 +496,13 @@ SourcePackage::WriteToTLVSet(TLVWriter& TLVSet)
//
void
+SourcePackage::Copy(const SourcePackage& rhs)
+{
+ Descriptor = rhs.Descriptor;
+}
+
+//
+void
SourcePackage::Dump(FILE* stream)
{
char identbuf[IdentBufferLen];
@@ -500,6 +564,16 @@ GenericTrack::WriteToTLVSet(TLVWriter& TLVSet)
//
void
+GenericTrack::Copy(const GenericTrack& rhs)
+{
+ TrackID = rhs.TrackID;
+ TrackNumber = rhs.TrackNumber;
+ TrackName = rhs.TrackName;
+ Sequence = rhs.Sequence;
+}
+
+//
+void
GenericTrack::Dump(FILE* stream)
{
char identbuf[IdentBufferLen];
@@ -539,6 +613,12 @@ StaticTrack::WriteToTLVSet(TLVWriter& TLVSet)
//
void
+StaticTrack::Copy(const StaticTrack& rhs)
+{
+}
+
+//
+void
StaticTrack::Dump(FILE* stream)
{
char identbuf[IdentBufferLen];
@@ -595,6 +675,14 @@ Track::WriteToTLVSet(TLVWriter& TLVSet)
//
void
+Track::Copy(const Track& rhs)
+{
+ EditRate = rhs.EditRate;
+ Origin = rhs.Origin;
+}
+
+//
+void
Track::Dump(FILE* stream)
{
char identbuf[IdentBufferLen];
@@ -653,6 +741,14 @@ StructuralComponent::WriteToTLVSet(TLVWriter& TLVSet)
//
void
+StructuralComponent::Copy(const StructuralComponent& rhs)
+{
+ DataDefinition = rhs.DataDefinition;
+ Duration = rhs.Duration;
+}
+
+//
+void
StructuralComponent::Dump(FILE* stream)
{
char identbuf[IdentBufferLen];
@@ -692,6 +788,13 @@ Sequence::WriteToTLVSet(TLVWriter& TLVSet)
//
void
+Sequence::Copy(const Sequence& rhs)
+{
+ StructuralComponents = rhs.StructuralComponents;
+}
+
+//
+void
Sequence::Dump(FILE* stream)
{
char identbuf[IdentBufferLen];
@@ -752,6 +855,15 @@ SourceClip::WriteToTLVSet(TLVWriter& TLVSet)
//
void
+SourceClip::Copy(const SourceClip& rhs)
+{
+ StartPosition = rhs.StartPosition;
+ SourcePackageID = rhs.SourcePackageID;
+ SourceTrackID = rhs.SourceTrackID;
+}
+
+//
+void
SourceClip::Dump(FILE* stream)
{
char identbuf[IdentBufferLen];
@@ -813,6 +925,15 @@ TimecodeComponent::WriteToTLVSet(TLVWriter& TLVSet)
//
void
+TimecodeComponent::Copy(const TimecodeComponent& rhs)
+{
+ RoundedTimecodeBase = rhs.RoundedTimecodeBase;
+ StartTimecode = rhs.StartTimecode;
+ DropFrame = rhs.DropFrame;
+}
+
+//
+void
TimecodeComponent::Dump(FILE* stream)
{
char identbuf[IdentBufferLen];
@@ -872,6 +993,14 @@ GenericDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
//
void
+GenericDescriptor::Copy(const GenericDescriptor& rhs)
+{
+ Locators = rhs.Locators;
+ SubDescriptors = rhs.SubDescriptors;
+}
+
+//
+void
GenericDescriptor::Dump(FILE* stream)
{
char identbuf[IdentBufferLen];
@@ -921,6 +1050,17 @@ FileDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
//
void
+FileDescriptor::Copy(const FileDescriptor& rhs)
+{
+ LinkedTrackID = rhs.LinkedTrackID;
+ SampleRate = rhs.SampleRate;
+ ContainerDuration = rhs.ContainerDuration;
+ EssenceContainer = rhs.EssenceContainer;
+ Codec = rhs.Codec;
+}
+
+//
+void
FileDescriptor::Dump(FILE* stream)
{
char identbuf[IdentBufferLen];
@@ -990,6 +1130,18 @@ GenericSoundEssenceDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
//
void
+GenericSoundEssenceDescriptor::Copy(const GenericSoundEssenceDescriptor& rhs)
+{
+ AudioSamplingRate = rhs.AudioSamplingRate;
+ Locked = rhs.Locked;
+ AudioRefLevel = rhs.AudioRefLevel;
+ ChannelCount = rhs.ChannelCount;
+ QuantizationBits = rhs.QuantizationBits;
+ DialNorm = rhs.DialNorm;
+}
+
+//
+void
GenericSoundEssenceDescriptor::Dump(FILE* stream)
{
char identbuf[IdentBufferLen];
@@ -1056,6 +1208,16 @@ WaveAudioDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
//
void
+WaveAudioDescriptor::Copy(const WaveAudioDescriptor& rhs)
+{
+ BlockAlign = rhs.BlockAlign;
+ SequenceOffset = rhs.SequenceOffset;
+ AvgBps = rhs.AvgBps;
+ ChannelAssignment = rhs.ChannelAssignment;
+}
+
+//
+void
WaveAudioDescriptor::Dump(FILE* stream)
{
char identbuf[IdentBufferLen];
@@ -1122,6 +1284,17 @@ GenericPictureEssenceDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
//
void
+GenericPictureEssenceDescriptor::Copy(const GenericPictureEssenceDescriptor& rhs)
+{
+ FrameLayout = rhs.FrameLayout;
+ StoredWidth = rhs.StoredWidth;
+ StoredHeight = rhs.StoredHeight;
+ AspectRatio = rhs.AspectRatio;
+ PictureEssenceCoding = rhs.PictureEssenceCoding;
+}
+
+//
+void
GenericPictureEssenceDescriptor::Dump(FILE* stream)
{
char identbuf[IdentBufferLen];
@@ -1183,6 +1356,14 @@ RGBAEssenceDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
//
void
+RGBAEssenceDescriptor::Copy(const RGBAEssenceDescriptor& rhs)
+{
+ ComponentMaxRef = rhs.ComponentMaxRef;
+ ComponentMinRef = rhs.ComponentMinRef;
+}
+
+//
+void
RGBAEssenceDescriptor::Dump(FILE* stream)
{
char identbuf[IdentBufferLen];
@@ -1263,6 +1444,25 @@ JPEG2000PictureSubDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
//
void
+JPEG2000PictureSubDescriptor::Copy(const JPEG2000PictureSubDescriptor& rhs)
+{
+ Rsize = rhs.Rsize;
+ Xsize = rhs.Xsize;
+ Ysize = rhs.Ysize;
+ XOsize = rhs.XOsize;
+ YOsize = rhs.YOsize;
+ XTsize = rhs.XTsize;
+ YTsize = rhs.YTsize;
+ XTOsize = rhs.XTOsize;
+ YTOsize = rhs.YTOsize;
+ Csize = rhs.Csize;
+ PictureComponentSizing = rhs.PictureComponentSizing;
+ CodingStyleDefault = rhs.CodingStyleDefault;
+ QuantizationDefault = rhs.QuantizationDefault;
+}
+
+//
+void
JPEG2000PictureSubDescriptor::Dump(FILE* stream)
{
char identbuf[IdentBufferLen];
@@ -1336,6 +1536,16 @@ CDCIEssenceDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
//
void
+CDCIEssenceDescriptor::Copy(const CDCIEssenceDescriptor& rhs)
+{
+ ComponentDepth = rhs.ComponentDepth;
+ HorizontalSubsampling = rhs.HorizontalSubsampling;
+ VerticalSubsampling = rhs.VerticalSubsampling;
+ ColorSiting = rhs.ColorSiting;
+}
+
+//
+void
CDCIEssenceDescriptor::Dump(FILE* stream)
{
char identbuf[IdentBufferLen];
@@ -1400,6 +1610,16 @@ MPEG2VideoDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
//
void
+MPEG2VideoDescriptor::Copy(const MPEG2VideoDescriptor& rhs)
+{
+ CodedContentType = rhs.CodedContentType;
+ LowDelay = rhs.LowDelay;
+ BitRate = rhs.BitRate;
+ ProfileAndLevel = rhs.ProfileAndLevel;
+}
+
+//
+void
MPEG2VideoDescriptor::Dump(FILE* stream)
{
char identbuf[IdentBufferLen];
@@ -1466,6 +1686,17 @@ DMSegment::WriteToTLVSet(TLVWriter& TLVSet)
//
void
+DMSegment::Copy(const DMSegment& rhs)
+{
+ DataDefinition = rhs.DataDefinition;
+ EventStartPosition = rhs.EventStartPosition;
+ Duration = rhs.Duration;
+ EventComment = rhs.EventComment;
+ DMFramework = rhs.DMFramework;
+}
+
+//
+void
DMSegment::Dump(FILE* stream)
{
char identbuf[IdentBufferLen];
@@ -1525,6 +1756,13 @@ CryptographicFramework::WriteToTLVSet(TLVWriter& TLVSet)
//
void
+CryptographicFramework::Copy(const CryptographicFramework& rhs)
+{
+ ContextSR = rhs.ContextSR;
+}
+
+//
+void
CryptographicFramework::Dump(FILE* stream)
{
char identbuf[IdentBufferLen];
@@ -1588,6 +1826,17 @@ CryptographicContext::WriteToTLVSet(TLVWriter& TLVSet)
//
void
+CryptographicContext::Copy(const CryptographicContext& rhs)
+{
+ ContextID = rhs.ContextID;
+ SourceEssenceContainer = rhs.SourceEssenceContainer;
+ CipherAlgorithm = rhs.CipherAlgorithm;
+ MICAlgorithm = rhs.MICAlgorithm;
+ CryptographicKeyID = rhs.CryptographicKeyID;
+}
+
+//
+void
CryptographicContext::Dump(FILE* stream)
{
char identbuf[IdentBufferLen];
@@ -1647,6 +1896,13 @@ GenericDataEssenceDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
//
void
+GenericDataEssenceDescriptor::Copy(const GenericDataEssenceDescriptor& rhs)
+{
+ DataEssenceCoding = rhs.DataEssenceCoding;
+}
+
+//
+void
GenericDataEssenceDescriptor::Dump(FILE* stream)
{
char identbuf[IdentBufferLen];
@@ -1706,6 +1962,15 @@ TimedTextDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
//
void
+TimedTextDescriptor::Copy(const TimedTextDescriptor& rhs)
+{
+ ResourceID = rhs.ResourceID;
+ UCSEncoding = rhs.UCSEncoding;
+ NamespaceURI = rhs.NamespaceURI;
+}
+
+//
+void
TimedTextDescriptor::Dump(FILE* stream)
{
char identbuf[IdentBufferLen];
@@ -1767,6 +2032,15 @@ TimedTextResourceSubDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
//
void
+TimedTextResourceSubDescriptor::Copy(const TimedTextResourceSubDescriptor& rhs)
+{
+ AncillaryResourceID = rhs.AncillaryResourceID;
+ MIMEMediaType = rhs.MIMEMediaType;
+ EssenceStreamID = rhs.EssenceStreamID;
+}
+
+//
+void
TimedTextResourceSubDescriptor::Dump(FILE* stream)
{
char identbuf[IdentBufferLen];
@@ -1822,6 +2096,12 @@ StereoscopicPictureSubDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
//
void
+StereoscopicPictureSubDescriptor::Copy(const StereoscopicPictureSubDescriptor& rhs)
+{
+}
+
+//
+void
StereoscopicPictureSubDescriptor::Dump(FILE* stream)
{
char identbuf[IdentBufferLen];
@@ -1876,6 +2156,13 @@ NetworkLocator::WriteToTLVSet(TLVWriter& TLVSet)
//
void
+NetworkLocator::Copy(const NetworkLocator& rhs)
+{
+ URLString = rhs.URLString;
+}
+
+//
+void
NetworkLocator::Dump(FILE* stream)
{
char identbuf[IdentBufferLen];
@@ -1906,6 +2193,271 @@ NetworkLocator::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
return InterchangeObject::WriteToBuffer(Buffer);
}
+//------------------------------------------------------------------------------------------
+// MCALabelSubDescriptor
+
+//
+ASDCP::Result_t
+MCALabelSubDescriptor::InitFromTLVSet(TLVReader& TLVSet)
+{
+ assert(m_Dict);
+ Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
+ if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(MCALabelSubDescriptor, MCALabelDictionaryID));
+ if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(MCALabelSubDescriptor, MCALinkID));
+ if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(MCALabelSubDescriptor, MCATagSymbol));
+ if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(MCALabelSubDescriptor, MCATagName));
+ if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(MCALabelSubDescriptor, MCAChannelID));
+ if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(MCALabelSubDescriptor, RFC5646SpokenLanguage));
+ return result;
+}
+
+//
+ASDCP::Result_t
+MCALabelSubDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
+{
+ assert(m_Dict);
+ Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
+ if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(MCALabelSubDescriptor, MCALabelDictionaryID));
+ if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(MCALabelSubDescriptor, MCALinkID));
+ if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(MCALabelSubDescriptor, MCATagSymbol));
+ if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(MCALabelSubDescriptor, MCATagName));
+ if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(MCALabelSubDescriptor, MCAChannelID));
+ if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(MCALabelSubDescriptor, RFC5646SpokenLanguage));
+ return result;
+}
+
+//
+void
+MCALabelSubDescriptor::Copy(const MCALabelSubDescriptor& rhs)
+{
+ MCALabelDictionaryID = rhs.MCALabelDictionaryID;
+ MCALinkID = rhs.MCALinkID;
+ MCATagSymbol = rhs.MCATagSymbol;
+ MCATagName = rhs.MCATagName;
+ MCAChannelID = rhs.MCAChannelID;
+ RFC5646SpokenLanguage = rhs.RFC5646SpokenLanguage;
+}
+
+//
+void
+MCALabelSubDescriptor::Dump(FILE* stream)
+{
+ char identbuf[IdentBufferLen];
+ *identbuf = 0;
+
+ if ( stream == 0 )
+ stream = stderr;
+
+ InterchangeObject::Dump(stream);
+ fprintf(stream, " %22s = %s\n", "MCALabelDictionaryID", MCALabelDictionaryID.EncodeString(identbuf, IdentBufferLen));
+ fprintf(stream, " %22s = %s\n", "MCALinkID", MCALinkID.EncodeString(identbuf, IdentBufferLen));
+ fprintf(stream, " %22s = %s\n", "MCATagSymbol", MCATagSymbol.EncodeString(identbuf, IdentBufferLen));
+ fprintf(stream, " %22s = %s\n", "MCATagName", MCATagName.EncodeString(identbuf, IdentBufferLen));
+ fprintf(stream, " %22s = %d\n", "MCAChannelID", MCAChannelID);
+ fprintf(stream, " %22s = %s\n", "RFC5646SpokenLanguage", RFC5646SpokenLanguage.EncodeString(identbuf, IdentBufferLen));
+}
+
+//
+ASDCP::Result_t
+MCALabelSubDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
+{
+ assert(m_Dict);
+ m_Typeinfo = &(m_Dict->Type(MDD_MCALabelSubDescriptor));
+ return InterchangeObject::InitFromBuffer(p, l);
+}
+
+//
+ASDCP::Result_t
+MCALabelSubDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
+{
+ assert(m_Dict);
+ m_Typeinfo = &(m_Dict->Type(MDD_MCALabelSubDescriptor));
+ return InterchangeObject::WriteToBuffer(Buffer);
+}
+
+//------------------------------------------------------------------------------------------
+// AudioChannelLabelSubDescriptor
+
+//
+ASDCP::Result_t
+AudioChannelLabelSubDescriptor::InitFromTLVSet(TLVReader& TLVSet)
+{
+ assert(m_Dict);
+ Result_t result = MCALabelSubDescriptor::InitFromTLVSet(TLVSet);
+ if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(AudioChannelLabelSubDescriptor, SoundfieldGroupLinkID));
+ return result;
+}
+
+//
+ASDCP::Result_t
+AudioChannelLabelSubDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
+{
+ assert(m_Dict);
+ Result_t result = MCALabelSubDescriptor::WriteToTLVSet(TLVSet);
+ if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(AudioChannelLabelSubDescriptor, SoundfieldGroupLinkID));
+ return result;
+}
+
+//
+void
+AudioChannelLabelSubDescriptor::Copy(const AudioChannelLabelSubDescriptor& rhs)
+{
+ SoundfieldGroupLinkID = rhs.SoundfieldGroupLinkID;
+}
+
+//
+void
+AudioChannelLabelSubDescriptor::Dump(FILE* stream)
+{
+ char identbuf[IdentBufferLen];
+ *identbuf = 0;
+
+ if ( stream == 0 )
+ stream = stderr;
+
+ MCALabelSubDescriptor::Dump(stream);
+ fprintf(stream, " %22s = %s\n", "SoundfieldGroupLinkID", SoundfieldGroupLinkID.EncodeString(identbuf, IdentBufferLen));
+}
+
+//
+ASDCP::Result_t
+AudioChannelLabelSubDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
+{
+ assert(m_Dict);
+ m_Typeinfo = &(m_Dict->Type(MDD_AudioChannelLabelSubDescriptor));
+ return InterchangeObject::InitFromBuffer(p, l);
+}
+
+//
+ASDCP::Result_t
+AudioChannelLabelSubDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
+{
+ assert(m_Dict);
+ m_Typeinfo = &(m_Dict->Type(MDD_AudioChannelLabelSubDescriptor));
+ return InterchangeObject::WriteToBuffer(Buffer);
+}
+
+//------------------------------------------------------------------------------------------
+// SoundfieldGroupLabelSubDescriptor
+
+//
+ASDCP::Result_t
+SoundfieldGroupLabelSubDescriptor::InitFromTLVSet(TLVReader& TLVSet)
+{
+ assert(m_Dict);
+ Result_t result = MCALabelSubDescriptor::InitFromTLVSet(TLVSet);
+ if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(SoundfieldGroupLabelSubDescriptor, GroupOfSoundfieldGroupsLinkID));
+ return result;
+}
+
+//
+ASDCP::Result_t
+SoundfieldGroupLabelSubDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
+{
+ assert(m_Dict);
+ Result_t result = MCALabelSubDescriptor::WriteToTLVSet(TLVSet);
+ if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(SoundfieldGroupLabelSubDescriptor, GroupOfSoundfieldGroupsLinkID));
+ return result;
+}
+
+//
+void
+SoundfieldGroupLabelSubDescriptor::Copy(const SoundfieldGroupLabelSubDescriptor& rhs)
+{
+ GroupOfSoundfieldGroupsLinkID = rhs.GroupOfSoundfieldGroupsLinkID;
+}
+
+//
+void
+SoundfieldGroupLabelSubDescriptor::Dump(FILE* stream)
+{
+ char identbuf[IdentBufferLen];
+ *identbuf = 0;
+
+ if ( stream == 0 )
+ stream = stderr;
+
+ MCALabelSubDescriptor::Dump(stream);
+ fprintf(stream, " %22s:\n", "GroupOfSoundfieldGroupsLinkID");
+ GroupOfSoundfieldGroupsLinkID.Dump(stream);
+}
+
+//
+ASDCP::Result_t
+SoundfieldGroupLabelSubDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
+{
+ assert(m_Dict);
+ m_Typeinfo = &(m_Dict->Type(MDD_SoundfieldGroupLabelSubDescriptor));
+ return InterchangeObject::InitFromBuffer(p, l);
+}
+
+//
+ASDCP::Result_t
+SoundfieldGroupLabelSubDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
+{
+ assert(m_Dict);
+ m_Typeinfo = &(m_Dict->Type(MDD_SoundfieldGroupLabelSubDescriptor));
+ return InterchangeObject::WriteToBuffer(Buffer);
+}
+
+//------------------------------------------------------------------------------------------
+// GroupOfSoundfieldGroupsLabelSubDescriptor
+
+//
+ASDCP::Result_t
+GroupOfSoundfieldGroupsLabelSubDescriptor::InitFromTLVSet(TLVReader& TLVSet)
+{
+ assert(m_Dict);
+ Result_t result = MCALabelSubDescriptor::InitFromTLVSet(TLVSet);
+ return result;
+}
+
+//
+ASDCP::Result_t
+GroupOfSoundfieldGroupsLabelSubDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
+{
+ assert(m_Dict);
+ Result_t result = MCALabelSubDescriptor::WriteToTLVSet(TLVSet);
+ return result;
+}
+
+//
+void
+GroupOfSoundfieldGroupsLabelSubDescriptor::Copy(const GroupOfSoundfieldGroupsLabelSubDescriptor& rhs)
+{
+}
+
+//
+void
+GroupOfSoundfieldGroupsLabelSubDescriptor::Dump(FILE* stream)
+{
+ char identbuf[IdentBufferLen];
+ *identbuf = 0;
+
+ if ( stream == 0 )
+ stream = stderr;
+
+ MCALabelSubDescriptor::Dump(stream);
+}
+
+//
+ASDCP::Result_t
+GroupOfSoundfieldGroupsLabelSubDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
+{
+ assert(m_Dict);
+ m_Typeinfo = &(m_Dict->Type(MDD_GroupOfSoundfieldGroupsLabelSubDescriptor));
+ return InterchangeObject::InitFromBuffer(p, l);
+}
+
+//
+ASDCP::Result_t
+GroupOfSoundfieldGroupsLabelSubDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
+{
+ assert(m_Dict);
+ m_Typeinfo = &(m_Dict->Type(MDD_GroupOfSoundfieldGroupsLabelSubDescriptor));
+ return InterchangeObject::WriteToBuffer(Buffer);
+}
+
//
// end Metadata.cpp
//