audio_core.cpp 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  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>(system)} {
  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. void AudioCore::PauseSinks(const bool pausing) const {
  39. if (pausing) {
  40. output_sink->PauseStreams();
  41. input_sink->PauseStreams();
  42. } else {
  43. output_sink->UnpauseStreams();
  44. input_sink->UnpauseStreams();
  45. }
  46. }
  47. void AudioCore::SetNVDECActive(bool active) {
  48. nvdec_active = active;
  49. }
  50. bool AudioCore::IsNVDECActive() const {
  51. return nvdec_active;
  52. }
  53. } // namespace AudioCore