///////////////////////////////////////////////////////////////////////////////
// LameXP - Audio Encoder Front-End
-// Copyright (C) 2004-2013 LoRd_MuldeR <MuldeR2@GMX.de>
+// Copyright (C) 2004-2015 LoRd_MuldeR <MuldeR2@GMX.de>
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
#include "Model_Settings.h"
#include "Encoder_AAC.h"
#include "Encoder_AAC_FHG.h"
+#include "Encoder_AAC_FDK.h"
#include "Encoder_AAC_QAAC.h"
#include "Encoder_AC3.h"
#include "Encoder_DCA.h"
#include "Encoder_MP3.h"
#include "Encoder_Vorbis.h"
#include "Encoder_Opus.h"
+#include "Encoder_MAC.h"
#include "Encoder_Wave.h"
#define IS_VBR(RC_MODE) ((RC_MODE) == SettingsModel::VBRMode)
encoder = aacEncoder;
}
break;
+ case SettingsModel::AAC_ENCODER_FDK:
+ {
+ FDKAACEncoder *aacEncoder = new FDKAACEncoder();
+ aacEncoder->setProfile(settings->aacEncProfile());
+ encoder = aacEncoder;
+ }
+ break;
case SettingsModel::AAC_ENCODER_NERO:
{
AACEncoder *aacEncoder = new AACEncoder();
}
break;
default:
- THROW("makeEncoder(): Unknown AAC encoder specified!");
+ MUTILS_THROW("makeEncoder(): Unknown AAC encoder specified!");
break;
}
}
encoder = dcaEncoder;
}
break;
+ /*-------- MACEncoder --------*/
+ case SettingsModel::MACEncoder:
+ {
+ MACEncoder *macEncoder = new MACEncoder();
+ encoder = macEncoder;
+ }
+ break;
/*-------- PCMEncoder --------*/
case SettingsModel::PCMEncoder:
{
break;
/*-------- default --------*/
default:
- THROW("Unsupported encoder!");
+ MUTILS_THROW("Unsupported encoder!");
}
//Sanity checking
if(!encoder)
{
- THROW("No encoder instance has been assigend!");
+ MUTILS_THROW("No encoder instance has been assigend!");
}
//Apply common settings
switch(encoderId)
{
- case SettingsModel::MP3Encoder: info = MP3Encoder::getEncoderInfo(); break;
+ 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::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::MACEncoder: info = MACEncoder ::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_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!");
+ case SettingsModel::AAC_ENCODER_FDK: info = FDKAACEncoder::getEncoderInfo(); break;
+ case SettingsModel::AAC_ENCODER_NERO: info = AACEncoder ::getEncoderInfo(); break;
+ default: MUTILS_THROW("Unknown AAC encoder specified!");
}
break;
- default: THROW("Unsupported encoder!");
+ default: MUTILS_THROW("Unsupported encoder!");
}
//Sanity checking
if(!info)
{
- THROW("No encoder instance has been assigend!");
+ MUTILS_THROW("No encoder instance has been assigend!");
}
return info;
//Sanity checking
if((rcMode < SettingsModel::VBRMode) || (rcMode > SettingsModel::CBRMode))
{
- THROW("Unknown rate-control mode!");
+ MUTILS_THROW("Unknown rate-control mode!");
}
//Store the encoder bitrate/quality value
case SettingsModel::FLACEncoder: STORE_MODE(FLAC, rcMode); break;
case SettingsModel::OpusEncoder: STORE_MODE(OpusEnc, rcMode); break;
case SettingsModel::DCAEncoder: STORE_MODE(DcaEnc, rcMode); break;
+ case SettingsModel::MACEncoder: STORE_MODE(MacEnc, rcMode); break;
case SettingsModel::PCMEncoder: STORE_MODE(Wave, rcMode); break;
- default: THROW("Unsupported encoder!");
+ default: MUTILS_THROW("Unsupported encoder!");
}
}
case SettingsModel::FLACEncoder: LOAD_MODE(rcMode, FLAC); break;
case SettingsModel::OpusEncoder: LOAD_MODE(rcMode, OpusEnc); break;
case SettingsModel::DCAEncoder: LOAD_MODE(rcMode, DcaEnc); break;
+ case SettingsModel::MACEncoder: LOAD_MODE(rcMode, MacEnc); break;
case SettingsModel::PCMEncoder: LOAD_MODE(rcMode, Wave); break;
- default: THROW("Unsupported encoder!");
+ default: MUTILS_THROW("Unsupported encoder!");
}
return rcMode;
//Sanity checking
if((rcMode < SettingsModel::VBRMode) || (rcMode > SettingsModel::CBRMode))
{
- THROW("Unknown rate-control mode!");
+ MUTILS_THROW("Unknown rate-control mode!");
}
//Store the encoder bitrate/quality value
case SettingsModel::FLACEncoder: STORE_VALUE(FLAC, rcMode, value); break;
case SettingsModel::OpusEncoder: STORE_VALUE(OpusEnc, rcMode, value); break;
case SettingsModel::DCAEncoder: STORE_VALUE(DcaEnc, rcMode, value); break;
+ case SettingsModel::MACEncoder: STORE_VALUE(MacEnc, rcMode, value); break;
case SettingsModel::PCMEncoder: STORE_VALUE(Wave, rcMode, value); break;
- default: THROW("Unsupported encoder!");
+ default: MUTILS_THROW("Unsupported encoder!");
}
}
//Sanity checking
if((rcMode < SettingsModel::VBRMode) || (rcMode > SettingsModel::CBRMode))
{
- THROW("Unknown rate-control mode!");
+ MUTILS_THROW("Unknown rate-control mode!");
}
//Load the encoder bitrate/quality value
case SettingsModel::FLACEncoder: LOAD_VALUE(value, FLAC, rcMode); break;
case SettingsModel::OpusEncoder: LOAD_VALUE(value, OpusEnc, rcMode); break;
case SettingsModel::DCAEncoder: LOAD_VALUE(value, DcaEnc, rcMode); break;
+ case SettingsModel::MACEncoder: LOAD_VALUE(value, MacEnc, rcMode); break;
case SettingsModel::PCMEncoder: LOAD_VALUE(value, Wave, rcMode); break;
- default: THROW("Unsupported encoder!");
+ default: MUTILS_THROW("Unsupported encoder!");
}
return value;
} \
while(0)
-void EncoderRegistry::saveEncoderCustomParams(SettingsModel *settings, const int encoderId, const QString params)
+void EncoderRegistry::saveEncoderCustomParams(SettingsModel *settings, const int encoderId, const QString ¶ms)
{
//Store the encoder bitrate/quality value
switch(encoderId)
case SettingsModel::FLACEncoder: STORE_PARAMS(FLAC, params.trimmed()); break;
case SettingsModel::OpusEncoder: STORE_PARAMS(OpusEnc, params.trimmed()); break;
case SettingsModel::DCAEncoder: STORE_PARAMS(DcaEnc, params.trimmed()); break;
+ case SettingsModel::MACEncoder: STORE_PARAMS(MacEnc, params.trimmed()); break;
case SettingsModel::PCMEncoder: STORE_PARAMS(Wave, params.trimmed()); break;
- default: THROW("Unsupported encoder!");
+ default: MUTILS_THROW("Unsupported encoder!");
}
}
case SettingsModel::FLACEncoder: LOAD_PARAMS(params, FLAC); break;
case SettingsModel::OpusEncoder: LOAD_PARAMS(params, OpusEnc); break;
case SettingsModel::DCAEncoder: LOAD_PARAMS(params, DcaEnc); break;
+ case SettingsModel::MACEncoder: LOAD_PARAMS(params, MacEnc); break;
case SettingsModel::PCMEncoder: LOAD_PARAMS(params, Wave); break;
- default: THROW("Unsupported encoder!");
+ default: MUTILS_THROW("Unsupported encoder!");
}
return params;
RESET_SETTING(settings, compressionAbrBitrateDcaEnc);
RESET_SETTING(settings, compressionAbrBitrateFLAC);
RESET_SETTING(settings, compressionAbrBitrateLAME);
+ RESET_SETTING(settings, compressionAbrBitrateMacEnc);
RESET_SETTING(settings, compressionAbrBitrateOggEnc);
RESET_SETTING(settings, compressionAbrBitrateOpusEnc);
RESET_SETTING(settings, compressionAbrBitrateWave);
RESET_SETTING(settings, compressionCbrBitrateDcaEnc);
RESET_SETTING(settings, compressionCbrBitrateFLAC);
RESET_SETTING(settings, compressionCbrBitrateLAME);
+ RESET_SETTING(settings, compressionCbrBitrateMacEnc);
RESET_SETTING(settings, compressionCbrBitrateOggEnc);
RESET_SETTING(settings, compressionCbrBitrateOpusEnc);
RESET_SETTING(settings, compressionCbrBitrateWave);
RESET_SETTING(settings, compressionRCModeDcaEnc);
RESET_SETTING(settings, compressionRCModeFLAC);
RESET_SETTING(settings, compressionRCModeLAME);
+ RESET_SETTING(settings, compressionRCModeMacEnc);
RESET_SETTING(settings, compressionRCModeOggEnc);
RESET_SETTING(settings, compressionRCModeOpusEnc);
RESET_SETTING(settings, compressionRCModeWave);
RESET_SETTING(settings, compressionVbrQualityDcaEnc);
RESET_SETTING(settings, compressionVbrQualityFLAC);
RESET_SETTING(settings, compressionVbrQualityLAME);
+ RESET_SETTING(settings, compressionVbrQualityMacEnc);
RESET_SETTING(settings, compressionVbrQualityOggEnc);
RESET_SETTING(settings, compressionVbrQualityOpusEnc);
RESET_SETTING(settings, compressionVbrQualityWave);
}
////////////////////////////////////////////////////////////
+// Get File Extensions
+////////////////////////////////////////////////////////////
+
+QStringList EncoderRegistry::getOutputFileExtensions(void)
+{
+ QStringList list;
+ for(int encoderId = SettingsModel::MP3Encoder; encoderId < SettingsModel::ENCODER_COUNT; encoderId++)
+ {
+ if((encoderId == SettingsModel::AACEncoder) && (getAacEncoder() == SettingsModel::AAC_ENCODER_NONE))
+ {
+ continue;
+ }
+ list << QString::fromLatin1(getEncoderInfo(encoderId)->extension());
+ }
+ return list;
+}
+
+////////////////////////////////////////////////////////////
// Static Functions
////////////////////////////////////////////////////////////
int EncoderRegistry::getAacEncoder(void)
{
- if(lamexp_check_tool("qaac.exe") && lamexp_check_tool("libsoxrate.dll"))
+ if(lamexp_tools_check("qaac.exe") && lamexp_tools_check("libsoxr.dll") && lamexp_tools_check("libsoxconvolver.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"))
+ else if(lamexp_tools_check("qaac64.exe") && lamexp_tools_check("libsoxr64.dll") && lamexp_tools_check("libsoxconvolver64.dll"))
+ {
+ return SettingsModel::AAC_ENCODER_QAAC;
+ }
+ else if(lamexp_tools_check("fdkaac.exe"))
+ {
+ return SettingsModel::AAC_ENCODER_FDK;
+ }
+ else if(lamexp_tools_check("fhgaacenc.exe") && lamexp_tools_check("enc_fhgaac.dll") && lamexp_tools_check("nsutil.dll") && lamexp_tools_check("libmp4v2.dll"))
{
return SettingsModel::AAC_ENCODER_FHG;
}
- else if(lamexp_check_tool("neroAacEnc.exe") && lamexp_check_tool("neroAacDec.exe") && lamexp_check_tool("neroAacTag.exe"))
+ else if(lamexp_tools_check("neroAacEnc.exe") && lamexp_tools_check("neroAacDec.exe") && lamexp_tools_check("neroAacTag.exe"))
{
return SettingsModel::AAC_ENCODER_NERO;
}