00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef AUDIO_FILE_MERGER_H
00023 #define AUDIO_FILE_MERGER_H
00024
00025 #include <QThread>
00026 #include <QQueue>
00027 #include <QMutex>
00028
00029 class ReadSource;
00030
00031 class AudioFileMerger : public QThread
00032 {
00033 Q_OBJECT
00034 public:
00035 AudioFileMerger();
00036 void run() {
00037 exec();
00038 }
00039
00040 void enqueue_task(ReadSource* source0, ReadSource* source2, const QString& dir, const QString& outfilename);
00041 void stop_merging();
00042
00043
00044 private slots:
00045 void dequeue_tasks();
00046
00047 private:
00048 struct MergeTask {
00049 QString outFileName;
00050 QString dir;
00051 ReadSource* readsource0;
00052 ReadSource* readsource1;
00053 };
00054
00055 QQueue<MergeTask> m_tasks;
00056 QMutex m_mutex;
00057 bool m_stopMerging;
00058
00059 void process_task(MergeTask task);
00060
00061 signals:
00062 void dequeueTask();
00063 void progress(int);
00064 void taskStarted(QString);
00065 void taskFinished(QString);
00066 void processingStopped();
00067 };
00068
00069 #endif