audio_core.cpp 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. // SPDX-FileCopyrightText: Copyright 2022 yuzu Emulator Project
  2. // SPDX-License-Identifier: GPL-2.0-or-later
  3. #include "audio_core/audio_core.h"
  4. #include "audio_core/sink/sink_details.h"
  5. #include "common/settings.h"
  6. #include "core/core.h"
  7. namespace AudioCore {
  8. AudioCore::AudioCore(Core::System& system) : audio_manager{std::make_unique<AudioManager>()} {
  9. CreateSinks();
  10. // Must be created after the sinks
  11. adsp = std::make_unique<AudioRenderer::ADSP::ADSP>(system, *output_sink);
  12. }
  13. AudioCore ::~AudioCore() {
  14. Shutdown();
  15. }
  16. void AudioCore::CreateSinks() {
  17. const auto& sink_id{Settings::values.sink_id};
  18. const auto& audio_output_device_id{Settings::values.audio_output_device_id};
  19. const auto& audio_input_device_id{Settings::values.audio_input_device_id};
  20. output_sink = Sink::CreateSinkFromID(sink_id.GetValue(), audio_output_device_id.GetValue());
  21. input_sink = Sink::CreateSinkFromID(sink_id.GetValue(), audio_input_device_id.GetValue());
  22. }
  23. void AudioCore::Shutdown() {
  24. audio_manager->Shutdown();
  25. }
  26. AudioManager& AudioCore::GetAudioManager() {
  27. return *audio_manager;
  28. }
  29. Sink::Sink& AudioCore::GetOutputSink() {
  30. return *output_sink;
  31. }
  32. Sink::Sink& AudioCore::GetInputSink() {
  33. return *input_sink;
  34. }
  35. AudioRenderer::ADSP::ADSP& AudioCore::GetADSP() {
  36. return *adsp;
  37. }
  38. } // namespace AudioCore