[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Traverso-commit] traverso/src core/AudioFileMerger.cpp core/Audi...
From: |
Remon Sijrier |
Subject: |
[Traverso-commit] traverso/src core/AudioFileMerger.cpp core/Audi... |
Date: |
Fri, 23 Nov 2007 21:19:18 +0000 |
CVSROOT: /sources/traverso
Module name: traverso
Changes by: Remon Sijrier <r_sijrier> 07/11/23 21:19:18
Modified files:
src/core : AudioFileMerger.cpp AudioFileMerger.h
ProjectConverter.cpp ProjectConverter.h
WriteSource.h
src/traverso/dialogs: ProjectConverterDialog.cpp
ProjectConverterDialog.h
Log message:
* Updated the Project converter, seems to work fine now
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/traverso/src/core/AudioFileMerger.cpp?cvsroot=traverso&r1=1.4&r2=1.5
http://cvs.savannah.gnu.org/viewcvs/traverso/src/core/AudioFileMerger.h?cvsroot=traverso&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/traverso/src/core/ProjectConverter.cpp?cvsroot=traverso&r1=1.4&r2=1.5
http://cvs.savannah.gnu.org/viewcvs/traverso/src/core/ProjectConverter.h?cvsroot=traverso&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/traverso/src/core/WriteSource.h?cvsroot=traverso&r1=1.21&r2=1.22
http://cvs.savannah.gnu.org/viewcvs/traverso/src/traverso/dialogs/ProjectConverterDialog.cpp?cvsroot=traverso&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/traverso/src/traverso/dialogs/ProjectConverterDialog.h?cvsroot=traverso&r1=1.1&r2=1.2
Patches:
Index: core/AudioFileMerger.cpp
===================================================================
RCS file: /sources/traverso/traverso/src/core/AudioFileMerger.cpp,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -b -r1.4 -r1.5
--- core/AudioFileMerger.cpp 5 Nov 2007 15:49:29 -0000 1.4
+++ core/AudioFileMerger.cpp 23 Nov 2007 21:19:17 -0000 1.5
@@ -27,10 +27,12 @@
#include "AbstractAudioReader.h"
#include "ReadSource.h"
#include "WriteSource.h"
+#include "Peak.h"
#include "defines.h"
AudioFileMerger::AudioFileMerger()
{
+ m_stopMerging = false;
moveToThread(this);
start();
connect(this, SIGNAL(dequeueTask()), this, SLOT(dequeue_tasks()),
Qt::QueuedConnection);
@@ -65,8 +67,6 @@
void AudioFileMerger::process_task(MergeTask task)
{
- printf("Entering process_task\n");
- printf("task readsource rate: %d\n", task.readsource0->get_rate());
QString name = task.readsource0->get_name();
int length = name.length();
emit taskStarted(name.left(length-28));
@@ -98,10 +98,18 @@
delete spec;
return;
}
+ // Enable on the fly generation of peak data to speedup conversion
+ // (no need to re-read all the audio files to generate peaks)
writesource->set_process_peaks(true);
int oldprogress = 0;
do {
+ // if the user asked to stop processing, jump out of this
+ // loop, and cleanup any resources in use.
+ if (m_stopMerging) {
+ goto out;
+ }
+
nframes_t diff = (spec->endLocation -
spec->pos).to_frame(task.readsource0->get_rate());
nframes_t this_nframes = std::min(diff, buffersize);
nframes_t nframes = this_nframes;
@@ -116,6 +124,13 @@
spec->dataF[1+(x*spec->channels)] =
decodebuffer1.destination[0][x];
}
+ // due the fact peak generating does _not_ happen in
writesource->process
+ // but in a function used by DiskIO, we have to hack the peak
processing
+ // in here.
+ writesource->get_peak()->process(0,
decodebuffer0.destination[0], nframes);
+ writesource->get_peak()->process(1,
decodebuffer1.destination[0], nframes);
+
+ // Process the data, and write to disk
writesource->process(buffersize);
spec->pos.add_frames(nframes, task.readsource0->get_rate());
@@ -128,11 +143,27 @@
} while (spec->pos != spec->totalTime);
+
+ out:
writesource->finish_export();
delete writesource;
delete [] spec->dataF;
delete spec;
emit taskFinished(name.left(length-28));
+
+ // The user asked to stop processing, exit the event loop
+ // and signal we're done.
+ if (m_stopMerging) {
+ exit(0);
+ wait(1000);
+ m_tasks.clear();
+ emit processingStopped();
+ }
+}
+
+void AudioFileMerger::stop_merging()
+{
+ m_stopMerging = true;
}
Index: core/AudioFileMerger.h
===================================================================
RCS file: /sources/traverso/traverso/src/core/AudioFileMerger.h,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- core/AudioFileMerger.h 10 Oct 2007 16:49:45 -0000 1.1
+++ core/AudioFileMerger.h 23 Nov 2007 21:19:18 -0000 1.2
@@ -38,6 +38,7 @@
}
void enqueue_task(ReadSource* source0, ReadSource* source2, const
QString& dir, const QString& outfilename);
+ void stop_merging();
private slots:
@@ -53,6 +54,7 @@
QQueue<MergeTask> m_tasks;
QMutex m_mutex;
+ bool m_stopMerging;
void process_task(MergeTask task);
@@ -61,6 +63,7 @@
void progress(int);
void taskStarted(QString);
void taskFinished(QString);
+ void processingStopped();
};
#endif
Index: core/ProjectConverter.cpp
===================================================================
RCS file: /sources/traverso/traverso/src/core/ProjectConverter.cpp,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -b -r1.4 -r1.5
--- core/ProjectConverter.cpp 29 Oct 2007 09:00:10 -0000 1.4
+++ core/ProjectConverter.cpp 23 Nov 2007 21:19:18 -0000 1.5
@@ -34,6 +34,7 @@
ProjectConverter::ProjectConverter()
{
m_projectfileversion = -1;
+ m_merger = 0;
connect(this, SIGNAL(conversionFinished()), this,
SLOT(conversion_finished()));
}
@@ -56,6 +57,17 @@
void ProjectConverter::set_project(const QString & rootdir, const QString &
name)
{
+ m_readsources.clear();
+ m_filesToMerge = 0;
+ m_filesMerged = 0;
+ if (m_merger) {
+ delete m_merger;
+ }
+ m_document.clear();
+
+
+ m_projectfileversion = -1;
+
m_rootdir = rootdir;
m_projectname = name;
@@ -95,6 +107,7 @@
connect(m_merger, SIGNAL(progress(int)), this, SIGNAL(progress(int)));
connect(m_merger, SIGNAL(taskStarted(QString)), this,
SLOT(file_merge_started(QString)));
connect(m_merger, SIGNAL(taskFinished(QString)), this,
SLOT(file_merge_finished(QString)));
+ connect(m_merger, SIGNAL(processingStopped()), this,
SLOT(processing_stopped()));
QDomElement docElem = m_document.documentElement();
QDomNode propertiesNode = docElem.firstChildElement("Properties");
@@ -117,6 +130,7 @@
qint64 id = readsourceelement.attribute("id", "").toLongLong();
QString dir = readsourceelement.attribute("dir", "" );
QString name = readsourceelement.attribute("name", "No name
supplied?" );
+ bool wasrecording = readsourceelement.attribute("wasrecording",
0).toInt();
if (filecount == 2 && channelcount == 2 && dir == (m_rootdir +
"/audiosources/")) {
ReadSource* readsource0 = new ReadSource(dir, name +
"-ch0.wav");
@@ -136,6 +150,14 @@
readsourceelement.setAttribute("length",
readsource0->get_length().universal_frame());
readsourceelement.setAttribute("rate",
readsource0->get_rate());
+ } else {
+ // The version 2 of the project file didn't have the
full name
+ // including the channel number, it was added by
ReadSource so
+ // we have to do it now since newer version of
ReadSource no longer add
+ // the channel number + extension to the readsource
name.
+ if (!name.contains(".wav") && wasrecording &&
channelcount == 1) {
+ readsourceelement.setAttribute("name", name +
"-ch0.wav");
+ }
}
@@ -269,3 +291,15 @@
emit conversionFinished();
}
+void ProjectConverter::stop_conversion()
+{
+ if (m_merger && m_merger->isRunning()) {
+ m_merger->stop_merging();
+ }
+}
+
+void ProjectConverter::processing_stopped()
+{
+ emit message(tr("Conversion stopped on user request, you can continue
to use this Project with Traverso <= 0.41.0, or reopen it with this version of
Traverso and start the conversion again"));
+}
+
Index: core/ProjectConverter.h
===================================================================
RCS file: /sources/traverso/traverso/src/core/ProjectConverter.h,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- core/ProjectConverter.h 10 Oct 2007 16:49:45 -0000 1.1
+++ core/ProjectConverter.h 23 Nov 2007 21:19:18 -0000 1.2
@@ -39,6 +39,7 @@
void set_project(const QString& rootdir, const QString& name);
int start();
+ void stop_conversion();
QString get_conversion_description();
private:
@@ -59,6 +60,7 @@
void file_merge_started(QString file);
void file_merge_finished(QString file);
void finish_2_3_conversion();
+ void processing_stopped();
signals:
void progress(int);
Index: core/WriteSource.h
===================================================================
RCS file: /sources/traverso/traverso/src/core/WriteSource.h,v
retrieving revision 1.21
retrieving revision 1.22
diff -u -b -r1.21 -r1.22
--- core/WriteSource.h 12 Oct 2007 19:38:51 -0000 1.21
+++ core/WriteSource.h 23 Nov 2007 21:19:18 -0000 1.22
@@ -47,6 +47,7 @@
int get_processable_buffer_space() const;
int get_chunck_size() const {return m_chunkSize;}
int get_buffer_size() const {return m_bufferSize;}
+ Peak* get_peak() {return m_peak;}
int process(nframes_t nframes);
Index: traverso/dialogs/ProjectConverterDialog.cpp
===================================================================
RCS file:
/sources/traverso/traverso/src/traverso/dialogs/ProjectConverterDialog.cpp,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- traverso/dialogs/ProjectConverterDialog.cpp 10 Oct 2007 16:49:45 -0000
1.1
+++ traverso/dialogs/ProjectConverterDialog.cpp 23 Nov 2007 21:19:18 -0000
1.2
@@ -93,3 +93,10 @@
reject();
}
+void ProjectConverterDialog::on_stopConversionButton_clicked()
+{
+ m_converter->stop_conversion();
+ stopConversionButton->hide();
+ closeButton->show();
+}
+
Index: traverso/dialogs/ProjectConverterDialog.h
===================================================================
RCS file:
/sources/traverso/traverso/src/traverso/dialogs/ProjectConverterDialog.h,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- traverso/dialogs/ProjectConverterDialog.h 10 Oct 2007 16:49:45 -0000
1.1
+++ traverso/dialogs/ProjectConverterDialog.h 23 Nov 2007 21:19:18 -0000
1.2
@@ -51,6 +51,7 @@
void converter_messages(QString);
void conversion_finished();
void on_loadProjectButton_clicked();
+ void on_stopConversionButton_clicked();
};
#endif
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Traverso-commit] traverso/src core/AudioFileMerger.cpp core/Audi...,
Remon Sijrier <=