Implemented AbstractEncoderInfo for the AAC encoders too.

This commit is contained in:
LoRd_MuldeR 2013-10-07 02:28:01 +02:00
parent 3e51bbabf1
commit 81de5f2300
18 changed files with 392 additions and 97 deletions

View File

@ -1755,7 +1755,7 @@
</message>
<message>
<location filename="../../src/Dialog_MainWindow.cpp" line="719"/>
<location filename="../../src/Dialog_MainWindow.cpp" line="3778"/>
<location filename="../../src/Dialog_MainWindow.cpp" line="3781"/>
<source>Access Denied</source>
<translation type="unfinished"></translation>
</message>
@ -1943,7 +1943,7 @@
<location filename="../../src/Dialog_MainWindow.cpp" line="1379"/>
<location filename="../../src/Dialog_MainWindow.cpp" line="1456"/>
<location filename="../../src/Dialog_MainWindow.cpp" line="1996"/>
<location filename="../../src/Dialog_MainWindow.cpp" line="3721"/>
<location filename="../../src/Dialog_MainWindow.cpp" line="3724"/>
<source>Discard</source>
<translation type="unfinished"></translation>
</message>
@ -2465,123 +2465,124 @@
</message>
<message>
<location filename="../../src/Dialog_MainWindow.cpp" line="3361"/>
<location filename="../../src/Dialog_MainWindow.cpp" line="3364"/>
<source>Quality Level %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../src/Dialog_MainWindow.cpp" line="3364"/>
<location filename="../../src/Dialog_MainWindow.cpp" line="3367"/>
<source>Compression %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../src/Dialog_MainWindow.cpp" line="3367"/>
<location filename="../../src/Dialog_MainWindow.cpp" line="3370"/>
<source>Uncompressed</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../src/Dialog_MainWindow.cpp" line="3414"/>
<location filename="../../src/Dialog_MainWindow.cpp" line="3417"/>
<source>Best Quality (Slow)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../src/Dialog_MainWindow.cpp" line="3417"/>
<location filename="../../src/Dialog_MainWindow.cpp" line="3420"/>
<source>High Quality (Recommended)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../src/Dialog_MainWindow.cpp" line="3420"/>
<location filename="../../src/Dialog_MainWindow.cpp" line="3423"/>
<source>Acceptable Quality (Fast)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../src/Dialog_MainWindow.cpp" line="3423"/>
<location filename="../../src/Dialog_MainWindow.cpp" line="3426"/>
<source>Poor Quality (Very Fast)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../src/Dialog_MainWindow.cpp" line="3710"/>
<location filename="../../src/Dialog_MainWindow.cpp" line="3713"/>
<source>File name without extension</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../src/Dialog_MainWindow.cpp" line="3711"/>
<location filename="../../src/Dialog_MainWindow.cpp" line="3714"/>
<source>Track number with leading zero</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../src/Dialog_MainWindow.cpp" line="3712"/>
<location filename="../../src/Dialog_MainWindow.cpp" line="3715"/>
<source>Track title</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../src/Dialog_MainWindow.cpp" line="3713"/>
<location filename="../../src/Dialog_MainWindow.cpp" line="3716"/>
<source>Artist name</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../src/Dialog_MainWindow.cpp" line="3714"/>
<location filename="../../src/Dialog_MainWindow.cpp" line="3717"/>
<source>Album name</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../src/Dialog_MainWindow.cpp" line="3715"/>
<location filename="../../src/Dialog_MainWindow.cpp" line="3718"/>
<source>Year with (at least) four digits</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../src/Dialog_MainWindow.cpp" line="3716"/>
<location filename="../../src/Dialog_MainWindow.cpp" line="3719"/>
<source>Comment</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../src/Dialog_MainWindow.cpp" line="3718"/>
<location filename="../../src/Dialog_MainWindow.cpp" line="3721"/>
<source>Characters forbidden in file names:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../src/Dialog_MainWindow.cpp" line="3721"/>
<location filename="../../src/Dialog_MainWindow.cpp" line="3724"/>
<source>Rename Macros</source>
<translation type="unfinished"></translation>
</message>
<message numerus="yes">
<location filename="../../src/Dialog_MainWindow.cpp" line="3734"/>
<location filename="../../src/Dialog_MainWindow.cpp" line="3737"/>
<source>%n Instance(s)</source>
<translation type="unfinished">
<numerusform></numerusform>
</translation>
</message>
<message>
<location filename="../../src/Dialog_MainWindow.cpp" line="3778"/>
<location filename="../../src/Dialog_MainWindow.cpp" line="3781"/>
<source>Cannot write to the selected directory. Please choose another directory!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../src/Dialog_MainWindow.cpp" line="3901"/>
<location filename="../../src/Dialog_MainWindow.cpp" line="3904"/>
<source>Overwrite Mode</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../src/Dialog_MainWindow.cpp" line="3901"/>
<location filename="../../src/Dialog_MainWindow.cpp" line="3904"/>
<source>Warning: This mode may overwrite existing files with no way to revert!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../src/Dialog_MainWindow.cpp" line="3901"/>
<location filename="../../src/Dialog_MainWindow.cpp" line="3904"/>
<source>Continue</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../src/Dialog_MainWindow.cpp" line="3901"/>
<location filename="../../src/Dialog_MainWindow.cpp" line="3904"/>
<source>Revert</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../src/Dialog_MainWindow.cpp" line="3975"/>
<location filename="../../src/Dialog_MainWindow.cpp" line="3978"/>
<source>Already Running</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../src/Dialog_MainWindow.cpp" line="3975"/>
<location filename="../../src/Dialog_MainWindow.cpp" line="3978"/>
<source>LameXP is already running, please use the running instance!</source>
<translation type="unfinished"></translation>
</message>

