From 20d28e80a5c861a9d5f449ea911ab75b4f37ad0d Mon Sep 17 00:00:00 2001 From: Jef Date: Tue, 24 Sep 2024 14:54:57 +0200 Subject: Initial community commit --- .../openmpt-trunk/mptrack/StreamEncoderSettings.h | 113 +++++++++++++++++++++ 1 file changed, 113 insertions(+) create mode 100644 Src/external_dependencies/openmpt-trunk/mptrack/StreamEncoderSettings.h (limited to 'Src/external_dependencies/openmpt-trunk/mptrack/StreamEncoderSettings.h') diff --git a/Src/external_dependencies/openmpt-trunk/mptrack/StreamEncoderSettings.h b/Src/external_dependencies/openmpt-trunk/mptrack/StreamEncoderSettings.h new file mode 100644 index 00000000..c613b919 --- /dev/null +++ b/Src/external_dependencies/openmpt-trunk/mptrack/StreamEncoderSettings.h @@ -0,0 +1,113 @@ +/* + * StreamEncoderSettings.h + * ----------------------- + * Purpose: Exporting streamed music files. + * Notes : none + * Authors: Joern Heusipp + * OpenMPT Devs + * The OpenMPT source code is released under the BSD license. Read LICENSE for more details. + */ + +#pragma once + +#include "openmpt/all/BuildSettings.hpp" + +#include "StreamEncoder.h" +#include "Settings.h" + + +OPENMPT_NAMESPACE_BEGIN + + + +template<> inline SettingValue ToSettingValue(const Encoder::Mode &val) +{ + switch(val) + { + case Encoder::ModeCBR: return SettingValue(U_("CBR"), "Encoder::Mode"); break; + case Encoder::ModeABR: return SettingValue(U_("ABR"), "Encoder::Mode"); break; + case Encoder::ModeVBR: return SettingValue(U_("VBR"), "Encoder::Mode"); break; + case Encoder::ModeQuality: return SettingValue(U_("Quality"), "Encoder::Mode"); break; + case Encoder::ModeLossless: return SettingValue(U_("Lossless"), "Encoder::Mode"); break; + default: return SettingValue(U_("Invalid"), "Encoder::Mode"); break; + } +} +template<> inline Encoder::Mode FromSettingValue(const SettingValue &val) +{ + ASSERT(val.GetTypeTag() == "Encoder::Mode"); + if(val.as() == U_("")) { return Encoder::ModeInvalid; } + else if(val.as() == U_("CBR")) { return Encoder::ModeCBR; } + else if(val.as() == U_("ABR")) { return Encoder::ModeABR; } + else if(val.as() == U_("VBR")) { return Encoder::ModeVBR; } + else if(val.as() == U_("Quality")) { return Encoder::ModeQuality; } + else if(val.as() == U_("Lossless")) { return Encoder::ModeLossless; } + else { return Encoder::ModeInvalid; } +} + + +template<> inline SettingValue ToSettingValue(const Encoder::Format &val) +{ + return SettingValue(val.AsInt(), "Encoder::Format"); +} +template<> inline Encoder::Format FromSettingValue(const SettingValue &val) +{ + MPT_ASSERT(val.GetTypeTag() == "Encoder::Format"); + return Encoder::Format::FromInt(val.as()); +} + + +struct StoredTags +{ + Setting artist; + Setting album; + Setting trackno; + Setting year; + Setting url; + + Setting genre; + + StoredTags(SettingsContainer &conf); + +}; + + +struct EncoderSettingsConf +{ + + Setting Cues; + Setting Tags; + + Setting Samplerate; + Setting Channels; + + Setting Mode; + Setting Bitrate; + Setting Quality; + Setting Format2; + Setting Dither; + + EncoderSettingsConf(SettingsContainer &conf, const mpt::ustring &encoderName, bool cues, bool tags, uint32 samplerate, uint16 channels, Encoder::Mode mode, int bitrate, float quality, Encoder::Format format, int dither); + + explicit operator Encoder::Settings() const; + +}; + + +struct StreamEncoderSettingsConf +{ + Setting FLACCompressionLevel; + Setting AUPaddingAlignHint; + Setting MP3ID3v2MinPadding; + Setting MP3ID3v2PaddingAlignHint; + Setting MP3ID3v2WriteReplayGainTXXX; + Setting MP3LameQuality; + Setting MP3LameID3v2UseLame; + Setting MP3LameCalculateReplayGain; + Setting MP3LameCalculatePeakSample; + Setting OpusComplexity; + StreamEncoderSettingsConf(SettingsContainer &conf, const mpt::ustring §ion); + explicit operator Encoder::StreamSettings() const; +}; + + +OPENMPT_NAMESPACE_END -- cgit