- //
- void AddDMSegment(const MXF::Rational& clip_edit_rate,
- const MXF::Rational& tc_edit_rate, ui32_t tc_frame_rate,
- const std::string& TrackName, const UL& DataDefinition,
- const std::string& PackageLabel)
- {
- if ( m_ContentStorage == 0 )
- {
- m_ContentStorage = new ContentStorage(m_Dict);
- m_HeaderPart.AddChildObject(m_ContentStorage);
- m_HeaderPart.m_Preface->ContentStorage = m_ContentStorage->InstanceUID;
- }
-
- EssenceContainerData* ECD = new EssenceContainerData(m_Dict);
- m_HeaderPart.AddChildObject(ECD);
- m_ContentStorage->EssenceContainerData.push_back(ECD->InstanceUID);
- ECD->IndexSID = 129;
- ECD->BodySID = 1;
-
- UUID assetUUID(m_Info.AssetUUID);
- UMID SourcePackageUMID, MaterialPackageUMID;
- SourcePackageUMID.MakeUMID(0x0f, assetUUID);
- MaterialPackageUMID.MakeUMID(0x0f); // unidentified essence
-
- //
- // Material Package
- //
- m_MaterialPackage = new MaterialPackage(m_Dict);
- m_MaterialPackage->Name = "AS-DCP Material Package";
- m_MaterialPackage->PackageUID = MaterialPackageUMID;
- m_HeaderPart.AddChildObject(m_MaterialPackage);
- m_ContentStorage->Packages.push_back(m_MaterialPackage->InstanceUID);
-
- TrackSet<TimecodeComponent> MPTCTrack =
- CreateTimecodeTrack<MaterialPackage>(m_HeaderPart, *m_MaterialPackage,
- tc_edit_rate, tc_frame_rate, 0, m_Dict);
-
- MPTCTrack.Sequence->Duration.set_has_value();
- m_DurationUpdateList.push_back(&(MPTCTrack.Sequence->Duration.get()));
- MPTCTrack.Clip->Duration.set_has_value();
- m_DurationUpdateList.push_back(&(MPTCTrack.Clip->Duration.get()));
-
- TrackSet<DMSegment> MPTrack =
- CreateTrackAndSequence<MaterialPackage, DMSegment>(m_HeaderPart, *m_MaterialPackage,
- TrackName, clip_edit_rate, DataDefinition,
- 2, m_Dict);
- MPTrack.Sequence->Duration.set_has_value();
- m_DurationUpdateList.push_back(&(MPTrack.Sequence->Duration.get()));
-
- MPTrack.Clip = new DMSegment(m_Dict);
- m_HeaderPart.AddChildObject(MPTrack.Clip);
- MPTrack.Sequence->StructuralComponents.push_back(MPTrack.Clip->InstanceUID);
- MPTrack.Clip->DataDefinition = DataDefinition;
- // MPTrack.Clip->SourcePackageID = SourcePackageUMID;
- // MPTrack.Clip->SourceTrackID = 2;
-
- m_DurationUpdateList.push_back(&(MPTrack.Clip->Duration));
-
-
- //
- // File (Source) Package
- //
- m_FilePackage = new SourcePackage(m_Dict);
- m_FilePackage->Name = PackageLabel.c_str();
- m_FilePackage->PackageUID = SourcePackageUMID;
- ECD->LinkedPackageUID = SourcePackageUMID;
-
- m_HeaderPart.AddChildObject(m_FilePackage);
- m_ContentStorage->Packages.push_back(m_FilePackage->InstanceUID);
-
- TrackSet<TimecodeComponent> FPTCTrack =
- CreateTimecodeTrack<SourcePackage>(m_HeaderPart, *m_FilePackage,
- clip_edit_rate, tc_frame_rate,
- ui64_C(3600) * tc_frame_rate, m_Dict);
-
- FPTCTrack.Sequence->Duration.set_has_value();
- m_DurationUpdateList.push_back(&(FPTCTrack.Sequence->Duration.get()));
- FPTCTrack.Clip->Duration.set_has_value();
- m_DurationUpdateList.push_back(&(FPTCTrack.Clip->Duration.get()));
-
- TrackSet<DMSegment> FPTrack =
- CreateTrackAndSequence<SourcePackage, DMSegment>(m_HeaderPart, *m_FilePackage,
- TrackName, clip_edit_rate, DataDefinition,
- 2, m_Dict);
-
- FPTrack.Sequence->Duration.set_has_value();
- m_DurationUpdateList.push_back(&(FPTrack.Sequence->Duration.get()));
-
- FPTrack.Clip = new DMSegment(m_Dict);
- m_HeaderPart.AddChildObject(FPTrack.Clip);
- FPTrack.Sequence->StructuralComponents.push_back(FPTrack.Clip->InstanceUID);
- FPTrack.Clip->DataDefinition = DataDefinition;
- FPTrack.Clip->EventComment = "ST 429-5 Timed Text";
-
- m_DurationUpdateList.push_back(&(FPTrack.Clip->Duration));
-
- m_EssenceDescriptor->LinkedTrackID = FPTrack.Track->TrackID;
- }
-