summaryrefslogtreecommitdiff
path: root/src/audio_core/audio_out.cpp
diff options
context:
space:
mode:
authorGravatar bunnei2018-07-30 20:29:17 -0700
committerGravatar GitHub2018-07-30 20:29:17 -0700
commitbf9c62bc76a2296c1a81cfc1b83aaf4028578901 (patch)
treedad8906c597af3f579d4f72f4c9f493503c40665 /src/audio_core/audio_out.cpp
parentPort #3758 from Citra (#852): Add missing std::string import in text_formatter (diff)
parentaudio_core: Implement Sink and SinkStream interfaces with cubeb. (diff)
downloadyuzu-bf9c62bc76a2296c1a81cfc1b83aaf4028578901.tar.gz
yuzu-bf9c62bc76a2296c1a81cfc1b83aaf4028578901.tar.xz
yuzu-bf9c62bc76a2296c1a81cfc1b83aaf4028578901.zip
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.cpp17
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 @@
3// Refer to the license.txt file included. 3// Refer to the license.txt file included.
4 4
5#include "audio_core/audio_out.h" 5#include "audio_core/audio_out.h"
6#include "audio_core/sink.h"
7#include "audio_core/sink_details.h"
6#include "common/assert.h" 8#include "common/assert.h"
7#include "common/logging/log.h" 9#include "common/logging/log.h"
8 10
9namespace AudioCore { 11namespace AudioCore {
10 12
11/// Returns the stream format from the specified number of channels 13/// Returns the stream format from the specified number of channels
12static Stream::Format ChannelsToStreamFormat(int num_channels) { 14static Stream::Format ChannelsToStreamFormat(u32 num_channels) {
13 switch (num_channels) { 15 switch (num_channels) {
14 case 1: 16 case 1:
15 return Stream::Format::Mono16; 17 return Stream::Format::Mono16;
@@ -24,11 +26,16 @@ static Stream::Format ChannelsToStreamFormat(int num_channels) {
24 return {}; 26 return {};
25} 27}
26 28
27StreamPtr AudioOut::OpenStream(int sample_rate, int num_channels, 29StreamPtr AudioOut::OpenStream(u32 sample_rate, u32 num_channels,
28 Stream::ReleaseCallback&& release_callback) { 30 Stream::ReleaseCallback&& release_callback) {
29 streams.push_back(std::make_shared<Stream>(sample_rate, ChannelsToStreamFormat(num_channels), 31 if (!sink) {
30 std::move(release_callback))); 32 const SinkDetails& sink_details = GetSinkDetails("auto");
31 return streams.back(); 33 sink = sink_details.factory("");
34 }
35
36 return std::make_shared<Stream>(sample_rate, ChannelsToStreamFormat(num_channels),
37 std::move(release_callback),
38 sink->AcquireSinkStream(sample_rate, num_channels));
32} 39}
33 40
34std::vector<u64> AudioOut::GetTagsAndReleaseBuffers(StreamPtr stream, size_t max_count) { 41std::vector<u64> AudioOut::GetTagsAndReleaseBuffers(StreamPtr stream, size_t max_count) {