sink_context.cpp 1.2 KB

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