View File

@ -63,7 +63,7 @@
</translation>
</message>
<message numerus="yes">
<location filename="../../src/Dialog_MainWindow.cpp" line="3734"/>
<location filename="../../src/Dialog_MainWindow.cpp" line="3737"/>
<source>%n Instance(s)</source>
<translation>
<numerusform>%n Instance</numerusform>

View File

@ -1762,7 +1762,7 @@
</message>
<message>
<location filename="../../src/Dialog_MainWindow.cpp" line="719"/>
<location filename="../../src/Dialog_MainWindow.cpp" line="3778"/>
<location filename="../../src/Dialog_MainWindow.cpp" line="3781"/>
<source>Access Denied</source>
<translation type="unfinished">Dostęp zablokowany</translation>
</message>
@ -1892,7 +1892,7 @@
<location filename="../../src/Dialog_MainWindow.cpp" line="1379"/>
<location filename="../../src/Dialog_MainWindow.cpp" line="1456"/>
<location filename="../../src/Dialog_MainWindow.cpp" line="1996"/>
<location filename="../../src/Dialog_MainWindow.cpp" line="3721"/>
<location filename="../../src/Dialog_MainWindow.cpp" line="3724"/>
<source>Discard</source>
<translation type="unfinished">Zamknij</translation>
</message>
@ -2475,31 +2475,32 @@
</message>
<message>
<location filename="../../src/Dialog_MainWindow.cpp" line="3361"/>
<location filename="../../src/Dialog_MainWindow.cpp" line="3364"/>
<source>Quality Level %1</source>
<translation type="unfinished">Poziom jakości %1</translation>
</message>
<message>
<location filename="../../src/Dialog_MainWindow.cpp" line="3364"/>
<location filename="../../src/Dialog_MainWindow.cpp" line="3367"/>
<source>Compression %1</source>
<translation type="unfinished">Kompresja %1</translation>
</message>
<message>
<location filename="../../src/Dialog_MainWindow.cpp" line="3367"/>
<location filename="../../src/Dialog_MainWindow.cpp" line="3370"/>
<source>Uncompressed</source>
<translation type="unfinished">Nieskompresowany</translation>
</message>
<message>
<location filename="../../src/Dialog_MainWindow.cpp" line="3414"/>
<location filename="../../src/Dialog_MainWindow.cpp" line="3417"/>
<source>Best Quality (Slow)</source>
<translation type="unfinished">Najlepsza jakość (Powoli)</translation>
</message>
<message>
<location filename="../../src/Dialog_MainWindow.cpp" line="3420"/>
<location filename="../../src/Dialog_MainWindow.cpp" line="3423"/>
<source>Acceptable Quality (Fast)</source>
<translation type="unfinished">Akceptowalna jakość (Szybko)</translation>
</message>
<message>
<location filename="../../src/Dialog_MainWindow.cpp" line="3417"/>
<location filename="../../src/Dialog_MainWindow.cpp" line="3420"/>
<source>High Quality (Recommended)</source>
<translation type="unfinished">Wysoka jakość (Zalecane)</translation>
</message>
@ -2509,57 +2510,57 @@
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../src/Dialog_MainWindow.cpp" line="3423"/>
<location filename="../../src/Dialog_MainWindow.cpp" line="3426"/>
<source>Poor Quality (Very Fast)</source>
<translation type="unfinished">Najniższa jakość (Bardzo szybko)</translation>
</message>
<message>
<location filename="../../src/Dialog_MainWindow.cpp" line="3710"/>
<location filename="../../src/Dialog_MainWindow.cpp" line="3713"/>
<source>File name without extension</source>
<translation type="unfinished">Nazwa pliku bez rozszerzenia</translation>
</message>
<message>
<location filename="../../src/Dialog_MainWindow.cpp" line="3711"/>
<location filename="../../src/Dialog_MainWindow.cpp" line="3714"/>
<source>Track number with leading zero</source>
<translation type="unfinished">Numer ścieżki z zerem na początku</translation>
</message>
<message>
<location filename="../../src/Dialog_MainWindow.cpp" line="3712"/>
<location filename="../../src/Dialog_MainWindow.cpp" line="3715"/>
<source>Track title</source>
<translation type="unfinished">Nazwa ścieżki</translation>
</message>
<message>
<location filename="../../src/Dialog_MainWindow.cpp" line="3713"/>
<location filename="../../src/Dialog_MainWindow.cpp" line="3716"/>
<source>Artist name</source>
<translation type="unfinished">Nazwa Artysty</translation>
</message>
<message>
<location filename="../../src/Dialog_MainWindow.cpp" line="3714"/>
<location filename="../../src/Dialog_MainWindow.cpp" line="3717"/>
<source>Album name</source>
<translation type="unfinished">Nazwa Albumu</translation>
</message>
<message>
<location filename="../../src/Dialog_MainWindow.cpp" line="3715"/>
<location filename="../../src/Dialog_MainWindow.cpp" line="3718"/>
<source>Year with (at least) four digits</source>
<translation type="unfinished">Rok z (przynajmniej) czterema cyframi</translation>
</message>
<message>
<location filename="../../src/Dialog_MainWindow.cpp" line="3716"/>
<location filename="../../src/Dialog_MainWindow.cpp" line="3719"/>
<source>Comment</source>
<translation type="unfinished">Komentarz</translation>
</message>
<message>
<location filename="../../src/Dialog_MainWindow.cpp" line="3718"/>
<location filename="../../src/Dialog_MainWindow.cpp" line="3721"/>
<source>Characters forbidden in file names:</source>
<translation type="unfinished">Zabronione znaki w nazwach plików:</translation>
</message>
<message>
<location filename="../../src/Dialog_MainWindow.cpp" line="3721"/>
<location filename="../../src/Dialog_MainWindow.cpp" line="3724"/>
<source>Rename Macros</source>
<translation type="unfinished">Zmień nazwy makr</translation>
</message>
<message numerus="yes">
<location filename="../../src/Dialog_MainWindow.cpp" line="3734"/>
<location filename="../../src/Dialog_MainWindow.cpp" line="3737"/>
<source>%n Instance(s)</source>
<translation type="unfinished">
<numerusform>%n wątek</numerusform>
@ -2568,37 +2569,37 @@
</translation>
</message>
<message>
<location filename="../../src/Dialog_MainWindow.cpp" line="3778"/>
<location filename="../../src/Dialog_MainWindow.cpp" line="3781"/>
<source>Cannot write to the selected directory. Please choose another directory!</source>
<translation type="unfinished">Nie można zapisać do wybranej lokalizacji. Prosze wybierz inną lokalizację!</translation>
</message>
<message>
<location filename="../../src/Dialog_MainWindow.cpp" line="3901"/>
<location filename="../../src/Dialog_MainWindow.cpp" line="3904"/>
<source>Overwrite Mode</source>
<translation type="unfinished">Tryb nadpisywania</translation>
</message>
<message>
<location filename="../../src/Dialog_MainWindow.cpp" line="3901"/>
<location filename="../../src/Dialog_MainWindow.cpp" line="3904"/>
<source>Warning: This mode may overwrite existing files with no way to revert!</source>
<translation type="unfinished">Ostrzeżenie: W tym trybie istniejące pliki będą nadpisywane bez możliwości ich odzyskania!</translation>
</message>
<message>
<location filename="../../src/Dialog_MainWindow.cpp" line="3901"/>
<location filename="../../src/Dialog_MainWindow.cpp" line="3904"/>
<source>Continue</source>
<translation type="unfinished">Kontynuuj</translation>
</message>
<message>
<location filename="../../src/Dialog_MainWindow.cpp" line="3901"/>
<location filename="../../src/Dialog_MainWindow.cpp" line="3904"/>
<source>Revert</source>
<translation type="unfinished">Cofnij</translation>
</message>
<message>
<location filename="../../src/Dialog_MainWindow.cpp" line="3975"/>
<location filename="../../src/Dialog_MainWindow.cpp" line="3978"/>
<source>Already Running</source>
<translation type="unfinished">Już działa</translation>
</message>
<message>
<location filename="../../src/Dialog_MainWindow.cpp" line="3975"/>
<location filename="../../src/Dialog_MainWindow.cpp" line="3978"/>
<source>LameXP is already running, please use the running instance!</source>
<translation type="unfinished">LameXP już działa, przejdź do działającego procesu!</translation>
</message>

