[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Traverso-commit] traverso/src/core ResampleAudioReader.cpp
From: |
Ben Levitt |
Subject: |
[Traverso-commit] traverso/src/core ResampleAudioReader.cpp |
Date: |
Sat, 14 Jul 2007 02:40:07 +0000 |
CVSROOT: /sources/traverso
Module name: traverso
Changes by: Ben Levitt <benjie> 07/07/14 02:40:07
Modified files:
src/core : ResampleAudioReader.cpp
Log message:
fix dumb memset crash bug in ResampleAudioReader
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/traverso/src/core/ResampleAudioReader.cpp?cvsroot=traverso&r1=1.4&r2=1.5
Patches:
Index: ResampleAudioReader.cpp
===================================================================
RCS file: /sources/traverso/traverso/src/core/ResampleAudioReader.cpp,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -b -r1.4 -r1.5
--- ResampleAudioReader.cpp 13 Jul 2007 07:41:03 -0000 1.4
+++ ResampleAudioReader.cpp 14 Jul 2007 02:40:06 -0000 1.5
@@ -131,6 +131,11 @@
uint samplesRead;
Q_ASSERT(m_realReader);
+ /////////////////////////////////
+ // Ben says: FIXME: Add an overflow buffer, and grab more samples at a
time, saving the extra to the overflow.
+ // This may improve performance? And should fix micro-view waveform
painting errors.
+ /////////////////////////////////
+
// pass through if not changing sampleRate.
if (audiodevice().get_sample_rate() == m_realReader->get_rate()) {
samplesRead = m_realReader->read(dst, sampleCount);
@@ -138,10 +143,10 @@
return samplesRead;
}
- nframes_t fileCnt = (song_to_file_frame(sampleCount /
get_num_channels())) * get_num_channels();
+ uint fileCnt = (song_to_file_frame(sampleCount / get_num_channels())) *
get_num_channels();
if (sampleCount && fileCnt / get_num_channels() < 1) {
- fileCnt = get_num_channels();
+ fileCnt = 1 * get_num_channels();
}
// make sure that the reusable m_fileBuffer is big enough for this read
@@ -155,7 +160,7 @@
samplesRead = m_realReader->read(m_fileBuffer, fileCnt);
- //printf("Resampler: sampleCount %lu, fileCnt %lu, returned %lu\n",
sampleCount/get_num_channels(), fileCnt/get_num_channels(),
samplesRead/get_num_channels()); fflush(stdout);
+ //printf("Resampler: sampleCount %lu, fileCnt %lu, returned %lu\n",
sampleCount/get_num_channels(), fileCnt/get_num_channels(),
samplesRead/get_num_channels());
// Set up sample rate converter struct for s.r.c. processing
m_srcData.data_in = m_fileBuffer;
@@ -178,7 +183,7 @@
if (samplesRead == 0 && remainingSamplesRequested > 0 &&
remainingSamplesInFile > 0) {
int padLength = (remainingSamplesRequested >
remainingSamplesInFile) ? remainingSamplesInFile : remainingSamplesRequested;
- memset(dst+(samplesRead * sizeof(audio_sample_t)), 0, padLength
* sizeof(audio_sample_t));
+ memset(dst + samplesRead, 0, padLength *
sizeof(audio_sample_t));
samplesRead += padLength;
printf("Resampler: padding: %d\n", padLength);
}
- [Traverso-commit] traverso/src/core ResampleAudioReader.cpp,
Ben Levitt <=