traverso-commit
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Traverso-commit] traverso/src audiofileio/decode/AbstractAudioRe...


From: Remon Sijrier
Subject: [Traverso-commit] traverso/src audiofileio/decode/AbstractAudioRe...
Date: Sat, 13 Oct 2007 21:47:01 +0000

CVSROOT:        /sources/traverso
Module name:    traverso
Changes by:     Remon Sijrier <r_sijrier>       07/10/13 21:47:01

Modified files:
        src/audiofileio/decode: AbstractAudioReader.cpp 
                                AbstractAudioReader.h 
                                ResampleAudioReader.cpp 
        src/core       : ReadSource.cpp 

Log message:
        * added very primitive buffer manager in DecodeBuffer who reduces the 
size of the buffers when appropriate

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/traverso/src/audiofileio/decode/AbstractAudioReader.cpp?cvsroot=traverso&r1=1.16&r2=1.17
http://cvs.savannah.gnu.org/viewcvs/traverso/src/audiofileio/decode/AbstractAudioReader.h?cvsroot=traverso&r1=1.17&r2=1.18
http://cvs.savannah.gnu.org/viewcvs/traverso/src/audiofileio/decode/ResampleAudioReader.cpp?cvsroot=traverso&r1=1.16&r2=1.17
http://cvs.savannah.gnu.org/viewcvs/traverso/src/core/ReadSource.cpp?cvsroot=traverso&r1=1.73&r2=1.74

Patches:
Index: audiofileio/decode/AbstractAudioReader.cpp
===================================================================
RCS file: 
/sources/traverso/traverso/src/audiofileio/decode/AbstractAudioReader.cpp,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -b -r1.16 -r1.17
--- audiofileio/decode/AbstractAudioReader.cpp  12 Oct 2007 19:39:07 -0000      
1.16
+++ audiofileio/decode/AbstractAudioReader.cpp  13 Oct 2007 21:47:01 -0000      
1.17
@@ -180,21 +180,23 @@
 
 void DecodeBuffer::check_buffers_capacity(uint size, uint channels)
 {
-/*     m_bufferSizeCheckCounter++;
+       m_bufferSizeCheckCounter++;
        m_totalCheckSize += size;
        
-       if (((m_totalCheckSize / m_bufferSizeCheckCounter) + 128) < 
destinationBufferSize) {
+       float meanvalue = (m_totalCheckSize / (float)m_bufferSizeCheckCounter);
+       
+       if (meanvalue < destinationBufferSize && ((meanvalue + 256) < 
destinationBufferSize) && !(destinationBufferSize == size)) {
                m_smallerReadCounter++;
-               if (m_smallerReadCounter > 5) {
-                       // Force recreation of the buffers;
-                       destinationBufferSize = 0;
+               if (m_smallerReadCounter > 8) {
+//                     Force recreation of the buffers;
+                       destinationBufferSize = readBufferSize = 0;
                        m_bufferSizeCheckCounter = m_smallerReadCounter = 0;
                        m_totalCheckSize = 0;
                }
-       }*/
+       }
                                
                
-       if ((destinationBufferSize < size || m_channels < channels)) {
+       if (destinationBufferSize < size || m_channels < channels) {
                        
                delete_destination_buffers();
                        
@@ -207,7 +209,7 @@
                }
                        
                destinationBufferSize = size;
-//             printf("resizing destination to %.3f KB\n", (float)size*4/1024);
+//             printf("id %lld :: resizing destination to %.3f KB\n", id, 
(float)size*4/1024);
        }
                
        if (readBufferSize < (size*m_channels)) {

Index: audiofileio/decode/AbstractAudioReader.h
===================================================================
RCS file: 
/sources/traverso/traverso/src/audiofileio/decode/AbstractAudioReader.h,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -b -r1.17 -r1.18
--- audiofileio/decode/AbstractAudioReader.h    12 Oct 2007 19:39:07 -0000      
1.17
+++ audiofileio/decode/AbstractAudioReader.h    13 Oct 2007 21:47:01 -0000      
1.18
@@ -45,9 +45,8 @@
 private:
        uint m_channels;
        uint m_smallerReadCounter;
-       long m_totalCheckSize;
+       quint64 m_totalCheckSize;
        uint m_bufferSizeCheckCounter;
-       bool m_childReadActive;
        
        void delete_destination_buffers();
        void delete_readbuffer();

Index: audiofileio/decode/ResampleAudioReader.cpp
===================================================================
RCS file: 
/sources/traverso/traverso/src/audiofileio/decode/ResampleAudioReader.cpp,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -b -r1.16 -r1.17
--- audiofileio/decode/ResampleAudioReader.cpp  12 Oct 2007 19:39:07 -0000      
1.16
+++ audiofileio/decode/ResampleAudioReader.cpp  13 Oct 2007 21:47:01 -0000      
1.17
@@ -156,7 +156,7 @@
        m_nframes = file_to_resampled_frame(m_reader->get_nframes());
        m_length = TimeRef(m_nframes, m_outputRate);
        
-//     reset();
+       reset();
 }
 
 