View File

@ -1759,7 +1759,7 @@
</message>
<message>
<location filename="../../src/Dialog_MainWindow.cpp" line="719"/>
<location filename="../../src/Dialog_MainWindow.cpp" line="3778"/>
<location filename="../../src/Dialog_MainWindow.cpp" line="3781"/>
<source>Access Denied</source>
<translation>Åtkomst nekad</translation>
</message>
@ -1951,7 +1951,7 @@
<location filename="../../src/Dialog_MainWindow.cpp" line="1379"/>
<location filename="../../src/Dialog_MainWindow.cpp" line="1456"/>
<location filename="../../src/Dialog_MainWindow.cpp" line="1996"/>
<location filename="../../src/Dialog_MainWindow.cpp" line="3721"/>
<location filename="../../src/Dialog_MainWindow.cpp" line="3724"/>
<source>Discard</source>
<translation>Stäng</translation>
</message>
@ -2468,31 +2468,32 @@
</message>
<message>
<location filename="../../src/Dialog_MainWindow.cpp" line="3361"/>
<location filename="../../src/Dialog_MainWindow.cpp" line="3364"/>
<source>Quality Level %1</source>
<translation>Kvallitetsnivå %1</translation>
</message>
<message>
<location filename="../../src/Dialog_MainWindow.cpp" line="3364"/>
<location filename="../../src/Dialog_MainWindow.cpp" line="3367"/>
<source>Compression %1</source>
<translation>Kompression %1</translation>
</message>
<message>
<location filename="../../src/Dialog_MainWindow.cpp" line="3367"/>
<location filename="../../src/Dialog_MainWindow.cpp" line="3370"/>
<source>Uncompressed</source>
<translation>Okomprimerad</translation>
</message>
<message>
<location filename="../../src/Dialog_MainWindow.cpp" line="3414"/>
<location filename="../../src/Dialog_MainWindow.cpp" line="3417"/>
<source>Best Quality (Slow)</source>
<translation>Bäst kvalitet (Långsam)</translation>
</message>
<message>
<location filename="../../src/Dialog_MainWindow.cpp" line="3420"/>
<location filename="../../src/Dialog_MainWindow.cpp" line="3423"/>
<source>Acceptable Quality (Fast)</source>
<translation>Acceptabel kvalitet (Snabb)</translation>
</message>
<message>
<location filename="../../src/Dialog_MainWindow.cpp" line="3417"/>
<location filename="../../src/Dialog_MainWindow.cpp" line="3420"/>
<source>High Quality (Recommended)</source>
<translation>Hög kvallitet (rekommenderas)</translation>
</message>
@ -2502,57 +2503,57 @@
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../src/Dialog_MainWindow.cpp" line="3423"/>
<location filename="../../src/Dialog_MainWindow.cpp" line="3426"/>
<source>Poor Quality (Very Fast)</source>
<translation>Dålig kvallitet (mycket snabb)</translation>
</message>
<message>
<location filename="../../src/Dialog_MainWindow.cpp" line="3710"/>
<location filename="../../src/Dialog_MainWindow.cpp" line="3713"/>
<source>File name without extension</source>
<translation>Filnamn utan filtillägg</translation>
</message>
<message>
<location filename="../../src/Dialog_MainWindow.cpp" line="3711"/>
<location filename="../../src/Dialog_MainWindow.cpp" line="3714"/>
<source>Track number with leading zero</source>
<translation>Spårnummer med inledande nolla</translation>
</message>
<message>
<location filename="../../src/Dialog_MainWindow.cpp" line="3712"/>
<location filename="../../src/Dialog_MainWindow.cpp" line="3715"/>
<source>Track title</source>
<translation>Spårtitel</translation>
</message>
<message>
<location filename="../../src/Dialog_MainWindow.cpp" line="3713"/>
<location filename="../../src/Dialog_MainWindow.cpp" line="3716"/>
<source>Artist name</source>
<translation>Artistnamn</translation>
</message>
<message>
<location filename="../../src/Dialog_MainWindow.cpp" line="3714"/>
<location filename="../../src/Dialog_MainWindow.cpp" line="3717"/>
<source>Album name</source>
<translation>Albumnamn</translation>
</message>
<message>
<location filename="../../src/Dialog_MainWindow.cpp" line="3715"/>
<location filename="../../src/Dialog_MainWindow.cpp" line="3718"/>
<source>Year with (at least) four digits</source>
<translation>Årtal med (minst) fyra siffror</translation>
</message>
<message>
<location filename="../../src/Dialog_MainWindow.cpp" line="3716"/>
<location filename="../../src/Dialog_MainWindow.cpp" line="3719"/>
<source>Comment</source>
<translation>Kommentar</translation>
</message>
<message>
<location filename="../../src/Dialog_MainWindow.cpp" line="3718"/>
<location filename="../../src/Dialog_MainWindow.cpp" line="3721"/>
<source>Characters forbidden in file names:</source>
<translation>Förbjudna tecken i filnamn:</translation>
</message>
<message>
<location filename="../../src/Dialog_MainWindow.cpp" line="3721"/>
<location filename="../../src/Dialog_MainWindow.cpp" line="3724"/>
<source>Rename Macros</source>
<translation>Namnändra macron</translation>
</message>
<message numerus="yes">
<location filename="../../src/Dialog_MainWindow.cpp" line="3734"/>
<location filename="../../src/Dialog_MainWindow.cpp" line="3737"/>
<source>%n Instance(s)</source>
<translation>
<numerusform>%n instans</numerusform>
@ -2560,37 +2561,37 @@
</translation>
</message>
<message>
<location filename="../../src/Dialog_MainWindow.cpp" line="3778"/>
<location filename="../../src/Dialog_MainWindow.cpp" line="3781"/>
<source>Cannot write to the selected directory. Please choose another directory!</source>
<translation>Kan inte skriva till den specificerade mappen. Välj en annan destination!</translation>
</message>
<message>
<location filename="../../src/Dialog_MainWindow.cpp" line="3901"/>
<location filename="../../src/Dialog_MainWindow.cpp" line="3904"/>
<source>Overwrite Mode</source>
<translation>Överskrivningsläge</translation>
</message>
<message>
<location filename="../../src/Dialog_MainWindow.cpp" line="3901"/>
<location filename="../../src/Dialog_MainWindow.cpp" line="3904"/>
<source>Warning: This mode may overwrite existing files with no way to revert!</source>
<translation>Varning! Det här läget kan skriva över befintliga filer, utan möjlighet att återskapa!</translation>
</message>
<message>
<location filename="../../src/Dialog_MainWindow.cpp" line="3901"/>
<location filename="../../src/Dialog_MainWindow.cpp" line="3904"/>
<source>Continue</source>
<translation>Fortsätt</translation>
</message>
<message>
<location filename="../../src/Dialog_MainWindow.cpp" line="3901"/>
<location filename="../../src/Dialog_MainWindow.cpp" line="3904"/>
<source>Revert</source>
<translation>Återställ</translation>
</message>
<message>
<location filename="../../src/Dialog_MainWindow.cpp" line="3975"/>
<location filename="../../src/Dialog_MainWindow.cpp" line="3978"/>
<source>Already Running</source>
<translation>Körs redan</translation>
</message>
<message>
<location filename="../../src/Dialog_MainWindow.cpp" line="3975"/>
<location filename="../../src/Dialog_MainWindow.cpp" line="3978"/>
<source>LameXP is already running, please use the running instance!</source>
<translation>LameXP körs redan, använd den redan startade instansen!</translation>
</message>

