diff options
author | Max Kellermann <max@duempel.org> | 2016-02-28 10:15:54 +0100 |
---|---|---|
committer | Max Kellermann <max@duempel.org> | 2016-02-28 10:15:54 +0100 |
commit | ddce544b537b5f80721e8a4224e868ffa1f94a85 (patch) | |
tree | bd1ff79f013172b2bcb781b63efd224d01dfd5d0 | |
parent | 21fb7eea82b988358d5f48c2dadbf701c40608a2 (diff) |
output/alsa: move the PcmExport::Open() call to Open()
-rw-r--r-- | src/output/plugins/AlsaOutputPlugin.cxx | 38 |
1 files changed, 17 insertions, 21 deletions
diff --git a/src/output/plugins/AlsaOutputPlugin.cxx b/src/output/plugins/AlsaOutputPlugin.cxx index 28a7324a8..dcc0493fc 100644 --- a/src/output/plugins/AlsaOutputPlugin.cxx +++ b/src/output/plugins/AlsaOutputPlugin.cxx @@ -157,7 +157,8 @@ private: Error &error); #endif - bool SetupOrDop(AudioFormat &audio_format, Error &error); + bool SetupOrDop(AudioFormat &audio_format, PcmExport::Params ¶ms, + Error &error); int Recover(int err); @@ -726,29 +727,17 @@ AlsaOutput::SetupDop(const AudioFormat audio_format, #endif inline bool -AlsaOutput::SetupOrDop(AudioFormat &audio_format, Error &error) +AlsaOutput::SetupOrDop(AudioFormat &audio_format, PcmExport::Params ¶ms, + Error &error) { - PcmExport::Params params; - params.alsa_channel_order = true; - -#ifdef ENABLE_DSD - params.dop = dop && audio_format.format == SampleFormat::DSD; -#endif - - const bool success = #ifdef ENABLE_DSD - params.dop - ? SetupDop(audio_format, params, error) - : + if (dop && audio_format.format == SampleFormat::DSD) { + params.dop = true; + return SetupDop(audio_format, params, error); + } #endif - AlsaSetup(this, audio_format, params, error); - if (!success) - return false; - pcm_export->Open(audio_format.format, - audio_format.channels, - params); - return true; + return AlsaSetup(this, audio_format, params, error); } inline bool @@ -767,11 +756,18 @@ AlsaOutput::Open(AudioFormat &audio_format, Error &error) snd_pcm_name(pcm), snd_pcm_type_name(snd_pcm_type(pcm))); - if (!SetupOrDop(audio_format, error)) { + PcmExport::Params params; + params.alsa_channel_order = true; + + if (!SetupOrDop(audio_format, params, error)) { snd_pcm_close(pcm); return false; } + pcm_export->Open(audio_format.format, + audio_format.channels, + params); + in_frame_size = audio_format.GetFrameSize(); out_frame_size = pcm_export->GetFrameSize(audio_format); |