sink_details.h 941 B

1234567891011121314151617181920212223242526272829303132
  1. // Copyright 2018 yuzu Emulator Project
  2. // Licensed under GPLv2 or any later version
  3. // Refer to the license.txt file included.
  4. #pragma once
  5. #include <functional>
  6. #include <memory>
  7. #include <vector>
  8. namespace AudioCore {
  9. class Sink;
  10. struct SinkDetails {
  11. SinkDetails(const char* id_, std::function<std::unique_ptr<Sink>(std::string)> factory_,
  12. std::function<std::vector<std::string>()> list_devices_)
  13. : id(id_), factory(factory_), list_devices(list_devices_) {}
  14. /// Name for this sink.
  15. const char* id;
  16. /// A method to call to construct an instance of this type of sink.
  17. std::function<std::unique_ptr<Sink>(std::string device_id)> factory;
  18. /// A method to call to list available devices.
  19. std::function<std::vector<std::string>()> list_devices;
  20. };
  21. extern const std::vector<SinkDetails> g_sink_details;
  22. const SinkDetails& GetSinkDetails(std::string sink_id);
  23. } // namespace AudioCore