From 1c52c13a7b8e7df0d3f7c2d78b7a1b033e17a318 Mon Sep 17 00:00:00 2001 From: Fred Gleason Date: Tue, 2 Aug 2016 16:18:30 -0400 Subject: [PATCH] 2016-08-02 Fred Gleason * Fixed a bug in 'lib/rdwavefile.cpp' that caused WAV files to be written with incorrect LEVL chunk data. --- ChangeLog | 3 +++ lib/rdwavefile.cpp | 7 ++++--- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 678bfa9b..fae91b84 100644 --- a/ChangeLog +++ b/ChangeLog @@ -15446,3 +15446,6 @@ payload size to be written for WAV files. 2016-08-02 Fred Gleason * Added 'Start' fields to wav_chunk_test(1). +2016-08-02 Fred Gleason + * Fixed a bug in 'lib/rdwavefile.cpp' that caused WAV files to + be written with incorrect LEVL chunk data. diff --git a/lib/rdwavefile.cpp b/lib/rdwavefile.cpp index 9dec8a3a..d658e118 100644 --- a/lib/rdwavefile.cpp +++ b/lib/rdwavefile.cpp @@ -654,13 +654,14 @@ void RDWaveFile::closeWave(int samples) MakeLevl(); lseek(wave_file.handle(),0,SEEK_END); write(wave_file.handle(),"levl",4); - lsize=LEVL_CHUNK_SIZE+energy_data.size()*2; + lsize=LEVL_CHUNK_SIZE+energy_data.size()*2-8; size_buf[0]=lsize&0xff; size_buf[1]=(lsize>>8)&0xff; size_buf[2]=(lsize>>16)&0xff; size_buf[3]=(lsize>>24)&0xff; write(wave_file.handle(),size_buf,4); - write(wave_file.handle(),levl_chunk_data,LEVL_CHUNK_SIZE-4); + write(wave_file.handle(),levl_chunk_data,LEVL_CHUNK_SIZE-8); + //write(wave_file.handle(),levl_chunk_data,LEVL_CHUNK_SIZE-4); // Fixup the endianness unsigned char * sbuf = new unsigned char [2 * energy_data.size()]; for (unsigned int i=0; i < energy_data.size(); i++){ @@ -674,7 +675,7 @@ void RDWaveFile::closeWave(int samples) // // Update file size // - cptr=lseek(wave_file.handle(),0,SEEK_END)-12; + cptr=lseek(wave_file.handle(),0,SEEK_END)-8; size_buf[0]=cptr&0xff; size_buf[1]=(cptr>>8)&0xff; size_buf[2]=(cptr>>16)&0xff;