[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Traverso-commit] traverso/src audiofileio/decode/ResampleAudioRe...
From: |
Remon Sijrier |
Subject: |
[Traverso-commit] traverso/src audiofileio/decode/ResampleAudioRe... |
Date: |
Thu, 24 Jan 2008 19:19:12 +0000 |
CVSROOT: /sources/traverso
Module name: traverso
Changes by: Remon Sijrier <r_sijrier> 08/01/24 19:19:12
Modified files:
src/audiofileio/decode: ResampleAudioReader.cpp
ResampleAudioReader.h
src/core : DiskIO.cpp DiskIO.h ReadSource.cpp Sheet.cpp
Log message:
* do not issue a seek when the resample quality changed, instead,
update the ResampleAudioReaders resample quality just before a read() in
ReadSource::process_ringbuffer().
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/traverso/src/audiofileio/decode/ResampleAudioReader.cpp?cvsroot=traverso&r1=1.20&r2=1.21
http://cvs.savannah.gnu.org/viewcvs/traverso/src/audiofileio/decode/ResampleAudioReader.h?cvsroot=traverso&r1=1.12&r2=1.13
http://cvs.savannah.gnu.org/viewcvs/traverso/src/core/DiskIO.cpp?cvsroot=traverso&r1=1.58&r2=1.59
http://cvs.savannah.gnu.org/viewcvs/traverso/src/core/DiskIO.h?cvsroot=traverso&r1=1.28&r2=1.29
http://cvs.savannah.gnu.org/viewcvs/traverso/src/core/ReadSource.cpp?cvsroot=traverso&r1=1.92&r2=1.93
http://cvs.savannah.gnu.org/viewcvs/traverso/src/core/Sheet.cpp?cvsroot=traverso&r1=1.2&r2=1.3
Patches:
Index: audiofileio/decode/ResampleAudioReader.cpp
===================================================================
RCS file:
/sources/traverso/traverso/src/audiofileio/decode/ResampleAudioReader.cpp,v
retrieving revision 1.20
retrieving revision 1.21
diff -u -b -r1.20 -r1.21
--- audiofileio/decode/ResampleAudioReader.cpp 29 Nov 2007 19:49:14 -0000
1.20
+++ audiofileio/decode/ResampleAudioReader.cpp 24 Jan 2008 19:19:10 -0000
1.21
@@ -51,6 +51,7 @@
m_overflowUsed = 0;
m_resampleDecodeBufferIsMine = false;
m_resampleDecodeBuffer = 0;
+ m_convertorType = -1;
}
@@ -116,8 +117,13 @@
int error;
if ( (float(m_outputRate) / get_file_rate()) > 2.0 && converter_type ==
3 ) {
+ if (m_convertorType == 2) {
+ return;
+ }
printf("ResampleAudioReader::set_converter_type: src does not
support a resample ratio > 2 with converter type Fast, using quality Medium\n");
- converter_type = 2;
+ m_convertorType = 2;
+ } else {
+ m_convertorType = converter_type;
}
while (m_srcStates.size()) {
@@ -129,7 +135,7 @@
for (int c = 0; c < m_reader->get_num_channels(); c++) {
- m_srcStates.append(src_new(converter_type, 1, &error));
+ m_srcStates.append(src_new(m_convertorType, 1, &error));
if (!m_srcStates[c]) {
PERROR("ResampleAudioReader: couldn't create
libSampleRate SRC_STATE");
@@ -141,7 +147,7 @@
}
// seek_private will reset the src states!
- seek_private(0);
+ seek_private(pos());
}
int ResampleAudioReader::get_output_rate()
Index: audiofileio/decode/ResampleAudioReader.h
===================================================================
RCS file:
/sources/traverso/traverso/src/audiofileio/decode/ResampleAudioReader.h,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -b -r1.12 -r1.13
--- audiofileio/decode/ResampleAudioReader.h 12 Oct 2007 19:39:07 -0000
1.12
+++ audiofileio/decode/ResampleAudioReader.h 24 Jan 2008 19:19:11 -0000
1.13
@@ -46,6 +46,7 @@
int get_output_rate();
int get_file_rate();
+ int get_convertor_type() const {return m_convertorType;}
void set_output_rate(int rate);
void set_converter_type(int converter_type);
void set_resample_decode_buffer(DecodeBuffer* buffer);
@@ -65,6 +66,7 @@
audio_sample_t** m_overflowBuffers;
long m_overflowUsed;
int m_outputRate;
+ int m_convertorType;
bool m_isResampleAvailable;
nframes_t m_readExtraFrames;
Index: core/DiskIO.cpp
===================================================================
RCS file: /sources/traverso/traverso/src/core/DiskIO.cpp,v
retrieving revision 1.58
retrieving revision 1.59
diff -u -b -r1.58 -r1.59
--- core/DiskIO.cpp 23 Jan 2008 17:32:23 -0000 1.58
+++ core/DiskIO.cpp 24 Jan 2008 19:19:11 -0000 1.59
@@ -195,16 +195,9 @@
m_seeking = true;
TimeRef location = m_sheet->get_new_transport_location();
- bool resampleQualityChanged = false;
- int quality = config().get_property("Conversion",
"RTResamplingConverterType", DEFAULT_RESAMPLE_QUALITY).toInt();
- if (quality != m_resampleQuality) {
- resampleQualityChanged = true;
- m_resampleQuality = quality;
- }
-
foreach(ReadSource* source, m_readSources) {
- if (m_sampleRateChanged || resampleQualityChanged) {
+ if (m_sampleRateChanged) {
source->set_diskio(this);
}
source->rb_seek_to_file_position(location);
@@ -533,3 +526,8 @@
// m_workTimer.stop();
}
+void DiskIO::set_resample_quality(int quality)
+{
+ m_resampleQuality = quality;
+}
+
Index: core/DiskIO.h
===================================================================
RCS file: /sources/traverso/traverso/src/core/DiskIO.h,v
retrieving revision 1.28
retrieving revision 1.29
diff -u -b -r1.28 -r1.29
--- core/DiskIO.h 21 Jan 2008 16:22:13 -0000 1.28
+++ core/DiskIO.h 24 Jan 2008 19:19:11 -0000 1.29
@@ -61,6 +61,8 @@
void register_read_source(ReadSource* source);
void register_write_source(WriteSource* source);
+ void set_resample_quality(int quality);
+
void unregister_read_source(ReadSource* source);
void unregister_write_source(WriteSource* source);
Index: core/ReadSource.cpp
===================================================================
RCS file: /sources/traverso/traverso/src/core/ReadSource.cpp,v
retrieving revision 1.92
retrieving revision 1.93
diff -u -b -r1.92 -r1.93
--- core/ReadSource.cpp 23 Jan 2008 17:32:23 -0000 1.92
+++ core/ReadSource.cpp 24 Jan 2008 19:19:11 -0000 1.93
@@ -236,8 +236,8 @@
return (m_error = COULD_NOT_OPEN_FILE);
}
- int converter_type = config().get_property("Conversion",
"RTResamplingConverterType", DEFAULT_RESAMPLE_QUALITY).toInt();
- m_audioReader->set_converter_type(converter_type);
+/* int converter_type = config().get_property("Conversion",
"RTResamplingConverterType", DEFAULT_RESAMPLE_QUALITY).toInt();
+ m_audioReader->set_converter_type(converter_type);*/
set_output_rate(m_audioReader->get_file_rate());
@@ -531,6 +531,13 @@
}
}
+ // Check if the resample quality has changed, it's a safe place here
+ // to reconfigure the audioreaders resample quality.
+ // This allows on the fly changing of the resample quality :)
+ if (m_diskio->get_resample_quality() !=
m_audioReader->get_convertor_type()) {
+
m_audioReader->set_converter_type(m_diskio->get_resample_quality());
+ }
+
// Read in the samples from source
nframes_t toWrite = rb_file_read(buffer, toRead);
Index: core/Sheet.cpp
===================================================================
RCS file: /sources/traverso/traverso/src/core/Sheet.cpp,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -b -r1.2 -r1.3
--- core/Sheet.cpp 23 Jan 2008 17:32:23 -0000 1.2
+++ core/Sheet.cpp 24 Jan 2008 19:19:11 -0000 1.3
@@ -131,6 +131,9 @@
m_diskio = new DiskIO(this);
m_currentSampleRate = audiodevice().get_sample_rate();
m_diskio->output_rate_changed(m_currentSampleRate);
+ int converter_type = config().get_property("Conversion",
"RTResamplingConverterType", DEFAULT_RESAMPLE_QUALITY).toInt();
+ m_diskio->set_resample_quality(converter_type);
+
connect(this, SIGNAL(seekStart()), m_diskio, SLOT(seek()),
Qt::QueuedConnection);
connect(this, SIGNAL(prepareRecording()), this,
SLOT(prepare_recording()));
@@ -1401,14 +1404,9 @@
void Sheet::config_changed()
{
- PENTER;
-
int quality = config().get_property("Conversion",
"RTResamplingConverterType", DEFAULT_RESAMPLE_QUALITY).toInt();
if (m_diskio->get_resample_quality() != quality) {
- TimeRef location = m_transportLocation;
- location.add_frames(1, audiodevice().get_sample_rate());
-
- set_transport_pos(location);
+ m_diskio->set_resample_quality(quality);
}
}
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Traverso-commit] traverso/src audiofileio/decode/ResampleAudioRe...,
Remon Sijrier <=