/*
-Copyright (c) 2005-2009, John Hurst
+Copyright (c) 2005-2018, John Hurst
All rights reserved.
Redistribution and use in source and binary forms, with or without
{
ui16_t format = KM_i16_LE(*(ui16_t*)p); p += 2;
- if ( format != WAVE_FORMAT_PCM && format != WAVE_FORMAT_EXTENSIBLE )
+ if ( format != ASDCP_WAVE_FORMAT_PCM && format != ASDCP_WAVE_FORMAT_EXTENSIBLE )
{
DefaultLogSink().Error("Expecting uncompressed PCM data, got format type %hd\n", format);
return RESULT_RAW_FORMAT;
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;
- DefaultLogSink().Debug("RIFF_len is %llu.\n", RIFF_len);
+ // DefaultLogSink().Debug("RIFF_len is %llu.\n", RIFF_len);
byte_t* tmp_header = NULL;
ui32_t header_len = 0;
*((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);
if ( test_fcc == Wav::FCC_data )
{
- if ( chunk_size > RIFF_len )
- {
- DefaultLogSink().Error("Chunk size %u larger than file: %u\n", chunk_size, RIFF_len);
- return RESULT_RAW_FORMAT;
- }
+ if ( chunk_size != MAX_RIFF_LEN )
+ {
+ if ( chunk_size > RIFF_len )
+ {
+ DefaultLogSink().Error("Chunk size %u larger than file: %u\n", chunk_size, RIFF_len);
+ return RESULT_RAW_FORMAT;
+ }
- if (chunk_size != MAX_RIFF_LEN)
data_len = chunk_size;
+ }
+
*data_start = p - buf;
break;
}
{
ui16_t format = KM_i16_LE(*(ui16_t*)p); p += 2;
- if ( format != Wav::WAVE_FORMAT_PCM && format != Wav::WAVE_FORMAT_EXTENSIBLE )
+ if ( format != Wav::ASDCP_WAVE_FORMAT_PCM && format != Wav::ASDCP_WAVE_FORMAT_EXTENSIBLE )
{
DefaultLogSink().Error("Expecting uncompressed PCM data, got format type %hd\n", format);
return RESULT_RAW_FORMAT;