OSDN Git Service

More code refactoring and clean-up.
[lamexp/LameXP.git] / src / Registry_Encoder.cpp
index e6149b2..f76e250 100644 (file)
@@ -1,11 +1,12 @@
 ///////////////////////////////////////////////////////////////////////////////
 // LameXP - Audio Encoder Front-End
-// Copyright (C) 2004-2013 LoRd_MuldeR <MuldeR2@GMX.de>
+// Copyright (C) 2004-2014 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
 // the Free Software Foundation; either version 2 of the License, or
-// (at your option) any later version.
+// (at your option) any later version, but always including the *additional*
+// restrictions defined in the "License.txt" file.
 //
 // This program is distributed in the hope that it will be useful,
 // but WITHOUT ANY WARRANTY; without even the implied warranty of
@@ -32,6 +33,7 @@
 #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)
@@ -113,7 +115,7 @@ AbstractEncoder *EncoderRegistry::createInstance(const int encoderId, const Sett
                                }
                                break;
                        default:
-                               THROW("makeEncoder(): Unknown AAC encoder specified!");
+                               MUTILS_THROW("makeEncoder(): Unknown AAC encoder specified!");
                                break;
                        }
                }
@@ -153,6 +155,13 @@ AbstractEncoder *EncoderRegistry::createInstance(const int encoderId, const Sett
                        encoder = dcaEncoder;
                }
                break;
+       /*-------- MACEncoder --------*/
+       case SettingsModel::MACEncoder:
+               {
+                       MACEncoder *macEncoder = new MACEncoder();
+                       encoder = macEncoder;
+               }
+               break;
        /*-------- PCMEncoder --------*/
        case SettingsModel::PCMEncoder:
                {
@@ -162,13 +171,13 @@ AbstractEncoder *EncoderRegistry::createInstance(const int encoderId, const Sett
                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
@@ -195,6 +204,7 @@ const AbstractEncoderInfo *EncoderRegistry::getEncoderInfo(const int encoderId)
                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())
@@ -202,16 +212,16 @@ const AbstractEncoderInfo *EncoderRegistry::getEncoderInfo(const int encoderId)
                                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!");
+                               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;
@@ -238,7 +248,7 @@ void EncoderRegistry::saveEncoderMode(SettingsModel *settings, const int encoder
        //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
@@ -251,8 +261,9 @@ void EncoderRegistry::saveEncoderMode(SettingsModel *settings, const int encoder
                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!");
        }
 }
 
@@ -270,8 +281,9 @@ int EncoderRegistry::loadEncoderMode(const SettingsModel *settings, const int en
                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;
@@ -302,7 +314,7 @@ void EncoderRegistry::saveEncoderValue(SettingsModel *settings, const int encode
        //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
@@ -315,8 +327,9 @@ void EncoderRegistry::saveEncoderValue(SettingsModel *settings, const int encode
                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!");
        }
 }
 
@@ -327,7 +340,7 @@ int EncoderRegistry::loadEncoderValue(const SettingsModel *settings, const int e
        //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
@@ -340,8 +353,9 @@ int EncoderRegistry::loadEncoderValue(const SettingsModel *settings, const int e
                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;
@@ -375,8 +389,9 @@ void EncoderRegistry::saveEncoderCustomParams(SettingsModel *settings, const int
                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!");
        }
 }
 
@@ -394,8 +409,9 @@ QString EncoderRegistry::loadEncoderCustomParams(const SettingsModel *settings,
                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;
@@ -418,6 +434,7 @@ void EncoderRegistry::resetAllEncoders(SettingsModel *settings)
        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);
@@ -427,6 +444,7 @@ void EncoderRegistry::resetAllEncoders(SettingsModel *settings)
        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);
@@ -436,6 +454,7 @@ void EncoderRegistry::resetAllEncoders(SettingsModel *settings)
        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);
@@ -445,6 +464,7 @@ void EncoderRegistry::resetAllEncoders(SettingsModel *settings)
        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);
@@ -456,15 +476,15 @@ void EncoderRegistry::resetAllEncoders(SettingsModel *settings)
 
 int EncoderRegistry::getAacEncoder(void)
 {
-       if(lamexp_check_tool("qaac.exe") && lamexp_check_tool("libsoxrate.dll"))
+       if(lamexp_tool_check("qaac.exe") && lamexp_tool_check("libsoxr.dll") && lamexp_tool_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_tool_check("fhgaacenc.exe") && lamexp_tool_check("enc_fhgaac.dll") && lamexp_tool_check("nsutil.dll") && lamexp_tool_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_tool_check("neroAacEnc.exe") && lamexp_tool_check("neroAacDec.exe") && lamexp_tool_check("neroAacTag.exe"))
        {
                return SettingsModel::AAC_ENCODER_NERO;
        }