traverso-commit
[Top][All Lists]
Advanced

[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);
        }       




reply via email to

[Prev in Thread] Current Thread [Next in Thread]