diff options
author | Daniel Schürmann <daschuer@mixxx.org> | 2019-12-29 15:32:57 +0100 |
---|---|---|
committer | Daniel Schürmann <daschuer@mixxx.org> | 2019-12-29 15:32:57 +0100 |
commit | 52db1ccc0af6779feb194e8f1feb87dea8f24dc0 (patch) | |
tree | ff71e492e5d7929d2387dd19fd4a63739774d0cb /src/encoder | |
parent | a3d52bffa038f6e08ec4a035ac7713dc5e3c4a2b (diff) |
add a new createEncoder function that returns an encoder independent from UserSettingsPointer.
Diffstat (limited to 'src/encoder')
-rw-r--r-- | src/encoder/encoder.cpp | 47 | ||||
-rw-r--r-- | src/encoder/encoder.h | 16 |
2 files changed, 35 insertions, 28 deletions
diff --git a/src/encoder/encoder.cpp b/src/encoder/encoder.cpp index 7efba0eea5..348c4a96a6 100644 --- a/src/encoder/encoder.cpp +++ b/src/encoder/encoder.cpp @@ -76,51 +76,54 @@ Encoder::Format EncoderFactory::getFormatFor(QString formatText) const return m_formats.first(); } -EncoderPointer EncoderFactory::getNewEncoder( - UserSettingsPointer pConfig, EncoderCallback* pCallback) const -{ - return getNewEncoder(getSelectedFormat(pConfig), pConfig, pCallback); +EncoderPointer EncoderFactory::createRecordingEncoder( + Encoder::Format format, + UserSettingsPointer pConfig, + EncoderCallback* pCallback) const { + EncoderRecordingSettingsPointer pSettings = + getEncoderRecordingSettings(format, pConfig); + return createEncoder(pSettings, pCallback); } -EncoderPointer EncoderFactory::getNewEncoder(Encoder::Format format, - UserSettingsPointer pConfig, EncoderCallback* pCallback) const -{ +EncoderPointer EncoderFactory::createEncoder( + const EncoderSettingsPointer pSettings, + EncoderCallback* pCallback) const { EncoderPointer pEncoder; - if (format.internalName == ENCODING_WAVE) { + if (pSettings && pSettings->getFormat() == ENCODING_WAVE) { pEncoder = std::make_shared<EncoderWave>(pCallback); - pEncoder->setEncoderSettings(EncoderWaveSettings(pConfig, format.internalName)); - } else if (format.internalName == ENCODING_AIFF) { + pEncoder->setEncoderSettings(*pSettings); + } else if (pSettings && pSettings->getFormat() == ENCODING_AIFF) { pEncoder = std::make_shared<EncoderWave>(pCallback); - pEncoder->setEncoderSettings(EncoderWaveSettings(pConfig, format.internalName)); - } else if (format.internalName == ENCODING_FLAC) { + pEncoder->setEncoderSettings(*pSettings); + } else if (pSettings && pSettings->getFormat() == ENCODING_FLAC) { pEncoder = std::make_shared<EncoderSndfileFlac>(pCallback); - pEncoder->setEncoderSettings(EncoderFlacSettings(pConfig)); - } else if (format.internalName == ENCODING_MP3) { + pEncoder->setEncoderSettings(*pSettings); + } else if (pSettings && pSettings->getFormat() == ENCODING_MP3) { #ifdef __FFMPEGFILE_ENCODERS__ pEncoder = std::make_shared<EncoderFfmpegMp3>(pCallback); #else pEncoder = std::make_shared<EncoderMp3>(pCallback); #endif - pEncoder->setEncoderSettings(EncoderMp3Settings(pConfig)); - } else if (format.internalName == ENCODING_OGG) { + pEncoder->setEncoderSettings(*pSettings); + } else if (pSettings && pSettings->getFormat() == ENCODING_OGG) { #ifdef __FFMPEGFILE_ENCODERS__ pEncoder = std::make_shared<EncoderFfmpegVorbis>(pCallback); #else pEncoder = std::make_shared<EncoderVorbis>(pCallback); #endif - pEncoder->setEncoderSettings(EncoderVorbisSettings(pConfig)); + pEncoder->setEncoderSettings(*pSettings); } #ifdef __OPUS__ - else if (format.internalName == ENCODING_OPUS) { + else if (pSettings && pSettings->getFormat() == ENCODING_OPUS) { pEncoder = std::make_shared<EncoderOpus>(pCallback); - pEncoder->setEncoderSettings(EncoderOpusSettings(pConfig)); + pEncoder->setEncoderSettings(*pSettings); } #endif else { - qWarning() << "Unsupported format requested! " << format.internalName; + qWarning() << "Unsupported format requested! " + << QString(pSettings ? pSettings->getFormat() : QString("NULL")); DEBUG_ASSERT(false); - pEncoder = std::make_shared<EncoderWave>(pCallback); - pEncoder->setEncoderSettings(EncoderWaveSettings(pConfig, ENCODING_WAVE)); + pEncoder = std::make_shared<EncoderWave>(pCallback);; } return pEncoder; } diff --git a/src/encoder/encoder.h b/src/encoder/encoder.h index 193a62d8a2..3bbeadfb20 100644 --- a/src/encoder/encoder.h +++ b/src/encoder/encoder.h @@ -54,12 +54,16 @@ class EncoderFactory { const QList<Encoder::Format> getFormats() const; Encoder::Format getSelectedFormat(UserSettingsPointer pConfig) const; Encoder::Format getFormatFor(QString format) const; - EncoderPointer getNewEncoder( - UserSettingsPointer pConfig, EncoderCallback* pCallback) const; - EncoderPointer getNewEncoder(Encoder::Format format, - UserSettingsPointer pConfig, EncoderCallback* pCallback) const; - EncoderRecordingSettingsPointer getEncoderRecordingSettings(Encoder::Format format, - UserSettingsPointer pConfig) const; + EncoderPointer createRecordingEncoder( + Encoder::Format format, + UserSettingsPointer pConfig, + EncoderCallback* pCallback) const; + EncoderPointer createEncoder( + const EncoderSettingsPointer pSettings, + EncoderCallback* pCallback) const; + EncoderRecordingSettingsPointer getEncoderRecordingSettings( + Encoder::Format format, + UserSettingsPointer pConfig) const; private: static EncoderFactory factory; QList<Encoder::Format> m_formats; |