Implemented AbstractEncoderInfo for some more encoders. Remaining encoders not yet working.
This commit is contained in:
parent
6c9e3c562f
commit
d76c4a1702
@ -34,7 +34,7 @@
|
||||
#define VER_LAMEXP_MINOR_LO 9
|
||||
#define VER_LAMEXP_TYPE Alpha
|
||||
#define VER_LAMEXP_PATCH 1
|
||||
#define VER_LAMEXP_BUILD 1343
|
||||
#define VER_LAMEXP_BUILD 1345
|
||||
#define VER_LAMEXP_CONFG 1338
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
@ -180,7 +180,6 @@ MainWindow::MainWindow(FileListModel *fileListModel, AudioFileModel *metaInfo, S
|
||||
m_metaData(metaInfo),
|
||||
m_settings(settingsModel),
|
||||
m_fileSystemModel(NULL),
|
||||
m_aacEncoder(SettingsModel::getAacEncoder()),
|
||||
m_accepted(false),
|
||||
m_firstTimeShown(true),
|
||||
m_outputFolderViewCentering(false),
|
||||
@ -351,7 +350,8 @@ MainWindow::MainWindow(FileListModel *fileListModel, AudioFileModel *metaInfo, S
|
||||
m_encoderButtonGroup->addButton(ui->radioButtonEncoderDCA, SettingsModel::DCAEncoder);
|
||||
m_encoderButtonGroup->addButton(ui->radioButtonEncoderPCM, SettingsModel::PCMEncoder);
|
||||
|
||||
ui->radioButtonEncoderAAC->setEnabled(m_aacEncoder > SettingsModel::AAC_ENCODER_NONE);
|
||||
const int aacEncoder = EncoderRegistry::getAacEncoder();
|
||||
ui->radioButtonEncoderAAC->setEnabled(aacEncoder > SettingsModel::AAC_ENCODER_NONE);
|
||||
|
||||
m_modeButtonGroup = new QButtonGroup(this);
|
||||
m_modeButtonGroup->addButton(ui->radioButtonModeQuality, SettingsModel::VBRMode);
|
||||
@ -412,7 +412,7 @@ MainWindow::MainWindow(FileListModel *fileListModel, AudioFileModel *metaInfo, S
|
||||
SET_CHECKBOX_STATE(ui->checkBoxRenameOutput, m_settings->renameOutputFilesEnabled());
|
||||
SET_CHECKBOX_STATE(ui->checkBoxForceStereoDownmix, m_settings->forceStereoDownmix());
|
||||
SET_CHECKBOX_STATE(ui->checkBoxOpusDisableResample, m_settings->opusDisableResample());
|
||||
ui->checkBoxNeroAAC2PassMode->setEnabled(m_aacEncoder == SettingsModel::AAC_ENCODER_NERO);
|
||||
ui->checkBoxNeroAAC2PassMode->setEnabled(aacEncoder == SettingsModel::AAC_ENCODER_NERO);
|
||||
|
||||
ui->lineEditCustomParamLAME->setText(m_settings->customParametersLAME());
|
||||
ui->lineEditCustomParamOggEnc->setText(m_settings->customParametersOggEnc());
|
||||
@ -955,6 +955,8 @@ void MainWindow::changeEvent(QEvent *e)
|
||||
{
|
||||
if(e->type() == QEvent::LanguageChange)
|
||||
{
|
||||
qWarning("\nMainWindow::changeEvent()\n");
|
||||
|
||||
int comboBoxIndex[8];
|
||||
|
||||
//Backup combobox indices, as retranslateUi() resets
|
||||
@ -1357,7 +1359,8 @@ void MainWindow::windowShown(void)
|
||||
}
|
||||
|
||||
//Check for AAC support
|
||||
if(m_aacEncoder == SettingsModel::AAC_ENCODER_NERO)
|
||||
const int aacEncoder = EncoderRegistry::getAacEncoder();
|
||||
if(aacEncoder == SettingsModel::AAC_ENCODER_NERO)
|
||||
{
|
||||
if(m_settings->neroAacNotificationsEnabled())
|
||||
{
|
||||
@ -1375,7 +1378,7 @@ void MainWindow::windowShown(void)
|
||||
}
|
||||
else
|
||||
{
|
||||
if(m_settings->neroAacNotificationsEnabled() && (m_aacEncoder <= SettingsModel::AAC_ENCODER_NONE))
|
||||
if(m_settings->neroAacNotificationsEnabled() && (aacEncoder <= SettingsModel::AAC_ENCODER_NONE))
|
||||
{
|
||||
QString appPath = QDir(QCoreApplication::applicationDirPath()).canonicalPath();
|
||||
if(appPath.isEmpty()) appPath = QCoreApplication::applicationDirPath();
|
||||
@ -3289,18 +3292,25 @@ void MainWindow::playlistEnabledChanged(void)
|
||||
*/
|
||||
void MainWindow::updateEncoder(int id)
|
||||
{
|
||||
qWarning("\nupdateEncoder(%d)", id);
|
||||
|
||||
m_settings->compressionEncoder(id);
|
||||
const AbstractEncoderInfo *info = EncoderRegistry::getEncoderInfo(id);
|
||||
|
||||
qWarning("info->isModeSupported(SettingsModel::VBRMode) = %s", info->isModeSupported(SettingsModel::VBRMode) ? "YES" : "NO");
|
||||
qWarning("info->isModeSupported(SettingsModel::ABRMode) = %s", info->isModeSupported(SettingsModel::ABRMode) ? "YES" : "NO");
|
||||
qWarning("info->isModeSupported(SettingsModel::CBRMode) = %s", info->isModeSupported(SettingsModel::CBRMode) ? "YES" : "NO");
|
||||
|
||||
//Update UI controls
|
||||
ui->radioButtonModeQuality->setEnabled(info->isModeSupported(SettingsModel::VBRMode));
|
||||
ui->radioButtonModeAverageBitrate->setEnabled(info->isModeSupported(SettingsModel::ABRMode));
|
||||
ui->radioButtonConstBitrate->setEnabled(info->isModeSupported(SettingsModel::CBRMode));
|
||||
|
||||
//Initialize checkbox state
|
||||
if(ui->radioButtonConstBitrate->isEnabled()) ui->radioButtonConstBitrate->setChecked(true);
|
||||
if(ui->radioButtonModeAverageBitrate->isEnabled()) ui->radioButtonModeAverageBitrate->setChecked(true);
|
||||
if(ui->radioButtonModeQuality->isEnabled()) ui->radioButtonModeQuality->setChecked(true);
|
||||
else if(ui->radioButtonModeAverageBitrate->isEnabled()) ui->radioButtonModeAverageBitrate->setChecked(true);
|
||||
else if(ui->radioButtonConstBitrate->isEnabled()) ui->radioButtonConstBitrate->setChecked(true);
|
||||
else throw "It appears that the encoder does not support *any* RC mode!";
|
||||
|
||||
//Apply current RC mode
|
||||
const int currentRCMode = EncoderRegistry::loadEncoderMode(m_settings, id);
|
||||
@ -3884,7 +3894,7 @@ void MainWindow::customParamsHelpRequested(QWidget *obj, QEvent *event)
|
||||
else if(obj == ui->helpCustomParamOggEnc) showCustomParamsHelpScreen("oggenc2.exe", "--help");
|
||||
else if(obj == ui->helpCustomParamNeroAAC)
|
||||
{
|
||||
switch(m_aacEncoder)
|
||||
switch(EncoderRegistry::getAacEncoder())
|
||||
{
|
||||
case SettingsModel::AAC_ENCODER_QAAC: showCustomParamsHelpScreen("qaac.exe", "--help"); break;
|
||||
case SettingsModel::AAC_ENCODER_FHG : showCustomParamsHelpScreen("fhgaacenc.exe", ""); break;
|
||||
|
@ -228,6 +228,4 @@ private:
|
||||
CustomEventFilter *m_evenFilterOutputFolderMouse;
|
||||
CustomEventFilter *m_evenFilterOutputFolderView;
|
||||
CustomEventFilter *m_evenFilterCompressionTab;
|
||||
|
||||
const int m_aacEncoder;
|
||||
};
|
||||
|
@ -32,9 +32,11 @@ static const int g_lameAgorithmQualityLUT[5] = {9, 7, 3, 0, INT_MAX};
|
||||
static const int g_mp3BitrateLUT[15] = {32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320, -1};
|
||||
static const int g_lameVBRQualityLUT[11] = {9, 8, 7, 6, 5, 4, 3, 2, 1, 0, INT_MAX};
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// Encoder Info
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
class : public AbstractEncoderInfo
|
||||
class MP3EncoderInfo : public AbstractEncoderInfo
|
||||
{
|
||||
virtual bool isModeSupported(int mode) const
|
||||
{
|
||||
@ -43,8 +45,8 @@ class : public AbstractEncoderInfo
|
||||
case SettingsModel::VBRMode:
|
||||
case SettingsModel::ABRMode:
|
||||
case SettingsModel::CBRMode:
|
||||
return true;
|
||||
break;
|
||||
return true;
|
||||
break;
|
||||
default:
|
||||
throw "Bad RC mode specified!";
|
||||
}
|
||||
@ -71,11 +73,11 @@ class : public AbstractEncoderInfo
|
||||
switch(mode)
|
||||
{
|
||||
case SettingsModel::VBRMode:
|
||||
return g_lameVBRQualityLUT[index];
|
||||
return g_lameVBRQualityLUT[qBound(0, index, 9)];
|
||||
break;
|
||||
case SettingsModel::ABRMode:
|
||||
case SettingsModel::CBRMode:
|
||||
return g_mp3BitrateLUT[index];
|
||||
return g_mp3BitrateLUT[qBound(0, index, 13)];
|
||||
break;
|
||||
default:
|
||||
throw "Bad RC mode specified!";
|
||||
@ -105,9 +107,12 @@ class : public AbstractEncoderInfo
|
||||
static const char* s_description = "LAME MP3 Encoder";
|
||||
return s_description;
|
||||
}
|
||||
}
|
||||
g_mp3EncoderInfo;
|
||||
};
|
||||
|
||||
static const MP3EncoderInfo g_mp3EncoderInfo;
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// Encoder implementation
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
MP3Encoder::MP3Encoder(void)
|
||||
|
@ -28,6 +28,83 @@
|
||||
#include <QDir>
|
||||
#include <QUUid>
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// Encoder Info
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
class OpusEncoderInfo : 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:
|
||||
case SettingsModel::ABRMode:
|
||||
case SettingsModel::CBRMode:
|
||||
return 32;
|
||||
break;
|
||||
default:
|
||||
throw "Bad RC mode specified!";
|
||||
}
|
||||
}
|
||||
|
||||
virtual int valueAt(int mode, int index) const
|
||||
{
|
||||
switch(mode)
|
||||
{
|
||||
case SettingsModel::VBRMode:
|
||||
case SettingsModel::ABRMode:
|
||||
case SettingsModel::CBRMode:
|
||||
return qBound(8, (index + 1) * 8, 256);
|
||||
break;
|
||||
default:
|
||||
throw "Bad RC mode specified!";
|
||||
}
|
||||
}
|
||||
|
||||
virtual int valueType(int mode) const
|
||||
{
|
||||
switch(mode)
|
||||
{
|
||||
case SettingsModel::VBRMode:
|
||||
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 = "Opus-Tools OpusEnc (libopus)";
|
||||
return s_description;
|
||||
}
|
||||
};
|
||||
|
||||
static const OpusEncoderInfo g_opusEncoderInfo;
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// Encoder implementation
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
OpusEncoder::OpusEncoder(void)
|
||||
:
|
||||
m_binary(lamexp_lookup_tool("opusenc.exe"))
|
||||
@ -69,16 +146,6 @@ bool OpusEncoder::encode(const QString &sourceFile, const AudioFileModel &metaIn
|
||||
break;
|
||||
}
|
||||
|
||||
//switch(m_configOptimizeFor)
|
||||
//{
|
||||
//case 0:
|
||||
// args << "--music";
|
||||
// break;
|
||||
//case 1:
|
||||
// args << "--speech";
|
||||
// break;
|
||||
//}
|
||||
|
||||
args << "--comp" << QString::number(m_configEncodeComplexity);
|
||||
|
||||
switch(m_configFrameSize)
|
||||
@ -103,7 +170,7 @@ bool OpusEncoder::encode(const QString &sourceFile, const AudioFileModel &metaIn
|
||||
break;
|
||||
}
|
||||
|
||||
args << QString("--bitrate") << QString::number(qMax(0, qMin(500, m_configBitrate * 8)));
|
||||
args << QString("--bitrate") << QString::number(qBound(8, (m_configBitrate + 1) * 8, 256));
|
||||
|
||||
if(!metaInfo.fileName().isEmpty()) args << "--title" << cleanTag(metaInfo.fileName());
|
||||
if(!metaInfo.fileArtist().isEmpty()) args << "--artist" << cleanTag(metaInfo.fileArtist());
|
||||
@ -234,3 +301,8 @@ const bool OpusEncoder::needsTimingInfo(void)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
const AbstractEncoderInfo *OpusEncoder::getEncoderInfo(void)
|
||||
{
|
||||
return &g_opusEncoderInfo;
|
||||
}
|
||||
|
@ -45,6 +45,9 @@ public:
|
||||
virtual void setEncodeComplexity(int complexity);
|
||||
virtual void setFrameSize(int frameSize);
|
||||
|
||||
//Encoder info
|
||||
static const AbstractEncoderInfo *getEncoderInfo(void);
|
||||
|
||||
private:
|
||||
const QString m_binary;
|
||||
|
||||
|
@ -27,6 +27,91 @@
|
||||
#include <QProcess>
|
||||
#include <QDir>
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// Encoder Info
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
class VorbisEncoderInfo : public AbstractEncoderInfo
|
||||
{
|
||||
virtual bool isModeSupported(int mode) const
|
||||
{
|
||||
switch(mode)
|
||||
{
|
||||
case SettingsModel::VBRMode:
|
||||
case SettingsModel::ABRMode:
|
||||
return true;
|
||||
break;
|
||||
case SettingsModel::CBRMode:
|
||||
return false;
|
||||
break;
|
||||
default:
|
||||
throw "Bad RC mode specified!";
|
||||
}
|
||||
}
|
||||
|
||||
virtual int valueCount(int mode) const
|
||||
{
|
||||
switch(mode)
|
||||
{
|
||||
case SettingsModel::VBRMode:
|
||||
return 12;
|
||||
break;
|
||||
case SettingsModel::ABRMode:
|
||||
case SettingsModel::CBRMode:
|
||||
return 60;
|
||||
break;
|
||||
default:
|
||||
throw "Bad RC mode specified!";
|
||||
}
|
||||
}
|
||||
|
||||
virtual int valueAt(int mode, int index) const
|
||||
{
|
||||
switch(mode)
|
||||
{
|
||||
case SettingsModel::VBRMode:
|
||||
return qBound(-2, index - 2, 10);
|
||||
break;
|
||||
case SettingsModel::ABRMode:
|
||||
case SettingsModel::CBRMode:
|
||||
return qBound(32, (index + 4) * 8, 500);
|
||||
break;
|
||||
default:
|
||||
throw "Bad RC mode specified!";
|
||||
}
|
||||
}
|
||||
|
||||
virtual int valueType(int mode) const
|
||||
{
|
||||
switch(mode)
|
||||
{
|
||||
case SettingsModel::VBRMode:
|
||||
return TYPE_QUALITY_LEVEL;
|
||||
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 = "OggEnc2 Vorbis Encoder (aoTuV)";
|
||||
return s_description;
|
||||
}
|
||||
};
|
||||
|
||||
static const VorbisEncoderInfo g_vorbisEncoderInfo;
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// Encoder implementation
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
VorbisEncoder::VorbisEncoder(void)
|
||||
:
|
||||
m_binary(lamexp_lookup_tool("oggenc2.exe"))
|
||||
@ -54,10 +139,10 @@ bool VorbisEncoder::encode(const QString &sourceFile, const AudioFileModel &meta
|
||||
switch(m_configRCMode)
|
||||
{
|
||||
case SettingsModel::VBRMode:
|
||||
args << "-q" << QString::number(qMax(-2, qMin(10, m_configBitrate)));
|
||||
args << "-q" << QString::number(qBound(-2, m_configBitrate - 2, 10));
|
||||
break;
|
||||
case SettingsModel::ABRMode:
|
||||
args << "-b" << QString::number(qMax(32, qMin(500, (m_configBitrate * 8))));
|
||||
args << "-b" << QString::number(qBound(32, (m_configBitrate + 4) * 8, 500));
|
||||
break;
|
||||
default:
|
||||
throw "Bad rate-control mode!";
|
||||
@ -66,8 +151,8 @@ bool VorbisEncoder::encode(const QString &sourceFile, const AudioFileModel &meta
|
||||
|
||||
if((m_configBitrateMaximum > 0) && (m_configBitrateMinimum > 0) && (m_configBitrateMinimum <= m_configBitrateMaximum))
|
||||
{
|
||||
args << "--min-bitrate" << QString::number(qMin(qMax(m_configBitrateMinimum, 32), 500));
|
||||
args << "--max-bitrate" << QString::number(qMin(qMax(m_configBitrateMaximum, 32), 500));
|
||||
args << "--min-bitrate" << QString::number(qBound(32, m_configBitrateMinimum, 500));
|
||||
args << "--max-bitrate" << QString::number(qBound(32, m_configBitrateMaximum, 500));
|
||||
}
|
||||
|
||||
if(m_configSamplingRate > 0)
|
||||
@ -198,3 +283,8 @@ void VorbisEncoder::setSamplingRate(int value)
|
||||
{
|
||||
m_configSamplingRate = value;
|
||||
}
|
||||
|
||||
const AbstractEncoderInfo *VorbisEncoder::getEncoderInfo(void)
|
||||
{
|
||||
return &g_vorbisEncoderInfo;
|
||||
}
|
||||
|
@ -40,6 +40,9 @@ public:
|
||||
virtual void setSamplingRate(int value);
|
||||
virtual void setBitrate(int bitrate);
|
||||
|
||||
//Encoder info
|
||||
static const AbstractEncoderInfo *getEncoderInfo(void);
|
||||
|
||||
private:
|
||||
const QString m_binary;
|
||||
int m_configBitrateMaximum;
|
||||
|
@ -29,6 +29,85 @@
|
||||
|
||||
#define FIX_SEPARATORS(STR) for(int i = 0; STR[i]; i++) { if(STR[i] == L'/') STR[i] = L'\\'; }
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// Encoder Info
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
class WaveEncoderInfo : public AbstractEncoderInfo
|
||||
{
|
||||
public:
|
||||
virtual bool isModeSupported(int mode) const
|
||||
{
|
||||
switch(mode)
|
||||
{
|
||||
case SettingsModel::VBRMode:
|
||||
case SettingsModel::ABRMode:
|
||||
return false;
|
||||
break;
|
||||
case SettingsModel::CBRMode:
|
||||
return true;
|
||||
break;
|
||||
default:
|
||||
throw "Bad RC mode specified!";
|
||||
}
|
||||
}
|
||||
|
||||
virtual int valueCount(int mode) const
|
||||
{
|
||||
switch(mode)
|
||||
{
|
||||
case SettingsModel::VBRMode:
|
||||
case SettingsModel::ABRMode:
|
||||
case SettingsModel::CBRMode:
|
||||
return 0;
|
||||
break;
|
||||
default:
|
||||
throw "Bad RC mode specified!";
|
||||
}
|
||||
}
|
||||
|
||||
virtual int valueAt(int mode, int index) const
|
||||
{
|
||||
switch(mode)
|
||||
{
|
||||
case SettingsModel::VBRMode:
|
||||
case SettingsModel::ABRMode:
|
||||
case SettingsModel::CBRMode:
|
||||
return -1;
|
||||
break;
|
||||
default:
|
||||
throw "Bad RC mode specified!";
|
||||
}
|
||||
}
|
||||
|
||||
virtual int valueType(int mode) const
|
||||
{
|
||||
switch(mode)
|
||||
{
|
||||
case SettingsModel::VBRMode:
|
||||
case SettingsModel::ABRMode:
|
||||
case SettingsModel::CBRMode:
|
||||
return TYPE_UNCOMPRESSED;
|
||||
break;
|
||||
default:
|
||||
throw "Bad RC mode specified!";
|
||||
}
|
||||
}
|
||||
|
||||
virtual const char *description(void) const
|
||||
{
|
||||
static const char* s_description = "Wave Audio (PCM)";
|
||||
return s_description;
|
||||
}
|
||||
};
|
||||
|
||||
static const WaveEncoderInfo g_waveEncoderInfo;
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// Encoder implementation
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
WaveEncoder::WaveEncoder(void)
|
||||
{
|
||||
}
|
||||
@ -103,3 +182,8 @@ bool WaveEncoder::isFormatSupported(const QString &containerType, const QString
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
const AbstractEncoderInfo *WaveEncoder::getEncoderInfo(void)
|
||||
{
|
||||
return &g_waveEncoderInfo;
|
||||
}
|
||||
|
@ -36,4 +36,7 @@ public:
|
||||
virtual bool encode(const QString &sourceFile, const AudioFileModel &metaInfo, const QString &outputFile, volatile bool *abortFlag);
|
||||
virtual bool isFormatSupported(const QString &containerType, const QString &containerProfile, const QString &formatType, const QString &formatProfile, const QString &formatVersion);
|
||||
virtual QString extension(void);
|
||||
|
||||
//Encoder info
|
||||
static const AbstractEncoderInfo *getEncoderInfo(void);
|
||||
};
|
||||
|
@ -424,30 +424,6 @@ void SettingsModel::syncNow(void)
|
||||
m_configCache->flushValues();
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
// Static Functions
|
||||
////////////////////////////////////////////////////////////
|
||||
|
||||
int SettingsModel::getAacEncoder(void)
|
||||
{
|
||||
if(lamexp_check_tool("qaac.exe") && lamexp_check_tool("libsoxrate.dll"))
|
||||
{
|
||||
return AAC_ENCODER_QAAC;
|
||||
}
|
||||
else if(lamexp_check_tool("fhgaacenc.exe") && lamexp_check_tool("enc_fhgaac.dll") && lamexp_check_tool("nsutil.dll") && lamexp_check_tool("libmp4v2.dll"))
|
||||
{
|
||||
return AAC_ENCODER_FHG;
|
||||
}
|
||||
else if(lamexp_check_tool("neroAacEnc.exe") && lamexp_check_tool("neroAacDec.exe") && lamexp_check_tool("neroAacTag.exe"))
|
||||
{
|
||||
return AAC_ENCODER_NERO;
|
||||
}
|
||||
else
|
||||
{
|
||||
return AAC_ENCODER_NONE;
|
||||
}
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
// Private Functions
|
||||
////////////////////////////////////////////////////////////
|
||||
|
@ -180,9 +180,6 @@ public:
|
||||
//Misc
|
||||
void validate(void);
|
||||
void syncNow(void);
|
||||
|
||||
//Static
|
||||
static int getAacEncoder(void);
|
||||
|
||||
private:
|
||||
SettingsCache *m_configCache;
|
||||
|
@ -21,6 +21,7 @@
|
||||
|
||||
#include "Registry_Encoder.h"
|
||||
|
||||
#include "Global.h"
|
||||
#include "Model_Settings.h"
|
||||
#include "Encoder_AAC.h"
|
||||
#include "Encoder_AAC_FHG.h"
|
||||
@ -97,7 +98,7 @@ AbstractEncoder *EncoderRegistry::createInstance(const int encoderId, const Sett
|
||||
/*-------- AACEncoder /*--------*/
|
||||
case SettingsModel::AACEncoder:
|
||||
{
|
||||
switch(SettingsModel::getAacEncoder())
|
||||
switch(getAacEncoder())
|
||||
{
|
||||
case SettingsModel::AAC_ENCODER_QAAC:
|
||||
{
|
||||
@ -215,57 +216,23 @@ const AbstractEncoderInfo *EncoderRegistry::getEncoderInfo(const int encoderId)
|
||||
|
||||
switch(encoderId)
|
||||
{
|
||||
/*-------- MP3Encoder /*--------*/
|
||||
case SettingsModel::MP3Encoder:
|
||||
info = MP3Encoder::getEncoderInfo();
|
||||
break;
|
||||
/*-------- VorbisEncoder /*--------*/
|
||||
case SettingsModel::VorbisEncoder:
|
||||
info = VorbisEncoder::getEncoderInfo();
|
||||
break;
|
||||
/*-------- AACEncoder /*--------*/
|
||||
case SettingsModel::AACEncoder:
|
||||
{
|
||||
switch(SettingsModel::getAacEncoder())
|
||||
case SettingsModel::MP3Encoder: info = MP3Encoder::getEncoderInfo(); break;
|
||||
case SettingsModel::VorbisEncoder: info = VorbisEncoder::getEncoderInfo(); break;
|
||||
case SettingsModel::AC3Encoder: info = AC3Encoder::getEncoderInfo(); break;
|
||||
case SettingsModel::FLACEncoder: info = FLACEncoder::getEncoderInfo(); break;
|
||||
case SettingsModel::OpusEncoder: info = OpusEncoder::getEncoderInfo(); break;
|
||||
case SettingsModel::DCAEncoder: info = DCAEncoder::getEncoderInfo(); break;
|
||||
case SettingsModel::PCMEncoder: info = WaveEncoder::getEncoderInfo(); break;
|
||||
case SettingsModel::AACEncoder:
|
||||
switch(getAacEncoder())
|
||||
{
|
||||
case SettingsModel::AAC_ENCODER_QAAC:
|
||||
info = QAACEncoder::getEncoderInfo();
|
||||
break;
|
||||
case SettingsModel::AAC_ENCODER_FHG:
|
||||
info = FHGAACEncoder::getEncoderInfo();
|
||||
break;
|
||||
case SettingsModel::AAC_ENCODER_NERO:
|
||||
info = AACEncoder::getEncoderInfo();
|
||||
break;
|
||||
default:
|
||||
throw "Unknown AAC encoder specified!";
|
||||
break;
|
||||
case SettingsModel::AAC_ENCODER_QAAC: info = QAACEncoder::getEncoderInfo(); break;
|
||||
case SettingsModel::AAC_ENCODER_FHG: info = FHGAACEncoder::getEncoderInfo(); break;
|
||||
case SettingsModel::AAC_ENCODER_NERO: info = AACEncoder::getEncoderInfo(); break;
|
||||
default: throw "Unknown AAC encoder specified!";
|
||||
}
|
||||
}
|
||||
break;
|
||||
/*-------- AC3Encoder /*--------*/
|
||||
case SettingsModel::AC3Encoder:
|
||||
info = AC3Encoder::getEncoderInfo();
|
||||
break;
|
||||
/*-------- FLACEncoder /*--------*/
|
||||
case SettingsModel::FLACEncoder:
|
||||
info = FLACEncoder::getEncoderInfo();
|
||||
break;
|
||||
/*-------- OpusEncoder --------*/
|
||||
case SettingsModel::OpusEncoder:
|
||||
info = OpusEncoder::getEncoderInfo();
|
||||
break;
|
||||
/*-------- DCAEncoder --------*/
|
||||
case SettingsModel::DCAEncoder:
|
||||
info = DCAEncoder::getEncoderInfo();
|
||||
break;
|
||||
/*-------- PCMEncoder --------*/
|
||||
case SettingsModel::PCMEncoder:
|
||||
info = WaveEncoder::getEncoderInfo();
|
||||
break;
|
||||
/*-------- default --------*/
|
||||
default:
|
||||
throw "Unsupported encoder!";
|
||||
break;
|
||||
default: throw "Unsupported encoder!";
|
||||
}
|
||||
|
||||
//Sanity checking
|
||||
@ -416,3 +383,27 @@ int EncoderRegistry::loadEncoderValue(const SettingsModel *settings, const int e
|
||||
|
||||
return value;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
// Static Functions
|
||||
////////////////////////////////////////////////////////////
|
||||
|
||||
int EncoderRegistry::getAacEncoder(void)
|
||||
{
|
||||
if(lamexp_check_tool("qaac.exe") && lamexp_check_tool("libsoxrate.dll"))
|
||||
{
|
||||
return SettingsModel::AAC_ENCODER_QAAC;
|
||||
}
|
||||
else if(lamexp_check_tool("fhgaacenc.exe") && lamexp_check_tool("enc_fhgaac.dll") && lamexp_check_tool("nsutil.dll") && lamexp_check_tool("libmp4v2.dll"))
|
||||
{
|
||||
return SettingsModel::AAC_ENCODER_FHG;
|
||||
}
|
||||
else if(lamexp_check_tool("neroAacEnc.exe") && lamexp_check_tool("neroAacDec.exe") && lamexp_check_tool("neroAacTag.exe"))
|
||||
{
|
||||
return SettingsModel::AAC_ENCODER_NERO;
|
||||
}
|
||||
else
|
||||
{
|
||||
return SettingsModel::AAC_ENCODER_NONE;
|
||||
}
|
||||
}
|
||||
|
@ -40,4 +40,6 @@ public:
|
||||
|
||||
static void saveEncoderValue(SettingsModel *settings, const int encoderId, const int rcMode, const int value);
|
||||
static int loadEncoderValue(const SettingsModel *settings, const int encoderId, const int rcMode);
|
||||
|
||||
static int getAacEncoder(void);
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user