Explicitly pass "--discard-comments" to OggEnc2 + some code refactoring.
This commit is contained in:
parent
b6b0413e86
commit
898eb216eb
@ -86,6 +86,7 @@
|
|||||||
<ul>
|
<ul>
|
||||||
<li>Upgraded build environment to Microsoft Visual Studio 2015 with Update-2</li>
|
<li>Upgraded build environment to Microsoft Visual Studio 2015 with Update-2</li>
|
||||||
<li>Fixed the location of temporary intermediate files for SoX-based audio effects</li>
|
<li>Fixed the location of temporary intermediate files for SoX-based audio effects</li>
|
||||||
|
<li>Fixed embedding of meta tags with OggEnc2 when reading directly from OGG/FLAC input file</li>
|
||||||
<li>Enabled the "built-in" resampler for QAAC encoder</li>
|
<li>Enabled the "built-in" resampler for QAAC encoder</li>
|
||||||
<li>The "Algorithm Quality" slider now also affects the QAAC encoder</li>
|
<li>The "Algorithm Quality" slider now also affects the QAAC encoder</li>
|
||||||
<li>Added "AVX" (Advanced Vector Extensions) to CPU feature detection code</li>
|
<li>Added "AVX" (Advanced Vector Extensions) to CPU feature detection code</li>
|
||||||
|
@ -6,6 +6,7 @@
|
|||||||
|
|
||||||
* Upgraded build environment to Microsoft Visual Studio 2015 with Update-2
|
* Upgraded build environment to Microsoft Visual Studio 2015 with Update-2
|
||||||
* Fixed the location of temporary intermediate files for SoX-based audio effects
|
* Fixed the location of temporary intermediate files for SoX-based audio effects
|
||||||
|
* Fixed embedding of meta tags with OggEnc2 when reading directly from OGG/FLAC input file
|
||||||
* Enabled the "built-in" resampler for QAAC encoder
|
* Enabled the "built-in" resampler for QAAC encoder
|
||||||
* The "Algorithm Quality" slider now also affects the QAAC encoder
|
* The "Algorithm Quality" slider now also affects the QAAC encoder
|
||||||
* Added "AVX" (Advanced Vector Extensions) to CPU feature detection code
|
* Added "AVX" (Advanced Vector Extensions) to CPU feature detection code
|
||||||
|
@ -34,8 +34,8 @@
|
|||||||
#define VER_LAMEXP_MINOR_HI 1
|
#define VER_LAMEXP_MINOR_HI 1
|
||||||
#define VER_LAMEXP_MINOR_LO 4
|
#define VER_LAMEXP_MINOR_LO 4
|
||||||
#define VER_LAMEXP_TYPE Alpha
|
#define VER_LAMEXP_TYPE Alpha
|
||||||
#define VER_LAMEXP_PATCH 8
|
#define VER_LAMEXP_PATCH 9
|
||||||
#define VER_LAMEXP_BUILD 1878
|
#define VER_LAMEXP_BUILD 1880
|
||||||
#define VER_LAMEXP_CONFG 1818
|
#define VER_LAMEXP_CONFG 1818
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
@ -128,11 +128,10 @@ static const g_aacEncoderInfo;
|
|||||||
|
|
||||||
AACEncoder::AACEncoder(void)
|
AACEncoder::AACEncoder(void)
|
||||||
:
|
:
|
||||||
m_binary_enc(lamexp_tools_lookup("neroAacEnc.exe")),
|
m_binary_enc(lamexp_tools_lookup(L1S("neroAacEnc.exe"))),
|
||||||
m_binary_tag(lamexp_tools_lookup("neroAacTag.exe")),
|
m_binary_tag(lamexp_tools_lookup(L1S("neroAacTag.exe")))
|
||||||
m_binary_sox(lamexp_tools_lookup("sox.exe"))
|
|
||||||
{
|
{
|
||||||
if(m_binary_enc.isEmpty() || m_binary_tag.isEmpty() || m_binary_sox.isEmpty())
|
if(m_binary_enc.isEmpty() || m_binary_tag.isEmpty())
|
||||||
{
|
{
|
||||||
MUTILS_THROW("Error initializing AAC encoder. Tool 'neroAacEnc.exe' is not registred!");
|
MUTILS_THROW("Error initializing AAC encoder. Tool 'neroAacEnc.exe' is not registred!");
|
||||||
}
|
}
|
||||||
@ -154,13 +153,13 @@ bool AACEncoder::encode(const QString &sourceFile, const AudioFileModel_MetaInfo
|
|||||||
switch(m_configRCMode)
|
switch(m_configRCMode)
|
||||||
{
|
{
|
||||||
case SettingsModel::VBRMode:
|
case SettingsModel::VBRMode:
|
||||||
args << "-q" << QString().sprintf("%.2f", double(qBound(0, m_configBitrate * 5, 100)) / 100.0);
|
args << L1S("-q") << QString().sprintf("%.2f", double(qBound(0, m_configBitrate * 5, 100)) / 100.0);
|
||||||
break;
|
break;
|
||||||
case SettingsModel::ABRMode:
|
case SettingsModel::ABRMode:
|
||||||
args << "-br" << QString::number(qBound(8, index2bitrate(m_configBitrate), 400) * 1000);
|
args << L1S("-br") << QString::number(qBound(8, index2bitrate(m_configBitrate), 400) * 1000);
|
||||||
break;
|
break;
|
||||||
case SettingsModel::CBRMode:
|
case SettingsModel::CBRMode:
|
||||||
args << "-cbr" << QString::number(qBound(8, index2bitrate(m_configBitrate), 400) * 1000);
|
args << L1S("-cbr") << QString::number(qBound(8, index2bitrate(m_configBitrate), 400) * 1000);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
MUTILS_THROW("Bad rate-control mode!");
|
MUTILS_THROW("Bad rate-control mode!");
|
||||||
@ -169,26 +168,26 @@ bool AACEncoder::encode(const QString &sourceFile, const AudioFileModel_MetaInfo
|
|||||||
|
|
||||||
if(m_configEnable2Pass && (m_configRCMode == SettingsModel::ABRMode))
|
if(m_configEnable2Pass && (m_configRCMode == SettingsModel::ABRMode))
|
||||||
{
|
{
|
||||||
args << "-2pass";
|
args << L1S("-2pass");
|
||||||
}
|
}
|
||||||
|
|
||||||
switch(m_configProfile)
|
switch(m_configProfile)
|
||||||
{
|
{
|
||||||
case 1:
|
case 1:
|
||||||
args << "-lc"; //Forces use of LC AAC profile
|
args << L1S("-lc"); //Forces use of LC AAC profile
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
args << "-he"; //Forces use of HE AAC profile
|
args << L1S("-he"); //Forces use of HE AAC profile
|
||||||
break;
|
break;
|
||||||
case 3:
|
case 3:
|
||||||
args << "-hev2"; //Forces use of HEv2 AAC profile
|
args << L1S("-hev2"); //Forces use of HEv2 AAC profile
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!m_configCustomParams.isEmpty()) args << m_configCustomParams.split(" ", QString::SkipEmptyParts);
|
if(!m_configCustomParams.isEmpty()) args << m_configCustomParams.split(" ", QString::SkipEmptyParts);
|
||||||
|
|
||||||
args << "-if" << QDir::toNativeSeparators(sourceFile);
|
args << L1S("-if") << QDir::toNativeSeparators(sourceFile);
|
||||||
args << "-of" << QDir::toNativeSeparators(outputFile);
|
args << L1S("-of") << QDir::toNativeSeparators(outputFile);
|
||||||
|
|
||||||
if(!startProcess(process, m_binary_enc, args))
|
if(!startProcess(process, m_binary_enc, args))
|
||||||
{
|
{
|
||||||
@ -200,9 +199,9 @@ bool AACEncoder::encode(const QString &sourceFile, const AudioFileModel_MetaInfo
|
|||||||
int prevProgress = -1;
|
int prevProgress = -1;
|
||||||
|
|
||||||
|
|
||||||
QRegExp regExp("Processed\\s+(\\d+)\\s+seconds");
|
QRegExp regExp(L1S("Processed\\s+(\\d+)\\s+seconds"));
|
||||||
QRegExp regExp_pass1("First\\s+pass:\\s+processed\\s+(\\d+)\\s+seconds");
|
QRegExp regExp_pass1(L1S("First\\s+pass:\\s+processed\\s+(\\d+)\\s+seconds"));
|
||||||
QRegExp regExp_pass2("Second\\s+pass:\\s+processed\\s+(\\d+)\\s+seconds");
|
QRegExp regExp_pass2(L1S("Second\\s+pass:\\s+processed\\s+(\\d+)\\s+seconds"));
|
||||||
|
|
||||||
while(process.state() != QProcess::NotRunning)
|
while(process.state() != QProcess::NotRunning)
|
||||||
{
|
{
|
||||||
@ -210,7 +209,7 @@ bool AACEncoder::encode(const QString &sourceFile, const AudioFileModel_MetaInfo
|
|||||||
{
|
{
|
||||||
process.kill();
|
process.kill();
|
||||||
bAborted = true;
|
bAborted = true;
|
||||||
emit messageLogged("\nABORTED BY USER !!!");
|
emit messageLogged(L1S("\nABORTED BY USER !!!"));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
process.waitForReadyRead(m_processTimeoutInterval);
|
process.waitForReadyRead(m_processTimeoutInterval);
|
||||||
@ -218,7 +217,7 @@ bool AACEncoder::encode(const QString &sourceFile, const AudioFileModel_MetaInfo
|
|||||||
{
|
{
|
||||||
process.kill();
|
process.kill();
|
||||||
qWarning("NeroAacEnc process timed out <-- killing!");
|
qWarning("NeroAacEnc process timed out <-- killing!");
|
||||||
emit messageLogged("\nPROCESS TIMEOUT !!!");
|
emit messageLogged(L1S("\nPROCESS TIMEOUT !!!"));
|
||||||
bTimeout = true;
|
bTimeout = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -295,7 +294,7 @@ bool AACEncoder::encode(const QString &sourceFile, const AudioFileModel_MetaInfo
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
emit messageLogged("\n-------------------------------\n");
|
emit messageLogged(L1S("\n-------------------------------\n"));
|
||||||
|
|
||||||
args.clear();
|
args.clear();
|
||||||
args << QDir::toNativeSeparators(outputFile);
|
args << QDir::toNativeSeparators(outputFile);
|
||||||
@ -322,7 +321,7 @@ bool AACEncoder::encode(const QString &sourceFile, const AudioFileModel_MetaInfo
|
|||||||
{
|
{
|
||||||
process.kill();
|
process.kill();
|
||||||
bAborted = true;
|
bAborted = true;
|
||||||
emit messageLogged("\nABORTED BY USER !!!");
|
emit messageLogged(L1S("\nABORTED BY USER !!!"));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
process.waitForReadyRead(m_processTimeoutInterval);
|
process.waitForReadyRead(m_processTimeoutInterval);
|
||||||
@ -330,7 +329,7 @@ bool AACEncoder::encode(const QString &sourceFile, const AudioFileModel_MetaInfo
|
|||||||
{
|
{
|
||||||
process.kill();
|
process.kill();
|
||||||
qWarning("NeroAacTag process timed out <-- killing!");
|
qWarning("NeroAacTag process timed out <-- killing!");
|
||||||
emit messageLogged("\nPROCESS TIMEOUT !!!");
|
emit messageLogged(L1S("\nPROCESS TIMEOUT !!!"));
|
||||||
bTimeout = true;
|
bTimeout = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -364,9 +363,9 @@ bool AACEncoder::encode(const QString &sourceFile, const AudioFileModel_MetaInfo
|
|||||||
|
|
||||||
bool AACEncoder::isFormatSupported(const QString &containerType, const QString &containerProfile, const QString &formatType, const QString &formatProfile, const QString &formatVersion)
|
bool AACEncoder::isFormatSupported(const QString &containerType, const QString &containerProfile, const QString &formatType, const QString &formatProfile, const QString &formatVersion)
|
||||||
{
|
{
|
||||||
if(containerType.compare("Wave", Qt::CaseInsensitive) == 0)
|
if(containerType.compare(L1S("Wave"), Qt::CaseInsensitive) == 0)
|
||||||
{
|
{
|
||||||
if(formatType.compare("PCM", Qt::CaseInsensitive) == 0)
|
if(formatType.compare(L1S("PCM"), Qt::CaseInsensitive) == 0)
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -49,7 +49,7 @@ public:
|
|||||||
private:
|
private:
|
||||||
const QString m_binary_enc;
|
const QString m_binary_enc;
|
||||||
const QString m_binary_tag;
|
const QString m_binary_tag;
|
||||||
const QString m_binary_sox;
|
//const QString m_binary_sox;
|
||||||
int m_configProfile;
|
int m_configProfile;
|
||||||
bool m_configEnable2Pass;
|
bool m_configEnable2Pass;
|
||||||
};
|
};
|
||||||
|
@ -134,7 +134,7 @@ static const g_fdkAacEncoderInfo;
|
|||||||
|
|
||||||
FDKAACEncoder::FDKAACEncoder(void)
|
FDKAACEncoder::FDKAACEncoder(void)
|
||||||
:
|
:
|
||||||
m_binary(lamexp_tools_lookup("fdkaac.exe"))
|
m_binary(lamexp_tools_lookup(L1S("fdkaac.exe")))
|
||||||
{
|
{
|
||||||
if(m_binary.isEmpty())
|
if(m_binary.isEmpty())
|
||||||
{
|
{
|
||||||
@ -154,29 +154,29 @@ bool FDKAACEncoder::encode(const QString &sourceFile, const AudioFileModel_MetaI
|
|||||||
QStringList args;
|
QStringList args;
|
||||||
|
|
||||||
QProcessEnvironment env = QProcessEnvironment::systemEnvironment();
|
QProcessEnvironment env = QProcessEnvironment::systemEnvironment();
|
||||||
env.insert("PATH", QDir::toNativeSeparators(QString("%1;%1/QTfiles;%2").arg(QDir(QCoreApplication::applicationDirPath()).canonicalPath(), MUtils::temp_folder())));
|
env.insert(L1S("PATH"), QDir::toNativeSeparators(QString("%1;%1/QTfiles;%2").arg(QDir(QCoreApplication::applicationDirPath()).canonicalPath(), MUtils::temp_folder())));
|
||||||
process.setProcessEnvironment(env);
|
process.setProcessEnvironment(env);
|
||||||
|
|
||||||
switch(m_configProfile)
|
switch(m_configProfile)
|
||||||
{
|
{
|
||||||
case 1:
|
case 1:
|
||||||
args << "-p" << "2";
|
args << L1S("-p") << QString::number(2);
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
args << "-p" << "5";
|
args << L1S("-p") << QString::number(5);
|
||||||
break;
|
break;
|
||||||
case 3:
|
case 3:
|
||||||
args << "-p" << "29";
|
args << L1S("-p") << QString::number(29);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
switch(m_configRCMode)
|
switch(m_configRCMode)
|
||||||
{
|
{
|
||||||
case SettingsModel::CBRMode:
|
case SettingsModel::CBRMode:
|
||||||
args << "-b" << QString::number(qBound(8, index2bitrate(m_configBitrate), 576));
|
args << L1S("-b") << QString::number(qBound(8, index2bitrate(m_configBitrate), 576));
|
||||||
break;
|
break;
|
||||||
case SettingsModel::VBRMode:
|
case SettingsModel::VBRMode:
|
||||||
args << "-m" << QString::number(qBound(1, m_configBitrate + 1 , 5));
|
args << L1S("-m") << QString::number(qBound(1, m_configBitrate + 1 , 5));
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
MUTILS_THROW("Bad rate-control mode!");
|
MUTILS_THROW("Bad rate-control mode!");
|
||||||
@ -185,15 +185,15 @@ bool FDKAACEncoder::encode(const QString &sourceFile, const AudioFileModel_MetaI
|
|||||||
|
|
||||||
if(!m_configCustomParams.isEmpty()) args << m_configCustomParams.split(" ", QString::SkipEmptyParts);
|
if(!m_configCustomParams.isEmpty()) args << m_configCustomParams.split(" ", QString::SkipEmptyParts);
|
||||||
|
|
||||||
if(!metaInfo.title().isEmpty()) args << "--title" << cleanTag(metaInfo.title());
|
if(!metaInfo.title().isEmpty()) args << L1S("--title") << cleanTag(metaInfo.title());
|
||||||
if(!metaInfo.artist().isEmpty()) args << "--artist" << cleanTag(metaInfo.artist());
|
if(!metaInfo.artist().isEmpty()) args << L1S("--artist") << cleanTag(metaInfo.artist());
|
||||||
if(!metaInfo.album().isEmpty()) args << "--album" << cleanTag(metaInfo.album());
|
if(!metaInfo.album().isEmpty()) args << L1S("--album") << cleanTag(metaInfo.album());
|
||||||
if(!metaInfo.genre().isEmpty()) args << "--genre" << cleanTag(metaInfo.genre());
|
if(!metaInfo.genre().isEmpty()) args << L1S("--genre") << cleanTag(metaInfo.genre());
|
||||||
if(!metaInfo.comment().isEmpty()) args << "--comment" << cleanTag( metaInfo.comment());
|
if(!metaInfo.comment().isEmpty()) args << L1S("--comment") << cleanTag( metaInfo.comment());
|
||||||
if(metaInfo.year()) args << "--date" << QString::number(metaInfo.year());
|
if(metaInfo.year()) args << L1S("--date") << QString::number(metaInfo.year());
|
||||||
if(metaInfo.position()) args << "--track" << QString::number(metaInfo.position());
|
if(metaInfo.position()) args << L1S("--track") << QString::number(metaInfo.position());
|
||||||
|
|
||||||
args << "-o" << QDir::toNativeSeparators(outputFile);
|
args << L1S("-o") << QDir::toNativeSeparators(outputFile);
|
||||||
args << QDir::toNativeSeparators(sourceFile);
|
args << QDir::toNativeSeparators(sourceFile);
|
||||||
|
|
||||||
if(!startProcess(process, m_binary, args, QFileInfo(outputFile).canonicalPath()))
|
if(!startProcess(process, m_binary, args, QFileInfo(outputFile).canonicalPath()))
|
||||||
@ -205,7 +205,7 @@ bool FDKAACEncoder::encode(const QString &sourceFile, const AudioFileModel_MetaI
|
|||||||
bool bAborted = false;
|
bool bAborted = false;
|
||||||
int prevProgress = -1;
|
int prevProgress = -1;
|
||||||
|
|
||||||
QRegExp regExp("\\[(\\d+)%\\]\\s+(\\d+):(\\d+)");
|
QRegExp regExp(L1S("\\[(\\d+)%\\]\\s+(\\d+):(\\d+)"));
|
||||||
|
|
||||||
while(process.state() != QProcess::NotRunning)
|
while(process.state() != QProcess::NotRunning)
|
||||||
{
|
{
|
||||||
@ -213,7 +213,7 @@ bool FDKAACEncoder::encode(const QString &sourceFile, const AudioFileModel_MetaI
|
|||||||
{
|
{
|
||||||
process.kill();
|
process.kill();
|
||||||
bAborted = true;
|
bAborted = true;
|
||||||
emit messageLogged("\nABORTED BY USER !!!");
|
emit messageLogged(L1S("\nABORTED BY USER !!!"));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
process.waitForReadyRead(m_processTimeoutInterval);
|
process.waitForReadyRead(m_processTimeoutInterval);
|
||||||
@ -221,7 +221,7 @@ bool FDKAACEncoder::encode(const QString &sourceFile, const AudioFileModel_MetaI
|
|||||||
{
|
{
|
||||||
process.kill();
|
process.kill();
|
||||||
qWarning("FDKAAC process timed out <-- killing!");
|
qWarning("FDKAAC process timed out <-- killing!");
|
||||||
emit messageLogged("\nPROCESS TIMEOUT !!!");
|
emit messageLogged(L1S("\nPROCESS TIMEOUT !!!"));
|
||||||
bTimeout = true;
|
bTimeout = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -266,9 +266,9 @@ bool FDKAACEncoder::encode(const QString &sourceFile, const AudioFileModel_MetaI
|
|||||||
|
|
||||||
bool FDKAACEncoder::isFormatSupported(const QString &containerType, const QString &containerProfile, const QString &formatType, const QString &formatProfile, const QString &formatVersion)
|
bool FDKAACEncoder::isFormatSupported(const QString &containerType, const QString &containerProfile, const QString &formatType, const QString &formatProfile, const QString &formatVersion)
|
||||||
{
|
{
|
||||||
if(containerType.compare("Wave", Qt::CaseInsensitive) == 0)
|
if(containerType.compare(L1S("Wave"), Qt::CaseInsensitive) == 0)
|
||||||
{
|
{
|
||||||
if(formatType.compare("PCM", Qt::CaseInsensitive) == 0)
|
if(formatType.compare(L1S("PCM"), Qt::CaseInsensitive) == 0)
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -131,8 +131,8 @@ static const g_fhgAacEncoderInfo;
|
|||||||
|
|
||||||
FHGAACEncoder::FHGAACEncoder(void)
|
FHGAACEncoder::FHGAACEncoder(void)
|
||||||
:
|
:
|
||||||
m_binary_enc(lamexp_tools_lookup("fhgaacenc.exe")),
|
m_binary_enc(lamexp_tools_lookup(L1S("fhgaacenc.exe"))),
|
||||||
m_binary_dll(lamexp_tools_lookup("enc_fhgaac.dll"))
|
m_binary_dll(lamexp_tools_lookup(L1S("enc_fhgaac.dll")))
|
||||||
{
|
{
|
||||||
if(m_binary_enc.isEmpty() || m_binary_dll.isEmpty())
|
if(m_binary_enc.isEmpty() || m_binary_dll.isEmpty())
|
||||||
{
|
{
|
||||||
@ -158,15 +158,15 @@ bool FHGAACEncoder::encode(const QString &sourceFile, const AudioFileModel_MetaI
|
|||||||
switch(m_configProfile)
|
switch(m_configProfile)
|
||||||
{
|
{
|
||||||
case 1:
|
case 1:
|
||||||
args << "--profile" << "lc"; //Forces use of LC AAC profile
|
args << L1S("--profile") << L1S("lc"); //Forces use of LC AAC profile
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
maxBitrate = 128;
|
maxBitrate = 128;
|
||||||
args << "--profile" << "he"; //Forces use of HE AAC profile
|
args << L1S("--profile") << L1S("he"); //Forces use of HE AAC profile
|
||||||
break;
|
break;
|
||||||
case 3:
|
case 3:
|
||||||
maxBitrate = 56;
|
maxBitrate = 56;
|
||||||
args << "--profile" << "hev2"; //Forces use of HEv2 AAC profile
|
args << L1S("--profile") << L1S("hev2"); //Forces use of HEv2 AAC profile
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -174,10 +174,10 @@ bool FHGAACEncoder::encode(const QString &sourceFile, const AudioFileModel_MetaI
|
|||||||
switch(m_configRCMode)
|
switch(m_configRCMode)
|
||||||
{
|
{
|
||||||
case SettingsModel::CBRMode:
|
case SettingsModel::CBRMode:
|
||||||
args << "--cbr" << QString::number(qBound(8, index2bitrate(m_configBitrate), maxBitrate));
|
args << L1S("--cbr") << QString::number(qBound(8, index2bitrate(m_configBitrate), maxBitrate));
|
||||||
break;
|
break;
|
||||||
case SettingsModel::VBRMode:
|
case SettingsModel::VBRMode:
|
||||||
args << "--vbr" << QString::number(qBound(1, m_configBitrate + 1, 6));
|
args << L1S("--vbr") << QString::number(qBound(1, m_configBitrate + 1, 6));
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
MUTILS_THROW("Bad rate-control mode!");
|
MUTILS_THROW("Bad rate-control mode!");
|
||||||
@ -200,7 +200,7 @@ bool FHGAACEncoder::encode(const QString &sourceFile, const AudioFileModel_MetaI
|
|||||||
bool bAborted = false;
|
bool bAborted = false;
|
||||||
int prevProgress = -1;
|
int prevProgress = -1;
|
||||||
|
|
||||||
QRegExp regExp("Progress:\\s*(\\d+)%");
|
QRegExp regExp(L1S("Progress:\\s*(\\d+)%"));
|
||||||
|
|
||||||
while(process.state() != QProcess::NotRunning)
|
while(process.state() != QProcess::NotRunning)
|
||||||
{
|
{
|
||||||
@ -208,7 +208,7 @@ bool FHGAACEncoder::encode(const QString &sourceFile, const AudioFileModel_MetaI
|
|||||||
{
|
{
|
||||||
process.kill();
|
process.kill();
|
||||||
bAborted = true;
|
bAborted = true;
|
||||||
emit messageLogged("\nABORTED BY USER !!!");
|
emit messageLogged(L1S("\nABORTED BY USER !!!"));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
process.waitForReadyRead(m_processTimeoutInterval);
|
process.waitForReadyRead(m_processTimeoutInterval);
|
||||||
@ -216,7 +216,7 @@ bool FHGAACEncoder::encode(const QString &sourceFile, const AudioFileModel_MetaI
|
|||||||
{
|
{
|
||||||
process.kill();
|
process.kill();
|
||||||
qWarning("FhgAacEnc process timed out <-- killing!");
|
qWarning("FhgAacEnc process timed out <-- killing!");
|
||||||
emit messageLogged("\nPROCESS TIMEOUT !!!");
|
emit messageLogged(L1S("\nPROCESS TIMEOUT !!!"));
|
||||||
bTimeout = true;
|
bTimeout = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -261,9 +261,9 @@ bool FHGAACEncoder::encode(const QString &sourceFile, const AudioFileModel_MetaI
|
|||||||
|
|
||||||
bool FHGAACEncoder::isFormatSupported(const QString &containerType, const QString &containerProfile, const QString &formatType, const QString &formatProfile, const QString &formatVersion)
|
bool FHGAACEncoder::isFormatSupported(const QString &containerType, const QString &containerProfile, const QString &formatType, const QString &formatProfile, const QString &formatVersion)
|
||||||
{
|
{
|
||||||
if(containerType.compare("Wave", Qt::CaseInsensitive) == 0)
|
if(containerType.compare(L1S("Wave"), Qt::CaseInsensitive) == 0)
|
||||||
{
|
{
|
||||||
if(formatType.compare("PCM", Qt::CaseInsensitive) == 0)
|
if(formatType.compare(L1S("PCM"), Qt::CaseInsensitive) == 0)
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -141,8 +141,8 @@ static const g_qaacEncoderInfo;
|
|||||||
|
|
||||||
QAACEncoder::QAACEncoder(void)
|
QAACEncoder::QAACEncoder(void)
|
||||||
:
|
:
|
||||||
m_binary_qaac32(lamexp_tools_lookup("qaac.exe")),
|
m_binary_qaac32(lamexp_tools_lookup(L1S("qaac.exe"))),
|
||||||
m_binary_qaac64(lamexp_tools_lookup("qaac64.exe"))
|
m_binary_qaac64(lamexp_tools_lookup(L1S("qaac64.exe")))
|
||||||
{
|
{
|
||||||
if(m_binary_qaac32.isEmpty() && m_binary_qaac64.isEmpty())
|
if(m_binary_qaac32.isEmpty() && m_binary_qaac64.isEmpty())
|
||||||
{
|
{
|
||||||
@ -165,7 +165,7 @@ bool QAACEncoder::encode(const QString &sourceFile, const AudioFileModel_MetaInf
|
|||||||
QStringList args;
|
QStringList args;
|
||||||
|
|
||||||
QProcessEnvironment env = QProcessEnvironment::systemEnvironment();
|
QProcessEnvironment env = QProcessEnvironment::systemEnvironment();
|
||||||
env.insert("PATH", QDir::toNativeSeparators(QString("%1;%1/QTfiles;%2").arg(QDir(QCoreApplication::applicationDirPath()).canonicalPath(), MUtils::temp_folder())));
|
env.insert(L1S("PATH"), QDir::toNativeSeparators(QString("%1;%1/QTfiles;%2").arg(QDir(QCoreApplication::applicationDirPath()).canonicalPath(), MUtils::temp_folder())));
|
||||||
process.setProcessEnvironment(env);
|
process.setProcessEnvironment(env);
|
||||||
|
|
||||||
if(m_configRCMode != SettingsModel::VBRMode)
|
if(m_configRCMode != SettingsModel::VBRMode)
|
||||||
@ -174,7 +174,7 @@ bool QAACEncoder::encode(const QString &sourceFile, const AudioFileModel_MetaInf
|
|||||||
{
|
{
|
||||||
case 2:
|
case 2:
|
||||||
case 3:
|
case 3:
|
||||||
args << "--he"; //Forces use of HE AAC profile (there is no explicit HEv2 switch for QAAC)
|
args << L1S("--he"); //Forces use of HE AAC profile (there is no explicit HEv2 switch for QAAC)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -182,39 +182,39 @@ bool QAACEncoder::encode(const QString &sourceFile, const AudioFileModel_MetaInf
|
|||||||
switch(m_configRCMode)
|
switch(m_configRCMode)
|
||||||
{
|
{
|
||||||
case SettingsModel::CBRMode:
|
case SettingsModel::CBRMode:
|
||||||
args << "--cbr" << QString::number(qBound(8, index2bitrate(m_configBitrate), 576));
|
args << L1S("--cbr") << QString::number(qBound(8, index2bitrate(m_configBitrate), 576));
|
||||||
break;
|
break;
|
||||||
case SettingsModel::ABRMode:
|
case SettingsModel::ABRMode:
|
||||||
args << "--cvbr" << QString::number(qBound(8, index2bitrate(m_configBitrate), 576));
|
args << L1S("--cvbr") << QString::number(qBound(8, index2bitrate(m_configBitrate), 576));
|
||||||
break;
|
break;
|
||||||
case SettingsModel::VBRMode:
|
case SettingsModel::VBRMode:
|
||||||
args << "--tvbr" << QString::number(g_qaacVBRQualityLUT[qBound(0, m_configBitrate , 14)]);
|
args << L1S("--tvbr") << QString::number(g_qaacVBRQualityLUT[qBound(0, m_configBitrate , 14)]);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
MUTILS_THROW("Bad rate-control mode!");
|
MUTILS_THROW("Bad rate-control mode!");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
args << "--quality" << QString::number(qBound(0, m_algorithmQuality, 2));
|
args << L1S("--quality") << QString::number(qBound(0, m_algorithmQuality, 2));
|
||||||
if (m_configSamplingRate > 0)
|
if (m_configSamplingRate > 0)
|
||||||
{
|
{
|
||||||
args << QString("--native-resampler=bats,%0").arg(QString::number(RESAMPLING_QUALITY));
|
args << QString("--native-resampler=bats,%0").arg(QString::number(RESAMPLING_QUALITY));
|
||||||
args << "--rate" << QString::number(m_configSamplingRate);
|
args << L1S("--rate") << QString::number(m_configSamplingRate);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!m_configCustomParams.isEmpty()) args << m_configCustomParams.split(" ", QString::SkipEmptyParts);
|
if(!m_configCustomParams.isEmpty()) args << m_configCustomParams.split(" ", QString::SkipEmptyParts);
|
||||||
|
|
||||||
if(!metaInfo.title().isEmpty()) args << "--title" << cleanTag(metaInfo.title());
|
if(!metaInfo.title().isEmpty()) args << L1S("--title") << cleanTag(metaInfo.title());
|
||||||
if(!metaInfo.artist().isEmpty()) args << "--artist" << cleanTag(metaInfo.artist());
|
if(!metaInfo.artist().isEmpty()) args << L1S("--artist") << cleanTag(metaInfo.artist());
|
||||||
if(!metaInfo.album().isEmpty()) args << "--album" << cleanTag(metaInfo.album());
|
if(!metaInfo.album().isEmpty()) args << L1S("--album") << cleanTag(metaInfo.album());
|
||||||
if(!metaInfo.genre().isEmpty()) args << "--genre" << cleanTag(metaInfo.genre());
|
if(!metaInfo.genre().isEmpty()) args << L1S("--genre") << cleanTag(metaInfo.genre());
|
||||||
if(!metaInfo.comment().isEmpty()) args << "--comment" << cleanTag( metaInfo.comment());
|
if(!metaInfo.comment().isEmpty()) args << L1S("--comment") << cleanTag( metaInfo.comment());
|
||||||
if(metaInfo.year()) args << "--date" << QString::number(metaInfo.year());
|
if(metaInfo.year()) args << L1S("--date") << QString::number(metaInfo.year());
|
||||||
if(metaInfo.position()) args << "--track" << QString::number(metaInfo.position());
|
if(metaInfo.position()) args << L1S("--track") << QString::number(metaInfo.position());
|
||||||
if(!metaInfo.cover().isEmpty()) args << "--artwork" << metaInfo.cover();
|
if(!metaInfo.cover().isEmpty()) args << L1S("--artwork") << metaInfo.cover();
|
||||||
|
|
||||||
args << "-d" << ".";
|
args << L1S("-d") << L1S(".");
|
||||||
args << "-o" << QDir::toNativeSeparators(outputFile);
|
args << L1S("-o") << QDir::toNativeSeparators(outputFile);
|
||||||
args << QDir::toNativeSeparators(sourceFile);
|
args << QDir::toNativeSeparators(sourceFile);
|
||||||
|
|
||||||
if(!startProcess(process, qaac_bin, args, QFileInfo(outputFile).canonicalPath()))
|
if(!startProcess(process, qaac_bin, args, QFileInfo(outputFile).canonicalPath()))
|
||||||
@ -226,7 +226,7 @@ bool QAACEncoder::encode(const QString &sourceFile, const AudioFileModel_MetaInf
|
|||||||
bool bAborted = false;
|
bool bAborted = false;
|
||||||
int prevProgress = -1;
|
int prevProgress = -1;
|
||||||
|
|
||||||
QRegExp regExp("\\[(\\d+)\\.(\\d)%\\]");
|
QRegExp regExp(L1S("\\[(\\d+)\\.(\\d)%\\]"));
|
||||||
|
|
||||||
while(process.state() != QProcess::NotRunning)
|
while(process.state() != QProcess::NotRunning)
|
||||||
{
|
{
|
||||||
@ -234,7 +234,7 @@ bool QAACEncoder::encode(const QString &sourceFile, const AudioFileModel_MetaInf
|
|||||||
{
|
{
|
||||||
process.kill();
|
process.kill();
|
||||||
bAborted = true;
|
bAborted = true;
|
||||||
emit messageLogged("\nABORTED BY USER !!!");
|
emit messageLogged(L1S("\nABORTED BY USER !!!"));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
process.waitForReadyRead(m_processTimeoutInterval);
|
process.waitForReadyRead(m_processTimeoutInterval);
|
||||||
@ -242,7 +242,7 @@ bool QAACEncoder::encode(const QString &sourceFile, const AudioFileModel_MetaInf
|
|||||||
{
|
{
|
||||||
process.kill();
|
process.kill();
|
||||||
qWarning("QAAC process timed out <-- killing!");
|
qWarning("QAAC process timed out <-- killing!");
|
||||||
emit messageLogged("\nPROCESS TIMEOUT !!!");
|
emit messageLogged(L1S("\nPROCESS TIMEOUT !!!"));
|
||||||
bTimeout = true;
|
bTimeout = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -287,9 +287,9 @@ bool QAACEncoder::encode(const QString &sourceFile, const AudioFileModel_MetaInf
|
|||||||
|
|
||||||
bool QAACEncoder::isFormatSupported(const QString &containerType, const QString &containerProfile, const QString &formatType, const QString &formatProfile, const QString &formatVersion)
|
bool QAACEncoder::isFormatSupported(const QString &containerType, const QString &containerProfile, const QString &formatType, const QString &formatProfile, const QString &formatVersion)
|
||||||
{
|
{
|
||||||
if(containerType.compare("Wave", Qt::CaseInsensitive) == 0)
|
if(containerType.compare(L1S("Wave"), Qt::CaseInsensitive) == 0)
|
||||||
{
|
{
|
||||||
if(formatType.compare("PCM", Qt::CaseInsensitive) == 0)
|
if(formatType.compare(L1S("PCM"), Qt::CaseInsensitive) == 0)
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -127,7 +127,7 @@ static const g_aftenEncoderInfo;
|
|||||||
|
|
||||||
AC3Encoder::AC3Encoder(void)
|
AC3Encoder::AC3Encoder(void)
|
||||||
:
|
:
|
||||||
m_binary(lamexp_tools_lookup("aften.exe"))
|
m_binary(lamexp_tools_lookup(L1S("aften.exe")))
|
||||||
{
|
{
|
||||||
if(m_binary.isEmpty())
|
if(m_binary.isEmpty())
|
||||||
{
|
{
|
||||||
@ -152,10 +152,10 @@ bool AC3Encoder::encode(const QString &sourceFile, const AudioFileModel_MetaInfo
|
|||||||
switch(m_configRCMode)
|
switch(m_configRCMode)
|
||||||
{
|
{
|
||||||
case SettingsModel::VBRMode:
|
case SettingsModel::VBRMode:
|
||||||
args << "-q" << QString::number(qBound(0, m_configBitrate * 16, 1023));
|
args << L1S("-q") << QString::number(qBound(0, m_configBitrate * 16, 1023));
|
||||||
break;
|
break;
|
||||||
case SettingsModel::CBRMode:
|
case SettingsModel::CBRMode:
|
||||||
args << "-b" << QString::number(g_ac3BitratesLUT[qBound(0, m_configBitrate, 18)]);
|
args << L1S("-b") << QString::number(g_ac3BitratesLUT[qBound(0, m_configBitrate, 18)]);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
MUTILS_THROW("Bad rate-control mode!");
|
MUTILS_THROW("Bad rate-control mode!");
|
||||||
@ -164,19 +164,19 @@ bool AC3Encoder::encode(const QString &sourceFile, const AudioFileModel_MetaInfo
|
|||||||
|
|
||||||
if(m_configAudioCodingMode >= 1)
|
if(m_configAudioCodingMode >= 1)
|
||||||
{
|
{
|
||||||
args << "-acmod" << QString::number(m_configAudioCodingMode - 1);
|
args << L1S("-acmod") << QString::number(m_configAudioCodingMode - 1);
|
||||||
}
|
}
|
||||||
if(m_configDynamicRangeCompression != 5)
|
if(m_configDynamicRangeCompression != 5)
|
||||||
{
|
{
|
||||||
args << "-dynrng" << QString::number(m_configDynamicRangeCompression);
|
args << L1S("-dynrng") << QString::number(m_configDynamicRangeCompression);
|
||||||
}
|
}
|
||||||
if(m_configExponentSearchSize != 8)
|
if(m_configExponentSearchSize != 8)
|
||||||
{
|
{
|
||||||
args << "-exps" << QString::number(m_configExponentSearchSize);
|
args << L1S("-exps") << QString::number(m_configExponentSearchSize);
|
||||||
}
|
}
|
||||||
if(m_configFastBitAllocation)
|
if(m_configFastBitAllocation)
|
||||||
{
|
{
|
||||||
args << "-fba" << QString::number(1);
|
args << L1S("-fba") << QString::number(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!m_configCustomParams.isEmpty()) args << m_configCustomParams.split(" ", QString::SkipEmptyParts);
|
if(!m_configCustomParams.isEmpty()) args << m_configCustomParams.split(" ", QString::SkipEmptyParts);
|
||||||
@ -193,7 +193,7 @@ bool AC3Encoder::encode(const QString &sourceFile, const AudioFileModel_MetaInfo
|
|||||||
bool bAborted = false;
|
bool bAborted = false;
|
||||||
int prevProgress = -1;
|
int prevProgress = -1;
|
||||||
|
|
||||||
QRegExp regExp("progress:(\\s+)(\\d+)%(\\s+)\\|");
|
QRegExp regExp(L1S("progress:(\\s+)(\\d+)%(\\s+)\\|"));
|
||||||
|
|
||||||
while(process.state() != QProcess::NotRunning)
|
while(process.state() != QProcess::NotRunning)
|
||||||
{
|
{
|
||||||
@ -201,7 +201,7 @@ bool AC3Encoder::encode(const QString &sourceFile, const AudioFileModel_MetaInfo
|
|||||||
{
|
{
|
||||||
process.kill();
|
process.kill();
|
||||||
bAborted = true;
|
bAborted = true;
|
||||||
emit messageLogged("\nABORTED BY USER !!!");
|
emit messageLogged(L1S("\nABORTED BY USER !!!"));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
process.waitForReadyRead(m_processTimeoutInterval);
|
process.waitForReadyRead(m_processTimeoutInterval);
|
||||||
@ -209,7 +209,7 @@ bool AC3Encoder::encode(const QString &sourceFile, const AudioFileModel_MetaInfo
|
|||||||
{
|
{
|
||||||
process.kill();
|
process.kill();
|
||||||
qWarning("Aften process timed out <-- killing!");
|
qWarning("Aften process timed out <-- killing!");
|
||||||
emit messageLogged("\nPROCESS TIMEOUT !!!");
|
emit messageLogged(L1S("\nPROCESS TIMEOUT !!!"));
|
||||||
bTimeout = true;
|
bTimeout = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -286,9 +286,9 @@ const unsigned int *AC3Encoder::supportedSamplerates(void)
|
|||||||
|
|
||||||
bool AC3Encoder::isFormatSupported(const QString &containerType, const QString &containerProfile, const QString &formatType, const QString &formatProfile, const QString &formatVersion)
|
bool AC3Encoder::isFormatSupported(const QString &containerType, const QString &containerProfile, const QString &formatType, const QString &formatProfile, const QString &formatVersion)
|
||||||
{
|
{
|
||||||
if(containerType.compare("Wave", Qt::CaseInsensitive) == 0)
|
if(containerType.compare(L1S("Wave"), Qt::CaseInsensitive) == 0)
|
||||||
{
|
{
|
||||||
if(formatType.compare("PCM", Qt::CaseInsensitive) == 0)
|
if(formatType.compare(L1S("PCM"), Qt::CaseInsensitive) == 0)
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -129,7 +129,7 @@ static const g_dcaEncoderInfo;
|
|||||||
|
|
||||||
DCAEncoder::DCAEncoder(void)
|
DCAEncoder::DCAEncoder(void)
|
||||||
:
|
:
|
||||||
m_binary(lamexp_tools_lookup("dcaenc.exe"))
|
m_binary(lamexp_tools_lookup(L1S("dcaenc.exe")))
|
||||||
{
|
{
|
||||||
if(m_binary.isEmpty())
|
if(m_binary.isEmpty())
|
||||||
{
|
{
|
||||||
@ -146,9 +146,9 @@ bool DCAEncoder::encode(const QString &sourceFile, const AudioFileModel_MetaInfo
|
|||||||
QProcess process;
|
QProcess process;
|
||||||
QStringList args;
|
QStringList args;
|
||||||
|
|
||||||
args << "-i" << QDir::toNativeSeparators(sourceFile);
|
args << L1S("-i") << QDir::toNativeSeparators(sourceFile);
|
||||||
args << "-o" << QDir::toNativeSeparators(outputFile);
|
args << L1S("-o") << QDir::toNativeSeparators(outputFile);
|
||||||
args << "-b" << QString::number(qBound(32, index2bitrate(m_configBitrate), 4096));
|
args << L1S("-b") << QString::number(qBound(32, index2bitrate(m_configBitrate), 4096));
|
||||||
|
|
||||||
if(!startProcess(process, m_binary, args))
|
if(!startProcess(process, m_binary, args))
|
||||||
{
|
{
|
||||||
@ -159,7 +159,7 @@ bool DCAEncoder::encode(const QString &sourceFile, const AudioFileModel_MetaInfo
|
|||||||
bool bAborted = false;
|
bool bAborted = false;
|
||||||
int prevProgress = -1;
|
int prevProgress = -1;
|
||||||
|
|
||||||
QRegExp regExp("\\[(\\d+)\\.(\\d+)%\\]");
|
QRegExp regExp(L1S("\\[(\\d+)\\.(\\d+)%\\]"));
|
||||||
|
|
||||||
while(process.state() != QProcess::NotRunning)
|
while(process.state() != QProcess::NotRunning)
|
||||||
{
|
{
|
||||||
@ -167,7 +167,7 @@ bool DCAEncoder::encode(const QString &sourceFile, const AudioFileModel_MetaInfo
|
|||||||
{
|
{
|
||||||
process.kill();
|
process.kill();
|
||||||
bAborted = true;
|
bAborted = true;
|
||||||
emit messageLogged("\nABORTED BY USER !!!");
|
emit messageLogged(L1S("\nABORTED BY USER !!!"));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
process.waitForReadyRead(m_processTimeoutInterval);
|
process.waitForReadyRead(m_processTimeoutInterval);
|
||||||
@ -175,7 +175,7 @@ bool DCAEncoder::encode(const QString &sourceFile, const AudioFileModel_MetaInfo
|
|||||||
{
|
{
|
||||||
process.kill();
|
process.kill();
|
||||||
qWarning("DCAENC process timed out <-- killing!");
|
qWarning("DCAENC process timed out <-- killing!");
|
||||||
emit messageLogged("\nPROCESS TIMEOUT !!!");
|
emit messageLogged(L1S("\nPROCESS TIMEOUT !!!"));
|
||||||
bTimeout = true;
|
bTimeout = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -220,9 +220,9 @@ bool DCAEncoder::encode(const QString &sourceFile, const AudioFileModel_MetaInfo
|
|||||||
|
|
||||||
bool DCAEncoder::isFormatSupported(const QString &containerType, const QString &containerProfile, const QString &formatType, const QString &formatProfile, const QString &formatVersion)
|
bool DCAEncoder::isFormatSupported(const QString &containerType, const QString &containerProfile, const QString &formatType, const QString &formatProfile, const QString &formatVersion)
|
||||||
{
|
{
|
||||||
if(containerType.compare("Wave", Qt::CaseInsensitive) == 0)
|
if(containerType.compare(L1S("Wave"), Qt::CaseInsensitive) == 0)
|
||||||
{
|
{
|
||||||
if(formatType.compare("PCM", Qt::CaseInsensitive) == 0)
|
if(formatType.compare(L1S("PCM"), Qt::CaseInsensitive) == 0)
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -123,7 +123,7 @@ static const g_flacEncoderInfo;
|
|||||||
|
|
||||||
FLACEncoder::FLACEncoder(void)
|
FLACEncoder::FLACEncoder(void)
|
||||||
:
|
:
|
||||||
m_binary(lamexp_tools_lookup("flac.exe"))
|
m_binary(lamexp_tools_lookup(L1S("flac.exe")))
|
||||||
{
|
{
|
||||||
if(m_binary.isEmpty())
|
if(m_binary.isEmpty())
|
||||||
{
|
{
|
||||||
@ -141,22 +141,22 @@ bool FLACEncoder::encode(const QString &sourceFile, const AudioFileModel_MetaInf
|
|||||||
QStringList args;
|
QStringList args;
|
||||||
|
|
||||||
args << QString("-%1").arg(QString::number(qBound(0, m_configBitrate, 8)));
|
args << QString("-%1").arg(QString::number(qBound(0, m_configBitrate, 8)));
|
||||||
args << "--channel-map=none";
|
args << L1S("--channel-map=none");
|
||||||
|
|
||||||
if(!metaInfo.title().isEmpty()) args << "-T" << QString("title=%1").arg(cleanTag(metaInfo.title()));
|
if(!metaInfo.title().isEmpty()) args << L1S("-T") << QString("title=%1").arg(cleanTag(metaInfo.title()));
|
||||||
if(!metaInfo.artist().isEmpty()) args << "-T" << QString("artist=%1").arg(cleanTag(metaInfo.artist()));
|
if(!metaInfo.artist().isEmpty()) args << L1S("-T") << QString("artist=%1").arg(cleanTag(metaInfo.artist()));
|
||||||
if(!metaInfo.album().isEmpty()) args << "-T" << QString("album=%1").arg(cleanTag(metaInfo.album()));
|
if(!metaInfo.album().isEmpty()) args << L1S("-T") << QString("album=%1").arg(cleanTag(metaInfo.album()));
|
||||||
if(!metaInfo.genre().isEmpty()) args << "-T" << QString("genre=%1").arg(cleanTag(metaInfo.genre()));
|
if(!metaInfo.genre().isEmpty()) args << L1S("-T") << QString("genre=%1").arg(cleanTag(metaInfo.genre()));
|
||||||
if(!metaInfo.comment().isEmpty()) args << "-T" << QString("comment=%1").arg(cleanTag(metaInfo.comment()));
|
if(!metaInfo.comment().isEmpty()) args << L1S("-T") << QString("comment=%1").arg(cleanTag(metaInfo.comment()));
|
||||||
if(metaInfo.year()) args << "-T" << QString("date=%1").arg(QString::number(metaInfo.year()));
|
if(metaInfo.year()) args << L1S("-T") << QString("date=%1").arg(QString::number(metaInfo.year()));
|
||||||
if(metaInfo.position()) args << "-T" << QString("track=%1").arg(QString::number(metaInfo.position()));
|
if(metaInfo.position()) args << L1S("-T") << QString("track=%1").arg(QString::number(metaInfo.position()));
|
||||||
if(!metaInfo.cover().isEmpty()) args << QString("--picture=%1").arg(metaInfo.cover());
|
if(!metaInfo.cover().isEmpty()) args << QString("--picture=%1").arg(metaInfo.cover());
|
||||||
|
|
||||||
//args << "--tv" << QString().sprintf("Encoder=LameXP v%d.%02d.%04d [%s]", lamexp_version_major(), lamexp_version_minor(), lamexp_version_build(), lamexp_version_release());
|
//args << "--tv" << QString().sprintf("Encoder=LameXP v%d.%02d.%04d [%s]", lamexp_version_major(), lamexp_version_minor(), lamexp_version_build(), lamexp_version_release());
|
||||||
|
|
||||||
if(!m_configCustomParams.isEmpty()) args << m_configCustomParams.split(" ", QString::SkipEmptyParts);
|
if(!m_configCustomParams.isEmpty()) args << m_configCustomParams.split(" ", QString::SkipEmptyParts);
|
||||||
|
|
||||||
args << "-f" << "-o" << QDir::toNativeSeparators(outputFile);
|
args << L1S("-f") << L1S("-o") << QDir::toNativeSeparators(outputFile);
|
||||||
args << QDir::toNativeSeparators(sourceFile);
|
args << QDir::toNativeSeparators(sourceFile);
|
||||||
|
|
||||||
if(!startProcess(process, m_binary, args))
|
if(!startProcess(process, m_binary, args))
|
||||||
@ -168,7 +168,7 @@ bool FLACEncoder::encode(const QString &sourceFile, const AudioFileModel_MetaInf
|
|||||||
bool bAborted = false;
|
bool bAborted = false;
|
||||||
int prevProgress = -1;
|
int prevProgress = -1;
|
||||||
|
|
||||||
QRegExp regExp("\\b(\\d+)% complete");
|
QRegExp regExp(L1S("\\b(\\d+)% complete"));
|
||||||
|
|
||||||
while(process.state() != QProcess::NotRunning)
|
while(process.state() != QProcess::NotRunning)
|
||||||
{
|
{
|
||||||
@ -176,7 +176,7 @@ bool FLACEncoder::encode(const QString &sourceFile, const AudioFileModel_MetaInf
|
|||||||
{
|
{
|
||||||
process.kill();
|
process.kill();
|
||||||
bAborted = true;
|
bAborted = true;
|
||||||
emit messageLogged("\nABORTED BY USER !!!");
|
emit messageLogged(L1S("\nABORTED BY USER !!!"));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
process.waitForReadyRead(m_processTimeoutInterval);
|
process.waitForReadyRead(m_processTimeoutInterval);
|
||||||
@ -184,7 +184,7 @@ bool FLACEncoder::encode(const QString &sourceFile, const AudioFileModel_MetaInf
|
|||||||
{
|
{
|
||||||
process.kill();
|
process.kill();
|
||||||
qWarning("FLAC process timed out <-- killing!");
|
qWarning("FLAC process timed out <-- killing!");
|
||||||
emit messageLogged("\nPROCESS TIMEOUT !!!");
|
emit messageLogged(L1S("\nPROCESS TIMEOUT !!!"));
|
||||||
bTimeout = true;
|
bTimeout = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -229,9 +229,9 @@ bool FLACEncoder::encode(const QString &sourceFile, const AudioFileModel_MetaInf
|
|||||||
|
|
||||||
bool FLACEncoder::isFormatSupported(const QString &containerType, const QString &containerProfile, const QString &formatType, const QString &formatProfile, const QString &formatVersion)
|
bool FLACEncoder::isFormatSupported(const QString &containerType, const QString &containerProfile, const QString &formatType, const QString &formatProfile, const QString &formatVersion)
|
||||||
{
|
{
|
||||||
if(containerType.compare("Wave", Qt::CaseInsensitive) == 0)
|
if(containerType.compare(L1S("Wave"), Qt::CaseInsensitive) == 0)
|
||||||
{
|
{
|
||||||
if(formatType.compare("PCM", Qt::CaseInsensitive) == 0)
|
if(formatType.compare(L1S("PCM"), Qt::CaseInsensitive) == 0)
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -123,8 +123,8 @@ static const g_macEncoderInfo;
|
|||||||
|
|
||||||
MACEncoder::MACEncoder(void)
|
MACEncoder::MACEncoder(void)
|
||||||
:
|
:
|
||||||
m_binary_enc(lamexp_tools_lookup("mac.exe")),
|
m_binary_enc(lamexp_tools_lookup(L1S("mac.exe"))),
|
||||||
m_binary_tag(lamexp_tools_lookup("tag.exe"))
|
m_binary_tag(lamexp_tools_lookup(L1S("tag.exe")))
|
||||||
{
|
{
|
||||||
if(m_binary_enc.isEmpty() || m_binary_tag.isEmpty())
|
if(m_binary_enc.isEmpty() || m_binary_tag.isEmpty())
|
||||||
{
|
{
|
||||||
@ -165,7 +165,7 @@ bool MACEncoder::encode(const QString &sourceFile, const AudioFileModel_MetaInfo
|
|||||||
bool bAborted = false;
|
bool bAborted = false;
|
||||||
int prevProgress = -1;
|
int prevProgress = -1;
|
||||||
|
|
||||||
QRegExp regExp("Progress: (\\d+).(\\d+)%");
|
QRegExp regExp(L1S("Progress: (\\d+).(\\d+)%"));
|
||||||
|
|
||||||
while(process.state() != QProcess::NotRunning)
|
while(process.state() != QProcess::NotRunning)
|
||||||
{
|
{
|
||||||
@ -173,7 +173,7 @@ bool MACEncoder::encode(const QString &sourceFile, const AudioFileModel_MetaInfo
|
|||||||
{
|
{
|
||||||
process.kill();
|
process.kill();
|
||||||
bAborted = true;
|
bAborted = true;
|
||||||
emit messageLogged("\nABORTED BY USER !!!");
|
emit messageLogged(L1S("\nABORTED BY USER !!!"));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
process.waitForReadyRead(m_processTimeoutInterval);
|
process.waitForReadyRead(m_processTimeoutInterval);
|
||||||
@ -181,7 +181,7 @@ bool MACEncoder::encode(const QString &sourceFile, const AudioFileModel_MetaInfo
|
|||||||
{
|
{
|
||||||
process.kill();
|
process.kill();
|
||||||
qWarning("MAC process timed out <-- killing!");
|
qWarning("MAC process timed out <-- killing!");
|
||||||
emit messageLogged("\nPROCESS TIMEOUT !!!");
|
emit messageLogged(L1S("\nPROCESS TIMEOUT !!!"));
|
||||||
bTimeout = true;
|
bTimeout = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -226,10 +226,10 @@ bool MACEncoder::encode(const QString &sourceFile, const AudioFileModel_MetaInfo
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
emit messageLogged("\n-------------------------------\n");
|
emit messageLogged(L1S("\n-------------------------------\n"));
|
||||||
|
|
||||||
args.clear();
|
args.clear();
|
||||||
args << "APE2" << QDir::toNativeSeparators(outputFile);
|
args << L1S("APE2") << QDir::toNativeSeparators(outputFile);
|
||||||
|
|
||||||
if(!metaInfo.title().isEmpty()) args << QString("Title=%1").arg(cleanTag(metaInfo.title()));
|
if(!metaInfo.title().isEmpty()) args << QString("Title=%1").arg(cleanTag(metaInfo.title()));
|
||||||
if(!metaInfo.artist().isEmpty()) args << QString("Artist=%1").arg(cleanTag(metaInfo.artist()));
|
if(!metaInfo.artist().isEmpty()) args << QString("Artist=%1").arg(cleanTag(metaInfo.artist()));
|
||||||
@ -254,7 +254,7 @@ bool MACEncoder::encode(const QString &sourceFile, const AudioFileModel_MetaInfo
|
|||||||
{
|
{
|
||||||
process.kill();
|
process.kill();
|
||||||
bAborted = true;
|
bAborted = true;
|
||||||
emit messageLogged("\nABORTED BY USER !!!");
|
emit messageLogged(L1S("\nABORTED BY USER !!!"));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
process.waitForReadyRead(m_processTimeoutInterval);
|
process.waitForReadyRead(m_processTimeoutInterval);
|
||||||
@ -262,7 +262,7 @@ bool MACEncoder::encode(const QString &sourceFile, const AudioFileModel_MetaInfo
|
|||||||
{
|
{
|
||||||
process.kill();
|
process.kill();
|
||||||
qWarning("Tag process timed out <-- killing!");
|
qWarning("Tag process timed out <-- killing!");
|
||||||
emit messageLogged("\nPROCESS TIMEOUT !!!");
|
emit messageLogged(L1S("\nPROCESS TIMEOUT !!!"));
|
||||||
bTimeout = true;
|
bTimeout = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -296,9 +296,9 @@ bool MACEncoder::encode(const QString &sourceFile, const AudioFileModel_MetaInfo
|
|||||||
|
|
||||||
bool MACEncoder::isFormatSupported(const QString &containerType, const QString &containerProfile, const QString &formatType, const QString &formatProfile, const QString &formatVersion)
|
bool MACEncoder::isFormatSupported(const QString &containerType, const QString &containerProfile, const QString &formatType, const QString &formatProfile, const QString &formatVersion)
|
||||||
{
|
{
|
||||||
if(containerType.compare("Wave", Qt::CaseInsensitive) == 0)
|
if(containerType.compare(L1S("Wave"), Qt::CaseInsensitive) == 0)
|
||||||
{
|
{
|
||||||
if(formatType.compare("PCM", Qt::CaseInsensitive) == 0)
|
if(formatType.compare(L1S("PCM"), Qt::CaseInsensitive) == 0)
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -128,7 +128,7 @@ static const g_mp3EncoderInfo;
|
|||||||
|
|
||||||
MP3Encoder::MP3Encoder(void)
|
MP3Encoder::MP3Encoder(void)
|
||||||
:
|
:
|
||||||
m_binary(lamexp_tools_lookup("lame.exe"))
|
m_binary(lamexp_tools_lookup(L1S("lame.exe")))
|
||||||
{
|
{
|
||||||
if(m_binary.isEmpty())
|
if(m_binary.isEmpty())
|
||||||
{
|
{
|
||||||
@ -151,20 +151,20 @@ bool MP3Encoder::encode(const QString &sourceFile, const AudioFileModel_MetaInfo
|
|||||||
QProcess process;
|
QProcess process;
|
||||||
QStringList args;
|
QStringList args;
|
||||||
|
|
||||||
args << "--nohist";
|
args << L1S("--nohist");
|
||||||
args << "-q" << QString::number(g_lameAgorithmQualityLUT[m_algorithmQuality]);
|
args << L1S("-q") << QString::number(g_lameAgorithmQualityLUT[m_algorithmQuality]);
|
||||||
|
|
||||||
switch(m_configRCMode)
|
switch(m_configRCMode)
|
||||||
{
|
{
|
||||||
case SettingsModel::VBRMode:
|
case SettingsModel::VBRMode:
|
||||||
args << "-V" << QString::number(g_lameVBRQualityLUT[qBound(0, m_configBitrate, 9)]);
|
args << L1S("-V") << QString::number(g_lameVBRQualityLUT[qBound(0, m_configBitrate, 9)]);
|
||||||
break;
|
break;
|
||||||
case SettingsModel::ABRMode:
|
case SettingsModel::ABRMode:
|
||||||
args << "--abr" << QString::number(g_mp3BitrateLUT[qBound(0, m_configBitrate, 13)]);
|
args << L1S("--abr") << QString::number(g_mp3BitrateLUT[qBound(0, m_configBitrate, 13)]);
|
||||||
break;
|
break;
|
||||||
case SettingsModel::CBRMode:
|
case SettingsModel::CBRMode:
|
||||||
args << "--cbr";
|
args << L1S("--cbr");
|
||||||
args << "-b" << QString::number(g_mp3BitrateLUT[qBound(0, m_configBitrate, 13)]);
|
args << L1S("-b") << QString::number(g_mp3BitrateLUT[qBound(0, m_configBitrate, 13)]);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
MUTILS_THROW("Bad rate-control mode!");
|
MUTILS_THROW("Bad rate-control mode!");
|
||||||
@ -175,32 +175,32 @@ bool MP3Encoder::encode(const QString &sourceFile, const AudioFileModel_MetaInfo
|
|||||||
{
|
{
|
||||||
if(m_configRCMode != SettingsModel::CBRMode)
|
if(m_configRCMode != SettingsModel::CBRMode)
|
||||||
{
|
{
|
||||||
args << "-b" << QString::number(clipBitrate(m_configBitrateMinimum));
|
args << L1S("-b") << QString::number(clipBitrate(m_configBitrateMinimum));
|
||||||
args << "-B" << QString::number(clipBitrate(m_configBitrateMaximum));
|
args << L1S("-B") << QString::number(clipBitrate(m_configBitrateMaximum));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(m_configSamplingRate > 0)
|
if(m_configSamplingRate > 0)
|
||||||
{
|
{
|
||||||
args << "--resample" << QString::number(m_configSamplingRate);
|
args << L1S("--resample") << QString::number(m_configSamplingRate);
|
||||||
}
|
}
|
||||||
|
|
||||||
switch(m_configChannelMode)
|
switch(m_configChannelMode)
|
||||||
{
|
{
|
||||||
case 1:
|
case 1:
|
||||||
args << "-m" << "j";
|
args << L1S("-m") << L1S("j");
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
args << "-m" << "f";
|
args << L1S("-m") << L1S("f");
|
||||||
break;
|
break;
|
||||||
case 3:
|
case 3:
|
||||||
args << "-m" << "s";
|
args << L1S("-m") << L1S("s");
|
||||||
break;
|
break;
|
||||||
case 4:
|
case 4:
|
||||||
args << "-m" << "d";
|
args << L1S("-m") << L1S("d");
|
||||||
break;
|
break;
|
||||||
case 5:
|
case 5:
|
||||||
args << "-m" << "m";
|
args << L1S("-m") << L1S("m");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -212,16 +212,16 @@ bool MP3Encoder::encode(const QString &sourceFile, const AudioFileModel_MetaInfo
|
|||||||
if(isUnicode(metaInfo.genre())) bUseUCS2 = true;
|
if(isUnicode(metaInfo.genre())) bUseUCS2 = true;
|
||||||
if(isUnicode(metaInfo.comment())) bUseUCS2 = true;
|
if(isUnicode(metaInfo.comment())) bUseUCS2 = true;
|
||||||
|
|
||||||
if(bUseUCS2) args << "--id3v2-ucs2"; //Must specify this BEFORE "--tt" and friends!
|
if (bUseUCS2) args << L1S("--id3v2-ucs2"); //Must specify this BEFORE "--tt" and friends!
|
||||||
|
|
||||||
if(!metaInfo.title().isEmpty()) args << "--tt" << cleanTag(metaInfo.title());
|
if(!metaInfo.title().isEmpty()) args << L1S("--tt") << cleanTag(metaInfo.title());
|
||||||
if(!metaInfo.artist().isEmpty()) args << "--ta" << cleanTag(metaInfo.artist());
|
if(!metaInfo.artist().isEmpty()) args << L1S("--ta") << cleanTag(metaInfo.artist());
|
||||||
if(!metaInfo.album().isEmpty()) args << "--tl" << cleanTag( metaInfo.album());
|
if(!metaInfo.album().isEmpty()) args << L1S("--tl") << cleanTag( metaInfo.album());
|
||||||
if(!metaInfo.genre().isEmpty()) args << "--tg" << cleanTag(metaInfo.genre());
|
if(!metaInfo.genre().isEmpty()) args << L1S("--tg") << cleanTag(metaInfo.genre());
|
||||||
if(!metaInfo.comment().isEmpty()) args << "--tc" << cleanTag(metaInfo.comment());
|
if(!metaInfo.comment().isEmpty()) args << L1S("--tc") << cleanTag(metaInfo.comment());
|
||||||
if(metaInfo.year()) args << "--ty" << QString::number(metaInfo.year());
|
if(metaInfo.year()) args << L1S("--ty") << QString::number(metaInfo.year());
|
||||||
if(metaInfo.position()) args << "--tn" << QString::number(metaInfo.position());
|
if(metaInfo.position()) args << L1S("--tn") << QString::number(metaInfo.position());
|
||||||
if(!metaInfo.cover().isEmpty()) args << "--ti" << QDir::toNativeSeparators(metaInfo.cover());
|
if(!metaInfo.cover().isEmpty()) args << L1S("--ti") << QDir::toNativeSeparators(metaInfo.cover());
|
||||||
|
|
||||||
if(!m_configCustomParams.isEmpty()) args << m_configCustomParams.split(" ", QString::SkipEmptyParts);
|
if(!m_configCustomParams.isEmpty()) args << m_configCustomParams.split(" ", QString::SkipEmptyParts);
|
||||||
|
|
||||||
@ -237,7 +237,7 @@ bool MP3Encoder::encode(const QString &sourceFile, const AudioFileModel_MetaInfo
|
|||||||
bool bAborted = false;
|
bool bAborted = false;
|
||||||
int prevProgress = -1;
|
int prevProgress = -1;
|
||||||
|
|
||||||
QRegExp regExp("\\(.*(\\d+)%\\)\\|");
|
QRegExp regExp(L1S("\\(.*(\\d+)%\\)\\|"));
|
||||||
|
|
||||||
while(process.state() != QProcess::NotRunning)
|
while(process.state() != QProcess::NotRunning)
|
||||||
{
|
{
|
||||||
@ -245,7 +245,7 @@ bool MP3Encoder::encode(const QString &sourceFile, const AudioFileModel_MetaInfo
|
|||||||
{
|
{
|
||||||
process.kill();
|
process.kill();
|
||||||
bAborted = true;
|
bAborted = true;
|
||||||
emit messageLogged("\nABORTED BY USER !!!");
|
emit messageLogged(L1S("\nABORTED BY USER !!!"));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
process.waitForReadyRead(m_processTimeoutInterval);
|
process.waitForReadyRead(m_processTimeoutInterval);
|
||||||
@ -253,7 +253,7 @@ bool MP3Encoder::encode(const QString &sourceFile, const AudioFileModel_MetaInfo
|
|||||||
{
|
{
|
||||||
process.kill();
|
process.kill();
|
||||||
qWarning("LAME process timed out <-- killing!");
|
qWarning("LAME process timed out <-- killing!");
|
||||||
emit messageLogged("\nPROCESS TIMEOUT !!!");
|
emit messageLogged(L1S("\nPROCESS TIMEOUT !!!"));
|
||||||
bTimeout = true;
|
bTimeout = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -298,20 +298,20 @@ bool MP3Encoder::encode(const QString &sourceFile, const AudioFileModel_MetaInfo
|
|||||||
|
|
||||||
bool MP3Encoder::isFormatSupported(const QString &containerType, const QString &containerProfile, const QString &formatType, const QString &formatProfile, const QString &formatVersion)
|
bool MP3Encoder::isFormatSupported(const QString &containerType, const QString &containerProfile, const QString &formatType, const QString &formatProfile, const QString &formatVersion)
|
||||||
{
|
{
|
||||||
if(containerType.compare("Wave", Qt::CaseInsensitive) == 0)
|
if(containerType.compare(L1S("Wave"), Qt::CaseInsensitive) == 0)
|
||||||
{
|
{
|
||||||
if(formatType.compare("PCM", Qt::CaseInsensitive) == 0)
|
if(formatType.compare(L1S("PCM"), Qt::CaseInsensitive) == 0)
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if(containerType.compare("MPEG Audio", Qt::CaseInsensitive) == 0)
|
else if(containerType.compare(L1S("MPEG Audio"), Qt::CaseInsensitive) == 0)
|
||||||
{
|
{
|
||||||
if(formatType.compare("MPEG Audio", Qt::CaseInsensitive) == 0)
|
if(formatType.compare(L1S("MPEG Audio"), Qt::CaseInsensitive) == 0)
|
||||||
{
|
{
|
||||||
if(formatProfile.compare("Layer 3", Qt::CaseInsensitive) == 0 || formatProfile.compare("Layer 2", Qt::CaseInsensitive) == 0)
|
if(formatProfile.compare(L1S("Layer 3"), Qt::CaseInsensitive) == 0 || formatProfile.compare(L1S("Layer 2"), Qt::CaseInsensitive) == 0)
|
||||||
{
|
{
|
||||||
if(formatVersion.compare("Version 1", Qt::CaseInsensitive) == 0 || formatVersion.compare("Version 2", Qt::CaseInsensitive) == 0)
|
if(formatVersion.compare(L1S("Version 1"), Qt::CaseInsensitive) == 0 || formatVersion.compare(L1S("Version 2"), Qt::CaseInsensitive) == 0)
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -124,7 +124,7 @@ static const g_opusEncoderInfo;
|
|||||||
|
|
||||||
OpusEncoder::OpusEncoder(void)
|
OpusEncoder::OpusEncoder(void)
|
||||||
:
|
:
|
||||||
m_binary(lamexp_tools_lookup("opusenc.exe"))
|
m_binary(lamexp_tools_lookup(L1S("opusenc.exe")))
|
||||||
{
|
{
|
||||||
if(m_binary.isEmpty())
|
if(m_binary.isEmpty())
|
||||||
{
|
{
|
||||||
@ -148,13 +148,13 @@ bool OpusEncoder::encode(const QString &sourceFile, const AudioFileModel_MetaInf
|
|||||||
switch(m_configRCMode)
|
switch(m_configRCMode)
|
||||||
{
|
{
|
||||||
case SettingsModel::VBRMode:
|
case SettingsModel::VBRMode:
|
||||||
args << "--vbr";
|
args << L1S("--vbr");
|
||||||
break;
|
break;
|
||||||
case SettingsModel::ABRMode:
|
case SettingsModel::ABRMode:
|
||||||
args << "--cvbr";
|
args << L1S("--cvbr");
|
||||||
break;
|
break;
|
||||||
case SettingsModel::CBRMode:
|
case SettingsModel::CBRMode:
|
||||||
args << "--hard-cbr";
|
args << L1S("--hard-cbr");
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
MUTILS_THROW("Bad rate-control mode!");
|
MUTILS_THROW("Bad rate-control mode!");
|
||||||
@ -166,35 +166,35 @@ bool OpusEncoder::encode(const QString &sourceFile, const AudioFileModel_MetaInf
|
|||||||
switch(m_configFrameSize)
|
switch(m_configFrameSize)
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
args << "--framesize" << "2.5";
|
args << L1S("--framesize") << L1S("2.5");
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
args << "--framesize" << "5";
|
args << L1S("--framesize") << L1S("5");
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
args << "--framesize" << "10";
|
args << L1S("--framesize") << L1S("10");
|
||||||
break;
|
break;
|
||||||
case 3:
|
case 3:
|
||||||
args << "--framesize" << "20";
|
args << L1S("--framesize") << L1S("20");
|
||||||
break;
|
break;
|
||||||
case 4:
|
case 4:
|
||||||
args << "--framesize" << "40";
|
args << L1S("--framesize") << L1S("40");
|
||||||
break;
|
break;
|
||||||
case 5:
|
case 5:
|
||||||
args << "--framesize" << "60";
|
args << L1S("--framesize") << L1S("60");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
args << QString("--bitrate") << QString::number(qBound(8, (m_configBitrate + 1) * 8, 256));
|
args << L1S("--bitrate") << QString::number(qBound(8, (m_configBitrate + 1) * 8, 256));
|
||||||
|
|
||||||
if(!metaInfo.title().isEmpty()) args << "--title" << cleanTag(metaInfo.title());
|
if(!metaInfo.title().isEmpty()) args << L1S("--title") << cleanTag(metaInfo.title());
|
||||||
if(!metaInfo.artist().isEmpty()) args << "--artist" << cleanTag(metaInfo.artist());
|
if(!metaInfo.artist().isEmpty()) args << L1S("--artist") << cleanTag(metaInfo.artist());
|
||||||
if(!metaInfo.album().isEmpty()) args << "--album" << cleanTag(metaInfo.album());
|
if(!metaInfo.album().isEmpty()) args << L1S("--album") << cleanTag(metaInfo.album());
|
||||||
if(!metaInfo.genre().isEmpty()) args << "--genre" << cleanTag(metaInfo.genre());
|
if(!metaInfo.genre().isEmpty()) args << L1S("--genre") << cleanTag(metaInfo.genre());
|
||||||
if(metaInfo.year()) args << "--date" << QString::number(metaInfo.year());
|
if(metaInfo.year()) args << L1S("--date") << QString::number(metaInfo.year());
|
||||||
if(metaInfo.position()) args << "--comment" << QString("tracknumber=%1").arg(QString::number(metaInfo.position()));
|
if(metaInfo.position()) args << L1S("--comment") << QString("tracknumber=%1").arg(QString::number(metaInfo.position()));
|
||||||
if(!metaInfo.comment().isEmpty()) args << "--comment" << QString("comment=%1").arg(cleanTag(metaInfo.comment()));
|
if(!metaInfo.comment().isEmpty()) args << L1S("--comment") << QString("comment=%1").arg(cleanTag(metaInfo.comment()));
|
||||||
if(!metaInfo.cover().isEmpty()) args << "--picture" << makeCoverParam(metaInfo.cover());
|
if(!metaInfo.cover().isEmpty()) args << L1S("--picture") << makeCoverParam(metaInfo.cover());
|
||||||
|
|
||||||
if(!m_configCustomParams.isEmpty()) args << m_configCustomParams.split(" ", QString::SkipEmptyParts);
|
if(!m_configCustomParams.isEmpty()) args << m_configCustomParams.split(" ", QString::SkipEmptyParts);
|
||||||
|
|
||||||
@ -210,7 +210,7 @@ bool OpusEncoder::encode(const QString &sourceFile, const AudioFileModel_MetaInf
|
|||||||
bool bAborted = false;
|
bool bAborted = false;
|
||||||
int prevProgress = -1;
|
int prevProgress = -1;
|
||||||
|
|
||||||
QRegExp regExp("\\((\\d+)%\\)");
|
QRegExp regExp(L1S("\\((\\d+)%\\)"));
|
||||||
|
|
||||||
while(process.state() != QProcess::NotRunning)
|
while(process.state() != QProcess::NotRunning)
|
||||||
{
|
{
|
||||||
@ -218,7 +218,7 @@ bool OpusEncoder::encode(const QString &sourceFile, const AudioFileModel_MetaInf
|
|||||||
{
|
{
|
||||||
process.kill();
|
process.kill();
|
||||||
bAborted = true;
|
bAborted = true;
|
||||||
emit messageLogged("\nABORTED BY USER !!!");
|
emit messageLogged(L1S("\nABORTED BY USER !!!"));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
process.waitForReadyRead(m_processTimeoutInterval);
|
process.waitForReadyRead(m_processTimeoutInterval);
|
||||||
@ -226,7 +226,7 @@ bool OpusEncoder::encode(const QString &sourceFile, const AudioFileModel_MetaInf
|
|||||||
{
|
{
|
||||||
process.kill();
|
process.kill();
|
||||||
qWarning("Opus process timed out <-- killing!");
|
qWarning("Opus process timed out <-- killing!");
|
||||||
emit messageLogged("\nPROCESS TIMEOUT !!!");
|
emit messageLogged(L1S("\nPROCESS TIMEOUT !!!"));
|
||||||
bTimeout = true;
|
bTimeout = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -309,9 +309,9 @@ void OpusEncoder::setFrameSize(int frameSize)
|
|||||||
|
|
||||||
bool OpusEncoder::isFormatSupported(const QString &containerType, const QString &containerProfile, const QString &formatType, const QString &formatProfile, const QString &formatVersion)
|
bool OpusEncoder::isFormatSupported(const QString &containerType, const QString &containerProfile, const QString &formatType, const QString &formatProfile, const QString &formatVersion)
|
||||||
{
|
{
|
||||||
if(containerType.compare("Wave", Qt::CaseInsensitive) == 0)
|
if(containerType.compare(L1S("Wave"), Qt::CaseInsensitive) == 0)
|
||||||
{
|
{
|
||||||
if(formatType.compare("PCM", Qt::CaseInsensitive) == 0)
|
if(formatType.compare(L1S("PCM"), Qt::CaseInsensitive) == 0)
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -125,7 +125,7 @@ static const g_vorbisEncoderInfo;
|
|||||||
|
|
||||||
VorbisEncoder::VorbisEncoder(void)
|
VorbisEncoder::VorbisEncoder(void)
|
||||||
:
|
:
|
||||||
m_binary(lamexp_tools_lookup("oggenc2.exe"))
|
m_binary(lamexp_tools_lookup(L1S("oggenc2.exe")))
|
||||||
{
|
{
|
||||||
if(m_binary.isEmpty())
|
if(m_binary.isEmpty())
|
||||||
{
|
{
|
||||||
@ -150,10 +150,10 @@ bool VorbisEncoder::encode(const QString &sourceFile, const AudioFileModel_MetaI
|
|||||||
switch(m_configRCMode)
|
switch(m_configRCMode)
|
||||||
{
|
{
|
||||||
case SettingsModel::VBRMode:
|
case SettingsModel::VBRMode:
|
||||||
args << "-q" << QString::number(qBound(-2, m_configBitrate - 2, 10));
|
args << L1S("-q") << QString::number(qBound(-2, m_configBitrate - 2, 10));
|
||||||
break;
|
break;
|
||||||
case SettingsModel::ABRMode:
|
case SettingsModel::ABRMode:
|
||||||
args << "-b" << QString::number(qBound(32, (m_configBitrate + 4) * 8, 500));
|
args << L1S("-b") << QString::number(qBound(32, (m_configBitrate + 4) * 8, 500));
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
MUTILS_THROW("Bad rate-control mode!");
|
MUTILS_THROW("Bad rate-control mode!");
|
||||||
@ -162,28 +162,33 @@ bool VorbisEncoder::encode(const QString &sourceFile, const AudioFileModel_MetaI
|
|||||||
|
|
||||||
if((m_configBitrateMaximum > 0) && (m_configBitrateMinimum > 0) && (m_configBitrateMinimum <= m_configBitrateMaximum))
|
if((m_configBitrateMaximum > 0) && (m_configBitrateMinimum > 0) && (m_configBitrateMinimum <= m_configBitrateMaximum))
|
||||||
{
|
{
|
||||||
args << "--min-bitrate" << QString::number(qBound(32, m_configBitrateMinimum, 500));
|
args << L1S("--min-bitrate") << QString::number(qBound(32, m_configBitrateMinimum, 500));
|
||||||
args << "--max-bitrate" << QString::number(qBound(32, m_configBitrateMaximum, 500));
|
args << L1S("--max-bitrate") << QString::number(qBound(32, m_configBitrateMaximum, 500));
|
||||||
}
|
}
|
||||||
|
|
||||||
if(m_configSamplingRate > 0)
|
if(m_configSamplingRate > 0)
|
||||||
{
|
{
|
||||||
args << "--resample" << QString::number(m_configSamplingRate) << "--converter" << QString::number(0);
|
args << L1S("--resample") << QString::number(m_configSamplingRate) << L1S("--converter") << QString::number(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!metaInfo.title().isEmpty()) args << "-t" << cleanTag(metaInfo.title());
|
if (!metaInfo.empty(false))
|
||||||
if(!metaInfo.artist().isEmpty()) args << "-a" << cleanTag(metaInfo.artist());
|
{
|
||||||
if(!metaInfo.album().isEmpty()) args << "-l" << cleanTag(metaInfo.album());
|
args << L1S("--discard-comments");
|
||||||
if(!metaInfo.genre().isEmpty()) args << "-G" << cleanTag(metaInfo.genre());
|
}
|
||||||
if(!metaInfo.comment().isEmpty()) args << "-c" << QString("comment=%1").arg(cleanTag(metaInfo.comment()));
|
|
||||||
if(metaInfo.year()) args << "-d" << QString::number(metaInfo.year());
|
if(!metaInfo.title().isEmpty()) args << L1S("-t") << cleanTag(metaInfo.title());
|
||||||
if(metaInfo.position()) args << "-N" << QString::number(metaInfo.position());
|
if(!metaInfo.artist().isEmpty()) args << L1S("-a") << cleanTag(metaInfo.artist());
|
||||||
|
if(!metaInfo.album().isEmpty()) args << L1S("-l") << cleanTag(metaInfo.album());
|
||||||
|
if(!metaInfo.genre().isEmpty()) args << L1S("-G") << cleanTag(metaInfo.genre());
|
||||||
|
if(!metaInfo.comment().isEmpty()) args << L1S("-c") << QString("comment=%1").arg(cleanTag(metaInfo.comment()));
|
||||||
|
if(metaInfo.year()) args << L1S("-d") << QString::number(metaInfo.year());
|
||||||
|
if(metaInfo.position()) args << L1S("-N") << QString::number(metaInfo.position());
|
||||||
|
|
||||||
//args << "--tv" << QString().sprintf("Encoder=LameXP v%d.%02d.%04d [%s]", lamexp_version_major(), lamexp_version_minor(), lamexp_version_build(), lamexp_version_release());
|
//args << "--tv" << QString().sprintf("Encoder=LameXP v%d.%02d.%04d [%s]", lamexp_version_major(), lamexp_version_minor(), lamexp_version_build(), lamexp_version_release());
|
||||||
|
|
||||||
if(!m_configCustomParams.isEmpty()) args << m_configCustomParams.split(" ", QString::SkipEmptyParts);
|
if(!m_configCustomParams.isEmpty()) args << m_configCustomParams.split(" ", QString::SkipEmptyParts);
|
||||||
|
|
||||||
args << "-o" << QDir::toNativeSeparators(outputFile);
|
args << L1S("-o") << QDir::toNativeSeparators(outputFile);
|
||||||
args << QDir::toNativeSeparators(sourceFile);
|
args << QDir::toNativeSeparators(sourceFile);
|
||||||
|
|
||||||
if(!startProcess(process, m_binary, args))
|
if(!startProcess(process, m_binary, args))
|
||||||
@ -195,7 +200,7 @@ bool VorbisEncoder::encode(const QString &sourceFile, const AudioFileModel_MetaI
|
|||||||
bool bAborted = false;
|
bool bAborted = false;
|
||||||
int prevProgress = -1;
|
int prevProgress = -1;
|
||||||
|
|
||||||
QRegExp regExp("\\[.*(\\d+)[.,](\\d+)%\\]");
|
QRegExp regExp(L1S("\\[.*(\\d+)[.,](\\d+)%\\]"));
|
||||||
|
|
||||||
while(process.state() != QProcess::NotRunning)
|
while(process.state() != QProcess::NotRunning)
|
||||||
{
|
{
|
||||||
@ -203,7 +208,7 @@ bool VorbisEncoder::encode(const QString &sourceFile, const AudioFileModel_MetaI
|
|||||||
{
|
{
|
||||||
process.kill();
|
process.kill();
|
||||||
bAborted = true;
|
bAborted = true;
|
||||||
emit messageLogged("\nABORTED BY USER !!!");
|
emit messageLogged(L1S("\nABORTED BY USER !!!"));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
process.waitForReadyRead(m_processTimeoutInterval);
|
process.waitForReadyRead(m_processTimeoutInterval);
|
||||||
@ -211,7 +216,7 @@ bool VorbisEncoder::encode(const QString &sourceFile, const AudioFileModel_MetaI
|
|||||||
{
|
{
|
||||||
process.kill();
|
process.kill();
|
||||||
qWarning("OggEnc process timed out <-- killing!");
|
qWarning("OggEnc process timed out <-- killing!");
|
||||||
emit messageLogged("\nPROCESS TIMEOUT !!!");
|
emit messageLogged(L1S("\nPROCESS TIMEOUT !!!"));
|
||||||
bTimeout = true;
|
bTimeout = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -256,16 +261,16 @@ bool VorbisEncoder::encode(const QString &sourceFile, const AudioFileModel_MetaI
|
|||||||
|
|
||||||
bool VorbisEncoder::isFormatSupported(const QString &containerType, const QString &containerProfile, const QString &formatType, const QString &formatProfile, const QString &formatVersion)
|
bool VorbisEncoder::isFormatSupported(const QString &containerType, const QString &containerProfile, const QString &formatType, const QString &formatProfile, const QString &formatVersion)
|
||||||
{
|
{
|
||||||
if(containerType.compare("Wave", Qt::CaseInsensitive) == 0)
|
if(containerType.compare(L1S("Wave"), Qt::CaseInsensitive) == 0)
|
||||||
{
|
{
|
||||||
if(formatType.compare("PCM", Qt::CaseInsensitive) == 0)
|
if(formatType.compare(L1S("PCM"), Qt::CaseInsensitive) == 0)
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if(containerType.compare("FLAC", Qt::CaseInsensitive) == 0)
|
else if(containerType.compare(L1S("FLAC"), Qt::CaseInsensitive) == 0)
|
||||||
{
|
{
|
||||||
if(formatType.compare("FLAC", Qt::CaseInsensitive) == 0)
|
if(formatType.compare(L1S("FLAC"), Qt::CaseInsensitive) == 0)
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -146,11 +146,11 @@ bool WaveEncoder::encode(const QString &sourceFile, const AudioFileModel_MetaInf
|
|||||||
|
|
||||||
if (success)
|
if (success)
|
||||||
{
|
{
|
||||||
emit messageLogged(QLatin1String("File copied successfully."));
|
emit messageLogged(L1S("File copied successfully."));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
emit messageLogged((*abortFlag) ? QLatin1String("Operation cancelled by user!") : QLatin1String("Error: Failed to copy file!"));
|
emit messageLogged((*abortFlag) ? L1S("Operation cancelled by user!") : L1S("Error: Failed to copy file!"));
|
||||||
}
|
}
|
||||||
|
|
||||||
return success;
|
return success;
|
||||||
@ -174,9 +174,9 @@ void WaveEncoder::updateProgress(const double &progress)
|
|||||||
|
|
||||||
bool WaveEncoder::isFormatSupported(const QString &containerType, const QString &containerProfile, const QString &formatType, const QString &formatProfile, const QString &formatVersion)
|
bool WaveEncoder::isFormatSupported(const QString &containerType, const QString &containerProfile, const QString &formatType, const QString &formatProfile, const QString &formatVersion)
|
||||||
{
|
{
|
||||||
if(containerType.compare("Wave", Qt::CaseInsensitive) == 0)
|
if(containerType.compare(L1S("Wave"), Qt::CaseInsensitive) == 0)
|
||||||
{
|
{
|
||||||
if(formatType.compare("PCM", Qt::CaseInsensitive) == 0)
|
if(formatType.compare(L1S("PCM"), Qt::CaseInsensitive) == 0)
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -83,4 +83,5 @@ const QString lamexp_version2string(const QString &pattern, unsigned int version
|
|||||||
// HELPER MACROS
|
// HELPER MACROS
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
#define L1S(STR) (QLatin1String((STR)))
|
||||||
#define NOBR(STR) (QString("<nobr>%1</nobr>").arg((STR)).replace("-", "−"))
|
#define NOBR(STR) (QString("<nobr>%1</nobr>").arg((STR)).replace("-", "−"))
|
||||||
|
Loading…
Reference in New Issue
Block a user