summaryrefslogtreecommitdiffstats
path: root/src/audio_core/sink_details.h
diff options
context:
space:
mode:
authorbunnei <bunneidev@gmail.com>2018-07-28 19:40:50 +0200
committerbunnei <bunneidev@gmail.com>2018-07-31 03:45:24 +0200
commit9ef227e09d6e374008d9536935d01c11a6ca06bd (patch)
tree55a0169ab36ff521770a94a59b857063caf65f8b /src/audio_core/sink_details.h
parentaudio_core: Misc. improvements to stream/buffer/audio_out. (diff)
downloadyuzu-9ef227e09d6e374008d9536935d01c11a6ca06bd.tar
yuzu-9ef227e09d6e374008d9536935d01c11a6ca06bd.tar.gz
yuzu-9ef227e09d6e374008d9536935d01c11a6ca06bd.tar.bz2
yuzu-9ef227e09d6e374008d9536935d01c11a6ca06bd.tar.lz
yuzu-9ef227e09d6e374008d9536935d01c11a6ca06bd.tar.xz
yuzu-9ef227e09d6e374008d9536935d01c11a6ca06bd.tar.zst
yuzu-9ef227e09d6e374008d9536935d01c11a6ca06bd.zip
Diffstat (limited to '')
-rw-r--r--src/audio_core/sink_details.h32
1 files changed, 32 insertions, 0 deletions
diff --git a/src/audio_core/sink_details.h b/src/audio_core/sink_details.h
new file mode 100644
index 000000000..aa8aae1a9
--- /dev/null
+++ b/src/audio_core/sink_details.h
@@ -0,0 +1,32 @@
+// Copyright 2018 yuzu Emulator Project
+// Licensed under GPLv2 or any later version
+// Refer to the license.txt file included.
+
+#pragma once
+
+#include <functional>
+#include <memory>
+#include <vector>
+
+namespace AudioCore {
+
+class Sink;
+
+struct SinkDetails {
+ SinkDetails(const char* id_, std::function<std::unique_ptr<Sink>(std::string)> factory_,
+ std::function<std::vector<std::string>()> list_devices_)
+ : id(id_), factory(factory_), list_devices(list_devices_) {}
+
+ /// Name for this sink.
+ const char* id;
+ /// A method to call to construct an instance of this type of sink.
+ std::function<std::unique_ptr<Sink>(std::string device_id)> factory;
+ /// A method to call to list available devices.
+ std::function<std::vector<std::string>()> list_devices;
+};
+
+extern const std::vector<SinkDetails> g_sink_details;
+
+const SinkDetails& GetSinkDetails(std::string sink_id);
+
+} // namespace AudioCore