summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/audio_core/audio_out.cpp2
-rw-r--r--src/audio_core/cubeb_sink.cpp11
-rw-r--r--src/audio_core/cubeb_sink.h3
-rw-r--r--src/audio_core/null_sink.h3
-rw-r--r--src/audio_core/sink.h4
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
42std::vector<Buffer::Tag> AudioOut::GetTagsAndReleaseBuffers(StreamPtr stream, size_t max_count) { 42std::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
14class SinkStreamImpl final : public SinkStream { 14class SinkStreamImpl final : public SinkStream {
15public: 15public:
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, &params, std::max(512u, minimum_latency), 29 &params, 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
132SinkStream& CubebSink::AcquireSinkStream(u32 sample_rate, u32 num_channels) { 132SinkStream& 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
23private: 24private:
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";
21class Sink { 22class Sink {
22public: 23public:
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
27using SinkPtr = std::unique_ptr<Sink>; 29using SinkPtr = std::unique_ptr<Sink>;