MerryMage 10 лет назад
Родитель
Сommit
8b94422e3e
3 измененных файлов с 46 добавлено и 0 удалено
  1. 2 0
      src/audio_core/CMakeLists.txt
  2. 17 0
      src/audio_core/sink_details.cpp
  3. 27 0
      src/audio_core/sink_details.h

+ 2 - 0
src/audio_core/CMakeLists.txt

@@ -5,6 +5,7 @@ set(SRCS
             hle/filter.cpp
             hle/filter.cpp
             hle/pipe.cpp
             hle/pipe.cpp
             interpolate.cpp
             interpolate.cpp
+            sink_details.cpp
             )
             )
 
 
 set(HEADERS
 set(HEADERS
@@ -17,6 +18,7 @@ set(HEADERS
             interpolate.h
             interpolate.h
             null_sink.h
             null_sink.h
             sink.h
             sink.h
+            sink_details.h
             )
             )
 
 
 include_directories(../../externals/soundtouch/include)
 include_directories(../../externals/soundtouch/include)

+ 17 - 0
src/audio_core/sink_details.cpp

@@ -0,0 +1,17 @@
+// Copyright 2016 Citra Emulator Project
+// Licensed under GPLv2 or any later version
+// Refer to the license.txt file included.
+
+#include <memory>
+#include <vector>
+
+#include "audio_core/null_sink.h"
+#include "audio_core/sink_details.h"
+
+namespace AudioCore {
+
+const std::vector<SinkDetails> g_sink_details = {
+    { "null", []() { return std::make_unique<NullSink>(); } },
+};
+
+} // namespace AudioCore

+ 27 - 0
src/audio_core/sink_details.h

@@ -0,0 +1,27 @@
+// Copyright 2016 Citra 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>()> factory_)
+        : id(id_), factory(factory_) {}
+
+    /// 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>()> factory;
+};
+
+extern const std::vector<SinkDetails> g_sink_details;
+
+} // namespace AudioCore