Die timecode! Die! no_tc_in_as_02
authorjhurst <jhurst@cinecert.com>
Fri, 14 Feb 2020 19:46:52 +0000 (11:46 -0800)
committerjhurst <jhurst@cinecert.com>
Fri, 14 Feb 2020 19:46:52 +0000 (11:46 -0800)
src/AS_02_ACES.cpp
src/AS_02_ISXD.cpp
src/AS_02_JP2K.cpp
src/AS_02_PCM.cpp
src/AS_02_PHDR.cpp
src/AS_02_TimedText.cpp
src/AS_02_internal.h
src/AS_DCP_internal.h

index 9a847ccf99a27c20fb9778ada7daaa6ba4dc436f..876af1849a1c2cad7c6ed87cd4137d5e6693c746 100644 (file)
@@ -603,7 +603,7 @@ AS_02::Result_t AS_02::ACES::MXFWriter::h__Writer::SetSourceStream(const std::st
   {
     result = WriteAS02Header(label, UL(m_Dict->ul(MDD_MXFGCFrameWrappedACESPictures)), //Essence Container Label per 2065-5 section 8.1 (frame wrapping)
                              PICT_DEF_LABEL, UL(m_EssenceUL), UL(m_Dict->ul(MDD_PictureDataDef)),
-                             edit_rate, derive_timecode_rate_from_edit_rate(edit_rate));
+                             edit_rate);
 
     if(KM_SUCCESS(result))
     {
index 6230c583045ada4783beadba39b7d8bb38fa5d8e..a374664f4e1779ec254f65170833a6345be14512 100644 (file)
@@ -338,7 +338,7 @@ AS_02::ISXD::MXFWriter::h__Writer::SetSourceStream(const std::string& label, con
     {
       result = WriteAS02Header(label, UL(m_Dict->ul(MDD_FrameWrappedISXDContainer)),
                               PICT_DEF_LABEL, UL(m_EssenceUL), UL(m_Dict->ul(MDD_DataDataDef)),
-                              edit_rate, derive_timecode_rate_from_edit_rate(edit_rate));
+                              edit_rate);
 
       if ( KM_SUCCESS(result) )
        {
index 321abfc3ad9d1411ba0dcc443dd27f2fb318c4fa..ac951e452d551312c8959385f82b52adb604f7fa 100644 (file)
@@ -363,7 +363,7 @@ AS_02::JP2K::MXFWriter::h__Writer::SetSourceStream(const std::string& label, con
 
       result = WriteAS02Header(label, wrapping_label,
                               PICT_DEF_LABEL, UL(m_EssenceUL), UL(m_Dict->ul(MDD_PictureDataDef)),
-                              edit_rate, derive_timecode_rate_from_edit_rate(edit_rate));
+                              edit_rate);
 
       if ( KM_SUCCESS(result) )
        {
index 8532887e5cc0209f198d81daa223af05af95c275..aa7b2a27ea279fe611c8dd4559f3ec0e1e35f0e0 100644 (file)
@@ -423,7 +423,7 @@ AS_02::PCM::MXFWriter::h__Writer::SetSourceStream(const ASDCP::Rational& edit_ra
       m_BytesPerSample = AS_02::MXF::CalcSampleSize(*m_WaveAudioDescriptor);
       result = WriteAS02Header(PCM_PACKAGE_LABEL, UL(m_Dict->ul(MDD_WAVWrappingClip)),
                               SOUND_DEF_LABEL, UL(m_EssenceUL), UL(m_Dict->ul(MDD_SoundDataDef)),
-                              m_EssenceDescriptor->SampleRate, derive_timecode_rate_from_edit_rate(edit_rate));
+                              m_EssenceDescriptor->SampleRate);
 
       if ( KM_SUCCESS(result) )
        {
index c08efd0bddadf23306173e95842274652537f9dc..471d22633947c1f3a258a839a9016067027844b3 100644 (file)
@@ -349,8 +349,7 @@ class AS_02::PHDR::MXFWriter::h__Writer : public AS_02::h__AS02WriterFrame
 
   Result_t WritePHDRHeader(const std::string& PackageLabel, const ASDCP::UL& WrappingUL,
                           const std::string& TrackName, const ASDCP::UL& EssenceUL,
-                          const ASDCP::UL& DataDefinition, const ASDCP::Rational& EditRate,
-                          const ui32_t& TCFrameRate);
+                          const ASDCP::UL& DataDefinition, const ASDCP::Rational& EditRate);
 
 public:
   byte_t            m_EssenceUL[SMPTE_UL_LENGTH];
@@ -436,8 +435,7 @@ AS_02::PHDR::MXFWriter::h__Writer::OpenWrite(const std::string& filename,
 Result_t
 AS_02::PHDR::MXFWriter::h__Writer::WritePHDRHeader(const std::string& PackageLabel, const ASDCP::UL& WrappingUL,
                                                   const std::string& TrackName, const ASDCP::UL& EssenceUL,
-                                                  const ASDCP::UL& DataDefinition, const ASDCP::Rational& EditRate,
-                                                  const ui32_t& TCFrameRate)
+                                                  const ASDCP::UL& DataDefinition, const ASDCP::Rational& EditRate)
 {
   if ( EditRate.Numerator == 0 || EditRate.Denominator == 0 )
     {
@@ -447,7 +445,7 @@ AS_02::PHDR::MXFWriter::h__Writer::WritePHDRHeader(const std::string& PackageLab
   
   InitHeader(MXFVersion_2011);
   
-  AddSourceClip(EditRate, EditRate/*TODO: for a moment*/, TCFrameRate, TrackName, EssenceUL, DataDefinition, PackageLabel);
+  AddSourceClip(EditRate, EditRate/*TODO: for a moment*/, 0 /*no timecode track*/, TrackName, EssenceUL, DataDefinition, PackageLabel);
 
   // add metadata track
   TrackSet<SourceClip> metdata_track =
@@ -534,7 +532,7 @@ AS_02::PHDR::MXFWriter::h__Writer::SetSourceStream(const std::string& label, con
     {
       result = WritePHDRHeader(label, UL(m_Dict->ul(MDD_MXFGCFUFrameWrappedPictureElement)),
                               PICT_DEF_LABEL, UL(m_EssenceUL), UL(m_Dict->ul(MDD_PictureDataDef)),
-                              edit_rate, derive_timecode_rate_from_edit_rate(edit_rate));
+                              edit_rate);
 
       if ( KM_SUCCESS(result) )
        {
index 68683954959b463dfd5139588409eff2a752a8a2..09f7103b02ca2dcab14c6ab12d41533e71ae6f40 100644 (file)
@@ -496,7 +496,7 @@ AS_02::TimedText::MXFWriter::h__Writer::SetSourceStream(ASDCP::TimedText::TimedT
       m_EditRate = TDesc.EditRate;
       result = WriteAS02Header(TIMED_TEXT_PACKAGE_LABEL, UL(m_Dict->ul(MDD_TimedTextWrappingClip)),
                               "Data Track", UL(m_EssenceUL), UL(m_Dict->ul(MDD_DataDataDef)),
-                              TDesc.EditRate, derive_timecode_rate_from_edit_rate(TDesc.EditRate));
+                              TDesc.EditRate);
     }
 
   return result;
index 4be764d8935a30907a0248ca18d6dcbfb90ca579..e6038c3fa2e5e7e923d73c04a13068be4e124d34 100644 (file)
@@ -164,8 +164,7 @@ namespace AS_02
       // all the above for a single source clip
       Result_t WriteAS02Header(const std::string& PackageLabel, const ASDCP::UL& WrappingUL,
                               const std::string& TrackName, const ASDCP::UL& EssenceUL,
-                              const ASDCP::UL& DataDefinition, const ASDCP::Rational& EditRate,
-                              const ui32_t& TCFrameRate)
+                              const ASDCP::UL& DataDefinition, const ASDCP::Rational& EditRate)
       {
        if ( EditRate.Numerator == 0 || EditRate.Denominator == 0 )
          {
@@ -175,7 +174,7 @@ namespace AS_02
 
        InitHeader(MXFVersion_2011);
 
-       AddSourceClip(EditRate, EditRate/*TODO: for a moment*/, TCFrameRate, TrackName, EssenceUL, DataDefinition, PackageLabel);
+       AddSourceClip(EditRate, EditRate/*TODO: for a moment*/, 0 /*no timecode track*/, TrackName, EssenceUL, DataDefinition, PackageLabel);
        AddEssenceDescriptor(WrappingUL);
 
        this->m_IndexWriter.SetPrimerLookup(&this->m_HeaderPart.m_Primer);
index 57ed006a04dffcee8351ae8362d489e2603a6ba3..a684ba52523a6adc9acbad9b02b971aa7b5c649c 100755 (executable)
@@ -675,7 +675,7 @@ namespace ASDCP
 
        //
        void AddSourceClip(const MXF::Rational& clip_edit_rate,
-                          const MXF::Rational& tc_edit_rate, ui32_t TCFrameRate,
+                          const MXF::Rational& tc_edit_rate, ui32_t tc_frame_rate,
                           const std::string& TrackName, const UL& EssenceUL,
                           const UL& DataDefinition, const std::string& PackageLabel)
        {
@@ -706,14 +706,17 @@ namespace ASDCP
          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, TCFrameRate, 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()));
+         if ( tc_frame_rate )
+           {
+             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<SourceClip> MPTrack =
            CreateTrackAndSequence<MaterialPackage, SourceClip>(m_HeaderPart, *m_MaterialPackage,
@@ -744,14 +747,17 @@ namespace ASDCP
          m_HeaderPart.AddChildObject(m_FilePackage);
          m_ContentStorage->Packages.push_back(m_FilePackage->InstanceUID);
 
-         TrackSet<TimecodeComponent> FPTCTrack =
-           CreateTimecodeTrack<SourcePackage>(m_HeaderPart, *m_FilePackage,
-                                              tc_edit_rate, TCFrameRate, 0, 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()));
+         if ( tc_frame_rate )
+           {
+             TrackSet<TimecodeComponent> FPTCTrack =
+               CreateTimecodeTrack<SourcePackage>(m_HeaderPart, *m_FilePackage,
+                                                  tc_edit_rate, tc_frame_rate, 0, 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<SourceClip> FPTrack =
            CreateTrackAndSequence<SourcePackage, SourceClip>(m_HeaderPart, *m_FilePackage,