summaryrefslogtreecommitdiffstats
path: root/src/encoder
diff options
context:
space:
mode:
authorDaniel Schürmann <daschuer@mixxx.org>2019-12-29 15:32:57 +0100
committerDaniel Schürmann <daschuer@mixxx.org>2019-12-29 15:32:57 +0100
commit52db1ccc0af6779feb194e8f1feb87dea8f24dc0 (patch)
treeff71e492e5d7929d2387dd19fd4a63739774d0cb /src/encoder
parenta3d52bffa038f6e08ec4a035ac7713dc5e3c4a2b (diff)
add a new createEncoder function that returns an encoder independent from UserSettingsPointer.
Diffstat (limited to 'src/encoder')
-rw-r--r--src/encoder/encoder.cpp47
-rw-r--r--src/encoder/encoder.h16
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;