View File

@ -34,7 +34,7 @@
#define VER_LAMEXP_MINOR_LO 9
#define VER_LAMEXP_TYPE Alpha
#define VER_LAMEXP_PATCH 1
#define VER_LAMEXP_BUILD 1361
#define VER_LAMEXP_BUILD 1364
#define VER_LAMEXP_CONFG 1348
///////////////////////////////////////////////////////////////////////////////

View File

@ -3357,9 +3357,12 @@ void MainWindow::updateBitrate(int value)
case AbstractEncoderInfo::TYPE_APPROX_BITRATE:
ui->labelBitrate->setText(QString("&asymp; %1 kbps").arg(QString::number(displayValue)));
break;
case AbstractEncoderInfo::TYPE_QUALITY_LEVEL:
case AbstractEncoderInfo::TYPE_QUALITY_LEVEL_INT:
ui->labelBitrate->setText(tr("Quality Level %1").arg(QString::number(displayValue)));
break;
case AbstractEncoderInfo::TYPE_QUALITY_LEVEL_FLT:
ui->labelBitrate->setText(tr("Quality Level %1").arg(QString().sprintf("%.2f", double(displayValue)/100.0)));
break;
case AbstractEncoderInfo::TYPE_COMPRESSION_LEVEL:
ui->labelBitrate->setText(tr("Compression %1").arg(QString::number(displayValue)));
break;

