The encoder configuration (rc-mode, bitrate, quality-level) is now maintained *separately* for each encoder. This was quite a massive change and needs more testing! Also a bug where OggEnc quality modes -2 and -1 would be clipped 0 has been fixed.
This commit is contained in:
parent
17c7d38789
commit
9323260e32
@ -19,11 +19,13 @@ a:visited { color: #0000EE; }
|
|||||||
|
|
||||||
<a name="4.08"></a>Changes between v4.07 and v4.08 [<font color="darkred">unreleased</font>]:<br><ul>
|
<a name="4.08"></a>Changes between v4.07 and v4.08 [<font color="darkred">unreleased</font>]:<br><ul>
|
||||||
<li>Upgraded build environment to Microsoft Visual Studio 2012 with Update-3
|
<li>Upgraded build environment to Microsoft Visual Studio 2012 with Update-3
|
||||||
|
<li>Encoder settings (RC mode + bitrate/quality) are now stored separately for each encoder
|
||||||
<li>Updated Qt runtime libraries to v4.8.5 RC-1 (2013-05-31), compiled with MSVC 11.0
|
<li>Updated Qt runtime libraries to v4.8.5 RC-1 (2013-05-31), compiled with MSVC 11.0
|
||||||
<li>Updated FLAC encoder/decoder to v1.3.0 (2013-05-27), compiled with ICL 13.0
|
<li>Updated FLAC encoder/decoder to v1.3.0 (2013-05-27), compiled with ICL 13.0
|
||||||
<li>Updated Opus encoder/decoder libraries to v1.1.x and Opus-Tools to v0.1.6 (2013-06-17)
|
<li>Updated Opus encoder/decoder libraries to v1.1.x and Opus-Tools to v0.1.6 (2013-06-17)
|
||||||
<li>Fixed a potential deadlock during startup when %TMP% points to an invalid folder
|
<li>Fixed a potential deadlock during startup when %TMP% points to an invalid folder
|
||||||
<li>Fixed a superfluous "beep" sound that appeared on application startup
|
<li>Fixed a superfluous "beep" sound that appeared on application startup
|
||||||
|
<li>Fixed Ogg Vorbis quality modes "-1" and "-2" (they were clipped to "0" before)
|
||||||
</ul><br>
|
</ul><br>
|
||||||
|
|
||||||
<a name="4.07"></a>Changes between v4.06 and v4.07 [2013-04-28]:<br><ul>
|
<a name="4.07"></a>Changes between v4.06 and v4.07 [2013-04-28]:<br><ul>
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -31,7 +31,7 @@
|
|||||||
<context>
|
<context>
|
||||||
<name>MainWindow</name>
|
<name>MainWindow</name>
|
||||||
<message numerus="yes">
|
<message numerus="yes">
|
||||||
<location filename="../../src/Dialog_MainWindow.cpp" line="720"/>
|
<location filename="../../src/Dialog_MainWindow.cpp" line="729"/>
|
||||||
<source>%n file(s) have been rejected, because read access was not granted!</source>
|
<source>%n file(s) have been rejected, because read access was not granted!</source>
|
||||||
<translation>
|
<translation>
|
||||||
<numerusform>%n file have been rejected, because read access was not granted!</numerusform>
|
<numerusform>%n file have been rejected, because read access was not granted!</numerusform>
|
||||||
@ -39,7 +39,7 @@
|
|||||||
</translation>
|
</translation>
|
||||||
</message>
|
</message>
|
||||||
<message numerus="yes">
|
<message numerus="yes">
|
||||||
<location filename="../../src/Dialog_MainWindow.cpp" line="724"/>
|
<location filename="../../src/Dialog_MainWindow.cpp" line="733"/>
|
||||||
<source>%n file(s) have been rejected, because they are dummy CDDA files!</source>
|
<source>%n file(s) have been rejected, because they are dummy CDDA files!</source>
|
||||||
<translation>
|
<translation>
|
||||||
<numerusform>%n file have been rejected, because they are dummy CDDA files!</numerusform>
|
<numerusform>%n file have been rejected, because they are dummy CDDA files!</numerusform>
|
||||||
@ -47,7 +47,7 @@
|
|||||||
</translation>
|
</translation>
|
||||||
</message>
|
</message>
|
||||||
<message numerus="yes">
|
<message numerus="yes">
|
||||||
<location filename="../../src/Dialog_MainWindow.cpp" line="728"/>
|
<location filename="../../src/Dialog_MainWindow.cpp" line="737"/>
|
||||||
<source>%n file(s) have been rejected, because they appear to be Cue Sheet images!</source>
|
<source>%n file(s) have been rejected, because they appear to be Cue Sheet images!</source>
|
||||||
<translation>
|
<translation>
|
||||||
<numerusform>%n file have been rejected, because they appear to be Cue Sheet images!</numerusform>
|
<numerusform>%n file have been rejected, because they appear to be Cue Sheet images!</numerusform>
|
||||||
@ -55,7 +55,7 @@
|
|||||||
</translation>
|
</translation>
|
||||||
</message>
|
</message>
|
||||||
<message numerus="yes">
|
<message numerus="yes">
|
||||||
<location filename="../../src/Dialog_MainWindow.cpp" line="732"/>
|
<location filename="../../src/Dialog_MainWindow.cpp" line="741"/>
|
||||||
<source>%n file(s) have been rejected, because the file format could not be recognized!</source>
|
<source>%n file(s) have been rejected, because the file format could not be recognized!</source>
|
||||||
<translation>
|
<translation>
|
||||||
<numerusform>%n file have been rejected, because the file format could not be recognized!</numerusform>
|
<numerusform>%n file have been rejected, because the file format could not be recognized!</numerusform>
|
||||||
@ -63,7 +63,7 @@
|
|||||||
</translation>
|
</translation>
|
||||||
</message>
|
</message>
|
||||||
<message numerus="yes">
|
<message numerus="yes">
|
||||||
<location filename="../../src/Dialog_MainWindow.cpp" line="3894"/>
|
<location filename="../../src/Dialog_MainWindow.cpp" line="4218"/>
|
||||||
<source>%n Instance(s)</source>
|
<source>%n Instance(s)</source>
|
||||||
<translation>
|
<translation>
|
||||||
<numerusform>%n Instance</numerusform>
|
<numerusform>%n Instance</numerusform>
|
||||||
@ -74,7 +74,7 @@
|
|||||||
<context>
|
<context>
|
||||||
<name>ProcessingDialog</name>
|
<name>ProcessingDialog</name>
|
||||||
<message numerus="yes">
|
<message numerus="yes">
|
||||||
<location filename="../../src/Dialog_Processing.cpp" line="570"/>
|
<location filename="../../src/Dialog_Processing.cpp" line="572"/>
|
||||||
<source>Encoding: %n file(s) of %1 completed so far, please wait...</source>
|
<source>Encoding: %n file(s) of %1 completed so far, please wait...</source>
|
||||||
<translation>
|
<translation>
|
||||||
<numerusform>Encoding: %n file of %1 completed so far, please wait...</numerusform>
|
<numerusform>Encoding: %n file of %1 completed so far, please wait...</numerusform>
|
||||||
@ -82,7 +82,7 @@
|
|||||||
</translation>
|
</translation>
|
||||||
</message>
|
</message>
|
||||||
<message numerus="yes">
|
<message numerus="yes">
|
||||||
<location filename="../../src/Dialog_Processing.cpp" line="608"/>
|
<location filename="../../src/Dialog_Processing.cpp" line="610"/>
|
||||||
<source>Process was aborted by the user after %n file(s)!</source>
|
<source>Process was aborted by the user after %n file(s)!</source>
|
||||||
<translation>
|
<translation>
|
||||||
<numerusform>Process was aborted by the user after %n file!</numerusform>
|
<numerusform>Process was aborted by the user after %n file!</numerusform>
|
||||||
@ -90,7 +90,7 @@
|
|||||||
</translation>
|
</translation>
|
||||||
</message>
|
</message>
|
||||||
<message numerus="yes">
|
<message numerus="yes">
|
||||||
<location filename="../../src/Dialog_Processing.cpp" line="636"/>
|
<location filename="../../src/Dialog_Processing.cpp" line="638"/>
|
||||||
<source>Error: %1 of %n file(s) failed (%2). Double-click failed items for detailed information!</source>
|
<source>Error: %1 of %n file(s) failed (%2). Double-click failed items for detailed information!</source>
|
||||||
<translation>
|
<translation>
|
||||||
<numerusform>Error: %1 of %n file failed (%2). Double-click failed items for detailed information!</numerusform>
|
<numerusform>Error: %1 of %n file failed (%2). Double-click failed items for detailed information!</numerusform>
|
||||||
@ -98,7 +98,7 @@
|
|||||||
</translation>
|
</translation>
|
||||||
</message>
|
</message>
|
||||||
<message numerus="yes">
|
<message numerus="yes">
|
||||||
<location filename="../../src/Dialog_Processing.cpp" line="636"/>
|
<location filename="../../src/Dialog_Processing.cpp" line="638"/>
|
||||||
<source>%n file(s) skipped</source>
|
<source>%n file(s) skipped</source>
|
||||||
<translation>
|
<translation>
|
||||||
<numerusform>%n file skipped</numerusform>
|
<numerusform>%n file skipped</numerusform>
|
||||||
@ -106,7 +106,7 @@
|
|||||||
</translation>
|
</translation>
|
||||||
</message>
|
</message>
|
||||||
<message numerus="yes">
|
<message numerus="yes">
|
||||||
<location filename="../../src/Dialog_Processing.cpp" line="640"/>
|
<location filename="../../src/Dialog_Processing.cpp" line="642"/>
|
||||||
<source>Error: %1 of %n file(s) failed. Double-click failed items for detailed information!</source>
|
<source>Error: %1 of %n file(s) failed. Double-click failed items for detailed information!</source>
|
||||||
<translation>
|
<translation>
|
||||||
<numerusform>Error: %1 of %n file failed. Double-click failed items for detailed information!</numerusform>
|
<numerusform>Error: %1 of %n file failed. Double-click failed items for detailed information!</numerusform>
|
||||||
@ -114,7 +114,7 @@
|
|||||||
</translation>
|
</translation>
|
||||||
</message>
|
</message>
|
||||||
<message numerus="yes">
|
<message numerus="yes">
|
||||||
<location filename="../../src/Dialog_Processing.cpp" line="654"/>
|
<location filename="../../src/Dialog_Processing.cpp" line="656"/>
|
||||||
<source>All files completed successfully. Skipped %n file(s).</source>
|
<source>All files completed successfully. Skipped %n file(s).</source>
|
||||||
<translation>
|
<translation>
|
||||||
<numerusform>All files completed successfully. Skipped %n file.</numerusform>
|
<numerusform>All files completed successfully. Skipped %n file.</numerusform>
|
||||||
@ -122,7 +122,7 @@
|
|||||||
</translation>
|
</translation>
|
||||||
</message>
|
</message>
|
||||||
<message numerus="yes">
|
<message numerus="yes">
|
||||||
<location filename="../../src/Dialog_Processing.cpp" line="1291"/>
|
<location filename="../../src/Dialog_Processing.cpp" line="1310"/>
|
||||||
<source>%n hour(s)</source>
|
<source>%n hour(s)</source>
|
||||||
<translation>
|
<translation>
|
||||||
<numerusform>%n hour</numerusform>
|
<numerusform>%n hour</numerusform>
|
||||||
@ -130,8 +130,8 @@
|
|||||||
</translation>
|
</translation>
|
||||||
</message>
|
</message>
|
||||||
<message numerus="yes">
|
<message numerus="yes">
|
||||||
<location filename="../../src/Dialog_Processing.cpp" line="1292"/>
|
<location filename="../../src/Dialog_Processing.cpp" line="1311"/>
|
||||||
<location filename="../../src/Dialog_Processing.cpp" line="1296"/>
|
<location filename="../../src/Dialog_Processing.cpp" line="1315"/>
|
||||||
<source>%n minute(s)</source>
|
<source>%n minute(s)</source>
|
||||||
<translation>
|
<translation>
|
||||||
<numerusform>%n minute</numerusform>
|
<numerusform>%n minute</numerusform>
|
||||||
@ -139,8 +139,8 @@
|
|||||||
</translation>
|
</translation>
|
||||||
</message>
|
</message>
|
||||||
<message numerus="yes">
|
<message numerus="yes">
|
||||||
<location filename="../../src/Dialog_Processing.cpp" line="1297"/>
|
<location filename="../../src/Dialog_Processing.cpp" line="1316"/>
|
||||||
<location filename="../../src/Dialog_Processing.cpp" line="1301"/>
|
<location filename="../../src/Dialog_Processing.cpp" line="1320"/>
|
||||||
<source>%n second(s)</source>
|
<source>%n second(s)</source>
|
||||||
<translation>
|
<translation>
|
||||||
<numerusform>%n second</numerusform>
|
<numerusform>%n second</numerusform>
|
||||||
@ -148,7 +148,7 @@
|
|||||||
</translation>
|
</translation>
|
||||||
</message>
|
</message>
|
||||||
<message numerus="yes">
|
<message numerus="yes">
|
||||||
<location filename="../../src/Dialog_Processing.cpp" line="1302"/>
|
<location filename="../../src/Dialog_Processing.cpp" line="1321"/>
|
||||||
<source>%n millisecond(s)</source>
|
<source>%n millisecond(s)</source>
|
||||||
<translation>
|
<translation>
|
||||||
<numerusform>%n millisecond</numerusform>
|
<numerusform>%n millisecond</numerusform>
|
||||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -33,8 +33,8 @@
|
|||||||
#define VER_LAMEXP_MINOR_HI 0
|
#define VER_LAMEXP_MINOR_HI 0
|
||||||
#define VER_LAMEXP_MINOR_LO 8
|
#define VER_LAMEXP_MINOR_LO 8
|
||||||
#define VER_LAMEXP_TYPE Alpha
|
#define VER_LAMEXP_TYPE Alpha
|
||||||
#define VER_LAMEXP_PATCH 3
|
#define VER_LAMEXP_PATCH 5
|
||||||
#define VER_LAMEXP_BUILD 1303
|
#define VER_LAMEXP_BUILD 1310
|
||||||
#define VER_LAMEXP_CONFG 1288
|
#define VER_LAMEXP_CONFG 1288
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
@ -150,6 +150,14 @@ while(0)
|
|||||||
} \
|
} \
|
||||||
while(0)
|
while(0)
|
||||||
|
|
||||||
|
#define WITH_BLOCKED_SIGNALS(WIDGET, CMD, ...) do \
|
||||||
|
{ \
|
||||||
|
(WIDGET)->blockSignals(true); \
|
||||||
|
(WIDGET)->CMD(__VA_ARGS__); \
|
||||||
|
(WIDGET)->blockSignals(false); \
|
||||||
|
} \
|
||||||
|
while(0)
|
||||||
|
|
||||||
#define LINK(URL) QString("<a href=\"%1\">%2</a>").arg(URL).arg(QString(URL).replace("-", "−"))
|
#define LINK(URL) QString("<a href=\"%1\">%2</a>").arg(URL).arg(QString(URL).replace("-", "−"))
|
||||||
#define FSLINK(PATH) QString("<a href=\"file:///%1\">%2</a>").arg(PATH).arg(QString(PATH).replace("-", "−"))
|
#define FSLINK(PATH) QString("<a href=\"file:///%1\">%2</a>").arg(PATH).arg(QString(PATH).replace("-", "−"))
|
||||||
//#define USE_NATIVE_FILE_DIALOG (lamexp_themes_enabled() || ((QSysInfo::windowsVersion() & QSysInfo::WV_NT_based) < QSysInfo::WV_XP))
|
//#define USE_NATIVE_FILE_DIALOG (lamexp_themes_enabled() || ((QSysInfo::windowsVersion() & QSysInfo::WV_NT_based) < QSysInfo::WV_XP))
|
||||||
@ -356,10 +364,11 @@ MainWindow::MainWindow(FileListModel *fileListModel, AudioFileModel *metaInfo, S
|
|||||||
ui->radioButtonEncoderOpus->setChecked(m_settings->compressionEncoder() == SettingsModel::OpusEncoder);
|
ui->radioButtonEncoderOpus->setChecked(m_settings->compressionEncoder() == SettingsModel::OpusEncoder);
|
||||||
ui->radioButtonEncoderDCA->setChecked(m_settings->compressionEncoder() == SettingsModel::DCAEncoder);
|
ui->radioButtonEncoderDCA->setChecked(m_settings->compressionEncoder() == SettingsModel::DCAEncoder);
|
||||||
ui->radioButtonEncoderPCM->setChecked(m_settings->compressionEncoder() == SettingsModel::PCMEncoder);
|
ui->radioButtonEncoderPCM->setChecked(m_settings->compressionEncoder() == SettingsModel::PCMEncoder);
|
||||||
ui->radioButtonModeQuality->setChecked(m_settings->compressionRCMode() == SettingsModel::VBRMode);
|
|
||||||
ui->radioButtonModeAverageBitrate->setChecked(m_settings->compressionRCMode() == SettingsModel::ABRMode);
|
//ui->radioButtonModeQuality->setChecked(m_settings->compressionRCMode() == SettingsModel::VBRMode);
|
||||||
ui->radioButtonConstBitrate->setChecked(m_settings->compressionRCMode() == SettingsModel::CBRMode);
|
//ui->radioButtonModeAverageBitrate->setChecked(m_settings->compressionRCMode() == SettingsModel::ABRMode);
|
||||||
ui->sliderBitrate->setValue(m_settings->compressionBitrate());
|
//ui->radioButtonConstBitrate->setChecked(m_settings->compressionRCMode() == SettingsModel::CBRMode);
|
||||||
|
//ui->sliderBitrate->setValue(m_settings->compressionBitrate());
|
||||||
|
|
||||||
m_evenFilterCompressionTab = new CustomEventFilter();
|
m_evenFilterCompressionTab = new CustomEventFilter();
|
||||||
ui->labelCompressionHelp->installEventFilter(m_evenFilterCompressionTab);
|
ui->labelCompressionHelp->installEventFilter(m_evenFilterCompressionTab);
|
||||||
@ -908,6 +917,129 @@ void MainWindow::initializeTranslation(void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Get the current RC-Mode (for selected encoder)
|
||||||
|
*/
|
||||||
|
int MainWindow::getCurrentRCMode(int encoder)
|
||||||
|
{
|
||||||
|
int mode = -1;
|
||||||
|
|
||||||
|
switch(encoder)
|
||||||
|
{
|
||||||
|
case SettingsModel::MP3Encoder:
|
||||||
|
mode = m_settings->compressionRCModeLAME();
|
||||||
|
break;
|
||||||
|
case SettingsModel::VorbisEncoder:
|
||||||
|
mode = m_settings->compressionRCModeOggEnc();
|
||||||
|
break;
|
||||||
|
case SettingsModel::AACEncoder:
|
||||||
|
mode = m_settings->compressionRCModeAacEnc();
|
||||||
|
break;
|
||||||
|
case SettingsModel::AC3Encoder:
|
||||||
|
mode = m_settings->compressionRCModeAften();
|
||||||
|
break;
|
||||||
|
case SettingsModel::FLACEncoder:
|
||||||
|
mode = SettingsModel::VBRMode; /*FLAC has no RC modes*/
|
||||||
|
break;
|
||||||
|
case SettingsModel::OpusEncoder:
|
||||||
|
mode = m_settings->compressionRCModeOpusEnc();
|
||||||
|
break;
|
||||||
|
case SettingsModel::DCAEncoder:
|
||||||
|
mode = SettingsModel::CBRMode; /*DcaEnc has no RC modes*/
|
||||||
|
break;
|
||||||
|
case SettingsModel::PCMEncoder:
|
||||||
|
mode = SettingsModel::CBRMode; /*PCM has no RC modes*/
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
throw "getCurrentRCMode(): Unknown encoder specified!";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return mode;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Get the current VBR-Level (for selected encoder)
|
||||||
|
*/
|
||||||
|
int MainWindow::getCurrentQuality(int encoder)
|
||||||
|
{
|
||||||
|
int quality = -1;
|
||||||
|
|
||||||
|
switch(encoder)
|
||||||
|
{
|
||||||
|
case SettingsModel::MP3Encoder:
|
||||||
|
quality = m_settings->compressionVbrLevelLAME();
|
||||||
|
break;
|
||||||
|
case SettingsModel::VorbisEncoder:
|
||||||
|
quality = m_settings->compressionVbrLevelOggEnc();
|
||||||
|
break;
|
||||||
|
case SettingsModel::AACEncoder:
|
||||||
|
quality = m_settings->compressionVbrLevelAacEnc();
|
||||||
|
break;
|
||||||
|
case SettingsModel::AC3Encoder:
|
||||||
|
quality = m_settings->compressionVbrLevelAften();
|
||||||
|
break;
|
||||||
|
case SettingsModel::FLACEncoder:
|
||||||
|
quality = m_settings->compressionVbrLevelFLAC();
|
||||||
|
break;
|
||||||
|
case SettingsModel::OpusEncoder:
|
||||||
|
quality = m_settings->compressionBitrateOpusEnc();
|
||||||
|
break;
|
||||||
|
case SettingsModel::DCAEncoder:
|
||||||
|
quality = 0; /*DcaEnc has no quality level*/
|
||||||
|
break;
|
||||||
|
case SettingsModel::PCMEncoder:
|
||||||
|
quality = 1; /*PCM has no quality level*/
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
throw "getCurrentVbrLevel(): Unknown encoder specified!";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return quality;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Get the current Bitrate (for selected encoder)
|
||||||
|
*/
|
||||||
|
int MainWindow::getCurrentBitrate(int encoder)
|
||||||
|
{
|
||||||
|
int bitrate = -1;
|
||||||
|
|
||||||
|
switch(encoder)
|
||||||
|
{
|
||||||
|
case SettingsModel::MP3Encoder:
|
||||||
|
bitrate = m_settings->compressionBitrateLAME();
|
||||||
|
break;
|
||||||
|
case SettingsModel::VorbisEncoder:
|
||||||
|
bitrate = m_settings->compressionBitrateOggEnc();
|
||||||
|
break;
|
||||||
|
case SettingsModel::AACEncoder:
|
||||||
|
bitrate = m_settings->compressionBitrateAacEnc();
|
||||||
|
break;
|
||||||
|
case SettingsModel::AC3Encoder:
|
||||||
|
bitrate = m_settings->compressionBitrateAften();
|
||||||
|
break;
|
||||||
|
case SettingsModel::FLACEncoder:
|
||||||
|
bitrate = 0; /*FLAC has no bitrate*/
|
||||||
|
break;
|
||||||
|
case SettingsModel::OpusEncoder:
|
||||||
|
bitrate = m_settings->compressionBitrateOpusEnc();
|
||||||
|
break;
|
||||||
|
case SettingsModel::DCAEncoder:
|
||||||
|
bitrate = m_settings->compressionBitrateDcaEnc();
|
||||||
|
break;
|
||||||
|
case SettingsModel::PCMEncoder:
|
||||||
|
bitrate = 1; /*PCM has no bitrate*/
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
throw "getCurrentBitrate(): Unknown encoder specified!";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return bitrate;
|
||||||
|
}
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////
|
||||||
// EVENTS
|
// EVENTS
|
||||||
////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////
|
||||||
@ -3035,6 +3167,7 @@ void MainWindow::initOutputFolderModel(void)
|
|||||||
ui->outputFolderView->header()->hideSection(3);
|
ui->outputFolderView->header()->hideSection(3);
|
||||||
|
|
||||||
m_fileSystemModel->setRootPath("");
|
m_fileSystemModel->setRootPath("");
|
||||||
|
qWarning("Initializing QFileSystemModel to:\n%s\n", m_settings->outputDir().toUtf8().constData());
|
||||||
QModelIndex index = m_fileSystemModel->index(m_settings->outputDir());
|
QModelIndex index = m_fileSystemModel->index(m_settings->outputDir());
|
||||||
if(index.isValid()) ui->outputFolderView->setCurrentIndex(index);
|
if(index.isValid()) ui->outputFolderView->setCurrentIndex(index);
|
||||||
outputFolderViewClicked(ui->outputFolderView->currentIndex());
|
outputFolderViewClicked(ui->outputFolderView->currentIndex());
|
||||||
@ -3283,58 +3416,46 @@ void MainWindow::updateEncoder(int id)
|
|||||||
{
|
{
|
||||||
m_settings->compressionEncoder(id);
|
m_settings->compressionEncoder(id);
|
||||||
|
|
||||||
|
bool bSupportsVBR = false;
|
||||||
|
bool bSupportsABR = false;;
|
||||||
|
bool bSupportsCBR = false;
|
||||||
|
bool bSliderEnabled = false;
|
||||||
|
|
||||||
|
//Set encoder-specific features
|
||||||
switch(m_settings->compressionEncoder())
|
switch(m_settings->compressionEncoder())
|
||||||
{
|
{
|
||||||
|
case SettingsModel::MP3Encoder:
|
||||||
|
case SettingsModel::AACEncoder:
|
||||||
|
case SettingsModel::OpusEncoder:
|
||||||
|
bSupportsVBR = bSupportsABR = bSupportsCBR = bSliderEnabled = true;
|
||||||
|
break;
|
||||||
case SettingsModel::VorbisEncoder:
|
case SettingsModel::VorbisEncoder:
|
||||||
ui->radioButtonModeQuality->setEnabled(true);
|
bSupportsVBR = bSupportsABR = bSliderEnabled = true;
|
||||||
ui->radioButtonModeAverageBitrate->setEnabled(true);
|
|
||||||
ui->radioButtonConstBitrate->setEnabled(false);
|
|
||||||
if(ui->radioButtonConstBitrate->isChecked()) ui->radioButtonModeQuality->setChecked(true);
|
|
||||||
ui->sliderBitrate->setEnabled(true);
|
|
||||||
break;
|
break;
|
||||||
case SettingsModel::AC3Encoder:
|
case SettingsModel::AC3Encoder:
|
||||||
ui->radioButtonModeQuality->setEnabled(true);
|
bSupportsVBR = bSupportsCBR = bSliderEnabled = true;
|
||||||
ui->radioButtonModeQuality->setChecked(true);
|
|
||||||
ui->radioButtonModeAverageBitrate->setEnabled(false);
|
|
||||||
ui->radioButtonConstBitrate->setEnabled(true);
|
|
||||||
ui->sliderBitrate->setEnabled(true);
|
|
||||||
break;
|
break;
|
||||||
case SettingsModel::FLACEncoder:
|
case SettingsModel::FLACEncoder:
|
||||||
ui->radioButtonModeQuality->setEnabled(false);
|
bSupportsVBR = bSliderEnabled = true;
|
||||||
ui->radioButtonModeQuality->setChecked(true);
|
|
||||||
ui->radioButtonModeAverageBitrate->setEnabled(false);
|
|
||||||
ui->radioButtonConstBitrate->setEnabled(false);
|
|
||||||
ui->sliderBitrate->setEnabled(true);
|
|
||||||
break;
|
|
||||||
case SettingsModel::PCMEncoder:
|
|
||||||
ui->radioButtonModeQuality->setEnabled(false);
|
|
||||||
ui->radioButtonModeQuality->setChecked(true);
|
|
||||||
ui->radioButtonModeAverageBitrate->setEnabled(false);
|
|
||||||
ui->radioButtonConstBitrate->setEnabled(false);
|
|
||||||
ui->sliderBitrate->setEnabled(false);
|
|
||||||
break;
|
|
||||||
case SettingsModel::AACEncoder:
|
|
||||||
ui->radioButtonModeQuality->setEnabled(true);
|
|
||||||
ui->radioButtonModeAverageBitrate->setEnabled(!m_fhgEncoderAvailable);
|
|
||||||
if(m_fhgEncoderAvailable && ui->radioButtonModeAverageBitrate->isChecked()) ui->radioButtonConstBitrate->setChecked(true);
|
|
||||||
ui->radioButtonConstBitrate->setEnabled(true);
|
|
||||||
ui->sliderBitrate->setEnabled(true);
|
|
||||||
break;
|
break;
|
||||||
case SettingsModel::DCAEncoder:
|
case SettingsModel::DCAEncoder:
|
||||||
ui->radioButtonModeQuality->setEnabled(false);
|
bSupportsCBR = bSliderEnabled = true;
|
||||||
ui->radioButtonModeAverageBitrate->setEnabled(false);
|
break;
|
||||||
ui->radioButtonConstBitrate->setEnabled(true);
|
case SettingsModel::PCMEncoder:
|
||||||
ui->radioButtonConstBitrate->setChecked(true);
|
bSupportsCBR = true;
|
||||||
ui->sliderBitrate->setEnabled(true);
|
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
ui->radioButtonModeQuality->setEnabled(true);
|
throw "updateEncoder(): Unknown encoder encountered!";
|
||||||
ui->radioButtonModeAverageBitrate->setEnabled(true);
|
|
||||||
ui->radioButtonConstBitrate->setEnabled(true);
|
|
||||||
ui->sliderBitrate->setEnabled(true);
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//Update UI controls
|
||||||
|
ui->radioButtonModeQuality->setEnabled(bSupportsVBR);
|
||||||
|
ui->radioButtonModeAverageBitrate->setEnabled(bSupportsABR);
|
||||||
|
ui->radioButtonConstBitrate->setEnabled(bSupportsCBR);
|
||||||
|
ui->sliderBitrate->setEnabled(bSliderEnabled);
|
||||||
|
|
||||||
|
//Add AAC info
|
||||||
if(m_settings->compressionEncoder() == SettingsModel::AACEncoder)
|
if(m_settings->compressionEncoder() == SettingsModel::AACEncoder)
|
||||||
{
|
{
|
||||||
const QString encoderName = m_qaacEncoderAvailable ? tr("QAAC (Apple)") : (m_fhgEncoderAvailable ? tr("FHG AAC (Winamp)") : (m_neroEncoderAvailable ? tr("Nero AAC") : tr("Not available!")));
|
const QString encoderName = m_qaacEncoderAvailable ? tr("QAAC (Apple)") : (m_fhgEncoderAvailable ? tr("FHG AAC (Winamp)") : (m_neroEncoderAvailable ? tr("Nero AAC") : tr("Not available!")));
|
||||||
@ -3346,7 +3467,25 @@ void MainWindow::updateEncoder(int id)
|
|||||||
ui->labelEncoderInfo->setVisible(false);
|
ui->labelEncoderInfo->setVisible(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
updateRCMode(m_modeButtonGroup->checkedId());
|
//Set current RC mode
|
||||||
|
const int currentRCMode = getCurrentRCMode(id);
|
||||||
|
switch(currentRCMode)
|
||||||
|
{
|
||||||
|
case SettingsModel::VBRMode:
|
||||||
|
ui->radioButtonModeQuality->setChecked(true);
|
||||||
|
break;
|
||||||
|
case SettingsModel::ABRMode:
|
||||||
|
ui->radioButtonModeAverageBitrate->setChecked(true);
|
||||||
|
break;
|
||||||
|
case SettingsModel::CBRMode:
|
||||||
|
ui->radioButtonConstBitrate->setChecked(true);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
throw "updateEncoder(): Unknown rc-mode encountered!";
|
||||||
|
}
|
||||||
|
|
||||||
|
//Update RC mode!
|
||||||
|
updateRCMode(currentRCMode);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -3354,99 +3493,192 @@ void MainWindow::updateEncoder(int id)
|
|||||||
*/
|
*/
|
||||||
void MainWindow::updateRCMode(int id)
|
void MainWindow::updateRCMode(int id)
|
||||||
{
|
{
|
||||||
m_settings->compressionRCMode(id);
|
int sliderMin = INT_MIN;
|
||||||
|
int sliderMax = INT_MAX;
|
||||||
|
|
||||||
switch(m_settings->compressionEncoder())
|
//Update encoder-specific settings
|
||||||
|
const int currentEncoder = m_settings->compressionEncoder();
|
||||||
|
switch(currentEncoder)
|
||||||
{
|
{
|
||||||
|
/* -------- MP3Encoder -------- */
|
||||||
case SettingsModel::MP3Encoder:
|
case SettingsModel::MP3Encoder:
|
||||||
switch(m_settings->compressionRCMode())
|
switch(id)
|
||||||
{
|
{
|
||||||
case SettingsModel::VBRMode:
|
case SettingsModel::VBRMode:
|
||||||
ui->sliderBitrate->setMinimum(0);
|
sliderMin = 0;
|
||||||
ui->sliderBitrate->setMaximum(9);
|
sliderMax = 9;
|
||||||
|
break;
|
||||||
|
case SettingsModel::ABRMode:
|
||||||
|
case SettingsModel::CBRMode:
|
||||||
|
sliderMin = 0;
|
||||||
|
sliderMax = 13;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
ui->sliderBitrate->setMinimum(0);
|
throw "updateRCMode(): Unknown rc-mode specified!";
|
||||||
ui->sliderBitrate->setMaximum(13);
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
m_settings->compressionRCModeLAME(id);
|
||||||
break;
|
break;
|
||||||
|
/* -------- VorbisEncoder -------- */
|
||||||
case SettingsModel::VorbisEncoder:
|
case SettingsModel::VorbisEncoder:
|
||||||
switch(m_settings->compressionRCMode())
|
switch(id)
|
||||||
{
|
{
|
||||||
case SettingsModel::VBRMode:
|
case SettingsModel::VBRMode:
|
||||||
ui->sliderBitrate->setMinimum(-2);
|
sliderMin = -2;
|
||||||
ui->sliderBitrate->setMaximum(10);
|
sliderMax = 10;
|
||||||
|
break;
|
||||||
|
case SettingsModel::ABRMode:
|
||||||
|
case SettingsModel::CBRMode:
|
||||||
|
sliderMin = 4;
|
||||||
|
sliderMax = 63;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
ui->sliderBitrate->setMinimum(4);
|
throw "updateRCMode(): Unknown rc-mode specified!";
|
||||||
ui->sliderBitrate->setMaximum(63);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case SettingsModel::AC3Encoder:
|
|
||||||
switch(m_settings->compressionRCMode())
|
|
||||||
{
|
|
||||||
case SettingsModel::VBRMode:
|
|
||||||
ui->sliderBitrate->setMinimum(0);
|
|
||||||
ui->sliderBitrate->setMaximum(16);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
ui->sliderBitrate->setMinimum(0);
|
|
||||||
ui->sliderBitrate->setMaximum(18);
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
m_settings->compressionRCModeOggEnc(id);
|
||||||
break;
|
break;
|
||||||
|
/* -------- AACEncoder -------- */
|
||||||
case SettingsModel::AACEncoder:
|
case SettingsModel::AACEncoder:
|
||||||
switch(m_settings->compressionRCMode())
|
switch(id)
|
||||||
{
|
{
|
||||||
case SettingsModel::VBRMode:
|
case SettingsModel::VBRMode:
|
||||||
if(m_qaacEncoderAvailable)
|
if(m_qaacEncoderAvailable)
|
||||||
{
|
{
|
||||||
ui->sliderBitrate->setMinimum(0);
|
sliderMin = 0;
|
||||||
ui->sliderBitrate->setMaximum(32);
|
sliderMax = 32;
|
||||||
}
|
}
|
||||||
else if(m_fhgEncoderAvailable)
|
else if(m_fhgEncoderAvailable)
|
||||||
{
|
{
|
||||||
ui->sliderBitrate->setMinimum(1);
|
sliderMin = 1;
|
||||||
ui->sliderBitrate->setMaximum(6);
|
sliderMax = 6;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
ui->sliderBitrate->setMinimum(0);
|
sliderMin = 0;
|
||||||
ui->sliderBitrate->setMaximum(20);
|
sliderMax = 20;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case SettingsModel::ABRMode:
|
||||||
|
case SettingsModel::CBRMode:
|
||||||
|
sliderMin = 4;
|
||||||
|
sliderMax = 63;
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
ui->sliderBitrate->setMinimum(4);
|
throw "updateRCMode(): Unknown rc-mode specified!";
|
||||||
ui->sliderBitrate->setMaximum(63);
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
m_settings->compressionRCModeAacEnc(id);
|
||||||
break;
|
break;
|
||||||
|
/* -------- AC3Encoder -------- */
|
||||||
|
case SettingsModel::AC3Encoder:
|
||||||
|
switch(id)
|
||||||
|
{
|
||||||
|
case SettingsModel::VBRMode:
|
||||||
|
sliderMin = 0;
|
||||||
|
sliderMax = 16;
|
||||||
|
break;
|
||||||
|
case SettingsModel::ABRMode:
|
||||||
|
case SettingsModel::CBRMode:
|
||||||
|
sliderMin = 0;
|
||||||
|
sliderMax = 18;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
throw "updateRCMode(): Unknown rc-mode specified!";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
m_settings->compressionRCModeAften(id);
|
||||||
|
break;
|
||||||
|
/* -------- FLACEncoder -------- */
|
||||||
case SettingsModel::FLACEncoder:
|
case SettingsModel::FLACEncoder:
|
||||||
ui->sliderBitrate->setMinimum(0);
|
switch(id)
|
||||||
ui->sliderBitrate->setMaximum(8);
|
{
|
||||||
break;
|
case SettingsModel::VBRMode:
|
||||||
case SettingsModel::OpusEncoder:
|
case SettingsModel::ABRMode:
|
||||||
ui->sliderBitrate->setMinimum(1);
|
case SettingsModel::CBRMode:
|
||||||
ui->sliderBitrate->setMaximum(32);
|
sliderMin = 0;
|
||||||
break;
|
sliderMax = 8;
|
||||||
case SettingsModel::DCAEncoder:
|
|
||||||
ui->sliderBitrate->setMinimum(1);
|
|
||||||
ui->sliderBitrate->setMaximum(128);
|
|
||||||
break;
|
|
||||||
case SettingsModel::PCMEncoder:
|
|
||||||
ui->sliderBitrate->setMinimum(0);
|
|
||||||
ui->sliderBitrate->setMaximum(2);
|
|
||||||
ui->sliderBitrate->setValue(1);
|
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
ui->sliderBitrate->setMinimum(0);
|
throw "updateRCMode(): Unknown rc-mode specified!";
|
||||||
ui->sliderBitrate->setMaximum(0);
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
/* -------- OpusEncoder -------- */
|
||||||
|
case SettingsModel::OpusEncoder:
|
||||||
|
switch(id)
|
||||||
|
{
|
||||||
|
case SettingsModel::VBRMode:
|
||||||
|
case SettingsModel::ABRMode:
|
||||||
|
case SettingsModel::CBRMode:
|
||||||
|
sliderMin = 1;
|
||||||
|
sliderMax = 32;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
throw "updateRCMode(): Unknown rc-mode specified!";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
m_settings->compressionRCModeOpusEnc(id);
|
||||||
|
break;
|
||||||
|
/* -------- DCAEncoder -------- */
|
||||||
|
case SettingsModel::DCAEncoder:
|
||||||
|
switch(id)
|
||||||
|
{
|
||||||
|
case SettingsModel::VBRMode:
|
||||||
|
case SettingsModel::ABRMode:
|
||||||
|
case SettingsModel::CBRMode:
|
||||||
|
sliderMin = 1;
|
||||||
|
sliderMax = 128;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
throw "updateRCMode(): Unknown rc-mode specified!";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
/* -------- PCMEncoder -------- */
|
||||||
|
case SettingsModel::PCMEncoder:
|
||||||
|
switch(id)
|
||||||
|
{
|
||||||
|
case SettingsModel::VBRMode:
|
||||||
|
case SettingsModel::ABRMode:
|
||||||
|
case SettingsModel::CBRMode:
|
||||||
|
sliderMin = 0;
|
||||||
|
sliderMax = 2;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
throw "updateRCMode(): Unknown rc-mode specified!";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
/* -------- default -------- */
|
||||||
|
default:
|
||||||
|
throw "updateRCMode(): Unknown encoder specified!";
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
updateBitrate(ui->sliderBitrate->value());
|
//Update slider min/max values
|
||||||
|
WITH_BLOCKED_SIGNALS(ui->sliderBitrate, setMinimum, sliderMin);
|
||||||
|
WITH_BLOCKED_SIGNALS(ui->sliderBitrate, setMaximum, sliderMax);
|
||||||
|
|
||||||
|
//Update slider position
|
||||||
|
int currentPosition = INT_MAX;
|
||||||
|
switch(id)
|
||||||
|
{
|
||||||
|
case SettingsModel::VBRMode:
|
||||||
|
currentPosition = getCurrentQuality(currentEncoder);
|
||||||
|
break;
|
||||||
|
case SettingsModel::ABRMode:
|
||||||
|
case SettingsModel::CBRMode:
|
||||||
|
currentPosition = getCurrentBitrate(currentEncoder);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
throw "updateRCMode(): Unknown rc-mode specified!";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
//Update bitrate/quality value!
|
||||||
|
ui->sliderBitrate->setValue(currentPosition);
|
||||||
|
updateBitrate(currentPosition);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -3454,94 +3686,186 @@ void MainWindow::updateRCMode(int id)
|
|||||||
*/
|
*/
|
||||||
void MainWindow::updateBitrate(int value)
|
void MainWindow::updateBitrate(int value)
|
||||||
{
|
{
|
||||||
m_settings->compressionBitrate(value);
|
//Update encoder-specific settings
|
||||||
|
const int currentEncoder = m_settings->compressionEncoder();
|
||||||
|
const int currentRCMode = getCurrentRCMode(currentEncoder);
|
||||||
|
|
||||||
switch(m_settings->compressionRCMode())
|
QString sliderText;
|
||||||
|
|
||||||
|
switch(currentEncoder)
|
||||||
|
{
|
||||||
|
/* -------- MP3Encoder -------- */
|
||||||
|
case SettingsModel::MP3Encoder:
|
||||||
|
switch(currentRCMode)
|
||||||
{
|
{
|
||||||
case SettingsModel::VBRMode:
|
case SettingsModel::VBRMode:
|
||||||
switch(m_settings->compressionEncoder())
|
sliderText = tr("Quality Level %1").arg(9 - value);
|
||||||
{
|
m_settings->compressionVbrLevelLAME(value);
|
||||||
case SettingsModel::MP3Encoder:
|
|
||||||
ui->labelBitrate->setText(tr("Quality Level %1").arg(9 - value));
|
|
||||||
break;
|
break;
|
||||||
|
case SettingsModel::ABRMode:
|
||||||
|
sliderText = QString("≈ %1 kbps").arg(SettingsModel::mp3Bitrates[value]);
|
||||||
|
m_settings->compressionBitrateLAME(value);
|
||||||
|
break;
|
||||||
|
case SettingsModel::CBRMode:
|
||||||
|
sliderText = QString("%1 kbps").arg(SettingsModel::mp3Bitrates[value]);
|
||||||
|
m_settings->compressionBitrateLAME(value);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
throw "updateBitrate(): Unknown rc-mode specified!";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
/* -------- VorbisEncoder -------- */
|
||||||
case SettingsModel::VorbisEncoder:
|
case SettingsModel::VorbisEncoder:
|
||||||
ui->labelBitrate->setText(tr("Quality Level %1").arg(value));
|
switch(currentRCMode)
|
||||||
|
{
|
||||||
|
case SettingsModel::VBRMode:
|
||||||
|
sliderText = tr("Quality Level %1").arg(value);
|
||||||
|
m_settings->compressionVbrLevelOggEnc(value);
|
||||||
break;
|
break;
|
||||||
|
case SettingsModel::ABRMode:
|
||||||
|
sliderText = QString("≈ %1 kbps").arg(qMin(500, value * 8));
|
||||||
|
m_settings->compressionBitrateOggEnc(value);
|
||||||
|
break;
|
||||||
|
case SettingsModel::CBRMode:
|
||||||
|
sliderText = QString("%1 kbps").arg(qMin(500, value * 8));
|
||||||
|
m_settings->compressionBitrateOggEnc(value);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
throw "updateBitrate(): Unknown rc-mode specified!";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
/* -------- AACEncoder -------- */
|
||||||
case SettingsModel::AACEncoder:
|
case SettingsModel::AACEncoder:
|
||||||
|
switch(currentRCMode)
|
||||||
|
{
|
||||||
|
case SettingsModel::VBRMode:
|
||||||
if(m_qaacEncoderAvailable)
|
if(m_qaacEncoderAvailable)
|
||||||
{
|
{
|
||||||
ui->labelBitrate->setText(tr("Quality Level %1").arg(QString::number(qBound(0, value * 4 , 127))));
|
sliderText = tr("Quality Level %1").arg(QString::number(qBound(0, value * 4 , 127)));
|
||||||
}
|
}
|
||||||
else if(m_fhgEncoderAvailable)
|
else if(m_fhgEncoderAvailable)
|
||||||
{
|
{
|
||||||
ui->labelBitrate->setText(tr("Quality Level %1").arg(QString::number(value)));
|
sliderText = tr("Quality Level %1").arg(QString::number(value));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
ui->labelBitrate->setText(tr("Quality Level %1").arg(QString().sprintf("%.2f", static_cast<double>(value) / 20.0)));
|
sliderText = tr("Quality Level %1").arg(QString().sprintf("%.2f", static_cast<double>(value) / 20.0));
|
||||||
}
|
|
||||||
break;
|
|
||||||
case SettingsModel::FLACEncoder:
|
|
||||||
ui->labelBitrate->setText(tr("Compression %1").arg(value));
|
|
||||||
break;
|
|
||||||
case SettingsModel::OpusEncoder:
|
|
||||||
ui->labelBitrate->setText(QString("≈ %1 kbps").arg(qMin(500, value * 8)));
|
|
||||||
break;
|
|
||||||
case SettingsModel::AC3Encoder:
|
|
||||||
ui->labelBitrate->setText(tr("Quality Level %1").arg(qMin(1024, qMax(0, value * 64))));
|
|
||||||
break;
|
|
||||||
case SettingsModel::PCMEncoder:
|
|
||||||
ui->labelBitrate->setText(tr("Uncompressed"));
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
ui->labelBitrate->setText(QString::number(value));
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
|
m_settings->compressionVbrLevelAacEnc(value);
|
||||||
break;
|
break;
|
||||||
case SettingsModel::ABRMode:
|
case SettingsModel::ABRMode:
|
||||||
switch(m_settings->compressionEncoder())
|
sliderText = QString("≈ %1 kbps").arg(qMin(500, value * 8));
|
||||||
{
|
m_settings->compressionBitrateAacEnc(value);
|
||||||
case SettingsModel::MP3Encoder:
|
|
||||||
ui->labelBitrate->setText(QString("≈ %1 kbps").arg(SettingsModel::mp3Bitrates[value]));
|
|
||||||
break;
|
break;
|
||||||
case SettingsModel::FLACEncoder:
|
case SettingsModel::CBRMode:
|
||||||
ui->labelBitrate->setText(tr("Compression %1").arg(value));
|
sliderText = QString("%1 kbps").arg(qMin(500, value * 8));
|
||||||
break;
|
m_settings->compressionBitrateAacEnc(value);
|
||||||
case SettingsModel::AC3Encoder:
|
|
||||||
ui->labelBitrate->setText(QString("≈ %1 kbps").arg(SettingsModel::ac3Bitrates[value]));
|
|
||||||
break;
|
|
||||||
case SettingsModel::PCMEncoder:
|
|
||||||
ui->labelBitrate->setText(tr("Uncompressed"));
|
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
ui->labelBitrate->setText(QString("≈ %1 kbps").arg(qMin(500, value * 8)));
|
throw "updateBitrate(): Unknown rc-mode specified!";
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
/* -------- AC3Encoder -------- */
|
||||||
switch(m_settings->compressionEncoder())
|
|
||||||
{
|
|
||||||
case SettingsModel::MP3Encoder:
|
|
||||||
ui->labelBitrate->setText(QString("%1 kbps").arg(SettingsModel::mp3Bitrates[value]));
|
|
||||||
break;
|
|
||||||
case SettingsModel::FLACEncoder:
|
|
||||||
ui->labelBitrate->setText(tr("Compression %1").arg(value));
|
|
||||||
break;
|
|
||||||
case SettingsModel::AC3Encoder:
|
case SettingsModel::AC3Encoder:
|
||||||
ui->labelBitrate->setText(QString("%1 kbps").arg(SettingsModel::ac3Bitrates[value]));
|
switch(currentRCMode)
|
||||||
|
{
|
||||||
|
case SettingsModel::VBRMode:
|
||||||
|
sliderText = tr("Quality Level %1").arg(qMin(1024, qMax(0, value * 64)));
|
||||||
|
m_settings->compressionVbrLevelAften(value);
|
||||||
break;
|
break;
|
||||||
|
case SettingsModel::ABRMode:
|
||||||
|
sliderText = QString("≈ %1 kbps").arg(SettingsModel::ac3Bitrates[value]);
|
||||||
|
m_settings->compressionBitrateAften(value);
|
||||||
|
break;
|
||||||
|
case SettingsModel::CBRMode:
|
||||||
|
sliderText = QString("%1 kbps").arg(SettingsModel::ac3Bitrates[value]);
|
||||||
|
m_settings->compressionBitrateAften(value);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
throw "updateBitrate(): Unknown rc-mode specified!";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
/* -------- FLACEncoder -------- */
|
||||||
|
case SettingsModel::FLACEncoder:
|
||||||
|
switch(currentRCMode)
|
||||||
|
{
|
||||||
|
case SettingsModel::VBRMode:
|
||||||
|
sliderText = tr("Compression %1").arg(value);
|
||||||
|
m_settings->compressionVbrLevelFLAC(value);
|
||||||
|
break;
|
||||||
|
case SettingsModel::ABRMode:
|
||||||
|
case SettingsModel::CBRMode:
|
||||||
|
qWarning("FLAC does *not* support ABR or CBR mode!");
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
throw "updateBitrate(): Unknown rc-mode specified!";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
/* -------- OpusEncoder -------- */
|
||||||
|
case SettingsModel::OpusEncoder:
|
||||||
|
switch(currentRCMode)
|
||||||
|
{
|
||||||
|
case SettingsModel::VBRMode:
|
||||||
|
sliderText = QString("≈ %1 kbps").arg(qMin(500, value * 8));
|
||||||
|
m_settings->compressionBitrateOpusEnc(value);
|
||||||
|
break;
|
||||||
|
case SettingsModel::ABRMode:
|
||||||
|
sliderText = QString("≈ %1 kbps").arg(qMin(500, value * 8));
|
||||||
|
m_settings->compressionBitrateOpusEnc(value);
|
||||||
|
break;
|
||||||
|
case SettingsModel::CBRMode:
|
||||||
|
sliderText = QString("%1 kbps").arg(qMin(500, value * 8));
|
||||||
|
m_settings->compressionBitrateOpusEnc(value);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
throw "updateBitrate(): Unknown rc-mode specified!";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
/* -------- DCAEncoder -------- */
|
||||||
case SettingsModel::DCAEncoder:
|
case SettingsModel::DCAEncoder:
|
||||||
ui->labelBitrate->setText(QString("%1 kbps").arg(value * 32));
|
switch(currentRCMode)
|
||||||
|
{
|
||||||
|
case SettingsModel::VBRMode:
|
||||||
|
case SettingsModel::ABRMode:
|
||||||
|
qWarning("DcaEnc does *not* support VBR or ABR mode!");
|
||||||
break;
|
break;
|
||||||
case SettingsModel::PCMEncoder:
|
case SettingsModel::CBRMode:
|
||||||
ui->labelBitrate->setText(tr("Uncompressed"));
|
sliderText = QString("%1 kbps").arg(value * 32);
|
||||||
|
m_settings->compressionBitrateDcaEnc(value);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
ui->labelBitrate->setText(QString("%1 kbps").arg(qMin(500, value * 8)));
|
throw "updateBitrate(): Unknown rc-mode specified!";
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
/* -------- PCMEncoder -------- */
|
||||||
|
case SettingsModel::PCMEncoder:
|
||||||
|
switch(currentRCMode)
|
||||||
|
{
|
||||||
|
case SettingsModel::VBRMode:
|
||||||
|
case SettingsModel::ABRMode:
|
||||||
|
case SettingsModel::CBRMode:
|
||||||
|
sliderText = tr("Uncompressed");
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
throw "updateBitrate(): Unknown rc-mode specified!";
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
break;
|
||||||
|
/* -------- default -------- */
|
||||||
|
default:
|
||||||
|
throw "updateBitrate(): Unknown encoder specified!";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
//Update slider text
|
||||||
|
ui->labelBitrate->setText(sliderText);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -186,6 +186,9 @@ private:
|
|||||||
bool checkForUpdates(void);
|
bool checkForUpdates(void);
|
||||||
void initializeTranslation(void);
|
void initializeTranslation(void);
|
||||||
void refreshFavorites(void);
|
void refreshFavorites(void);
|
||||||
|
int getCurrentRCMode(int encoder);
|
||||||
|
int getCurrentQuality(int encoder);
|
||||||
|
int getCurrentBitrate(int encoder);
|
||||||
|
|
||||||
bool m_accepted;
|
bool m_accepted;
|
||||||
bool m_firstTimeShown;
|
bool m_firstTimeShown;
|
||||||
|
@ -121,6 +121,8 @@ while(0)
|
|||||||
} \
|
} \
|
||||||
while(0)
|
while(0)
|
||||||
|
|
||||||
|
#define IS_VBR(RC_MODE) ((RC_MODE) == SettingsModel::VBRMode)
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
//Dummy class for UserData
|
//Dummy class for UserData
|
||||||
@ -945,16 +947,18 @@ void ProcessingDialog::startNextJob(void)
|
|||||||
|
|
||||||
AbstractEncoder *ProcessingDialog::makeEncoder(bool *nativeResampling)
|
AbstractEncoder *ProcessingDialog::makeEncoder(bool *nativeResampling)
|
||||||
{
|
{
|
||||||
|
int rcMode = -1;
|
||||||
AbstractEncoder *encoder = NULL;
|
AbstractEncoder *encoder = NULL;
|
||||||
*nativeResampling = false;
|
*nativeResampling = false;
|
||||||
|
|
||||||
switch(m_settings->compressionEncoder())
|
switch(m_settings->compressionEncoder())
|
||||||
{
|
{
|
||||||
|
/*-------- MP3Encoder /*--------*/
|
||||||
case SettingsModel::MP3Encoder:
|
case SettingsModel::MP3Encoder:
|
||||||
{
|
{
|
||||||
MP3Encoder *mp3Encoder = new MP3Encoder();
|
MP3Encoder *mp3Encoder = new MP3Encoder();
|
||||||
mp3Encoder->setBitrate(m_settings->compressionBitrate());
|
mp3Encoder->setRCMode(rcMode = m_settings->compressionRCModeLAME());
|
||||||
mp3Encoder->setRCMode(m_settings->compressionRCMode());
|
mp3Encoder->setBitrate(IS_VBR(rcMode) ? m_settings->compressionVbrLevelLAME() : m_settings->compressionBitrateLAME());
|
||||||
mp3Encoder->setAlgoQuality(m_settings->lameAlgoQuality());
|
mp3Encoder->setAlgoQuality(m_settings->lameAlgoQuality());
|
||||||
if(m_settings->bitrateManagementEnabled())
|
if(m_settings->bitrateManagementEnabled())
|
||||||
{
|
{
|
||||||
@ -970,11 +974,12 @@ AbstractEncoder *ProcessingDialog::makeEncoder(bool *nativeResampling)
|
|||||||
encoder = mp3Encoder;
|
encoder = mp3Encoder;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
/*-------- VorbisEncoder /*--------*/
|
||||||
case SettingsModel::VorbisEncoder:
|
case SettingsModel::VorbisEncoder:
|
||||||
{
|
{
|
||||||
VorbisEncoder *vorbisEncoder = new VorbisEncoder();
|
VorbisEncoder *vorbisEncoder = new VorbisEncoder();
|
||||||
vorbisEncoder->setBitrate(m_settings->compressionBitrate());
|
vorbisEncoder->setRCMode(rcMode = m_settings->compressionRCModeOggEnc());
|
||||||
vorbisEncoder->setRCMode(m_settings->compressionRCMode());
|
vorbisEncoder->setBitrate(IS_VBR(rcMode) ? m_settings->compressionVbrLevelOggEnc() : m_settings->compressionBitrateOggEnc());
|
||||||
if(m_settings->bitrateManagementEnabled())
|
if(m_settings->bitrateManagementEnabled())
|
||||||
{
|
{
|
||||||
vorbisEncoder->setBitrateLimits(m_settings->bitrateManagementMinRate(), m_settings->bitrateManagementMaxRate());
|
vorbisEncoder->setBitrateLimits(m_settings->bitrateManagementMinRate(), m_settings->bitrateManagementMaxRate());
|
||||||
@ -988,13 +993,14 @@ AbstractEncoder *ProcessingDialog::makeEncoder(bool *nativeResampling)
|
|||||||
encoder = vorbisEncoder;
|
encoder = vorbisEncoder;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
/*-------- AACEncoder /*--------*/
|
||||||
case SettingsModel::AACEncoder:
|
case SettingsModel::AACEncoder:
|
||||||
{
|
{
|
||||||
if(lamexp_check_tool("qaac.exe") && lamexp_check_tool("libsoxrate.dll"))
|
if(lamexp_check_tool("qaac.exe") && lamexp_check_tool("libsoxrate.dll"))
|
||||||
{
|
{
|
||||||
QAACEncoder *aacEncoder = new QAACEncoder();
|
QAACEncoder *aacEncoder = new QAACEncoder();
|
||||||
aacEncoder->setBitrate(m_settings->compressionBitrate());
|
aacEncoder->setRCMode(rcMode = m_settings->compressionRCModeAacEnc());
|
||||||
aacEncoder->setRCMode(m_settings->compressionRCMode());
|
aacEncoder->setBitrate(IS_VBR(rcMode) ? m_settings->compressionVbrLevelAacEnc() : m_settings->compressionBitrateAacEnc());
|
||||||
aacEncoder->setProfile(m_settings->aacEncProfile());
|
aacEncoder->setProfile(m_settings->aacEncProfile());
|
||||||
aacEncoder->setCustomParams(m_settings->customParametersAacEnc());
|
aacEncoder->setCustomParams(m_settings->customParametersAacEnc());
|
||||||
encoder = aacEncoder;
|
encoder = aacEncoder;
|
||||||
@ -1002,8 +1008,8 @@ AbstractEncoder *ProcessingDialog::makeEncoder(bool *nativeResampling)
|
|||||||
else if(lamexp_check_tool("fhgaacenc.exe") && lamexp_check_tool("enc_fhgaac.dll"))
|
else if(lamexp_check_tool("fhgaacenc.exe") && lamexp_check_tool("enc_fhgaac.dll"))
|
||||||
{
|
{
|
||||||
FHGAACEncoder *aacEncoder = new FHGAACEncoder();
|
FHGAACEncoder *aacEncoder = new FHGAACEncoder();
|
||||||
aacEncoder->setBitrate(m_settings->compressionBitrate());
|
aacEncoder->setRCMode(rcMode = m_settings->compressionRCModeAacEnc());
|
||||||
aacEncoder->setRCMode(m_settings->compressionRCMode());
|
aacEncoder->setBitrate(IS_VBR(rcMode) ? m_settings->compressionVbrLevelAacEnc() : m_settings->compressionBitrateAacEnc());
|
||||||
aacEncoder->setProfile(m_settings->aacEncProfile());
|
aacEncoder->setProfile(m_settings->aacEncProfile());
|
||||||
aacEncoder->setCustomParams(m_settings->customParametersAacEnc());
|
aacEncoder->setCustomParams(m_settings->customParametersAacEnc());
|
||||||
encoder = aacEncoder;
|
encoder = aacEncoder;
|
||||||
@ -1011,8 +1017,8 @@ AbstractEncoder *ProcessingDialog::makeEncoder(bool *nativeResampling)
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
AACEncoder *aacEncoder = new AACEncoder();
|
AACEncoder *aacEncoder = new AACEncoder();
|
||||||
aacEncoder->setBitrate(m_settings->compressionBitrate());
|
aacEncoder->setRCMode(rcMode = m_settings->compressionRCModeAacEnc());
|
||||||
aacEncoder->setRCMode(m_settings->compressionRCMode());
|
aacEncoder->setBitrate(IS_VBR(rcMode) ? m_settings->compressionVbrLevelAacEnc() : m_settings->compressionBitrateAacEnc());
|
||||||
aacEncoder->setEnable2Pass(m_settings->neroAACEnable2Pass());
|
aacEncoder->setEnable2Pass(m_settings->neroAACEnable2Pass());
|
||||||
aacEncoder->setProfile(m_settings->aacEncProfile());
|
aacEncoder->setProfile(m_settings->aacEncProfile());
|
||||||
aacEncoder->setCustomParams(m_settings->customParametersAacEnc());
|
aacEncoder->setCustomParams(m_settings->customParametersAacEnc());
|
||||||
@ -1020,11 +1026,12 @@ AbstractEncoder *ProcessingDialog::makeEncoder(bool *nativeResampling)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
/*-------- AC3Encoder /*--------*/
|
||||||
case SettingsModel::AC3Encoder:
|
case SettingsModel::AC3Encoder:
|
||||||
{
|
{
|
||||||
AC3Encoder *ac3Encoder = new AC3Encoder();
|
AC3Encoder *ac3Encoder = new AC3Encoder();
|
||||||
ac3Encoder->setBitrate(m_settings->compressionBitrate());
|
ac3Encoder->setRCMode(rcMode = m_settings->compressionRCModeAften());
|
||||||
ac3Encoder->setRCMode(m_settings->compressionRCMode());
|
ac3Encoder->setBitrate(IS_VBR(rcMode) ? m_settings->compressionVbrLevelAften() : m_settings->compressionBitrateAften());
|
||||||
ac3Encoder->setCustomParams(m_settings->customParametersAften());
|
ac3Encoder->setCustomParams(m_settings->customParametersAften());
|
||||||
ac3Encoder->setAudioCodingMode(m_settings->aftenAudioCodingMode());
|
ac3Encoder->setAudioCodingMode(m_settings->aftenAudioCodingMode());
|
||||||
ac3Encoder->setDynamicRangeCompression(m_settings->aftenDynamicRangeCompression());
|
ac3Encoder->setDynamicRangeCompression(m_settings->aftenDynamicRangeCompression());
|
||||||
@ -1033,46 +1040,58 @@ AbstractEncoder *ProcessingDialog::makeEncoder(bool *nativeResampling)
|
|||||||
encoder = ac3Encoder;
|
encoder = ac3Encoder;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
/*-------- FLACEncoder /*--------*/
|
||||||
case SettingsModel::FLACEncoder:
|
case SettingsModel::FLACEncoder:
|
||||||
{
|
{
|
||||||
FLACEncoder *flacEncoder = new FLACEncoder();
|
FLACEncoder *flacEncoder = new FLACEncoder();
|
||||||
flacEncoder->setBitrate(m_settings->compressionBitrate());
|
flacEncoder->setBitrate(m_settings->compressionVbrLevelFLAC());
|
||||||
flacEncoder->setRCMode(m_settings->compressionRCMode());
|
flacEncoder->setRCMode(SettingsModel::VBRMode);
|
||||||
flacEncoder->setCustomParams(m_settings->customParametersFLAC());
|
flacEncoder->setCustomParams(m_settings->customParametersFLAC());
|
||||||
encoder = flacEncoder;
|
encoder = flacEncoder;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
/*-------- OpusEncoder --------*/
|
||||||
case SettingsModel::OpusEncoder:
|
case SettingsModel::OpusEncoder:
|
||||||
{
|
{
|
||||||
OpusEncoder *opusEncoder = new OpusEncoder();
|
OpusEncoder *opusEncoder = new OpusEncoder();
|
||||||
opusEncoder->setBitrate(m_settings->compressionBitrate());
|
opusEncoder->setRCMode(rcMode = m_settings->compressionRCModeOpusEnc());
|
||||||
opusEncoder->setRCMode(m_settings->compressionRCMode());
|
opusEncoder->setBitrate(m_settings->compressionBitrateOpusEnc()); /*Opus always uses bitrate*/
|
||||||
opusEncoder->setOptimizeFor(m_settings->opusOptimizeFor());
|
opusEncoder->setOptimizeFor(m_settings->opusOptimizeFor());
|
||||||
opusEncoder->setEncodeComplexity(m_settings->opusComplexity());
|
opusEncoder->setEncodeComplexity(m_settings->opusComplexity());
|
||||||
opusEncoder->setFrameSize(m_settings->opusFramesize());
|
opusEncoder->setFrameSize(m_settings->opusFramesize());
|
||||||
opusEncoder->setCustomParams(m_settings->customParametersOpus());
|
opusEncoder->setCustomParams(m_settings->customParametersOpus());
|
||||||
encoder = opusEncoder;
|
encoder = opusEncoder;
|
||||||
}
|
}
|
||||||
break; case SettingsModel::DCAEncoder:
|
break;
|
||||||
|
/*-------- DCAEncoder --------*/
|
||||||
|
case SettingsModel::DCAEncoder:
|
||||||
{
|
{
|
||||||
DCAEncoder *dcaEncoder = new DCAEncoder();
|
DCAEncoder *dcaEncoder = new DCAEncoder();
|
||||||
dcaEncoder->setBitrate(m_settings->compressionBitrate());
|
dcaEncoder->setRCMode(SettingsModel::CBRMode);
|
||||||
dcaEncoder->setRCMode(m_settings->compressionRCMode());
|
dcaEncoder->setBitrate(IS_VBR(rcMode) ? 0 : m_settings->compressionBitrateDcaEnc());
|
||||||
encoder = dcaEncoder;
|
encoder = dcaEncoder;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
/*-------- PCMEncoder --------*/
|
||||||
case SettingsModel::PCMEncoder:
|
case SettingsModel::PCMEncoder:
|
||||||
{
|
{
|
||||||
WaveEncoder *waveEncoder = new WaveEncoder();
|
WaveEncoder *waveEncoder = new WaveEncoder();
|
||||||
waveEncoder->setBitrate(m_settings->compressionBitrate());
|
waveEncoder->setBitrate(0); /*does NOT apply to PCM output*/
|
||||||
waveEncoder->setRCMode(m_settings->compressionRCMode());
|
waveEncoder->setRCMode(0); /*does NOT apply to PCM output*/
|
||||||
encoder = waveEncoder;
|
encoder = waveEncoder;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
/*-------- default --------*/
|
||||||
default:
|
default:
|
||||||
throw "Unsupported encoder!";
|
throw "Unsupported encoder!";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//Sanity checking
|
||||||
|
if(!encoder)
|
||||||
|
{
|
||||||
|
throw "No encoder instance has been assigend!";
|
||||||
|
}
|
||||||
|
|
||||||
return encoder;
|
return encoder;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -46,14 +46,14 @@ public:
|
|||||||
virtual const bool needsTimingInfo(void);
|
virtual const bool needsTimingInfo(void);
|
||||||
|
|
||||||
//Common setter methods
|
//Common setter methods
|
||||||
void setBitrate(int bitrate);
|
virtual void setBitrate(int bitrate);
|
||||||
void setRCMode(int mode);
|
virtual void setRCMode(int mode);
|
||||||
void setCustomParams(const QString &customParams);
|
virtual void setCustomParams(const QString &customParams);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
int m_configBitrate;
|
int m_configBitrate; //Bitrate *or* VBR-quality-level
|
||||||
int m_configRCMode;
|
int m_configRCMode; //Rate-control mode
|
||||||
QString m_configCustomParams;
|
QString m_configCustomParams; //Custom parameters, if any
|
||||||
|
|
||||||
//Helper functions
|
//Helper functions
|
||||||
bool isUnicode(const QString &text);
|
bool isUnicode(const QString &text);
|
||||||
|
@ -158,6 +158,11 @@ bool VorbisEncoder::encode(const QString &sourceFile, const AudioFileModel &meta
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void VorbisEncoder::setBitrate(int bitrate)
|
||||||
|
{
|
||||||
|
m_configBitrate = qMax(-2, bitrate);
|
||||||
|
}
|
||||||
|
|
||||||
QString VorbisEncoder::extension(void)
|
QString VorbisEncoder::extension(void)
|
||||||
{
|
{
|
||||||
return "ogg";
|
return "ogg";
|
||||||
|
@ -38,6 +38,7 @@ public:
|
|||||||
virtual QString extension(void);
|
virtual QString extension(void);
|
||||||
virtual void setBitrateLimits(int minimumBitrate, int maximumBitrate);
|
virtual void setBitrateLimits(int minimumBitrate, int maximumBitrate);
|
||||||
virtual void setSamplingRate(int value);
|
virtual void setSamplingRate(int value);
|
||||||
|
virtual void setBitrate(int bitrate);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
const QString m_binary;
|
const QString m_binary;
|
||||||
|
@ -68,66 +68,80 @@ unsigned int SettingsModel::OPT##Default(void) { return DEF; }
|
|||||||
////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
//Setting ID's
|
//Setting ID's
|
||||||
LAMEXP_MAKE_ID(versionNumber, "VersionNumber");
|
LAMEXP_MAKE_ID(aacEncProfile, "AdvancedOptions/AACEnc/ForceProfile");
|
||||||
LAMEXP_MAKE_ID(licenseAccepted, "LicenseAccepted");
|
|
||||||
LAMEXP_MAKE_ID(interfaceStyle, "InterfaceStyle");
|
|
||||||
LAMEXP_MAKE_ID(compressionEncoder, "Compression/Encoder");
|
|
||||||
LAMEXP_MAKE_ID(compressionRCMode, "Compression/RCMode");
|
|
||||||
LAMEXP_MAKE_ID(compressionBitrate, "Compression/Bitrate");
|
|
||||||
LAMEXP_MAKE_ID(outputDir, "OutputDirectory/SelectedPath");
|
|
||||||
LAMEXP_MAKE_ID(outputToSourceDir, "OutputDirectory/OutputToSourceFolder");
|
|
||||||
LAMEXP_MAKE_ID(prependRelativeSourcePath, "OutputDirectory/PrependRelativeSourcePath");
|
|
||||||
LAMEXP_MAKE_ID(favoriteOutputFolders, "OutputDirectory/Favorites");
|
|
||||||
LAMEXP_MAKE_ID(mostRecentInputPath, "InputDirectory/MostRecentPath");
|
|
||||||
LAMEXP_MAKE_ID(writeMetaTags, "Flags/WriteMetaTags");
|
|
||||||
LAMEXP_MAKE_ID(createPlaylist, "Flags/AutoCreatePlaylist");
|
|
||||||
LAMEXP_MAKE_ID(autoUpdateLastCheck, "AutoUpdate/LastCheck");
|
|
||||||
LAMEXP_MAKE_ID(autoUpdateEnabled, "AutoUpdate/Enabled");
|
|
||||||
LAMEXP_MAKE_ID(autoUpdateCheckBeta, "AutoUpdate/CheckForBetaVersions");
|
|
||||||
LAMEXP_MAKE_ID(soundsEnabled, "Flags/EnableSounds");
|
|
||||||
LAMEXP_MAKE_ID(neroAacNotificationsEnabled, "Flags/EnableNeroAacNotifications");
|
|
||||||
LAMEXP_MAKE_ID(antivirNotificationsEnabled, "Flags/EnableAntivirusNotifications");
|
|
||||||
LAMEXP_MAKE_ID(dropBoxWidgetEnabled, "Flags/EnableDropBoxWidget");
|
|
||||||
LAMEXP_MAKE_ID(shellIntegrationEnabled, "Flags/EnableShellIntegration");
|
|
||||||
LAMEXP_MAKE_ID(currentLanguage, "Localization/Language");
|
|
||||||
LAMEXP_MAKE_ID(currentLanguageFile, "Localization/UseQMFile");
|
|
||||||
LAMEXP_MAKE_ID(lameAlgoQuality, "AdvancedOptions/LAME/AlgorithmQuality");
|
|
||||||
LAMEXP_MAKE_ID(lameChannelMode, "AdvancedOptions/LAME/ChannelMode");
|
|
||||||
LAMEXP_MAKE_ID(forceStereoDownmix, "AdvancedOptions/StereoDownmix/Force");
|
|
||||||
LAMEXP_MAKE_ID(bitrateManagementEnabled, "AdvancedOptions/BitrateManagement/Enabled");
|
|
||||||
LAMEXP_MAKE_ID(bitrateManagementMinRate, "AdvancedOptions/BitrateManagement/MinRate");
|
|
||||||
LAMEXP_MAKE_ID(bitrateManagementMaxRate, "AdvancedOptions/BitrateManagement/MaxRate");
|
|
||||||
LAMEXP_MAKE_ID(aftenAudioCodingMode, "AdvancedOptions/Aften/AudioCodingMode");
|
LAMEXP_MAKE_ID(aftenAudioCodingMode, "AdvancedOptions/Aften/AudioCodingMode");
|
||||||
LAMEXP_MAKE_ID(aftenDynamicRangeCompression, "AdvancedOptions/Aften/DynamicRangeCompression");
|
LAMEXP_MAKE_ID(aftenDynamicRangeCompression, "AdvancedOptions/Aften/DynamicRangeCompression");
|
||||||
LAMEXP_MAKE_ID(aftenFastBitAllocation, "AdvancedOptions/Aften/FastBitAllocation");
|
|
||||||
LAMEXP_MAKE_ID(aftenExponentSearchSize, "AdvancedOptions/Aften/ExponentSearchSize");
|
LAMEXP_MAKE_ID(aftenExponentSearchSize, "AdvancedOptions/Aften/ExponentSearchSize");
|
||||||
LAMEXP_MAKE_ID(samplingRate, "AdvancedOptions/Common/Resampling");
|
LAMEXP_MAKE_ID(aftenFastBitAllocation, "AdvancedOptions/Aften/FastBitAllocation");
|
||||||
LAMEXP_MAKE_ID(neroAACEnable2Pass, "AdvancedOptions/AACEnc/Enable2Pass");
|
LAMEXP_MAKE_ID(antivirNotificationsEnabled, "Flags/EnableAntivirusNotifications");
|
||||||
LAMEXP_MAKE_ID(aacEncProfile, "AdvancedOptions/AACEnc/ForceProfile");
|
LAMEXP_MAKE_ID(autoUpdateCheckBeta, "AutoUpdate/CheckForBetaVersions");
|
||||||
LAMEXP_MAKE_ID(opusOptimizeFor, "AdvancedOptions/Opus/OptimizeForSignalType");
|
LAMEXP_MAKE_ID(autoUpdateEnabled, "AutoUpdate/Enabled");
|
||||||
LAMEXP_MAKE_ID(opusComplexity, "AdvancedOptions/Opus/EncodingComplexity");
|
LAMEXP_MAKE_ID(autoUpdateLastCheck, "AutoUpdate/LastCheck");
|
||||||
LAMEXP_MAKE_ID(opusFramesize, "AdvancedOptions/Opus/FrameSize");
|
LAMEXP_MAKE_ID(bitrateManagementEnabled, "AdvancedOptions/BitrateManagement/Enabled");
|
||||||
LAMEXP_MAKE_ID(opusDisableResample, "AdvancedOptions/Opus/DisableResample");
|
LAMEXP_MAKE_ID(bitrateManagementMaxRate, "AdvancedOptions/BitrateManagement/MaxRate");
|
||||||
LAMEXP_MAKE_ID(normalizationFilterEnabled, "AdvancedOptions/VolumeNormalization/Enabled");
|
LAMEXP_MAKE_ID(bitrateManagementMinRate, "AdvancedOptions/BitrateManagement/MinRate");
|
||||||
LAMEXP_MAKE_ID(normalizationFilterMaxVolume, "AdvancedOptions/VolumeNormalization/MaxVolume");
|
LAMEXP_MAKE_ID(compressionBitrateAacEnc, "Compression/Bitrate/AacEnc");
|
||||||
LAMEXP_MAKE_ID(normalizationFilterEqualizationMode, "AdvancedOptions/VolumeNormalization/EqualizationMode");
|
LAMEXP_MAKE_ID(compressionBitrateAften, "Compression/Bitrate/Aften");
|
||||||
LAMEXP_MAKE_ID(toneAdjustBass, "AdvancedOptions/ToneAdjustment/Bass");
|
LAMEXP_MAKE_ID(compressionBitrateDcaEnc, "Compression/Bitrate/DcaEnc");
|
||||||
LAMEXP_MAKE_ID(toneAdjustTreble, "AdvancedOptions/ToneAdjustment/Treble");
|
LAMEXP_MAKE_ID(compressionBitrateLAME, "Compression/Bitrate/LAME");
|
||||||
LAMEXP_MAKE_ID(customParametersLAME, "AdvancedOptions/CustomParameters/LAME");
|
LAMEXP_MAKE_ID(compressionBitrateOggEnc, "Compression/Bitrate/OggEnc");
|
||||||
LAMEXP_MAKE_ID(customParametersOggEnc, "AdvancedOptions/CustomParameters/OggEnc");
|
LAMEXP_MAKE_ID(compressionBitrateOpusEnc, "Compression/Bitrate/OpusEnc");
|
||||||
|
LAMEXP_MAKE_ID(compressionEncoder, "Compression/Encoder");
|
||||||
|
LAMEXP_MAKE_ID(compressionRCModeAacEnc, "Compression/RCMode/AacEnc");
|
||||||
|
LAMEXP_MAKE_ID(compressionRCModeAften, "Compression/RCMode/Aften");
|
||||||
|
LAMEXP_MAKE_ID(compressionRCModeLAME, "Compression/RCMode/LAME");
|
||||||
|
LAMEXP_MAKE_ID(compressionRCModeOggEnc, "Compression/RCMode/OggEnc");
|
||||||
|
LAMEXP_MAKE_ID(compressionRCModeOpusEnc, "Compression/RCMode/OpusEnc");
|
||||||
|
LAMEXP_MAKE_ID(compressionVbrLevelAacEnc, "Compression/VbrLevel/AacEnc");
|
||||||
|
LAMEXP_MAKE_ID(compressionVbrLevelAften, "Compression/VbrLevel/Aften");
|
||||||
|
LAMEXP_MAKE_ID(compressionVbrLevelFLAC, "Compression/VbrLevel/FLAC");
|
||||||
|
LAMEXP_MAKE_ID(compressionVbrLevelLAME, "Compression/VbrLevel/LAME");
|
||||||
|
LAMEXP_MAKE_ID(compressionVbrLevelOggEnc, "Compression/VbrLevel/OggEnc");
|
||||||
|
LAMEXP_MAKE_ID(createPlaylist, "Flags/AutoCreatePlaylist");
|
||||||
|
LAMEXP_MAKE_ID(currentLanguage, "Localization/Language");
|
||||||
|
LAMEXP_MAKE_ID(currentLanguageFile, "Localization/UseQMFile");
|
||||||
LAMEXP_MAKE_ID(customParametersAacEnc, "AdvancedOptions/CustomParameters/AacEnc");
|
LAMEXP_MAKE_ID(customParametersAacEnc, "AdvancedOptions/CustomParameters/AacEnc");
|
||||||
LAMEXP_MAKE_ID(customParametersAften, "AdvancedOptions/CustomParameters/Aften");
|
LAMEXP_MAKE_ID(customParametersAften, "AdvancedOptions/CustomParameters/Aften");
|
||||||
LAMEXP_MAKE_ID(customParametersFLAC, "AdvancedOptions/CustomParameters/FLAC");
|
LAMEXP_MAKE_ID(customParametersFLAC, "AdvancedOptions/CustomParameters/FLAC");
|
||||||
|
LAMEXP_MAKE_ID(customParametersLAME, "AdvancedOptions/CustomParameters/LAME");
|
||||||
|
LAMEXP_MAKE_ID(customParametersOggEnc, "AdvancedOptions/CustomParameters/OggEnc");
|
||||||
LAMEXP_MAKE_ID(customParametersOpus, "AdvancedOptions/CustomParameters/OpusEnc");
|
LAMEXP_MAKE_ID(customParametersOpus, "AdvancedOptions/CustomParameters/OpusEnc");
|
||||||
LAMEXP_MAKE_ID(renameOutputFilesEnabled, "AdvancedOptions/RenameOutputFiles/Enabled");
|
|
||||||
LAMEXP_MAKE_ID(renameOutputFilesPattern, "AdvancedOptions/RenameOutputFiles/Pattern");
|
|
||||||
LAMEXP_MAKE_ID(overwriteMode, "AdvancedOptions/OverwriteMode");
|
|
||||||
LAMEXP_MAKE_ID(hibernateComputer, "AdvancedOptions/HibernateComputerOnShutdown");
|
|
||||||
LAMEXP_MAKE_ID(metaInfoPosition, "MetaInformation/PlaylistPosition");
|
|
||||||
LAMEXP_MAKE_ID(maximumInstances, "AdvancedOptions/Threading/MaximumInstances");
|
|
||||||
LAMEXP_MAKE_ID(customTempPath, "AdvancedOptions/TempDirectory/CustomPath");
|
LAMEXP_MAKE_ID(customTempPath, "AdvancedOptions/TempDirectory/CustomPath");
|
||||||
LAMEXP_MAKE_ID(customTempPathEnabled, "AdvancedOptions/TempDirectory/UseCustomPath");
|
LAMEXP_MAKE_ID(customTempPathEnabled, "AdvancedOptions/TempDirectory/UseCustomPath");
|
||||||
|
LAMEXP_MAKE_ID(dropBoxWidgetEnabled, "Flags/EnableDropBoxWidget");
|
||||||
|
LAMEXP_MAKE_ID(favoriteOutputFolders, "OutputDirectory/Favorites");
|
||||||
|
LAMEXP_MAKE_ID(forceStereoDownmix, "AdvancedOptions/StereoDownmix/Force");
|
||||||
|
LAMEXP_MAKE_ID(hibernateComputer, "AdvancedOptions/HibernateComputerOnShutdown");
|
||||||
|
LAMEXP_MAKE_ID(interfaceStyle, "InterfaceStyle");
|
||||||
|
LAMEXP_MAKE_ID(lameAlgoQuality, "AdvancedOptions/LAME/AlgorithmQuality");
|
||||||
|
LAMEXP_MAKE_ID(lameChannelMode, "AdvancedOptions/LAME/ChannelMode");
|
||||||
|
LAMEXP_MAKE_ID(licenseAccepted, "LicenseAccepted");
|
||||||
|
LAMEXP_MAKE_ID(maximumInstances, "AdvancedOptions/Threading/MaximumInstances");
|
||||||
|
LAMEXP_MAKE_ID(metaInfoPosition, "MetaInformation/PlaylistPosition");
|
||||||
|
LAMEXP_MAKE_ID(mostRecentInputPath, "InputDirectory/MostRecentPath");
|
||||||
|
LAMEXP_MAKE_ID(neroAACEnable2Pass, "AdvancedOptions/AACEnc/Enable2Pass");
|
||||||
|
LAMEXP_MAKE_ID(neroAacNotificationsEnabled, "Flags/EnableNeroAacNotifications");
|
||||||
|
LAMEXP_MAKE_ID(normalizationFilterEnabled, "AdvancedOptions/VolumeNormalization/Enabled");
|
||||||
|
LAMEXP_MAKE_ID(normalizationFilterEqualizationMode, "AdvancedOptions/VolumeNormalization/EqualizationMode");
|
||||||
|
LAMEXP_MAKE_ID(normalizationFilterMaxVolume, "AdvancedOptions/VolumeNormalization/MaxVolume");
|
||||||
|
LAMEXP_MAKE_ID(opusComplexity, "AdvancedOptions/Opus/EncodingComplexity");
|
||||||
|
LAMEXP_MAKE_ID(opusDisableResample, "AdvancedOptions/Opus/DisableResample");
|
||||||
|
LAMEXP_MAKE_ID(opusFramesize, "AdvancedOptions/Opus/FrameSize");
|
||||||
|
LAMEXP_MAKE_ID(opusOptimizeFor, "AdvancedOptions/Opus/OptimizeForSignalType");
|
||||||
|
LAMEXP_MAKE_ID(outputDir, "OutputDirectory/SelectedPath");
|
||||||
|
LAMEXP_MAKE_ID(outputToSourceDir, "OutputDirectory/OutputToSourceFolder");
|
||||||
|
LAMEXP_MAKE_ID(overwriteMode, "AdvancedOptions/OverwriteMode");
|
||||||
|
LAMEXP_MAKE_ID(prependRelativeSourcePath, "OutputDirectory/PrependRelativeSourcePath");
|
||||||
|
LAMEXP_MAKE_ID(renameOutputFilesEnabled, "AdvancedOptions/RenameOutputFiles/Enabled");
|
||||||
|
LAMEXP_MAKE_ID(renameOutputFilesPattern, "AdvancedOptions/RenameOutputFiles/Pattern");
|
||||||
|
LAMEXP_MAKE_ID(samplingRate, "AdvancedOptions/Common/Resampling");
|
||||||
|
LAMEXP_MAKE_ID(shellIntegrationEnabled, "Flags/EnableShellIntegration");
|
||||||
LAMEXP_MAKE_ID(slowStartup, "Flags/SlowStartupDetected");
|
LAMEXP_MAKE_ID(slowStartup, "Flags/SlowStartupDetected");
|
||||||
|
LAMEXP_MAKE_ID(soundsEnabled, "Flags/EnableSounds");
|
||||||
|
LAMEXP_MAKE_ID(toneAdjustBass, "AdvancedOptions/ToneAdjustment/Bass");
|
||||||
|
LAMEXP_MAKE_ID(toneAdjustTreble, "AdvancedOptions/ToneAdjustment/Treble");
|
||||||
|
LAMEXP_MAKE_ID(versionNumber, "VersionNumber");
|
||||||
|
LAMEXP_MAKE_ID(writeMetaTags, "Flags/WriteMetaTags");
|
||||||
|
|
||||||
//LUT
|
//LUT
|
||||||
const int SettingsModel::mp3Bitrates[15] = {32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320, -1};
|
const int SettingsModel::mp3Bitrates[15] = {32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320, -1};
|
||||||
@ -199,6 +213,14 @@ SettingsModel::SettingsModel(void)
|
|||||||
m_settings->beginGroup(groupKey);
|
m_settings->beginGroup(groupKey);
|
||||||
m_settings->setValue(g_settingsId_versionNumber, QApplication::applicationVersion());
|
m_settings->setValue(g_settingsId_versionNumber, QApplication::applicationVersion());
|
||||||
m_settings->sync();
|
m_settings->sync();
|
||||||
|
|
||||||
|
const bool isDefined = m_settings->contains(g_settingsId_outputDir);
|
||||||
|
qWarning("Value '%s' is currently: %s\n", g_settingsId_outputDir, (isDefined ? "defined" : "un-defined"));
|
||||||
|
if(isDefined)
|
||||||
|
{
|
||||||
|
qWarning("It's value is:\n%s\n", m_settings->value(g_settingsId_outputDir).toString().toUtf8().constData());
|
||||||
|
}
|
||||||
|
qWarning("Current output directory is:\n%s\n", outputDir().toUtf8().constData());
|
||||||
}
|
}
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////
|
||||||
@ -215,17 +237,27 @@ SettingsModel::~SettingsModel(void)
|
|||||||
// Public Functions
|
// Public Functions
|
||||||
////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
#define CHECK_RCMODE(NAME) do\
|
||||||
|
{ \
|
||||||
|
if(this->compressionRCMode##NAME() < SettingsModel::VBRMode || this->compressionRCMode##NAME() >= SettingsModel::RCMODE_COUNT) \
|
||||||
|
{ \
|
||||||
|
this->compressionRCMode##NAME(SettingsModel::VBRMode); \
|
||||||
|
} \
|
||||||
|
} \
|
||||||
|
while(0)
|
||||||
|
|
||||||
void SettingsModel::validate(void)
|
void SettingsModel::validate(void)
|
||||||
{
|
{
|
||||||
if(this->compressionEncoder() < SettingsModel::MP3Encoder || this->compressionEncoder() > SettingsModel::PCMEncoder)
|
if(this->compressionEncoder() < SettingsModel::MP3Encoder || this->compressionEncoder() >= SettingsModel::ENCODER_COUNT)
|
||||||
{
|
{
|
||||||
this->compressionEncoder(SettingsModel::MP3Encoder);
|
this->compressionEncoder(SettingsModel::MP3Encoder);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(this->compressionRCMode() < SettingsModel::VBRMode || this->compressionRCMode() > SettingsModel::CBRMode)
|
CHECK_RCMODE(LAME);
|
||||||
{
|
CHECK_RCMODE(OggEnc);
|
||||||
this->compressionEncoder(SettingsModel::VBRMode);
|
CHECK_RCMODE(AacEnc);
|
||||||
}
|
CHECK_RCMODE(Aften);
|
||||||
|
CHECK_RCMODE(OpusEnc);
|
||||||
|
|
||||||
if(!(lamexp_check_tool("neroAacEnc.exe") && lamexp_check_tool("neroAacDec.exe") && lamexp_check_tool("neroAacTag.exe")))
|
if(!(lamexp_check_tool("neroAacEnc.exe") && lamexp_check_tool("neroAacDec.exe") && lamexp_check_tool("neroAacTag.exe")))
|
||||||
{
|
{
|
||||||
@ -244,6 +276,7 @@ void SettingsModel::validate(void)
|
|||||||
|
|
||||||
if(this->outputDir().isEmpty() || !QFileInfo(this->outputDir()).isDir())
|
if(this->outputDir().isEmpty() || !QFileInfo(this->outputDir()).isDir())
|
||||||
{
|
{
|
||||||
|
qWarning("Output directory not set yet or does NOT exist anymore -> Resetting to QDesktopServices::MusicLocation");
|
||||||
QString musicLocation = QDesktopServices::storageLocation(QDesktopServices::MusicLocation);
|
QString musicLocation = QDesktopServices::storageLocation(QDesktopServices::MusicLocation);
|
||||||
this->outputDir(musicLocation.isEmpty() ? QDesktopServices::storageLocation(QDesktopServices::HomeLocation) : musicLocation);
|
this->outputDir(musicLocation.isEmpty() ? QDesktopServices::storageLocation(QDesktopServices::HomeLocation) : musicLocation);
|
||||||
}
|
}
|
||||||
@ -383,62 +416,76 @@ QString SettingsModel::initDirectory(const QString &path)
|
|||||||
// Getter and Setter
|
// Getter and Setter
|
||||||
////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
LAMEXP_MAKE_OPTION_I(licenseAccepted, 0)
|
LAMEXP_MAKE_OPTION_I(aacEncProfile, 0)
|
||||||
LAMEXP_MAKE_OPTION_I(interfaceStyle, 0)
|
LAMEXP_MAKE_OPTION_I(aftenAudioCodingMode, 0)
|
||||||
LAMEXP_MAKE_OPTION_I(compressionEncoder, 0)
|
LAMEXP_MAKE_OPTION_I(aftenDynamicRangeCompression, 5)
|
||||||
LAMEXP_MAKE_OPTION_I(compressionRCMode, 0)
|
LAMEXP_MAKE_OPTION_I(aftenExponentSearchSize, 8)
|
||||||
LAMEXP_MAKE_OPTION_I(compressionBitrate, 7)
|
LAMEXP_MAKE_OPTION_B(aftenFastBitAllocation, false)
|
||||||
LAMEXP_MAKE_OPTION_S(outputDir, QDesktopServices::storageLocation(QDesktopServices::MusicLocation))
|
|
||||||
LAMEXP_MAKE_OPTION_B(outputToSourceDir, false)
|
|
||||||
LAMEXP_MAKE_OPTION_B(prependRelativeSourcePath, false)
|
|
||||||
LAMEXP_MAKE_OPTION_S(favoriteOutputFolders, QString());
|
|
||||||
LAMEXP_MAKE_OPTION_B(writeMetaTags, true)
|
|
||||||
LAMEXP_MAKE_OPTION_B(createPlaylist, true)
|
|
||||||
LAMEXP_MAKE_OPTION_S(autoUpdateLastCheck, "Never")
|
|
||||||
LAMEXP_MAKE_OPTION_B(autoUpdateEnabled, true)
|
|
||||||
LAMEXP_MAKE_OPTION_B(autoUpdateCheckBeta, false)
|
|
||||||
LAMEXP_MAKE_OPTION_B(soundsEnabled, true)
|
|
||||||
LAMEXP_MAKE_OPTION_B(neroAacNotificationsEnabled, true)
|
|
||||||
LAMEXP_MAKE_OPTION_B(antivirNotificationsEnabled, true)
|
LAMEXP_MAKE_OPTION_B(antivirNotificationsEnabled, true)
|
||||||
LAMEXP_MAKE_OPTION_B(dropBoxWidgetEnabled, true)
|
LAMEXP_MAKE_OPTION_B(autoUpdateCheckBeta, false)
|
||||||
LAMEXP_MAKE_OPTION_B(shellIntegrationEnabled, !lamexp_portable_mode())
|
LAMEXP_MAKE_OPTION_B(autoUpdateEnabled, true)
|
||||||
|
LAMEXP_MAKE_OPTION_S(autoUpdateLastCheck, "Never")
|
||||||
|
LAMEXP_MAKE_OPTION_B(bitrateManagementEnabled, false)
|
||||||
|
LAMEXP_MAKE_OPTION_I(bitrateManagementMaxRate, 500)
|
||||||
|
LAMEXP_MAKE_OPTION_I(bitrateManagementMinRate, 32)
|
||||||
|
LAMEXP_MAKE_OPTION_I(compressionBitrateAacEnc, 20)
|
||||||
|
LAMEXP_MAKE_OPTION_I(compressionBitrateAften, 15)
|
||||||
|
LAMEXP_MAKE_OPTION_I(compressionBitrateDcaEnc, 47)
|
||||||
|
LAMEXP_MAKE_OPTION_I(compressionBitrateLAME, 10)
|
||||||
|
LAMEXP_MAKE_OPTION_I(compressionBitrateOggEnc, 20)
|
||||||
|
LAMEXP_MAKE_OPTION_I(compressionBitrateOpusEnc, 16)
|
||||||
|
LAMEXP_MAKE_OPTION_I(compressionEncoder, 0)
|
||||||
|
LAMEXP_MAKE_OPTION_I(compressionRCModeAacEnc, 0)
|
||||||
|
LAMEXP_MAKE_OPTION_I(compressionRCModeAften, 0)
|
||||||
|
LAMEXP_MAKE_OPTION_I(compressionRCModeLAME, 0)
|
||||||
|
LAMEXP_MAKE_OPTION_I(compressionRCModeOggEnc, 0)
|
||||||
|
LAMEXP_MAKE_OPTION_I(compressionRCModeOpusEnc, 0)
|
||||||
|
LAMEXP_MAKE_OPTION_I(compressionVbrLevelAacEnc, 10)
|
||||||
|
LAMEXP_MAKE_OPTION_I(compressionVbrLevelAften, 8)
|
||||||
|
LAMEXP_MAKE_OPTION_I(compressionVbrLevelFLAC, 8)
|
||||||
|
LAMEXP_MAKE_OPTION_I(compressionVbrLevelLAME, 7)
|
||||||
|
LAMEXP_MAKE_OPTION_I(compressionVbrLevelOggEnc, 5)
|
||||||
|
LAMEXP_MAKE_OPTION_B(createPlaylist, true)
|
||||||
LAMEXP_MAKE_OPTION_S(currentLanguage, defaultLanguage())
|
LAMEXP_MAKE_OPTION_S(currentLanguage, defaultLanguage())
|
||||||
LAMEXP_MAKE_OPTION_S(currentLanguageFile, QString())
|
LAMEXP_MAKE_OPTION_S(currentLanguageFile, QString())
|
||||||
|
LAMEXP_MAKE_OPTION_S(customParametersAacEnc, QString())
|
||||||
|
LAMEXP_MAKE_OPTION_S(customParametersAften, QString())
|
||||||
|
LAMEXP_MAKE_OPTION_S(customParametersFLAC, QString())
|
||||||
|
LAMEXP_MAKE_OPTION_S(customParametersLAME, QString())
|
||||||
|
LAMEXP_MAKE_OPTION_S(customParametersOggEnc, QString())
|
||||||
|
LAMEXP_MAKE_OPTION_S(customParametersOpus, QString())
|
||||||
|
LAMEXP_MAKE_OPTION_S(customTempPath, QDesktopServices::storageLocation(QDesktopServices::TempLocation))
|
||||||
|
LAMEXP_MAKE_OPTION_B(customTempPathEnabled, false)
|
||||||
|
LAMEXP_MAKE_OPTION_B(dropBoxWidgetEnabled, true)
|
||||||
|
LAMEXP_MAKE_OPTION_S(favoriteOutputFolders, QString())
|
||||||
|
LAMEXP_MAKE_OPTION_B(forceStereoDownmix, false)
|
||||||
|
LAMEXP_MAKE_OPTION_B(hibernateComputer, false)
|
||||||
|
LAMEXP_MAKE_OPTION_I(interfaceStyle, 0)
|
||||||
LAMEXP_MAKE_OPTION_I(lameAlgoQuality, 2)
|
LAMEXP_MAKE_OPTION_I(lameAlgoQuality, 2)
|
||||||
LAMEXP_MAKE_OPTION_I(lameChannelMode, 0)
|
LAMEXP_MAKE_OPTION_I(lameChannelMode, 0)
|
||||||
LAMEXP_MAKE_OPTION_B(forceStereoDownmix, false)
|
LAMEXP_MAKE_OPTION_I(licenseAccepted, 0)
|
||||||
LAMEXP_MAKE_OPTION_B(bitrateManagementEnabled, false)
|
LAMEXP_MAKE_OPTION_U(maximumInstances, 0)
|
||||||
LAMEXP_MAKE_OPTION_I(bitrateManagementMinRate, 32)
|
LAMEXP_MAKE_OPTION_U(metaInfoPosition, UINT_MAX)
|
||||||
LAMEXP_MAKE_OPTION_I(bitrateManagementMaxRate, 500)
|
LAMEXP_MAKE_OPTION_S(mostRecentInputPath, QDesktopServices::storageLocation(QDesktopServices::MusicLocation))
|
||||||
LAMEXP_MAKE_OPTION_I(samplingRate, 0)
|
|
||||||
LAMEXP_MAKE_OPTION_B(neroAACEnable2Pass, true)
|
LAMEXP_MAKE_OPTION_B(neroAACEnable2Pass, true)
|
||||||
LAMEXP_MAKE_OPTION_I(aacEncProfile, 0)
|
LAMEXP_MAKE_OPTION_B(neroAacNotificationsEnabled, true)
|
||||||
LAMEXP_MAKE_OPTION_I(aftenAudioCodingMode, 0);
|
|
||||||
LAMEXP_MAKE_OPTION_I(aftenDynamicRangeCompression, 5);
|
|
||||||
LAMEXP_MAKE_OPTION_B(aftenFastBitAllocation, false);
|
|
||||||
LAMEXP_MAKE_OPTION_I(aftenExponentSearchSize, 8);
|
|
||||||
LAMEXP_MAKE_OPTION_I(opusOptimizeFor, 0);
|
|
||||||
LAMEXP_MAKE_OPTION_I(opusComplexity, 10);
|
|
||||||
LAMEXP_MAKE_OPTION_I(opusFramesize, 3);
|
|
||||||
LAMEXP_MAKE_OPTION_B(opusDisableResample, false);
|
|
||||||
LAMEXP_MAKE_OPTION_B(normalizationFilterEnabled, false)
|
LAMEXP_MAKE_OPTION_B(normalizationFilterEnabled, false)
|
||||||
|
LAMEXP_MAKE_OPTION_I(normalizationFilterEqualizationMode, 0)
|
||||||
LAMEXP_MAKE_OPTION_I(normalizationFilterMaxVolume, -50)
|
LAMEXP_MAKE_OPTION_I(normalizationFilterMaxVolume, -50)
|
||||||
LAMEXP_MAKE_OPTION_I(normalizationFilterEqualizationMode, 0);
|
LAMEXP_MAKE_OPTION_I(opusComplexity, 10)
|
||||||
|
LAMEXP_MAKE_OPTION_B(opusDisableResample, false)
|
||||||
|
LAMEXP_MAKE_OPTION_I(opusFramesize, 3)
|
||||||
|
LAMEXP_MAKE_OPTION_I(opusOptimizeFor, 0)
|
||||||
|
LAMEXP_MAKE_OPTION_S(outputDir, QDesktopServices::storageLocation(QDesktopServices::MusicLocation))
|
||||||
|
LAMEXP_MAKE_OPTION_B(outputToSourceDir, false)
|
||||||
|
LAMEXP_MAKE_OPTION_I(overwriteMode, Overwrite_KeepBoth)
|
||||||
|
LAMEXP_MAKE_OPTION_B(prependRelativeSourcePath, false)
|
||||||
|
LAMEXP_MAKE_OPTION_B(renameOutputFilesEnabled, false)
|
||||||
|
LAMEXP_MAKE_OPTION_S(renameOutputFilesPattern, "[<TrackNo>] <Artist> - <Title>")
|
||||||
|
LAMEXP_MAKE_OPTION_I(samplingRate, 0)
|
||||||
|
LAMEXP_MAKE_OPTION_B(shellIntegrationEnabled, !lamexp_portable_mode())
|
||||||
|
LAMEXP_MAKE_OPTION_B(slowStartup, false)
|
||||||
|
LAMEXP_MAKE_OPTION_B(soundsEnabled, true)
|
||||||
LAMEXP_MAKE_OPTION_I(toneAdjustBass, 0)
|
LAMEXP_MAKE_OPTION_I(toneAdjustBass, 0)
|
||||||
LAMEXP_MAKE_OPTION_I(toneAdjustTreble, 0)
|
LAMEXP_MAKE_OPTION_I(toneAdjustTreble, 0)
|
||||||
LAMEXP_MAKE_OPTION_S(customParametersLAME, QString());
|
LAMEXP_MAKE_OPTION_B(writeMetaTags, true)
|
||||||
LAMEXP_MAKE_OPTION_S(customParametersOggEnc, QString());
|
|
||||||
LAMEXP_MAKE_OPTION_S(customParametersAacEnc, QString());
|
|
||||||
LAMEXP_MAKE_OPTION_S(customParametersAften, QString());
|
|
||||||
LAMEXP_MAKE_OPTION_S(customParametersFLAC, QString());
|
|
||||||
LAMEXP_MAKE_OPTION_S(customParametersOpus, QString());
|
|
||||||
LAMEXP_MAKE_OPTION_B(renameOutputFilesEnabled, false);
|
|
||||||
LAMEXP_MAKE_OPTION_S(renameOutputFilesPattern, "[<TrackNo>] <Artist> - <Title>");
|
|
||||||
LAMEXP_MAKE_OPTION_I(overwriteMode, Overwrite_KeepBoth);
|
|
||||||
LAMEXP_MAKE_OPTION_U(metaInfoPosition, UINT_MAX);
|
|
||||||
LAMEXP_MAKE_OPTION_U(maximumInstances, 0);
|
|
||||||
LAMEXP_MAKE_OPTION_S(customTempPath, QDesktopServices::storageLocation(QDesktopServices::TempLocation));
|
|
||||||
LAMEXP_MAKE_OPTION_B(customTempPathEnabled, false);
|
|
||||||
LAMEXP_MAKE_OPTION_B(slowStartup, false);
|
|
||||||
LAMEXP_MAKE_OPTION_S(mostRecentInputPath, QDesktopServices::storageLocation(QDesktopServices::MusicLocation));
|
|
||||||
LAMEXP_MAKE_OPTION_B(hibernateComputer, false);
|
|
||||||
|
@ -64,14 +64,18 @@ public:
|
|||||||
FLACEncoder = 4,
|
FLACEncoder = 4,
|
||||||
OpusEncoder = 5,
|
OpusEncoder = 5,
|
||||||
DCAEncoder = 6,
|
DCAEncoder = 6,
|
||||||
PCMEncoder = 7
|
PCMEncoder = 7,
|
||||||
|
ENCODER_COUNT = 8
|
||||||
};
|
};
|
||||||
|
|
||||||
enum RCMode
|
enum RCMode
|
||||||
{
|
{
|
||||||
VBRMode = 0,
|
VBRMode = 0,
|
||||||
ABRMode = 1,
|
ABRMode = 1,
|
||||||
CBRMode = 2
|
CBRMode = 2,
|
||||||
|
RCMODE_COUNT = 3
|
||||||
};
|
};
|
||||||
|
|
||||||
enum Overwrite
|
enum Overwrite
|
||||||
{
|
{
|
||||||
Overwrite_KeepBoth = 0,
|
Overwrite_KeepBoth = 0,
|
||||||
@ -85,65 +89,79 @@ public:
|
|||||||
static const int samplingRates[8];
|
static const int samplingRates[8];
|
||||||
|
|
||||||
//Getters & setters
|
//Getters & setters
|
||||||
LAMEXP_MAKE_OPTION_I(licenseAccepted);
|
LAMEXP_MAKE_OPTION_I(aacEncProfile)
|
||||||
LAMEXP_MAKE_OPTION_I(interfaceStyle);
|
LAMEXP_MAKE_OPTION_I(aftenAudioCodingMode)
|
||||||
LAMEXP_MAKE_OPTION_I(compressionEncoder);
|
LAMEXP_MAKE_OPTION_I(aftenDynamicRangeCompression)
|
||||||
LAMEXP_MAKE_OPTION_I(compressionRCMode);
|
LAMEXP_MAKE_OPTION_I(aftenExponentSearchSize)
|
||||||
LAMEXP_MAKE_OPTION_I(compressionBitrate);
|
LAMEXP_MAKE_OPTION_B(aftenFastBitAllocation)
|
||||||
LAMEXP_MAKE_OPTION_S(outputDir);
|
LAMEXP_MAKE_OPTION_B(antivirNotificationsEnabled)
|
||||||
LAMEXP_MAKE_OPTION_B(outputToSourceDir);
|
LAMEXP_MAKE_OPTION_B(autoUpdateCheckBeta)
|
||||||
LAMEXP_MAKE_OPTION_B(prependRelativeSourcePath);
|
LAMEXP_MAKE_OPTION_B(autoUpdateEnabled)
|
||||||
LAMEXP_MAKE_OPTION_S(favoriteOutputFolders);
|
LAMEXP_MAKE_OPTION_S(autoUpdateLastCheck)
|
||||||
LAMEXP_MAKE_OPTION_B(writeMetaTags);
|
LAMEXP_MAKE_OPTION_B(bitrateManagementEnabled)
|
||||||
LAMEXP_MAKE_OPTION_B(createPlaylist);
|
LAMEXP_MAKE_OPTION_I(bitrateManagementMaxRate)
|
||||||
LAMEXP_MAKE_OPTION_S(autoUpdateLastCheck);
|
LAMEXP_MAKE_OPTION_I(bitrateManagementMinRate)
|
||||||
LAMEXP_MAKE_OPTION_B(autoUpdateEnabled);
|
LAMEXP_MAKE_OPTION_I(compressionBitrateAacEnc)
|
||||||
LAMEXP_MAKE_OPTION_B(autoUpdateCheckBeta);
|
LAMEXP_MAKE_OPTION_I(compressionBitrateAften)
|
||||||
LAMEXP_MAKE_OPTION_B(soundsEnabled);
|
LAMEXP_MAKE_OPTION_I(compressionBitrateDcaEnc)
|
||||||
LAMEXP_MAKE_OPTION_B(neroAacNotificationsEnabled);
|
LAMEXP_MAKE_OPTION_I(compressionBitrateLAME)
|
||||||
LAMEXP_MAKE_OPTION_B(antivirNotificationsEnabled);
|
LAMEXP_MAKE_OPTION_I(compressionBitrateOggEnc)
|
||||||
LAMEXP_MAKE_OPTION_B(dropBoxWidgetEnabled);
|
LAMEXP_MAKE_OPTION_I(compressionBitrateOpusEnc)
|
||||||
LAMEXP_MAKE_OPTION_B(shellIntegrationEnabled);
|
LAMEXP_MAKE_OPTION_I(compressionEncoder)
|
||||||
LAMEXP_MAKE_OPTION_S(currentLanguage);
|
LAMEXP_MAKE_OPTION_I(compressionRCModeAacEnc)
|
||||||
LAMEXP_MAKE_OPTION_S(currentLanguageFile);
|
LAMEXP_MAKE_OPTION_I(compressionRCModeAften)
|
||||||
LAMEXP_MAKE_OPTION_I(lameAlgoQuality);
|
LAMEXP_MAKE_OPTION_I(compressionRCModeLAME)
|
||||||
LAMEXP_MAKE_OPTION_I(lameChannelMode);
|
LAMEXP_MAKE_OPTION_I(compressionRCModeOggEnc)
|
||||||
LAMEXP_MAKE_OPTION_B(forceStereoDownmix);
|
LAMEXP_MAKE_OPTION_I(compressionRCModeOpusEnc)
|
||||||
LAMEXP_MAKE_OPTION_B(bitrateManagementEnabled);
|
LAMEXP_MAKE_OPTION_I(compressionVbrLevelAacEnc)
|
||||||
LAMEXP_MAKE_OPTION_I(bitrateManagementMinRate);
|
LAMEXP_MAKE_OPTION_I(compressionVbrLevelAften)
|
||||||
LAMEXP_MAKE_OPTION_I(bitrateManagementMaxRate);
|
LAMEXP_MAKE_OPTION_I(compressionVbrLevelFLAC)
|
||||||
LAMEXP_MAKE_OPTION_I(samplingRate);
|
LAMEXP_MAKE_OPTION_I(compressionVbrLevelLAME)
|
||||||
LAMEXP_MAKE_OPTION_B(neroAACEnable2Pass);
|
LAMEXP_MAKE_OPTION_I(compressionVbrLevelOggEnc)
|
||||||
LAMEXP_MAKE_OPTION_I(aacEncProfile);
|
LAMEXP_MAKE_OPTION_B(createPlaylist)
|
||||||
LAMEXP_MAKE_OPTION_I(aftenAudioCodingMode);
|
LAMEXP_MAKE_OPTION_S(currentLanguage)
|
||||||
LAMEXP_MAKE_OPTION_I(aftenDynamicRangeCompression);
|
LAMEXP_MAKE_OPTION_S(currentLanguageFile)
|
||||||
LAMEXP_MAKE_OPTION_B(aftenFastBitAllocation);
|
LAMEXP_MAKE_OPTION_S(customParametersAacEnc)
|
||||||
LAMEXP_MAKE_OPTION_I(aftenExponentSearchSize);
|
LAMEXP_MAKE_OPTION_S(customParametersAften)
|
||||||
LAMEXP_MAKE_OPTION_I(opusOptimizeFor);
|
LAMEXP_MAKE_OPTION_S(customParametersFLAC)
|
||||||
LAMEXP_MAKE_OPTION_I(opusComplexity);
|
LAMEXP_MAKE_OPTION_S(customParametersLAME)
|
||||||
LAMEXP_MAKE_OPTION_I(opusFramesize);
|
LAMEXP_MAKE_OPTION_S(customParametersOggEnc)
|
||||||
LAMEXP_MAKE_OPTION_B(opusDisableResample);
|
LAMEXP_MAKE_OPTION_S(customParametersOpus)
|
||||||
LAMEXP_MAKE_OPTION_B(normalizationFilterEnabled);
|
LAMEXP_MAKE_OPTION_S(customTempPath)
|
||||||
LAMEXP_MAKE_OPTION_I(normalizationFilterMaxVolume);
|
LAMEXP_MAKE_OPTION_B(customTempPathEnabled)
|
||||||
LAMEXP_MAKE_OPTION_I(normalizationFilterEqualizationMode);
|
LAMEXP_MAKE_OPTION_B(dropBoxWidgetEnabled)
|
||||||
LAMEXP_MAKE_OPTION_I(toneAdjustBass);
|
LAMEXP_MAKE_OPTION_S(favoriteOutputFolders)
|
||||||
LAMEXP_MAKE_OPTION_I(toneAdjustTreble);
|
LAMEXP_MAKE_OPTION_B(forceStereoDownmix)
|
||||||
LAMEXP_MAKE_OPTION_S(customParametersLAME);
|
LAMEXP_MAKE_OPTION_B(hibernateComputer)
|
||||||
LAMEXP_MAKE_OPTION_S(customParametersOggEnc);
|
LAMEXP_MAKE_OPTION_I(interfaceStyle)
|
||||||
LAMEXP_MAKE_OPTION_S(customParametersAacEnc);
|
LAMEXP_MAKE_OPTION_I(lameAlgoQuality)
|
||||||
LAMEXP_MAKE_OPTION_S(customParametersAften);
|
LAMEXP_MAKE_OPTION_I(lameChannelMode)
|
||||||
LAMEXP_MAKE_OPTION_S(customParametersFLAC);
|
LAMEXP_MAKE_OPTION_I(licenseAccepted)
|
||||||
LAMEXP_MAKE_OPTION_S(customParametersOpus);
|
LAMEXP_MAKE_OPTION_U(maximumInstances)
|
||||||
LAMEXP_MAKE_OPTION_B(renameOutputFilesEnabled);
|
LAMEXP_MAKE_OPTION_U(metaInfoPosition)
|
||||||
LAMEXP_MAKE_OPTION_S(renameOutputFilesPattern);
|
LAMEXP_MAKE_OPTION_S(mostRecentInputPath)
|
||||||
LAMEXP_MAKE_OPTION_I(overwriteMode);
|
LAMEXP_MAKE_OPTION_B(neroAACEnable2Pass)
|
||||||
LAMEXP_MAKE_OPTION_U(metaInfoPosition);
|
LAMEXP_MAKE_OPTION_B(neroAacNotificationsEnabled)
|
||||||
LAMEXP_MAKE_OPTION_U(maximumInstances);
|
LAMEXP_MAKE_OPTION_B(normalizationFilterEnabled)
|
||||||
LAMEXP_MAKE_OPTION_S(customTempPath);
|
LAMEXP_MAKE_OPTION_I(normalizationFilterEqualizationMode)
|
||||||
LAMEXP_MAKE_OPTION_B(customTempPathEnabled);
|
LAMEXP_MAKE_OPTION_I(normalizationFilterMaxVolume)
|
||||||
LAMEXP_MAKE_OPTION_B(slowStartup);
|
LAMEXP_MAKE_OPTION_I(opusComplexity)
|
||||||
LAMEXP_MAKE_OPTION_S(mostRecentInputPath);
|
LAMEXP_MAKE_OPTION_B(opusDisableResample)
|
||||||
LAMEXP_MAKE_OPTION_B(hibernateComputer);
|
LAMEXP_MAKE_OPTION_I(opusFramesize)
|
||||||
|
LAMEXP_MAKE_OPTION_I(opusOptimizeFor)
|
||||||
|
LAMEXP_MAKE_OPTION_S(outputDir)
|
||||||
|
LAMEXP_MAKE_OPTION_B(outputToSourceDir)
|
||||||
|
LAMEXP_MAKE_OPTION_I(overwriteMode)
|
||||||
|
LAMEXP_MAKE_OPTION_B(prependRelativeSourcePath)
|
||||||
|
LAMEXP_MAKE_OPTION_B(renameOutputFilesEnabled)
|
||||||
|
LAMEXP_MAKE_OPTION_S(renameOutputFilesPattern)
|
||||||
|
LAMEXP_MAKE_OPTION_I(samplingRate)
|
||||||
|
LAMEXP_MAKE_OPTION_B(shellIntegrationEnabled)
|
||||||
|
LAMEXP_MAKE_OPTION_B(slowStartup)
|
||||||
|
LAMEXP_MAKE_OPTION_B(soundsEnabled)
|
||||||
|
LAMEXP_MAKE_OPTION_I(toneAdjustBass)
|
||||||
|
LAMEXP_MAKE_OPTION_I(toneAdjustTreble)
|
||||||
|
LAMEXP_MAKE_OPTION_B(writeMetaTags)
|
||||||
|
|
||||||
//Misc
|
//Misc
|
||||||
void validate(void);
|
void validate(void);
|
||||||
|
Loading…
Reference in New Issue
Block a user