patches
authorjhurst <jhurst@cinecert.com>
Tue, 28 May 2013 18:13:12 +0000 (18:13 +0000)
committerjhurst <>
Tue, 28 May 2013 18:13:12 +0000 (18:13 +0000)
src/KM_platform.h
src/KM_util.h
src/Wav.cpp
src/Wav.h

index c040261a94e9dd9dbb18bb680ce6e06fbe7dc156..578f545ac3fd0f2ab9f58c241603c32e309eb3ad 100644 (file)
@@ -166,7 +166,7 @@ namespace Kumu
       ~mem_ptr() { delete m_p; }
 
       inline T&   operator*()  const { return *m_p; }
-      inline T*   operator->() const { return m_p; }
+      inline T*   operator->() const { assert(m_p!=0); return m_p; }
       inline      operator T*()const { return m_p; }
       inline const mem_ptr<T>& operator=(T* p) { this->set(p); return *this; }
       inline T*   set(T* p)          { delete m_p; m_p = p; return m_p; }
index a7667fc524d379b9421b45f978e36fff30e48feb..1c54860faa1471b53d7a089adfd8256b2f326b75 100755 (executable)
@@ -244,7 +244,7 @@ namespace Kumu
       virtual ~ArchivableString() {}
 
       bool   HasValue() const { return ! this->empty(); }
-      ui32_t ArchiveLength() const { sizeof(ui32_t) + static_cast<ui32_t>(this->size()); }
+      ui32_t ArchiveLength() const { return sizeof(ui32_t) + static_cast<ui32_t>(this->size()); }
 
       bool   Archive(MemIOWriter* Writer) const {
        if ( Writer == 0 ) return false;
index 0f148500d7759bbf37f8f884b0c1ba462a574406..0ba3fe81a152e932fe4f287727d0c7b1c5a627e5 100755 (executable)
@@ -371,7 +371,8 @@ ASDCP::RF64::SimpleRF64Header::SimpleRF64Header(ASDCP::PCM::AudioDescriptor& ADe
   samplespersec = (ui32_t)ceil(ADesc.AudioSamplingRate.Quotient());
   blockalign = nchannels * ((bitspersample + 7) / 8);
   avgbps = samplespersec * blockalign;
-  data_len = ASDCP::PCM::CalcFrameBufferSize(ADesc) * ADesc.ContainerDuration;
+  cbsize = 0;
+  data_len = static_cast<ui64_t>(ASDCP::PCM::CalcFrameBufferSize(ADesc)) * ADesc.ContainerDuration;
 }
 
 //
@@ -402,7 +403,8 @@ ASDCP::RF64::SimpleRF64Header::WriteToFile(Kumu::FileWriter& OutFile) const
     + sizeof(samplespersec)
     + sizeof(avgbps)
     + sizeof(blockalign)
-    + sizeof(bitspersample);
+    + sizeof(bitspersample)
+    + sizeof(cbsize);
 
   ui32_t write_count = 0;
   ui64_t RIFF_len = data_len + SimpleWavHeaderLength - 8;
@@ -441,6 +443,7 @@ ASDCP::RF64::SimpleRF64Header::WriteToFile(Kumu::FileWriter& OutFile) const
     *((ui32_t*)p) = KM_i32_LE(avgbps); p += 4;
     *((ui16_t*)p) = KM_i16_LE(blockalign); p += 2;
     *((ui16_t*)p) = KM_i16_LE(bitspersample); p += 2;
+    *((ui16_t*)p) = KM_i16_LE(cbsize); p += 2;
     memcpy(p, &Wav::FCC_data, sizeof(fourcc)); p += 4;
     *((ui32_t*)p) = KM_i32_LE(data32_len); p += 4;
     write_count = (p - tmp_header);
@@ -462,6 +465,7 @@ ASDCP::RF64::SimpleRF64Header::WriteToFile(Kumu::FileWriter& OutFile) const
     *((ui32_t*)p) = KM_i32_LE(avgbps); p += 4;
     *((ui16_t*)p) = KM_i16_LE(blockalign); p += 2;
     *((ui16_t*)p) = KM_i16_LE(bitspersample); p += 2;
+    *((ui16_t*)p) = KM_i16_LE(cbsize); p += 2;
     memcpy(p, &Wav::FCC_data, sizeof(fourcc)); p += 4;
     *((ui32_t*)p) = KM_i32_LE(data_len); p += 4;
     write_count = (p - tmp_header);
index d2a97895e7380885450a0cb856d819173ae215d6..683207324f62e20ff8c48c937435df8d85d5f4c9 100755 (executable)
--- a/src/Wav.h
+++ b/src/Wav.h
@@ -127,7 +127,7 @@ namespace ASDCP
 
       static const ui32_t MAX_RIFF_LEN = 0xFFFFFFFF;
       static const ui32_t DS64_HEADER_LEN = 28;
-      static const ui32_t SIMPLE_RF64_HEADER_LEN = 80;
+      static const ui32_t SIMPLE_RF64_HEADER_LEN = 82;
       //
       class SimpleRF64Header
        {
@@ -138,11 +138,12 @@ namespace ASDCP
          ui32_t        avgbps;
          ui16_t        blockalign;
          ui16_t        bitspersample;
+         ui16_t        cbsize;
          ui64_t        data_len;
 
          SimpleRF64Header() :
            format(0), nchannels(0), samplespersec(0), avgbps(0),
-           blockalign(0), bitspersample(0), data_len(0) {}
+           blockalign(0), bitspersample(0), cbsize(0), data_len(0) {}
 
          SimpleRF64Header(ASDCP::PCM::AudioDescriptor& ADesc);