diff --git a/src/Config.h b/src/Config.h index 02af1f70..47e89fee 100644 --- a/src/Config.h +++ b/src/Config.h @@ -30,7 +30,7 @@ #define VER_LAMEXP_MINOR_LO 4 #define VER_LAMEXP_TYPE Alpha #define VER_LAMEXP_PATCH 2 -#define VER_LAMEXP_BUILD 785 +#define VER_LAMEXP_BUILD 786 /////////////////////////////////////////////////////////////////////////////// // Tool versions (minimum expected versions!) diff --git a/src/Dialog_MainWindow.cpp b/src/Dialog_MainWindow.cpp index 745d9c50..5701755d 100644 --- a/src/Dialog_MainWindow.cpp +++ b/src/Dialog_MainWindow.cpp @@ -90,7 +90,7 @@ MainWindow::MainWindow(FileListModel *fileListModel, AudioFileModel *metaInfo, S m_settings(settingsModel), m_neroEncoderAvailable(lamexp_check_tool("neroAacEnc.exe") && lamexp_check_tool("neroAacDec.exe") && lamexp_check_tool("neroAacTag.exe")), m_fhgEncoderAvailable(lamexp_check_tool("fhgaacenc.exe") && lamexp_check_tool("enc_fhgaac.dll") && lamexp_check_tool("nsutil.dll") && lamexp_check_tool("libmp4v2.dll")), - m_qaacEncoderAvailable(lamexp_check_tool("qaac.exe")), + m_qaacEncoderAvailable(lamexp_check_tool("qaac.exe") && lamexp_check_tool("libsoxrate.dll")), m_accepted(false), m_firstTimeShown(true), m_OutputFolderViewInitialized(false) diff --git a/src/Dialog_Processing.cpp b/src/Dialog_Processing.cpp index 26f52a49..7eb6f359 100644 --- a/src/Dialog_Processing.cpp +++ b/src/Dialog_Processing.cpp @@ -661,7 +661,7 @@ void ProcessingDialog::startNextJob(void) break; case SettingsModel::AACEncoder: { - if(lamexp_check_tool("qaac.exe")) + if(lamexp_check_tool("qaac.exe") && lamexp_check_tool("libsoxrate.dll")) { QAACEncoder *aacEncoder = new QAACEncoder(); aacEncoder->setBitrate(m_settings->compressionBitrate()); diff --git a/src/Encoder_AAC_QAAC.cpp b/src/Encoder_AAC_QAAC.cpp index a30377ca..9a69b66b 100644 --- a/src/Encoder_AAC_QAAC.cpp +++ b/src/Encoder_AAC_QAAC.cpp @@ -31,9 +31,10 @@ QAACEncoder::QAACEncoder(void) : - m_binary_enc(lamexp_lookup_tool("qaac.exe")) + m_binary_enc(lamexp_lookup_tool("qaac.exe")), + m_binary_dll(lamexp_lookup_tool("libsoxrate.dll")) { - if(m_binary_enc.isEmpty()) + if(m_binary_enc.isEmpty() || m_binary_dll.isEmpty()) { throw "Error initializing QAAC. Tool 'qaac.exe' is not registred!"; } diff --git a/src/Encoder_AAC_QAAC.h b/src/Encoder_AAC_QAAC.h index 2d990e2a..ca52c0c6 100644 --- a/src/Encoder_AAC_QAAC.h +++ b/src/Encoder_AAC_QAAC.h @@ -42,5 +42,6 @@ public: private: const QString m_binary_enc; + const QString m_binary_dll; int m_configProfile; }; diff --git a/src/Model_Settings.cpp b/src/Model_Settings.cpp index e660c174..7094f9a1 100644 --- a/src/Model_Settings.cpp +++ b/src/Model_Settings.cpp @@ -222,7 +222,7 @@ void SettingsModel::validate(void) { if(!(lamexp_check_tool("fhgaacenc.exe") && lamexp_check_tool("enc_fhgaac.dll"))) { - if(!lamexp_check_tool("qaac.exe")) + if(!(lamexp_check_tool("qaac.exe") && lamexp_check_tool("libsoxrate.dll"))) { if(this->compressionEncoder() == SettingsModel::AACEncoder) { diff --git a/src/Thread_Initialization.cpp b/src/Thread_Initialization.cpp index 9c3f9e12..f359dd7f 100644 --- a/src/Thread_Initialization.cpp +++ b/src/Thread_Initialization.cpp @@ -485,9 +485,12 @@ void InitializationThread::initQAac(void) { const QString appPath = QDir(QCoreApplication::applicationDirPath()).canonicalPath(); + QFileInfo qaacFileInfo[2]; + qaacFileInfo[0] = QFileInfo(QString("%1/qaac.exe").arg(appPath)); + qaacFileInfo[1] = QFileInfo(QString("%1/libsoxrate.dll").arg(appPath)); + bool qaacFilesFound = true; - QFileInfo qaacFileInfo(QString("%1/qaac.exe").arg(appPath)); - if(!qaacFileInfo.exists()) qaacFilesFound = false; + for(int i = 0; i < 4; i++) { if(!qaacFileInfo[i].exists()) qaacFilesFound = false; } //Lock the QAAC binaries if(!qaacFilesFound) @@ -496,16 +499,21 @@ void InitializationThread::initQAac(void) return; } - qDebug("Found QAAC encoder:\n%s\n", qaacFileInfo.canonicalFilePath().toUtf8().constData()); - LockedFile *qaacBin = NULL; + qDebug("Found QAAC encoder:\n%s\n", qaacFileInfo[0].canonicalFilePath().toUtf8().constData()); + + LockedFile *qaacBin[2]; + for(int i = 0; i < 2; i++) qaacBin[i] = NULL; try { - qaacBin = new LockedFile(qaacFileInfo.canonicalFilePath()); + for(int i = 0; i < 2; i++) + { + qaacBin[i] = new LockedFile(qaacFileInfo[i].canonicalFilePath()); + } } catch(...) { - LAMEXP_DELETE(qaacBin); + for(int i = 0; i < 2; i++) LAMEXP_DELETE(qaacBin[i]); qWarning("Failed to get excluive lock to QAAC binary -> QAAC support will be disabled!"); return; } @@ -513,7 +521,7 @@ void InitializationThread::initQAac(void) QProcess process; process.setProcessChannelMode(QProcess::MergedChannels); process.setReadChannel(QProcess::StandardOutput); - process.start(qaacFileInfo.canonicalFilePath(), QStringList() << "--check"); + process.start(qaacFileInfo[0].canonicalFilePath(), QStringList() << "--check"); if(!process.waitForStarted()) { @@ -521,7 +529,7 @@ void InitializationThread::initQAac(void) qWarning("Error message: \"%s\"\n", process.errorString().toLatin1().constData()); process.kill(); process.waitForFinished(-1); - LAMEXP_DELETE(qaacBin); + for(int i = 0; i < 2; i++) LAMEXP_DELETE(qaacBin[i]); return; } @@ -538,7 +546,7 @@ void InitializationThread::initQAac(void) qWarning("QAAC process time out -> killing!"); process.kill(); process.waitForFinished(-1); - LAMEXP_DELETE(qaacBin); + for(int i = 0; i < 2; i++) LAMEXP_DELETE(qaacBin[i]); return; } while(process.bytesAvailable() > 0) @@ -577,30 +585,31 @@ void InitializationThread::initQAac(void) if(!(qaacVersion > 0)) { qWarning("QAAC version couldn't be determined -> QAAC support will be disabled!"); - LAMEXP_DELETE(qaacBin); + for(int i = 0; i < 2; i++) LAMEXP_DELETE(qaacBin[i]); return; } else if(qaacVersion < lamexp_toolver_qaacenc()) { qWarning("QAAC version is too much outdated (%s) -> QAAC support will be disabled!", lamexp_version2string("v?.??", qaacVersion, "N/A").toLatin1().constData()); - LAMEXP_DELETE(qaacBin); + for(int i = 0; i < 2; i++) LAMEXP_DELETE(qaacBin[i]); return; } if(!(coreVersion > 0)) { qWarning("CoreAudioToolbox version couldn't be determined -> QAAC support will be disabled!"); - LAMEXP_DELETE(qaacBin); + for(int i = 0; i < 2; i++) LAMEXP_DELETE(qaacBin[i]); return; } else if(coreVersion < lamexp_toolver_coreaudio()) { qWarning("CoreAudioToolbox version is too much outdated (%s) -> QAAC support will be disabled!", lamexp_version2string("v?.?.?.?", coreVersion, "N/A").toLatin1().constData()); - LAMEXP_DELETE(qaacBin); + for(int i = 0; i < 2; i++) LAMEXP_DELETE(qaacBin[i]); return; } - lamexp_register_tool(qaacFileInfo.fileName(), qaacBin, qaacVersion); + lamexp_register_tool(qaacFileInfo[0].fileName(), qaacBin[0], qaacVersion); + lamexp_register_tool(qaacFileInfo[1].fileName(), qaacBin[1], qaacVersion); } void InitializationThread::selfTest(void)