// SPDX-FileCopyrightText: Copyright 2022 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later #pragma once #include #include "audio_core/renderer/command/icommand.h" #include "common/common_types.h" #include "common/fixed_point.h" namespace AudioCore::ADSP::AudioRenderer { class CommandListProcessor; } namespace AudioCore::Renderer { /** * AudioRenderer command for downmixing 6 channels to 2. * Channel layout (SMPTE): * 0 - front left * 1 - front right * 2 - center * 3 - lfe * 4 - back left * 5 - back right */ struct DownMix6chTo2chCommand : ICommand { /** * Print this command's information to a string. * * @param processor - The CommandListProcessor processing this command. * @param string - The string to print into. */ void Dump(const AudioRenderer::CommandListProcessor& processor, std::string& string) override; /** * Process this command. * * @param processor - The CommandListProcessor processing this command. */ void Process(const AudioRenderer::CommandListProcessor& processor) override; /** * Verify this command's data is valid. * * @param processor - The CommandListProcessor processing this command. * @return True if the command is valid, otherwise false. */ bool Verify(const AudioRenderer::CommandListProcessor& processor) override; /// Input mix buffer offsets for each channel std::array inputs; /// Output mix buffer offsets for each channel std::array outputs; /// Coefficients used for downmixing std::array, 4> down_mix_coeff; }; } // namespace AudioCore::Renderer