/* * 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