~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; }
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;
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;
}
//
+ 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;
*((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);
*((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);
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
{
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);