[Top][All Lists]
[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;
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Traverso-commit] traverso/src audiofileio/decode/AbstractAudioRe...,
Remon Sijrier <=