fix: allow full 64 bits of index duration through API
authorJohn Hurst <jhurst@cinecert.com>
Mon, 31 Jul 2023 15:00:50 +0000 (08:00 -0700)
committerJohn Hurst <jhurst@cinecert.com>
Mon, 31 Jul 2023 15:00:50 +0000 (08:00 -0700)
src/AS_02.h
src/as-02-info.cpp
src/h__02_Reader.cpp

index 8a31d8fc59ad32ae52a2fcb677956248e6868d3d..516d470892d8b47052066a3d41540844cdc93915 100644 (file)
@@ -73,7 +73,7 @@ namespace AS_02
     class AS02IndexReader : public ASDCP::MXF::Partition
     {
       Kumu::ByteString m_IndexSegmentData;
-      ui32_t m_Duration;
+      ui64_t m_Duration;
       ui32_t m_BytesPerEditUnit;
 
       Result_t InitFromBuffer(const byte_t* p, ui32_t l, const ui64_t& body_offset, const ui64_t& essence_container_offset);
@@ -88,7 +88,7 @@ namespace AS_02
       virtual ~AS02IndexReader();
     
       Result_t InitFromFile(const Kumu::IFileReader& reader, const ASDCP::MXF::RIP& rip, const bool has_header_essence);
-      ui32_t GetDuration() const;
+      ui64_t GetDuration() const;
       void     Dump(FILE* = 0);
       Result_t GetMDObjectByID(const Kumu::UUID&, ASDCP::MXF::InterchangeObject** = 0);
       Result_t GetMDObjectByType(const byte_t*, ASDCP::MXF::InterchangeObject** = 0);
index a1235acfd106cee1bbeeece48a1317dfc34801e2..275111cf902348a3ec2b78f4014a31cceec341dc 100644 (file)
@@ -786,12 +786,12 @@ public:
       {
        m_Desc.FillDescriptor(m_Reader);
        m_Reader.FillWriterInfo(m_WriterInfo);
-
-       fprintf(stdout, "%s file essence type is %s, (%d edit unit%s).\n",
+        ui64_t container_duration = m_Desc.ContainerDuration;
+       fprintf(stdout, "%s file essence type is %s, (%llu edit unit%s).\n",
                ( m_WriterInfo.LabelSetType == LS_MXF_SMPTE ? "SMPTE 2067-5" : "Unknown" ),
                type_string,
-               m_Desc.ContainerDuration,
-               (m_Desc.ContainerDuration == (ui64_t)1 ? "":"s"));
+               container_duration,
+               (container_duration == ui64_C(1) ? "":"s"));
 
        if ( Options.showheader_flag )
          {
index 17c58711357961c5a3dc860e0b99a356565dfe61..a876f35ac7af3c3538db499526193bec174a736a 100644 (file)
@@ -336,7 +336,7 @@ AS_02::MXF::AS02IndexReader::GetMDObjectsByType(const byte_t* ObjectID, std::lis
 
 
 //
-ui32_t
+ui64_t
 AS_02::MXF::AS02IndexReader::GetDuration() const
 {
   return m_Duration;