OSDN Git Service

Set creation/modified time of the encoded file the same value as the original file...
[lamexp/LameXP.git] / src / Registry_Encoder.cpp
index c8fbf57..00f9371 100644 (file)
@@ -26,6 +26,7 @@
 #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"
@@ -106,6 +107,13 @@ AbstractEncoder *EncoderRegistry::createInstance(const int encoderId, const Sett
                                        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();
@@ -198,20 +206,21 @@ const AbstractEncoderInfo *EncoderRegistry::getEncoderInfo(const int encoderId)
 
        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::MACEncoder:    info = MACEncoder::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;
+                               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;
@@ -377,7 +386,7 @@ while(0)
 } \
 while(0)
 
-void EncoderRegistry::saveEncoderCustomParams(SettingsModel *settings, const int encoderId, const QString params)
+void EncoderRegistry::saveEncoderCustomParams(SettingsModel *settings, const int encoderId, const QString &params)
 {
        //Store the encoder bitrate/quality value
        switch(encoderId)
@@ -471,6 +480,24 @@ void EncoderRegistry::resetAllEncoders(SettingsModel *settings)
 }
 
 ////////////////////////////////////////////////////////////
+// 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
 ////////////////////////////////////////////////////////////
 
@@ -480,6 +507,14 @@ int EncoderRegistry::getAacEncoder(void)
        {
                return SettingsModel::AAC_ENCODER_QAAC;
        }
+       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;