@@ -203,28 +203,28 @@
                m_resampleDecodeBufferIsMine = true;
        }
 
-       // Make sure the buffer has large enough resampleBuffers
-//     buffer->check_resamplebuffer_capacity(fileCnt + m_readExtraFrames);
-       m_resampleDecodeBuffer->check_buffers_capacity(fileCnt + 
m_readExtraFrames, m_channels);
-       
+       if (!m_resampleDecodeBuffer->destination) {
+               reset();
+       }
        
        bufferUsed = m_overflowUsed;
+       
        if (m_overflowUsed) {
                // Copy pre-existing overflow into the buffer
                for (int chan = 0; chan < m_channels; chan++) {
-//                     memcpy(buffer->resampleBuffer[chan], 
m_overflowBuffers[chan], m_overflowUsed * sizeof(audio_sample_t));
                        memcpy(m_resampleDecodeBuffer->destination[chan], 
m_overflowBuffers[chan], m_overflowUsed * sizeof(audio_sample_t));
+                       m_resampleDecodeBuffer->destination[chan] += 
m_overflowUsed;
                }
        }
                
        if (!m_reader->eof()) {
-               for (int chan = 0; chan < m_channels; chan++) {
-                       m_resampleDecodeBuffer->destination[chan] += 
m_overflowUsed;
-               }
                bufferUsed += m_reader->read(m_resampleDecodeBuffer, fileCnt + 
m_readExtraFrames - m_overflowUsed);
+               
+               if (m_overflowUsed) {
                for (int chan = 0; chan < m_channels; chan++) {
                        m_resampleDecodeBuffer->destination[chan] -= 
m_overflowUsed;
                }
+               }
                //printf("Resampler: Read %lu of %lu (%lu)\n", bufferUsed, 
fileCnt + OVERFLOW_SIZE - m_overflowUsed, m_reader->get_length());
        }
        
@@ -242,7 +242,6 @@
        
        for (int chan = 0; chan < m_channels; chan++) {
                // Set up sample rate converter struct for s.r.c. processing
-//             m_srcData.data_in = buffer->resampleBuffer[chan];
                m_srcData.data_in = m_resampleDecodeBuffer->destination[chan];
                m_srcData.input_frames = bufferUsed;
                m_srcData.data_out = buffer->destination[chan];

Index: core/ReadSource.cpp
===================================================================
RCS file: /sources/traverso/traverso/src/core/ReadSource.cpp,v
retrieving revision 1.73
retrieving revision 1.74
diff -u -b -r1.73 -r1.74
--- core/ReadSource.cpp 12 Oct 2007 19:38:51 -0000      1.73
+++ core/ReadSource.cpp 13 Oct 2007 21:47:01 -0000      1.74
@@ -535,7 +535,7 @@
 void ReadSource::sync(DecodeBuffer* buffer)
 {
        PENTER2;
-       printf("source::sync: %s\n", QS_C(m_fileName));
+//     printf("source::sync: %s\n", QS_C(m_fileName));
        
        if (!m_audioReader) {
                return;




reply via email to

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