sink_context.cpp 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. // SPDX-FileCopyrightText: Copyright 2020 yuzu Emulator Project
  2. // SPDX-License-Identifier: GPL-2.0-or-later
  3. #include "audio_core/sink_context.h"
  4. namespace AudioCore {
  5. SinkContext::SinkContext(std::size_t sink_count_) : sink_count{sink_count_} {}
  6. SinkContext::~SinkContext() = default;
  7. std::size_t SinkContext::GetCount() const {
  8. return sink_count;
  9. }
  10. void SinkContext::UpdateMainSink(const SinkInfo::InParams& in) {
  11. ASSERT(in.type == SinkTypes::Device);
  12. if (in.device.down_matrix_enabled) {
  13. downmix_coefficients = in.device.down_matrix_coef;
  14. } else {
  15. downmix_coefficients = {
  16. 1.0f, // front
  17. 0.707f, // center
  18. 0.0f, // lfe
  19. 0.707f, // back
  20. };
  21. }
  22. in_use = in.in_use;
  23. use_count = in.device.input_count;
  24. buffers = in.device.input;
  25. }
  26. bool SinkContext::InUse() const {
  27. return in_use;
  28. }
  29. std::vector<u8> SinkContext::OutputBuffers() const {
  30. std::vector<u8> buffer_ret(use_count);
  31. std::memcpy(buffer_ret.data(), buffers.data(), use_count);
  32. return buffer_ret;
  33. }
  34. const DownmixCoefficients& SinkContext::GetDownmixCoefficients() const {
  35. return downmix_coefficients;
  36. }
  37. } // namespace AudioCore