View File

@ -27,6 +27,93 @@
#include <QProcess>
#include <QDir>
static int index2bitrate(const int index)
{
return (index < 32) ? ((index + 1) * 8) : ((index - 15) * 16);
}
///////////////////////////////////////////////////////////////////////////////
// Encoder Info
///////////////////////////////////////////////////////////////////////////////
class AACEncoderInfo : public AbstractEncoderInfo
{
virtual bool isModeSupported(int mode) const
{
switch(mode)
{
case SettingsModel::VBRMode:
case SettingsModel::ABRMode:
case SettingsModel::CBRMode:
return true;
break;
default:
throw "Bad RC mode specified!";
}
}
virtual int valueCount(int mode) const
{
switch(mode)
{
case SettingsModel::VBRMode:
return 21;
break;
case SettingsModel::ABRMode:
case SettingsModel::CBRMode:
return 41;
break;
default:
throw "Bad RC mode specified!";
}
}
virtual int valueAt(int mode, int index) const
{
switch(mode)
{
case SettingsModel::VBRMode:
return qBound(0, index * 5, 100);
break;
case SettingsModel::ABRMode:
case SettingsModel::CBRMode:
return qBound(8, index2bitrate(index), 400);
break;
default:
throw "Bad RC mode specified!";
}
}
virtual int valueType(int mode) const
{
switch(mode)
{
case SettingsModel::VBRMode:
return TYPE_QUALITY_LEVEL_FLT;
break;
case SettingsModel::ABRMode:
return TYPE_APPROX_BITRATE;
break;
case SettingsModel::CBRMode:
return TYPE_BITRATE;
break;
default:
throw "Bad RC mode specified!";
}
}
virtual const char *description(void) const
{
static const char* s_description = "Nero AAC Encoder (\x0C2\x0A9 Nero AG)";
return s_description;
}
}
static const g_aacEncoderInfo;
///////////////////////////////////////////////////////////////////////////////
// Encoder implementation
///////////////////////////////////////////////////////////////////////////////
AACEncoder::AACEncoder(void)
:
m_binary_enc(lamexp_lookup_tool("neroAacEnc.exe")),
@ -57,13 +144,13 @@ bool AACEncoder::encode(const QString &sourceFile, const AudioFileModel &metaInf
switch(m_configRCMode)
{
case SettingsModel::VBRMode:
args << "-q" << QString().sprintf("%.2f", qBound(0.0, static_cast<double>(m_configBitrate) / 20.0, 1.0));
args << "-q" << QString().sprintf("%.2f", double(qBound(0, m_configBitrate * 5, 100)) / 100.0);
break;
case SettingsModel::ABRMode:
args << "-br" << QString::number(qMax(32, qMin(500, (m_configBitrate * 8))) * 1000);
args << "-br" << QString::number(qBound(8, index2bitrate(m_configBitrate), 400) * 1000);
break;
case SettingsModel::CBRMode:
args << "-cbr" << QString::number(qMax(32, qMin(500, (m_configBitrate * 8))) * 1000);
args << "-cbr" << QString::number(qBound(8, index2bitrate(m_configBitrate), 400) * 1000);
break;
default:
throw "Bad rate-control mode!";
@ -292,3 +379,8 @@ const bool AACEncoder::needsTimingInfo(void)
{
return true;
}
const AbstractEncoderInfo *AACEncoder::getEncoderInfo(void)
{
return &g_aacEncoderInfo;
}

View File

@ -42,6 +42,9 @@ public:
virtual void setProfile(int profile);
virtual void setEnable2Pass(bool enabled);
//Encoder info
static const AbstractEncoderInfo *getEncoderInfo(void);
private:
const QString m_binary_enc;
const QString m_binary_tag;

View File

@ -28,6 +28,95 @@
#include <QProcess>
#include <QDir>
static int index2bitrate(const int index)
{
return (index < 32) ? ((index + 1) * 8) : ((index - 15) * 16);
}
///////////////////////////////////////////////////////////////////////////////
// Encoder Info
///////////////////////////////////////////////////////////////////////////////
class FHGAACEncoderInfo : public AbstractEncoderInfo
{
virtual bool isModeSupported(int mode) const
{
switch(mode)
{
case SettingsModel::VBRMode:
case SettingsModel::CBRMode:
return true;
break;
case SettingsModel::ABRMode:
return false;
break;
default:
throw "Bad RC mode specified!";
}
}
virtual int valueCount(int mode) const
{
switch(mode)
{
case SettingsModel::VBRMode:
return 6;
break;
case SettingsModel::ABRMode:
case SettingsModel::CBRMode:
return 52;
break;
default:
throw "Bad RC mode specified!";
}
}
virtual int valueAt(int mode, int index) const
{
switch(mode)
{
case SettingsModel::VBRMode:
return qBound(1, index + 1, 6);
break;
case SettingsModel::ABRMode:
case SettingsModel::CBRMode:
return qBound(8, index2bitrate(index), 576);
break;
default:
throw "Bad RC mode specified!";
}
}
virtual int valueType(int mode) const
{
switch(mode)
{
case SettingsModel::VBRMode:
return TYPE_QUALITY_LEVEL_INT;
break;
case SettingsModel::ABRMode:
return TYPE_APPROX_BITRATE;
break;
case SettingsModel::CBRMode:
return TYPE_BITRATE;
break;
default:
throw "Bad RC mode specified!";
}
}
virtual const char *description(void) const
{
static const char* s_description = "fhgaacenc/Winamp (\x0C2\x0A9 Nullsoft)";
return s_description;
}
}
static const g_fhgAacEncoderInfo;
///////////////////////////////////////////////////////////////////////////////
// Encoder implementation
///////////////////////////////////////////////////////////////////////////////
FHGAACEncoder::FHGAACEncoder(void)
:
m_binary_enc(lamexp_lookup_tool("fhgaacenc.exe")),
@ -50,7 +139,7 @@ bool FHGAACEncoder::encode(const QString &sourceFile, const AudioFileModel &meta
QProcess process;
QStringList args;
int maxBitrate = 500;
int maxBitrate = 576;
if(m_configRCMode == SettingsModel::CBRMode)
{
@ -73,10 +162,10 @@ bool FHGAACEncoder::encode(const QString &sourceFile, const AudioFileModel &meta
switch(m_configRCMode)
{
case SettingsModel::CBRMode:
args << "--cbr" << QString::number(qMax(32, qMin(maxBitrate, (m_configBitrate * 8))));
args << "--cbr" << QString::number(qBound(8, index2bitrate(m_configBitrate), maxBitrate));
break;
case SettingsModel::VBRMode:
args << "--vbr" << QString::number(qBound(1, m_configBitrate, 6));
args << "--vbr" << QString::number(qBound(1, m_configBitrate + 1, 6));
break;
default:
throw "Bad rate-control mode!";
@ -198,3 +287,8 @@ void FHGAACEncoder::setProfile(int profile)
{
m_configProfile = profile;
}
const AbstractEncoderInfo *FHGAACEncoder::getEncoderInfo(void)
{
return &g_fhgAacEncoderInfo;
}

View File

@ -42,6 +42,9 @@ public:
//Advanced options
virtual void setProfile(int profile);
//Encoder info
static const AbstractEncoderInfo *getEncoderInfo(void);
private:
const QString m_binary_enc;

View File

@ -29,6 +29,95 @@
#include <QDir>
#include <QCoreApplication>
static int index2bitrate(const int index)
{
return (index < 32) ? ((index + 1) * 8) : ((index - 15) * 16);
}
static const int g_qaacVBRQualityLUT[16] = {0 ,9, 18, 27, 36, 45, 54, 63, 73, 82, 91, 100, 109, 118, 127, INT_MAX};
///////////////////////////////////////////////////////////////////////////////
// Encoder Info
///////////////////////////////////////////////////////////////////////////////
class QAACEncoderInfo : public AbstractEncoderInfo
{
virtual bool isModeSupported(int mode) const
{
switch(mode)
{
case SettingsModel::VBRMode:
case SettingsModel::CBRMode:
case SettingsModel::ABRMode:
return true;
break;
default:
throw "Bad RC mode specified!";
}
}
virtual int valueCount(int mode) const
{
switch(mode)
{
case SettingsModel::VBRMode:
return 15;
break;
case SettingsModel::ABRMode:
case SettingsModel::CBRMode:
return 52;
break;
default:
throw "Bad RC mode specified!";
}
}
virtual int valueAt(int mode, int index) const
{
switch(mode)
{
case SettingsModel::VBRMode:
return g_qaacVBRQualityLUT[qBound(0, index , 14)];
break;
case SettingsModel::ABRMode:
case SettingsModel::CBRMode:
return qBound(8, index2bitrate(index), 576);
break;
default:
throw "Bad RC mode specified!";
}
}
virtual int valueType(int mode) const
{
switch(mode)
{
case SettingsModel::VBRMode:
return TYPE_QUALITY_LEVEL_INT;
break;
case SettingsModel::ABRMode:
return TYPE_APPROX_BITRATE;
break;
case SettingsModel::CBRMode:
return TYPE_BITRATE;
break;
default:
throw "Bad RC mode specified!";
}
}
virtual const char *description(void) const
{
static const char* s_description = "QAAC/QuickTime (\x0C2\x0A9 Appel)";
return s_description;
}
}
static const g_qaacEncoderInfo;
///////////////////////////////////////////////////////////////////////////////
// Encoder implementation
///////////////////////////////////////////////////////////////////////////////
QAACEncoder::QAACEncoder(void)
:
m_binary_enc(lamexp_lookup_tool("qaac.exe")),
@ -71,13 +160,13 @@ bool QAACEncoder::encode(const QString &sourceFile, const AudioFileModel &metaIn
switch(m_configRCMode)
{
case SettingsModel::CBRMode:
args << "--cbr" << QString::number(qBound(32, m_configBitrate * 8, 500));
args << "--cbr" << QString::number(qBound(8, index2bitrate(m_configBitrate), 576));
break;
case SettingsModel::ABRMode:
args << "--abr" << QString::number(qBound(32, m_configBitrate * 8, 500));
args << "--abr" << QString::number(qBound(8, index2bitrate(m_configBitrate), 576));
break;
case SettingsModel::VBRMode:
args << "--tvbr" << QString::number(qBound(0, m_configBitrate * 4, 127));
args << "--tvbr" << QString::number(g_qaacVBRQualityLUT[qBound(0, m_configBitrate , 14)]);
break;
default:
throw "Bad rate-control mode!";
@ -185,8 +274,12 @@ bool QAACEncoder::isFormatSupported(const QString &containerType, const QString
return false;
}
void QAACEncoder::setProfile(int profile)
{
m_configProfile = profile;
}
const AbstractEncoderInfo *QAACEncoder::getEncoderInfo(void)
{
return &g_qaacEncoderInfo;
}

View File

@ -40,6 +40,9 @@ public:
//Advanced options
virtual void setProfile(int profile);
//Encoder info
static const AbstractEncoderInfo *getEncoderInfo(void);
private:
const QString m_binary_enc;
const QString m_binary_dll;

View File

@ -90,7 +90,7 @@ class AC3EncoderInfo : public AbstractEncoderInfo
switch(mode)
{
case SettingsModel::VBRMode:
return TYPE_QUALITY_LEVEL;
return TYPE_QUALITY_LEVEL_INT;
break;
case SettingsModel::ABRMode:
case SettingsModel::CBRMode:

View File

@ -35,9 +35,10 @@ public:
{
TYPE_BITRATE = 0,
TYPE_APPROX_BITRATE = 1,
TYPE_QUALITY_LEVEL = 2,
TYPE_COMPRESSION_LEVEL = 3,
TYPE_UNCOMPRESSED = 4
TYPE_QUALITY_LEVEL_INT = 2,
TYPE_QUALITY_LEVEL_FLT = 3,
TYPE_COMPRESSION_LEVEL = 4,
TYPE_UNCOMPRESSED = 5
}
value_type_t;

View File

@ -92,7 +92,7 @@ class DCAEncoderInfo : public AbstractEncoderInfo
switch(mode)
{
case SettingsModel::VBRMode:
return TYPE_QUALITY_LEVEL;
return TYPE_QUALITY_LEVEL_INT;
break;
case SettingsModel::ABRMode:
case SettingsModel::CBRMode:

View File

@ -89,7 +89,7 @@ class MP3EncoderInfo : public AbstractEncoderInfo
switch(mode)
{
case SettingsModel::VBRMode:
return TYPE_QUALITY_LEVEL;
return TYPE_QUALITY_LEVEL_INT;
break;
case SettingsModel::ABRMode:
return TYPE_APPROX_BITRATE;

View File

@ -86,7 +86,7 @@ class VorbisEncoderInfo : public AbstractEncoderInfo
switch(mode)
{
case SettingsModel::VBRMode:
return TYPE_QUALITY_LEVEL;
return TYPE_QUALITY_LEVEL_INT;
break;
case SettingsModel::ABRMode:
return TYPE_APPROX_BITRATE;

View File

@ -563,7 +563,7 @@ 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(compressionAbrBitrateAacEnc, 20)
LAMEXP_MAKE_OPTION_I(compressionAbrBitrateAacEnc, 19)
LAMEXP_MAKE_OPTION_I(compressionAbrBitrateAften, 17)
LAMEXP_MAKE_OPTION_I(compressionAbrBitrateDcaEnc, 13)
LAMEXP_MAKE_OPTION_I(compressionAbrBitrateFLAC, 5)
@ -571,7 +571,7 @@ LAMEXP_MAKE_OPTION_I(compressionAbrBitrateLAME, 10)
LAMEXP_MAKE_OPTION_I(compressionAbrBitrateOggEnc, 16)
LAMEXP_MAKE_OPTION_I(compressionAbrBitrateOpusEnc, 11)
LAMEXP_MAKE_OPTION_I(compressionAbrBitrateWave, 0)
LAMEXP_MAKE_OPTION_I(compressionCbrBitrateAacEnc, 20)
LAMEXP_MAKE_OPTION_I(compressionCbrBitrateAacEnc, 19)
LAMEXP_MAKE_OPTION_I(compressionCbrBitrateAften, 17)
LAMEXP_MAKE_OPTION_I(compressionCbrBitrateDcaEnc, 13)
LAMEXP_MAKE_OPTION_I(compressionCbrBitrateFLAC, 5)