diff --git a/server/encoder/encoder_factory.cpp b/server/encoder/encoder_factory.cpp index 9f5feba2..cad11449 100644 --- a/server/encoder/encoder_factory.cpp +++ b/server/encoder/encoder_factory.cpp @@ -37,9 +37,8 @@ using namespace std; namespace encoder { -Encoder* EncoderFactory::createEncoder(const std::string& codecSettings) const +std::unique_ptr EncoderFactory::createEncoder(const std::string& codecSettings) const { - Encoder* encoder; std::string codec(codecSettings); std::string codecOptions; if (codec.find(":") != std::string::npos) @@ -48,35 +47,21 @@ Encoder* EncoderFactory::createEncoder(const std::string& codecSettings) const codec = utils::string::trim_copy(codec.substr(0, codec.find(":"))); } if (codec == "pcm") - encoder = new PcmEncoder(codecOptions); + return std::make_unique(codecOptions); #if defined(HAS_OGG) && defined(HAS_VORBIS) && defined(HAS_VORBIS_ENC) else if (codec == "ogg") - encoder = new OggEncoder(codecOptions); + return std::make_unique(codecOptions); #endif #if defined(HAS_FLAC) else if (codec == "flac") - encoder = new FlacEncoder(codecOptions); + return std::make_unique(codecOptions); #endif #if defined(HAS_OPUS) else if (codec == "opus") - encoder = new OpusEncoder(codecOptions); + return std::make_unique(codecOptions); #endif - else - { - throw SnapException("unknown codec: " + codec); - } - return encoder; - /* try - { - encoder->init(NULL, format, codecOptions); - } - catch (const std::exception& e) - { - cout << "Error: " << e.what() << "\n"; - return 1; - } - */ + throw SnapException("unknown codec: " + codec); } } // namespace encoder diff --git a/server/encoder/encoder_factory.hpp b/server/encoder/encoder_factory.hpp index 5f02948a..127bb3fa 100644 --- a/server/encoder/encoder_factory.hpp +++ b/server/encoder/encoder_factory.hpp @@ -2,6 +2,7 @@ #define ENCODER_FACTORY_H #include "encoder.hpp" +#include #include namespace encoder @@ -11,7 +12,7 @@ class EncoderFactory { public: // EncoderFactory(const std::string& codecSettings); - Encoder* createEncoder(const std::string& codecSettings) const; + std::unique_ptr createEncoder(const std::string& codecSettings) const; }; } // namespace encoder