diff options
| author | bunnei <bunneidev@gmail.com> | 2018-07-30 20:29:17 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2018-07-30 20:29:17 -0700 |
| commit | bf9c62bc76a2296c1a81cfc1b83aaf4028578901 (patch) | |
| tree | dad8906c597af3f579d4f72f4c9f493503c40665 /src/audio_core/audio_out.cpp | |
| parent | 420f8fb29e99cdef3c7338048e31723dc31bac55 (diff) | |
| parent | f437c11caf2c1afc0b7d0fdb808be10d7b1adfcf (diff) | |
Merge pull request #855 from bunnei/cubeb
Audio output backend based on cubeb
Diffstat (limited to 'src/audio_core/audio_out.cpp')
| -rw-r--r-- | src/audio_core/audio_out.cpp | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/src/audio_core/audio_out.cpp b/src/audio_core/audio_out.cpp index 6d418a05b..77cedb6ba 100644 --- a/src/audio_core/audio_out.cpp +++ b/src/audio_core/audio_out.cpp @@ -3,13 +3,15 @@ // Refer to the license.txt file included. #include "audio_core/audio_out.h" +#include "audio_core/sink.h" +#include "audio_core/sink_details.h" #include "common/assert.h" #include "common/logging/log.h" namespace AudioCore { /// Returns the stream format from the specified number of channels -static Stream::Format ChannelsToStreamFormat(int num_channels) { +static Stream::Format ChannelsToStreamFormat(u32 num_channels) { switch (num_channels) { case 1: return Stream::Format::Mono16; @@ -24,11 +26,16 @@ static Stream::Format ChannelsToStreamFormat(int num_channels) { return {}; } -StreamPtr AudioOut::OpenStream(int sample_rate, int num_channels, +StreamPtr AudioOut::OpenStream(u32 sample_rate, u32 num_channels, Stream::ReleaseCallback&& release_callback) { - streams.push_back(std::make_shared<Stream>(sample_rate, ChannelsToStreamFormat(num_channels), - std::move(release_callback))); - return streams.back(); + if (!sink) { + const SinkDetails& sink_details = GetSinkDetails("auto"); + sink = sink_details.factory(""); + } + + return std::make_shared<Stream>(sample_rate, ChannelsToStreamFormat(num_channels), + std::move(release_callback), + sink->AcquireSinkStream(sample_rate, num_channels)); } std::vector<u64> AudioOut::GetTagsAndReleaseBuffers(StreamPtr stream, size_t max_count) { |
