Add mixer command line option

This commit is contained in:
badaix 2020-05-02 13:39:46 +02:00
parent 38cddf6424
commit 3ed76e2059
3 changed files with 56 additions and 7 deletions

View file

@ -144,9 +144,15 @@ int main(int argc, char** argv)
#ifdef HAS_WASAPI
auto sharing_mode = op.add<Value<string>>("", "sharingmode", "audio mode to use [shared|exclusive]", "shared");
#endif
// TODO: hardcoded
settings.player.mixer.mode = ClientSettings::Mixer::Mode::hardware;
bool hw_mixer_supported = false;
#if defined(HAS_ALSA)
hw_mixer_supported = true;
#endif
std::shared_ptr<popl::Value<std::string>> mixer_mode;
if (hw_mixer_supported)
mixer_mode = op.add<Value<string>>("", "mixer", "<software|hardware|script>[:<options>]", "software");
else
mixer_mode = op.add<Value<string>>("", "mixer", "<software|script>[:<options>]", "software");
try
{
@ -301,6 +307,21 @@ int main(int argc, char** argv)
}
#endif
settings.player.mixer.mode = ClientSettings::Mixer::Mode::software;
if (mixer_mode->is_set())
{
string mode;
utils::string::split_left(mixer_mode->value(), ':', mode, settings.player.mixer.parameter);
if (mode == "software")
settings.player.mixer.mode = ClientSettings::Mixer::Mode::software;
else if ((mode == "hardware") && hw_mixer_supported)
settings.player.mixer.mode = ClientSettings::Mixer::Mode::hardware;
else if (mode == "script")
settings.player.mixer.mode = ClientSettings::Mixer::Mode::script;
else
throw SnapException("Mixer mode not supported: " + mode);
}
boost::asio::io_context io_context;
// Construct a signal set registered for process termination.
boost::asio::signal_set signals(io_context, SIGHUP, SIGINT, SIGTERM);