diff options
| -rw-r--r-- | src/audio_core/audio_out.cpp | 2 | ||||
| -rw-r--r-- | src/audio_core/cubeb_sink.cpp | 11 | ||||
| -rw-r--r-- | src/audio_core/cubeb_sink.h | 3 | ||||
| -rw-r--r-- | src/audio_core/null_sink.h | 3 | ||||
| -rw-r--r-- | src/audio_core/sink.h | 4 |
5 files changed, 14 insertions, 9 deletions
diff --git a/src/audio_core/audio_out.cpp b/src/audio_core/audio_out.cpp index 5cf665c22..eb9db755a 100644 --- a/src/audio_core/audio_out.cpp +++ b/src/audio_core/audio_out.cpp | |||
| @@ -36,7 +36,7 @@ StreamPtr AudioOut::OpenStream(u32 sample_rate, u32 num_channels, std::string&& | |||
| 36 | 36 | ||
| 37 | return std::make_shared<Stream>( | 37 | return std::make_shared<Stream>( |
| 38 | sample_rate, ChannelsToStreamFormat(num_channels), std::move(release_callback), | 38 | sample_rate, ChannelsToStreamFormat(num_channels), std::move(release_callback), |
| 39 | sink->AcquireSinkStream(sample_rate, num_channels), std::move(name)); | 39 | sink->AcquireSinkStream(sample_rate, num_channels, name), std::move(name)); |
| 40 | } | 40 | } |
| 41 | 41 | ||
| 42 | std::vector<Buffer::Tag> AudioOut::GetTagsAndReleaseBuffers(StreamPtr stream, size_t max_count) { | 42 | std::vector<Buffer::Tag> AudioOut::GetTagsAndReleaseBuffers(StreamPtr stream, size_t max_count) { |
diff --git a/src/audio_core/cubeb_sink.cpp b/src/audio_core/cubeb_sink.cpp index 34ae5b062..cf4839989 100644 --- a/src/audio_core/cubeb_sink.cpp +++ b/src/audio_core/cubeb_sink.cpp | |||
| @@ -13,7 +13,7 @@ namespace AudioCore { | |||
| 13 | 13 | ||
| 14 | class SinkStreamImpl final : public SinkStream { | 14 | class SinkStreamImpl final : public SinkStream { |
| 15 | public: | 15 | public: |
| 16 | SinkStreamImpl(cubeb* ctx, cubeb_devid output_device) : ctx{ctx} { | 16 | SinkStreamImpl(cubeb* ctx, cubeb_devid output_device, const std::string& name) : ctx{ctx} { |
| 17 | cubeb_stream_params params; | 17 | cubeb_stream_params params; |
| 18 | params.rate = 48000; | 18 | params.rate = 48000; |
| 19 | params.channels = GetNumChannels(); | 19 | params.channels = GetNumChannels(); |
| @@ -25,8 +25,8 @@ public: | |||
| 25 | LOG_CRITICAL(Audio_Sink, "Error getting minimum latency"); | 25 | LOG_CRITICAL(Audio_Sink, "Error getting minimum latency"); |
| 26 | } | 26 | } |
| 27 | 27 | ||
| 28 | if (cubeb_stream_init(ctx, &stream_backend, "yuzu Audio Output", nullptr, nullptr, | 28 | if (cubeb_stream_init(ctx, &stream_backend, name.c_str(), nullptr, nullptr, output_device, |
| 29 | output_device, ¶ms, std::max(512u, minimum_latency), | 29 | ¶ms, std::max(512u, minimum_latency), |
| 30 | &SinkStreamImpl::DataCallback, &SinkStreamImpl::StateCallback, | 30 | &SinkStreamImpl::DataCallback, &SinkStreamImpl::StateCallback, |
| 31 | this) != CUBEB_OK) { | 31 | this) != CUBEB_OK) { |
| 32 | LOG_CRITICAL(Audio_Sink, "Error initializing cubeb stream"); | 32 | LOG_CRITICAL(Audio_Sink, "Error initializing cubeb stream"); |
| @@ -129,8 +129,9 @@ CubebSink::~CubebSink() { | |||
| 129 | cubeb_destroy(ctx); | 129 | cubeb_destroy(ctx); |
| 130 | } | 130 | } |
| 131 | 131 | ||
| 132 | SinkStream& CubebSink::AcquireSinkStream(u32 sample_rate, u32 num_channels) { | 132 | SinkStream& CubebSink::AcquireSinkStream(u32 sample_rate, u32 num_channels, |
| 133 | sink_streams.push_back(std::make_unique<SinkStreamImpl>(ctx, output_device)); | 133 | const std::string& name) { |
| 134 | sink_streams.push_back(std::make_unique<SinkStreamImpl>(ctx, output_device, name)); | ||
| 134 | return *sink_streams.back(); | 135 | return *sink_streams.back(); |
| 135 | } | 136 | } |
| 136 | 137 | ||
diff --git a/src/audio_core/cubeb_sink.h b/src/audio_core/cubeb_sink.h index d07113f1f..59cbf05e9 100644 --- a/src/audio_core/cubeb_sink.h +++ b/src/audio_core/cubeb_sink.h | |||
| @@ -18,7 +18,8 @@ public: | |||
| 18 | explicit CubebSink(std::string device_id); | 18 | explicit CubebSink(std::string device_id); |
| 19 | ~CubebSink() override; | 19 | ~CubebSink() override; |
| 20 | 20 | ||
| 21 | SinkStream& AcquireSinkStream(u32 sample_rate, u32 num_channels) override; | 21 | SinkStream& AcquireSinkStream(u32 sample_rate, u32 num_channels, |
| 22 | const std::string& name) override; | ||
| 22 | 23 | ||
| 23 | private: | 24 | private: |
| 24 | cubeb* ctx{}; | 25 | cubeb* ctx{}; |
diff --git a/src/audio_core/null_sink.h b/src/audio_core/null_sink.h index 2e04438f7..66041ea3f 100644 --- a/src/audio_core/null_sink.h +++ b/src/audio_core/null_sink.h | |||
| @@ -13,7 +13,8 @@ public: | |||
| 13 | explicit NullSink(std::string){}; | 13 | explicit NullSink(std::string){}; |
| 14 | ~NullSink() override = default; | 14 | ~NullSink() override = default; |
| 15 | 15 | ||
| 16 | SinkStream& AcquireSinkStream(u32 /*sample_rate*/, u32 /*num_channels*/) override { | 16 | SinkStream& AcquireSinkStream(u32 /*sample_rate*/, u32 /*num_channels*/, |
| 17 | const std::string& /*name*/) override { | ||
| 17 | return null_sink_stream; | 18 | return null_sink_stream; |
| 18 | } | 19 | } |
| 19 | 20 | ||
diff --git a/src/audio_core/sink.h b/src/audio_core/sink.h index d1bb98c3d..95c7b2b6e 100644 --- a/src/audio_core/sink.h +++ b/src/audio_core/sink.h | |||
| @@ -5,6 +5,7 @@ | |||
| 5 | #pragma once | 5 | #pragma once |
| 6 | 6 | ||
| 7 | #include <memory> | 7 | #include <memory> |
| 8 | #include <string> | ||
| 8 | 9 | ||
| 9 | #include "audio_core/sink_stream.h" | 10 | #include "audio_core/sink_stream.h" |
| 10 | #include "common/common_types.h" | 11 | #include "common/common_types.h" |
| @@ -21,7 +22,8 @@ constexpr char auto_device_name[] = "auto"; | |||
| 21 | class Sink { | 22 | class Sink { |
| 22 | public: | 23 | public: |
| 23 | virtual ~Sink() = default; | 24 | virtual ~Sink() = default; |
| 24 | virtual SinkStream& AcquireSinkStream(u32 sample_rate, u32 num_channels) = 0; | 25 | virtual SinkStream& AcquireSinkStream(u32 sample_rate, u32 num_channels, |
| 26 | const std::string& name) = 0; | ||
| 25 | }; | 27 | }; |
| 26 | 28 | ||
| 27 | using SinkPtr = std::unique_ptr<Sink>; | 29 | using SinkPtr = std::unique_ptr<Sink>; |