From 475d524124923a6e4d4e7eae62df1f352ab30518 Mon Sep 17 00:00:00 2001 From: LoRd_MuldeR Date: Sun, 10 Dec 2017 22:29:43 +0100 Subject: [PATCH] Refactored all filter classes to use awaitProcess() from Tool_Abstract base class. --- src/Config.h | 2 +- src/Filter_Downmix.cpp | 57 +++++++++------------------------- src/Filter_Normalize.cpp | 57 +++++++++------------------------- src/Filter_Resample.cpp | 65 ++++++++++++--------------------------- src/Filter_ToneAdjust.cpp | 57 +++++++++------------------------- 5 files changed, 63 insertions(+), 175 deletions(-) diff --git a/src/Config.h b/src/Config.h index 3c82590e..de56a70c 100644 --- a/src/Config.h +++ b/src/Config.h @@ -35,7 +35,7 @@ #define VER_LAMEXP_MINOR_LO 6 #define VER_LAMEXP_TYPE Beta #define VER_LAMEXP_PATCH 1 -#define VER_LAMEXP_BUILD 2071 +#define VER_LAMEXP_BUILD 2072 #define VER_LAMEXP_CONFG 2002 /////////////////////////////////////////////////////////////////////////////// diff --git a/src/Filter_Downmix.cpp b/src/Filter_Downmix.cpp index 7b6958da..58d2b8e4 100644 --- a/src/Filter_Downmix.cpp +++ b/src/Filter_Downmix.cpp @@ -105,57 +105,28 @@ AbstractFilter::FilterResult DownmixFilter::apply(const QString &sourceFile, con return AbstractFilter::FILTER_FAILURE; } - bool bTimeout = false; - bool bAborted = false; - + int prevProgress = -1; QRegExp regExp("In:(\\d+)(\\.\\d+)*%"); - while(process.state() != QProcess::NotRunning) + const result_t result = awaitProcess(process, abortFlag, [this, &prevProgress, ®Exp](const QString &text) { - if(checkFlag(abortFlag)) + if (regExp.lastIndexIn(text) >= 0) { - process.kill(); - bAborted = true; - emit messageLogged("\nABORTED BY USER !!!"); - break; - } - process.waitForReadyRead(m_processTimeoutInterval); - if(!process.bytesAvailable() && process.state() == QProcess::Running) - { - process.kill(); - qWarning("SoX process timed out <-- killing!"); - emit messageLogged("\nPROCESS TIMEOUT !!!"); - bTimeout = true; - break; - } - while(process.bytesAvailable() > 0) - { - QByteArray line = process.readLine(); - QString text = QString::fromUtf8(line.constData()).simplified(); - if(regExp.lastIndexIn(text) >= 0) + qint32 newProgress; + if (MUtils::regexp_parse_int32(regExp, newProgress)) { - bool ok = false; - int progress = regExp.cap(1).toInt(&ok); - if(ok) emit statusUpdated(progress); - } - else if(!text.isEmpty()) - { - emit messageLogged(text); + if (newProgress > prevProgress) + { + emit statusUpdated(newProgress); + prevProgress = (newProgress < 99) ? (newProgress + 1) : newProgress; + } } + return true; } - } + return false; + }); - process.waitForFinished(); - if(process.state() != QProcess::NotRunning) - { - process.kill(); - process.waitForFinished(-1); - } - - emit statusUpdated(100); - emit messageLogged(QString().sprintf("\nExited with code: 0x%04X", process.exitCode())); - - if(bTimeout || bAborted || process.exitCode() != EXIT_SUCCESS || QFileInfo(outputFile).size() == 0) + if (result != RESULT_SUCCESS) { return AbstractFilter::FILTER_FAILURE; } diff --git a/src/Filter_Normalize.cpp b/src/Filter_Normalize.cpp index e385e061..f4015c5e 100644 --- a/src/Filter_Normalize.cpp +++ b/src/Filter_Normalize.cpp @@ -89,57 +89,28 @@ AbstractFilter::FilterResult NormalizeFilter::apply(const QString &sourceFile, c return AbstractFilter::FILTER_FAILURE; } - bool bTimeout = false; - bool bAborted = false; - + int prevProgress = -1; QRegExp regExp("In:(\\d+)(\\.\\d+)*%"); - while(process.state() != QProcess::NotRunning) + const result_t result = awaitProcess(process, abortFlag, [this, &prevProgress, ®Exp](const QString &text) { - if(checkFlag(abortFlag)) + if (regExp.lastIndexIn(text) >= 0) { - process.kill(); - bAborted = true; - emit messageLogged("\nABORTED BY USER !!!"); - break; - } - process.waitForReadyRead(m_processTimeoutInterval); - if(!process.bytesAvailable() && process.state() == QProcess::Running) - { - process.kill(); - qWarning("SoX process timed out <-- killing!"); - emit messageLogged("\nPROCESS TIMEOUT !!!"); - bTimeout = true; - break; - } - while(process.bytesAvailable() > 0) - { - QByteArray line = process.readLine(); - QString text = QString::fromUtf8(line.constData()).simplified(); - if(regExp.lastIndexIn(text) >= 0) + qint32 newProgress; + if (MUtils::regexp_parse_int32(regExp, newProgress)) { - bool ok = false; - int progress = regExp.cap(1).toInt(&ok); - if(ok) emit statusUpdated(progress); - } - else if(!text.isEmpty()) - { - emit messageLogged(text); + if (newProgress > prevProgress) + { + emit statusUpdated(newProgress); + prevProgress = (newProgress < 99) ? (newProgress + 1) : newProgress; + } } + return true; } - } + return false; + }); - process.waitForFinished(); - if(process.state() != QProcess::NotRunning) - { - process.kill(); - process.waitForFinished(-1); - } - - emit statusUpdated(100); - emit messageLogged(QString().sprintf("\nExited with code: 0x%04X", process.exitCode())); - - if(bTimeout || bAborted || process.exitCode() != EXIT_SUCCESS || QFileInfo(outputFile).size() == 0) + if (result != RESULT_SUCCESS) { return AbstractFilter::FILTER_FAILURE; } diff --git a/src/Filter_Resample.cpp b/src/Filter_Resample.cpp index f692fb45..06a0ffed 100644 --- a/src/Filter_Resample.cpp +++ b/src/Filter_Resample.cpp @@ -102,65 +102,40 @@ AbstractFilter::FilterResult ResampleFilter::apply(const QString &sourceFile, co return AbstractFilter::FILTER_FAILURE; } - bool bTimeout = false; - bool bAborted = false; - + int prevProgress = -1; QRegExp regExp("In:(\\d+)(\\.\\d+)*%"); - while(process.state() != QProcess::NotRunning) + const result_t result = awaitProcess(process, abortFlag, [this, &prevProgress, ®Exp](const QString &text) { - if(checkFlag(abortFlag)) + if (regExp.lastIndexIn(text) >= 0) { - process.kill(); - bAborted = true; - emit messageLogged("\nABORTED BY USER !!!"); - break; - } - process.waitForReadyRead(m_processTimeoutInterval); - if(!process.bytesAvailable() && process.state() == QProcess::Running) - { - process.kill(); - qWarning("SoX process timed out <-- killing!"); - emit messageLogged("\nPROCESS TIMEOUT !!!"); - bTimeout = true; - break; - } - while(process.bytesAvailable() > 0) - { - QByteArray line = process.readLine(); - QString text = QString::fromUtf8(line.constData()).simplified(); - if(regExp.lastIndexIn(text) >= 0) + qint32 newProgress; + if (MUtils::regexp_parse_int32(regExp, newProgress)) { - bool ok = false; - int progress = regExp.cap(1).toInt(&ok); - if(ok) emit statusUpdated(progress); - } - else if(!text.isEmpty()) - { - emit messageLogged(text); + if (newProgress > prevProgress) + { + emit statusUpdated(newProgress); + prevProgress = (newProgress < 99) ? (newProgress + 1) : newProgress; + } } + return true; } - } + return false; + }); - process.waitForFinished(); - if(process.state() != QProcess::NotRunning) - { - process.kill(); - process.waitForFinished(-1); - } - - emit statusUpdated(100); - emit messageLogged(QString().sprintf("\nExited with code: 0x%04X", process.exitCode())); - - if(bTimeout || bAborted || process.exitCode() != EXIT_SUCCESS || QFileInfo(outputFile).size() == 0) + if (result != RESULT_SUCCESS) { return AbstractFilter::FILTER_FAILURE; } - if(m_samplingRate) + if (m_samplingRate) + { formatInfo->setAudioSamplerate(m_samplingRate); - if(m_bitDepth) + } + if (m_bitDepth) + { formatInfo->setAudioBitdepth(m_bitDepth); + } return AbstractFilter::FILTER_SUCCESS; } diff --git a/src/Filter_ToneAdjust.cpp b/src/Filter_ToneAdjust.cpp index bdcd0e29..1845544d 100644 --- a/src/Filter_ToneAdjust.cpp +++ b/src/Filter_ToneAdjust.cpp @@ -75,57 +75,28 @@ AbstractFilter::FilterResult ToneAdjustFilter::apply(const QString &sourceFile, return AbstractFilter::FILTER_FAILURE; } - bool bTimeout = false; - bool bAborted = false; - + int prevProgress = -1; QRegExp regExp("In:(\\d+)(\\.\\d+)*%"); - while(process.state() != QProcess::NotRunning) + const result_t result = awaitProcess(process, abortFlag, [this, &prevProgress, ®Exp](const QString &text) { - if(checkFlag(abortFlag)) + if (regExp.lastIndexIn(text) >= 0) { - process.kill(); - bAborted = true; - emit messageLogged("\nABORTED BY USER !!!"); - break; - } - process.waitForReadyRead(m_processTimeoutInterval); - if(!process.bytesAvailable() && process.state() == QProcess::Running) - { - process.kill(); - qWarning("SoX process timed out <-- killing!"); - emit messageLogged("\nPROCESS TIMEOUT !!!"); - bTimeout = true; - break; - } - while(process.bytesAvailable() > 0) - { - QByteArray line = process.readLine(); - QString text = QString::fromUtf8(line.constData()).simplified(); - if(regExp.lastIndexIn(text) >= 0) + qint32 newProgress; + if (MUtils::regexp_parse_int32(regExp, newProgress)) { - bool ok = false; - int progress = regExp.cap(1).toInt(&ok); - if(ok) emit statusUpdated(progress); - } - else if(!text.isEmpty()) - { - emit messageLogged(text); + if (newProgress > prevProgress) + { + emit statusUpdated(newProgress); + prevProgress = (newProgress < 99) ? (newProgress + 1) : newProgress; + } } + return true; } - } + return false; + }); - process.waitForFinished(); - if(process.state() != QProcess::NotRunning) - { - process.kill(); - process.waitForFinished(-1); - } - - emit statusUpdated(100); - emit messageLogged(QString().sprintf("\nExited with code: 0x%04X", process.exitCode())); - - if(bTimeout || bAborted || process.exitCode() != EXIT_SUCCESS || QFileInfo(outputFile).size() == 0) + if (result != RESULT_SUCCESS) { return AbstractFilter::FILTER_FAILURE; }