mirror of
https://git.suyu.dev/suyu/suyu
synced 2026-04-24 02:42:53 +00:00
Rework ADSP into a wrapper for apps
This commit is contained in:
@@ -1,13 +1,13 @@
|
||||
// SPDX-FileCopyrightText: Copyright 2022 yuzu Emulator Project
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#include "audio_core/renderer/adsp/command_list_processor.h"
|
||||
#include "audio_core/adsp/apps/audio_renderer/command_list_processor.h"
|
||||
#include "audio_core/renderer/command/effect/aux_.h"
|
||||
#include "audio_core/renderer/effect/aux_.h"
|
||||
#include "core/core.h"
|
||||
#include "core/memory.h"
|
||||
|
||||
namespace AudioCore::AudioRenderer {
|
||||
namespace AudioCore::Renderer {
|
||||
/**
|
||||
* Reset an AuxBuffer.
|
||||
*
|
||||
@@ -175,13 +175,13 @@ static u32 ReadAuxBufferDsp(Core::Memory::Memory& memory, CpuAddr return_info_,
|
||||
return read_count_;
|
||||
}
|
||||
|
||||
void AuxCommand::Dump([[maybe_unused]] const ADSP::CommandListProcessor& processor,
|
||||
void AuxCommand::Dump([[maybe_unused]] const AudioRenderer::CommandListProcessor& processor,
|
||||
std::string& string) {
|
||||
string += fmt::format("AuxCommand\n\tenabled {} input {:02X} output {:02X}\n", effect_enabled,
|
||||
input, output);
|
||||
}
|
||||
|
||||
void AuxCommand::Process(const ADSP::CommandListProcessor& processor) {
|
||||
void AuxCommand::Process(const AudioRenderer::CommandListProcessor& processor) {
|
||||
auto input_buffer{
|
||||
processor.mix_buffers.subspan(input * processor.sample_count, processor.sample_count)};
|
||||
auto output_buffer{
|
||||
@@ -208,8 +208,8 @@ void AuxCommand::Process(const ADSP::CommandListProcessor& processor) {
|
||||
}
|
||||
}
|
||||
|
||||
bool AuxCommand::Verify(const ADSP::CommandListProcessor& processor) {
|
||||
bool AuxCommand::Verify(const AudioRenderer::CommandListProcessor& processor) {
|
||||
return true;
|
||||
}
|
||||
|
||||
} // namespace AudioCore::AudioRenderer
|
||||
} // namespace AudioCore::Renderer
|
||||
|
||||
@@ -8,11 +8,12 @@
|
||||
#include "audio_core/renderer/command/icommand.h"
|
||||
#include "common/common_types.h"
|
||||
|
||||
namespace AudioCore::AudioRenderer {
|
||||
namespace ADSP {
|
||||
namespace AudioCore::ADSP::AudioRenderer {
|
||||
class CommandListProcessor;
|
||||
}
|
||||
|
||||
namespace AudioCore::Renderer {
|
||||
|
||||
/**
|
||||
* AudioRenderer command to read and write an auxiliary buffer, writing the input mix buffer to game
|
||||
* memory, and reading into the output buffer from game memory.
|
||||
@@ -24,14 +25,14 @@ struct AuxCommand : ICommand {
|
||||
* @param processor - The CommandListProcessor processing this command.
|
||||
* @param string - The string to print into.
|
||||
*/
|
||||
void Dump(const ADSP::CommandListProcessor& processor, std::string& string) override;
|
||||
void Dump(const AudioRenderer::CommandListProcessor& processor, std::string& string) override;
|
||||
|
||||
/**
|
||||
* Process this command.
|
||||
*
|
||||
* @param processor - The CommandListProcessor processing this command.
|
||||
*/
|
||||
void Process(const ADSP::CommandListProcessor& processor) override;
|
||||
void Process(const AudioRenderer::CommandListProcessor& processor) override;
|
||||
|
||||
/**
|
||||
* Verify this command's data is valid.
|
||||
@@ -39,7 +40,7 @@ struct AuxCommand : ICommand {
|
||||
* @param processor - The CommandListProcessor processing this command.
|
||||
* @return True if the command is valid, otherwise false.
|
||||
*/
|
||||
bool Verify(const ADSP::CommandListProcessor& processor) override;
|
||||
bool Verify(const AudioRenderer::CommandListProcessor& processor) override;
|
||||
|
||||
/// Input mix buffer index
|
||||
s16 input;
|
||||
@@ -63,4 +64,4 @@ struct AuxCommand : ICommand {
|
||||
bool effect_enabled;
|
||||
};
|
||||
|
||||
} // namespace AudioCore::AudioRenderer
|
||||
} // namespace AudioCore::Renderer
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
// SPDX-FileCopyrightText: Copyright 2022 yuzu Emulator Project
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#include "audio_core/renderer/adsp/command_list_processor.h"
|
||||
#include "audio_core/adsp/apps/audio_renderer/command_list_processor.h"
|
||||
#include "audio_core/renderer/command/effect/biquad_filter.h"
|
||||
#include "audio_core/renderer/voice/voice_state.h"
|
||||
#include "common/bit_cast.h"
|
||||
|
||||
namespace AudioCore::AudioRenderer {
|
||||
namespace AudioCore::Renderer {
|
||||
/**
|
||||
* Biquad filter float implementation.
|
||||
*
|
||||
@@ -76,14 +76,14 @@ static void ApplyBiquadFilterInt(std::span<s32> output, std::span<const s32> inp
|
||||
}
|
||||
}
|
||||
|
||||
void BiquadFilterCommand::Dump([[maybe_unused]] const ADSP::CommandListProcessor& processor,
|
||||
std::string& string) {
|
||||
void BiquadFilterCommand::Dump(
|
||||
[[maybe_unused]] const AudioRenderer::CommandListProcessor& processor, std::string& string) {
|
||||
string += fmt::format(
|
||||
"BiquadFilterCommand\n\tinput {:02X} output {:02X} needs_init {} use_float_processing {}\n",
|
||||
input, output, needs_init, use_float_processing);
|
||||
}
|
||||
|
||||
void BiquadFilterCommand::Process(const ADSP::CommandListProcessor& processor) {
|
||||
void BiquadFilterCommand::Process(const AudioRenderer::CommandListProcessor& processor) {
|
||||
auto state_{reinterpret_cast<VoiceState::BiquadFilterState*>(state)};
|
||||
if (needs_init) {
|
||||
*state_ = {};
|
||||
@@ -103,8 +103,8 @@ void BiquadFilterCommand::Process(const ADSP::CommandListProcessor& processor) {
|
||||
}
|
||||
}
|
||||
|
||||
bool BiquadFilterCommand::Verify(const ADSP::CommandListProcessor& processor) {
|
||||
bool BiquadFilterCommand::Verify(const AudioRenderer::CommandListProcessor& processor) {
|
||||
return true;
|
||||
}
|
||||
|
||||
} // namespace AudioCore::AudioRenderer
|
||||
} // namespace AudioCore::Renderer
|
||||
|
||||
@@ -10,11 +10,12 @@
|
||||
#include "audio_core/renderer/voice/voice_state.h"
|
||||
#include "common/common_types.h"
|
||||
|
||||
namespace AudioCore::AudioRenderer {
|
||||
namespace ADSP {
|
||||
namespace AudioCore::ADSP::AudioRenderer {
|
||||
class CommandListProcessor;
|
||||
}
|
||||
|
||||
namespace AudioCore::Renderer {
|
||||
|
||||
/**
|
||||
* AudioRenderer command for applying a biquad filter to the input mix buffer, saving the results to
|
||||
* the output mix buffer.
|
||||
@@ -26,14 +27,14 @@ struct BiquadFilterCommand : ICommand {
|
||||
* @param processor - The CommandListProcessor processing this command.
|
||||
* @param string - The string to print into.
|
||||
*/
|
||||
void Dump(const ADSP::CommandListProcessor& processor, std::string& string) override;
|
||||
void Dump(const AudioRenderer::CommandListProcessor& processor, std::string& string) override;
|
||||
|
||||
/**
|
||||
* Process this command.
|
||||
*
|
||||
* @param processor - The CommandListProcessor processing this command.
|
||||
*/
|
||||
void Process(const ADSP::CommandListProcessor& processor) override;
|
||||
void Process(const AudioRenderer::CommandListProcessor& processor) override;
|
||||
|
||||
/**
|
||||
* Verify this command's data is valid.
|
||||
@@ -41,7 +42,7 @@ struct BiquadFilterCommand : ICommand {
|
||||
* @param processor - The CommandListProcessor processing this command.
|
||||
* @return True if the command is valid, otherwise false.
|
||||
*/
|
||||
bool Verify(const ADSP::CommandListProcessor& processor) override;
|
||||
bool Verify(const AudioRenderer::CommandListProcessor& processor) override;
|
||||
|
||||
/// Input mix buffer index
|
||||
s16 input;
|
||||
@@ -71,4 +72,4 @@ void ApplyBiquadFilterFloat(std::span<s32> output, std::span<const s32> input,
|
||||
std::array<s16, 3>& b, std::array<s16, 2>& a,
|
||||
VoiceState::BiquadFilterState& state, const u32 sample_count);
|
||||
|
||||
} // namespace AudioCore::AudioRenderer
|
||||
} // namespace AudioCore::Renderer
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
// SPDX-FileCopyrightText: Copyright 2022 yuzu Emulator Project
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#include "audio_core/renderer/adsp/command_list_processor.h"
|
||||
#include "audio_core/adsp/apps/audio_renderer/command_list_processor.h"
|
||||
#include "audio_core/renderer/command/effect/capture.h"
|
||||
#include "audio_core/renderer/effect/aux_.h"
|
||||
#include "core/memory.h"
|
||||
|
||||
namespace AudioCore::AudioRenderer {
|
||||
namespace AudioCore::Renderer {
|
||||
/**
|
||||
* Reset an AuxBuffer.
|
||||
*
|
||||
@@ -118,13 +118,13 @@ static u32 WriteAuxBufferDsp(Core::Memory::Memory& memory, const CpuAddr send_in
|
||||
return write_count_;
|
||||
}
|
||||
|
||||
void CaptureCommand::Dump([[maybe_unused]] const ADSP::CommandListProcessor& processor,
|
||||
void CaptureCommand::Dump([[maybe_unused]] const AudioRenderer::CommandListProcessor& processor,
|
||||
std::string& string) {
|
||||
string += fmt::format("CaptureCommand\n\tenabled {} input {:02X} output {:02X}", effect_enabled,
|
||||
input, output);
|
||||
}
|
||||
|
||||
void CaptureCommand::Process(const ADSP::CommandListProcessor& processor) {
|
||||
void CaptureCommand::Process(const AudioRenderer::CommandListProcessor& processor) {
|
||||
if (effect_enabled) {
|
||||
auto input_buffer{
|
||||
processor.mix_buffers.subspan(input * processor.sample_count, processor.sample_count)};
|
||||
@@ -135,8 +135,8 @@ void CaptureCommand::Process(const ADSP::CommandListProcessor& processor) {
|
||||
}
|
||||
}
|
||||
|
||||
bool CaptureCommand::Verify(const ADSP::CommandListProcessor& processor) {
|
||||
bool CaptureCommand::Verify(const AudioRenderer::CommandListProcessor& processor) {
|
||||
return true;
|
||||
}
|
||||
|
||||
} // namespace AudioCore::AudioRenderer
|
||||
} // namespace AudioCore::Renderer
|
||||
|
||||
@@ -8,11 +8,12 @@
|
||||
#include "audio_core/renderer/command/icommand.h"
|
||||
#include "common/common_types.h"
|
||||
|
||||
namespace AudioCore::AudioRenderer {
|
||||
namespace ADSP {
|
||||
namespace AudioCore::ADSP::AudioRenderer {
|
||||
class CommandListProcessor;
|
||||
}
|
||||
|
||||
namespace AudioCore::Renderer {
|
||||
|
||||
/**
|
||||
* AudioRenderer command for capturing a mix buffer. That is, writing it back to a given game memory
|
||||
* address.
|
||||
@@ -24,14 +25,14 @@ struct CaptureCommand : ICommand {
|
||||
* @param processor - The CommandListProcessor processing this command.
|
||||
* @param string - The string to print into.
|
||||
*/
|
||||
void Dump(const ADSP::CommandListProcessor& processor, std::string& string) override;
|
||||
void Dump(const AudioRenderer::CommandListProcessor& processor, std::string& string) override;
|
||||
|
||||
/**
|
||||
* Process this command.
|
||||
*
|
||||
* @param processor - The CommandListProcessor processing this command.
|
||||
*/
|
||||
void Process(const ADSP::CommandListProcessor& processor) override;
|
||||
void Process(const AudioRenderer::CommandListProcessor& processor) override;
|
||||
|
||||
/**
|
||||
* Verify this command's data is valid.
|
||||
@@ -39,7 +40,7 @@ struct CaptureCommand : ICommand {
|
||||
* @param processor - The CommandListProcessor processing this command.
|
||||
* @return True if the command is valid, otherwise false.
|
||||
*/
|
||||
bool Verify(const ADSP::CommandListProcessor& processor) override;
|
||||
bool Verify(const AudioRenderer::CommandListProcessor& processor) override;
|
||||
|
||||
/// Input mix buffer index
|
||||
s16 input;
|
||||
@@ -59,4 +60,4 @@ struct CaptureCommand : ICommand {
|
||||
bool effect_enabled;
|
||||
};
|
||||
|
||||
} // namespace AudioCore::AudioRenderer
|
||||
} // namespace AudioCore::Renderer
|
||||
|
||||
@@ -5,11 +5,11 @@
|
||||
#include <span>
|
||||
#include <vector>
|
||||
|
||||
#include "audio_core/renderer/adsp/command_list_processor.h"
|
||||
#include "audio_core/adsp/apps/audio_renderer/command_list_processor.h"
|
||||
#include "audio_core/renderer/command/effect/compressor.h"
|
||||
#include "audio_core/renderer/effect/compressor.h"
|
||||
|
||||
namespace AudioCore::AudioRenderer {
|
||||
namespace AudioCore::Renderer {
|
||||
|
||||
static void SetCompressorEffectParameter(const CompressorInfo::ParameterVersion2& params,
|
||||
CompressorInfo::State& state) {
|
||||
@@ -110,7 +110,7 @@ static void ApplyCompressorEffect(const CompressorInfo::ParameterVersion2& param
|
||||
}
|
||||
}
|
||||
|
||||
void CompressorCommand::Dump([[maybe_unused]] const ADSP::CommandListProcessor& processor,
|
||||
void CompressorCommand::Dump([[maybe_unused]] const AudioRenderer::CommandListProcessor& processor,
|
||||
std::string& string) {
|
||||
string += fmt::format("CompressorCommand\n\tenabled {} \n\tinputs: ", effect_enabled);
|
||||
for (s16 i = 0; i < parameter.channel_count; i++) {
|
||||
@@ -123,7 +123,7 @@ void CompressorCommand::Dump([[maybe_unused]] const ADSP::CommandListProcessor&
|
||||
string += "\n";
|
||||
}
|
||||
|
||||
void CompressorCommand::Process(const ADSP::CommandListProcessor& processor) {
|
||||
void CompressorCommand::Process(const AudioRenderer::CommandListProcessor& processor) {
|
||||
std::array<std::span<const s32>, MaxChannels> input_buffers{};
|
||||
std::array<std::span<s32>, MaxChannels> output_buffers{};
|
||||
|
||||
@@ -148,8 +148,8 @@ void CompressorCommand::Process(const ADSP::CommandListProcessor& processor) {
|
||||
processor.sample_count);
|
||||
}
|
||||
|
||||
bool CompressorCommand::Verify(const ADSP::CommandListProcessor& processor) {
|
||||
bool CompressorCommand::Verify(const AudioRenderer::CommandListProcessor& processor) {
|
||||
return true;
|
||||
}
|
||||
|
||||
} // namespace AudioCore::AudioRenderer
|
||||
} // namespace AudioCore::Renderer
|
||||
|
||||
@@ -10,11 +10,12 @@
|
||||
#include "audio_core/renderer/effect/compressor.h"
|
||||
#include "common/common_types.h"
|
||||
|
||||
namespace AudioCore::AudioRenderer {
|
||||
namespace ADSP {
|
||||
namespace AudioCore::ADSP::AudioRenderer {
|
||||
class CommandListProcessor;
|
||||
}
|
||||
|
||||
namespace AudioCore::Renderer {
|
||||
|
||||
/**
|
||||
* AudioRenderer command for limiting volume between a high and low threshold.
|
||||
* Version 1.
|
||||
@@ -26,14 +27,14 @@ struct CompressorCommand : ICommand {
|
||||
* @param processor - The CommandListProcessor processing this command.
|
||||
* @param string - The string to print into.
|
||||
*/
|
||||
void Dump(const ADSP::CommandListProcessor& processor, std::string& string) override;
|
||||
void Dump(const AudioRenderer::CommandListProcessor& processor, std::string& string) override;
|
||||
|
||||
/**
|
||||
* Process this command.
|
||||
*
|
||||
* @param processor - The CommandListProcessor processing this command.
|
||||
*/
|
||||
void Process(const ADSP::CommandListProcessor& processor) override;
|
||||
void Process(const AudioRenderer::CommandListProcessor& processor) override;
|
||||
|
||||
/**
|
||||
* Verify this command's data is valid.
|
||||
@@ -41,7 +42,7 @@ struct CompressorCommand : ICommand {
|
||||
* @param processor - The CommandListProcessor processing this command.
|
||||
* @return True if the command is valid, otherwise false.
|
||||
*/
|
||||
bool Verify(const ADSP::CommandListProcessor& processor) override;
|
||||
bool Verify(const AudioRenderer::CommandListProcessor& processor) override;
|
||||
|
||||
/// Input mix buffer offsets for each channel
|
||||
std::array<s16, MaxChannels> inputs;
|
||||
@@ -57,4 +58,4 @@ struct CompressorCommand : ICommand {
|
||||
bool effect_enabled;
|
||||
};
|
||||
|
||||
} // namespace AudioCore::AudioRenderer
|
||||
} // namespace AudioCore::Renderer
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
// SPDX-FileCopyrightText: Copyright 2022 yuzu Emulator Project
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#include "audio_core/renderer/adsp/command_list_processor.h"
|
||||
#include "audio_core/adsp/apps/audio_renderer/command_list_processor.h"
|
||||
#include "audio_core/renderer/command/effect/delay.h"
|
||||
|
||||
namespace AudioCore::AudioRenderer {
|
||||
namespace AudioCore::Renderer {
|
||||
/**
|
||||
* Update the DelayInfo state according to the given parameters.
|
||||
*
|
||||
@@ -194,7 +194,7 @@ static void ApplyDelayEffect(const DelayInfo::ParameterVersion1& params, DelayIn
|
||||
}
|
||||
}
|
||||
|
||||
void DelayCommand::Dump([[maybe_unused]] const ADSP::CommandListProcessor& processor,
|
||||
void DelayCommand::Dump([[maybe_unused]] const AudioRenderer::CommandListProcessor& processor,
|
||||
std::string& string) {
|
||||
string += fmt::format("DelayCommand\n\tenabled {} \n\tinputs: ", effect_enabled);
|
||||
for (u32 i = 0; i < MaxChannels; i++) {
|
||||
@@ -207,7 +207,7 @@ void DelayCommand::Dump([[maybe_unused]] const ADSP::CommandListProcessor& proce
|
||||
string += "\n";
|
||||
}
|
||||
|
||||
void DelayCommand::Process(const ADSP::CommandListProcessor& processor) {
|
||||
void DelayCommand::Process(const AudioRenderer::CommandListProcessor& processor) {
|
||||
std::array<std::span<const s32>, MaxChannels> input_buffers{};
|
||||
std::array<std::span<s32>, MaxChannels> output_buffers{};
|
||||
|
||||
@@ -231,8 +231,8 @@ void DelayCommand::Process(const ADSP::CommandListProcessor& processor) {
|
||||
processor.sample_count);
|
||||
}
|
||||
|
||||
bool DelayCommand::Verify(const ADSP::CommandListProcessor& processor) {
|
||||
bool DelayCommand::Verify(const AudioRenderer::CommandListProcessor& processor) {
|
||||
return true;
|
||||
}
|
||||
|
||||
} // namespace AudioCore::AudioRenderer
|
||||
} // namespace AudioCore::Renderer
|
||||
|
||||
@@ -10,11 +10,12 @@
|
||||
#include "audio_core/renderer/effect/delay.h"
|
||||
#include "common/common_types.h"
|
||||
|
||||
namespace AudioCore::AudioRenderer {
|
||||
namespace ADSP {
|
||||
namespace AudioCore::ADSP::AudioRenderer {
|
||||
class CommandListProcessor;
|
||||
}
|
||||
|
||||
namespace AudioCore::Renderer {
|
||||
|
||||
/**
|
||||
* AudioRenderer command for a delay effect. Delays inputs mix buffers according to the parameters
|
||||
* and state, outputs receives the delayed samples.
|
||||
@@ -26,14 +27,14 @@ struct DelayCommand : ICommand {
|
||||
* @param processor - The CommandListProcessor processing this command.
|
||||
* @param string - The string to print into.
|
||||
*/
|
||||
void Dump(const ADSP::CommandListProcessor& processor, std::string& string) override;
|
||||
void Dump(const AudioRenderer::CommandListProcessor& processor, std::string& string) override;
|
||||
|
||||
/**
|
||||
* Process this command.
|
||||
*
|
||||
* @param processor - The CommandListProcessor processing this command.
|
||||
*/
|
||||
void Process(const ADSP::CommandListProcessor& processor) override;
|
||||
void Process(const AudioRenderer::CommandListProcessor& processor) override;
|
||||
|
||||
/**
|
||||
* Verify this command's data is valid.
|
||||
@@ -41,7 +42,7 @@ struct DelayCommand : ICommand {
|
||||
* @param processor - The CommandListProcessor processing this command.
|
||||
* @return True if the command is valid, otherwise false.
|
||||
*/
|
||||
bool Verify(const ADSP::CommandListProcessor& processor) override;
|
||||
bool Verify(const AudioRenderer::CommandListProcessor& processor) override;
|
||||
|
||||
/// Input mix buffer offsets for each channel
|
||||
std::array<s16, MaxChannels> inputs;
|
||||
@@ -57,4 +58,4 @@ struct DelayCommand : ICommand {
|
||||
bool effect_enabled;
|
||||
};
|
||||
|
||||
} // namespace AudioCore::AudioRenderer
|
||||
} // namespace AudioCore::Renderer
|
||||
|
||||
@@ -3,11 +3,11 @@
|
||||
|
||||
#include <numbers>
|
||||
|
||||
#include "audio_core/renderer/adsp/command_list_processor.h"
|
||||
#include "audio_core/adsp/apps/audio_renderer/command_list_processor.h"
|
||||
#include "audio_core/renderer/command/effect/i3dl2_reverb.h"
|
||||
#include "common/polyfill_ranges.h"
|
||||
|
||||
namespace AudioCore::AudioRenderer {
|
||||
namespace AudioCore::Renderer {
|
||||
|
||||
constexpr std::array<f32, I3dl2ReverbInfo::MaxDelayLines> MinDelayLineTimes{
|
||||
5.0f,
|
||||
@@ -394,7 +394,7 @@ static void ApplyI3dl2ReverbEffect(const I3dl2ReverbInfo::ParameterVersion1& par
|
||||
}
|
||||
}
|
||||
|
||||
void I3dl2ReverbCommand::Dump([[maybe_unused]] const ADSP::CommandListProcessor& processor,
|
||||
void I3dl2ReverbCommand::Dump([[maybe_unused]] const AudioRenderer::CommandListProcessor& processor,
|
||||
std::string& string) {
|
||||
string += fmt::format("I3dl2ReverbCommand\n\tenabled {} \n\tinputs: ", effect_enabled);
|
||||
for (u32 i = 0; i < parameter.channel_count; i++) {
|
||||
@@ -407,7 +407,7 @@ void I3dl2ReverbCommand::Dump([[maybe_unused]] const ADSP::CommandListProcessor&
|
||||
string += "\n";
|
||||
}
|
||||
|
||||
void I3dl2ReverbCommand::Process(const ADSP::CommandListProcessor& processor) {
|
||||
void I3dl2ReverbCommand::Process(const AudioRenderer::CommandListProcessor& processor) {
|
||||
std::array<std::span<const s32>, MaxChannels> input_buffers{};
|
||||
std::array<std::span<s32>, MaxChannels> output_buffers{};
|
||||
|
||||
@@ -431,8 +431,8 @@ void I3dl2ReverbCommand::Process(const ADSP::CommandListProcessor& processor) {
|
||||
processor.sample_count);
|
||||
}
|
||||
|
||||
bool I3dl2ReverbCommand::Verify(const ADSP::CommandListProcessor& processor) {
|
||||
bool I3dl2ReverbCommand::Verify(const AudioRenderer::CommandListProcessor& processor) {
|
||||
return true;
|
||||
}
|
||||
|
||||
} // namespace AudioCore::AudioRenderer
|
||||
} // namespace AudioCore::Renderer
|
||||
|
||||
@@ -10,11 +10,12 @@
|
||||
#include "audio_core/renderer/effect/i3dl2.h"
|
||||
#include "common/common_types.h"
|
||||
|
||||
namespace AudioCore::AudioRenderer {
|
||||
namespace ADSP {
|
||||
namespace AudioCore::ADSP::AudioRenderer {
|
||||
class CommandListProcessor;
|
||||
}
|
||||
|
||||
namespace AudioCore::Renderer {
|
||||
|
||||
/**
|
||||
* AudioRenderer command for a I3DL2Reverb effect. Apply a reverb to inputs mix buffer according to
|
||||
* the I3DL2 spec, outputs receives the results.
|
||||
@@ -26,14 +27,14 @@ struct I3dl2ReverbCommand : ICommand {
|
||||
* @param processor - The CommandListProcessor processing this command.
|
||||
* @param string - The string to print into.
|
||||
*/
|
||||
void Dump(const ADSP::CommandListProcessor& processor, std::string& string) override;
|
||||
void Dump(const AudioRenderer::CommandListProcessor& processor, std::string& string) override;
|
||||
|
||||
/**
|
||||
* Process this command.
|
||||
*
|
||||
* @param processor - The CommandListProcessor processing this command.
|
||||
*/
|
||||
void Process(const ADSP::CommandListProcessor& processor) override;
|
||||
void Process(const AudioRenderer::CommandListProcessor& processor) override;
|
||||
|
||||
/**
|
||||
* Verify this command's data is valid.
|
||||
@@ -41,7 +42,7 @@ struct I3dl2ReverbCommand : ICommand {
|
||||
* @param processor - The CommandListProcessor processing this command.
|
||||
* @return True if the command is valid, otherwise false.
|
||||
*/
|
||||
bool Verify(const ADSP::CommandListProcessor& processor) override;
|
||||
bool Verify(const AudioRenderer::CommandListProcessor& processor) override;
|
||||
|
||||
/// Input mix buffer offsets for each channel
|
||||
std::array<s16, MaxChannels> inputs;
|
||||
@@ -57,4 +58,4 @@ struct I3dl2ReverbCommand : ICommand {
|
||||
bool effect_enabled;
|
||||
};
|
||||
|
||||
} // namespace AudioCore::AudioRenderer
|
||||
} // namespace AudioCore::Renderer
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
// SPDX-FileCopyrightText: Copyright 2022 yuzu Emulator Project
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#include "audio_core/renderer/adsp/command_list_processor.h"
|
||||
#include "audio_core/adsp/apps/audio_renderer/command_list_processor.h"
|
||||
#include "audio_core/renderer/command/effect/light_limiter.h"
|
||||
|
||||
namespace AudioCore::AudioRenderer {
|
||||
namespace AudioCore::Renderer {
|
||||
/**
|
||||
* Update the LightLimiterInfo state according to the given parameters.
|
||||
* A no-op.
|
||||
@@ -133,8 +133,8 @@ static void ApplyLightLimiterEffect(const LightLimiterInfo::ParameterVersion2& p
|
||||
}
|
||||
}
|
||||
|
||||
void LightLimiterVersion1Command::Dump([[maybe_unused]] const ADSP::CommandListProcessor& processor,
|
||||
std::string& string) {
|
||||
void LightLimiterVersion1Command::Dump(
|
||||
[[maybe_unused]] const AudioRenderer::CommandListProcessor& processor, std::string& string) {
|
||||
string += fmt::format("LightLimiterVersion1Command\n\tinputs: ");
|
||||
for (u32 i = 0; i < MaxChannels; i++) {
|
||||
string += fmt::format("{:02X}, ", inputs[i]);
|
||||
@@ -146,7 +146,7 @@ void LightLimiterVersion1Command::Dump([[maybe_unused]] const ADSP::CommandListP
|
||||
string += "\n";
|
||||
}
|
||||
|
||||
void LightLimiterVersion1Command::Process(const ADSP::CommandListProcessor& processor) {
|
||||
void LightLimiterVersion1Command::Process(const AudioRenderer::CommandListProcessor& processor) {
|
||||
std::array<std::span<const s32>, MaxChannels> input_buffers{};
|
||||
std::array<std::span<s32>, MaxChannels> output_buffers{};
|
||||
|
||||
@@ -172,12 +172,12 @@ void LightLimiterVersion1Command::Process(const ADSP::CommandListProcessor& proc
|
||||
processor.sample_count, statistics);
|
||||
}
|
||||
|
||||
bool LightLimiterVersion1Command::Verify(const ADSP::CommandListProcessor& processor) {
|
||||
bool LightLimiterVersion1Command::Verify(const AudioRenderer::CommandListProcessor& processor) {
|
||||
return true;
|
||||
}
|
||||
|
||||
void LightLimiterVersion2Command::Dump([[maybe_unused]] const ADSP::CommandListProcessor& processor,
|
||||
std::string& string) {
|
||||
void LightLimiterVersion2Command::Dump(
|
||||
[[maybe_unused]] const AudioRenderer::CommandListProcessor& processor, std::string& string) {
|
||||
string += fmt::format("LightLimiterVersion2Command\n\tinputs: \n");
|
||||
for (u32 i = 0; i < MaxChannels; i++) {
|
||||
string += fmt::format("{:02X}, ", inputs[i]);
|
||||
@@ -189,7 +189,7 @@ void LightLimiterVersion2Command::Dump([[maybe_unused]] const ADSP::CommandListP
|
||||
string += "\n";
|
||||
}
|
||||
|
||||
void LightLimiterVersion2Command::Process(const ADSP::CommandListProcessor& processor) {
|
||||
void LightLimiterVersion2Command::Process(const AudioRenderer::CommandListProcessor& processor) {
|
||||
std::array<std::span<const s32>, MaxChannels> input_buffers{};
|
||||
std::array<std::span<s32>, MaxChannels> output_buffers{};
|
||||
|
||||
@@ -215,8 +215,8 @@ void LightLimiterVersion2Command::Process(const ADSP::CommandListProcessor& proc
|
||||
processor.sample_count, statistics);
|
||||
}
|
||||
|
||||
bool LightLimiterVersion2Command::Verify(const ADSP::CommandListProcessor& processor) {
|
||||
bool LightLimiterVersion2Command::Verify(const AudioRenderer::CommandListProcessor& processor) {
|
||||
return true;
|
||||
}
|
||||
|
||||
} // namespace AudioCore::AudioRenderer
|
||||
} // namespace AudioCore::Renderer
|
||||
|
||||
@@ -10,11 +10,12 @@
|
||||
#include "audio_core/renderer/effect/light_limiter.h"
|
||||
#include "common/common_types.h"
|
||||
|
||||
namespace AudioCore::AudioRenderer {
|
||||
namespace ADSP {
|
||||
namespace AudioCore::ADSP::AudioRenderer {
|
||||
class CommandListProcessor;
|
||||
}
|
||||
|
||||
namespace AudioCore::Renderer {
|
||||
|
||||
/**
|
||||
* AudioRenderer command for limiting volume between a high and low threshold.
|
||||
* Version 1.
|
||||
@@ -26,14 +27,14 @@ struct LightLimiterVersion1Command : ICommand {
|
||||
* @param processor - The CommandListProcessor processing this command.
|
||||
* @param string - The string to print into.
|
||||
*/
|
||||
void Dump(const ADSP::CommandListProcessor& processor, std::string& string) override;
|
||||
void Dump(const AudioRenderer::CommandListProcessor& processor, std::string& string) override;
|
||||
|
||||
/**
|
||||
* Process this command.
|
||||
*
|
||||
* @param processor - The CommandListProcessor processing this command.
|
||||
*/
|
||||
void Process(const ADSP::CommandListProcessor& processor) override;
|
||||
void Process(const AudioRenderer::CommandListProcessor& processor) override;
|
||||
|
||||
/**
|
||||
* Verify this command's data is valid.
|
||||
@@ -41,7 +42,7 @@ struct LightLimiterVersion1Command : ICommand {
|
||||
* @param processor - The CommandListProcessor processing this command.
|
||||
* @return True if the command is valid, otherwise false.
|
||||
*/
|
||||
bool Verify(const ADSP::CommandListProcessor& processor) override;
|
||||
bool Verify(const AudioRenderer::CommandListProcessor& processor) override;
|
||||
|
||||
/// Input mix buffer offsets for each channel
|
||||
std::array<s16, MaxChannels> inputs;
|
||||
@@ -68,21 +69,21 @@ struct LightLimiterVersion2Command : ICommand {
|
||||
* @param processor - The CommandListProcessor processing this command.
|
||||
* @param string - The string to print into.
|
||||
*/
|
||||
void Dump(const ADSP::CommandListProcessor& processor, std::string& string) override;
|
||||
void Dump(const AudioRenderer::CommandListProcessor& processor, std::string& string) override;
|
||||
|
||||
/**
|
||||
* Process this command.
|
||||
*
|
||||
* @param processor - The CommandListProcessor processing this command.
|
||||
*/
|
||||
void Process(const ADSP::CommandListProcessor& processor) override;
|
||||
void Process(const AudioRenderer::CommandListProcessor& processor) override;
|
||||
|
||||
/**
|
||||
* Verify this command's data is valid.
|
||||
*
|
||||
* @param processor - The CommandListProcessor processing this command.
|
||||
*/
|
||||
bool Verify(const ADSP::CommandListProcessor& processor) override;
|
||||
bool Verify(const AudioRenderer::CommandListProcessor& processor) override;
|
||||
|
||||
/// Input mix buffer offsets for each channel
|
||||
std::array<s16, MaxChannels> inputs;
|
||||
@@ -100,4 +101,4 @@ struct LightLimiterVersion2Command : ICommand {
|
||||
bool effect_enabled;
|
||||
};
|
||||
|
||||
} // namespace AudioCore::AudioRenderer
|
||||
} // namespace AudioCore::Renderer
|
||||
|
||||
@@ -1,20 +1,20 @@
|
||||
// SPDX-FileCopyrightText: Copyright 2022 yuzu Emulator Project
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#include "audio_core/renderer/adsp/command_list_processor.h"
|
||||
#include "audio_core/adsp/apps/audio_renderer/command_list_processor.h"
|
||||
#include "audio_core/renderer/command/effect/biquad_filter.h"
|
||||
#include "audio_core/renderer/command/effect/multi_tap_biquad_filter.h"
|
||||
|
||||
namespace AudioCore::AudioRenderer {
|
||||
namespace AudioCore::Renderer {
|
||||
|
||||
void MultiTapBiquadFilterCommand::Dump([[maybe_unused]] const ADSP::CommandListProcessor& processor,
|
||||
std::string& string) {
|
||||
void MultiTapBiquadFilterCommand::Dump(
|
||||
[[maybe_unused]] const AudioRenderer::CommandListProcessor& processor, std::string& string) {
|
||||
string += fmt::format(
|
||||
"MultiTapBiquadFilterCommand\n\tinput {:02X}\n\toutput {:02X}\n\tneeds_init ({}, {})\n",
|
||||
input, output, needs_init[0], needs_init[1]);
|
||||
}
|
||||
|
||||
void MultiTapBiquadFilterCommand::Process(const ADSP::CommandListProcessor& processor) {
|
||||
void MultiTapBiquadFilterCommand::Process(const AudioRenderer::CommandListProcessor& processor) {
|
||||
if (filter_tap_count > MaxBiquadFilters) {
|
||||
LOG_ERROR(Service_Audio, "Too many filter taps! {}", filter_tap_count);
|
||||
filter_tap_count = MaxBiquadFilters;
|
||||
@@ -38,8 +38,8 @@ void MultiTapBiquadFilterCommand::Process(const ADSP::CommandListProcessor& proc
|
||||
}
|
||||
}
|
||||
|
||||
bool MultiTapBiquadFilterCommand::Verify(const ADSP::CommandListProcessor& processor) {
|
||||
bool MultiTapBiquadFilterCommand::Verify(const AudioRenderer::CommandListProcessor& processor) {
|
||||
return true;
|
||||
}
|
||||
|
||||
} // namespace AudioCore::AudioRenderer
|
||||
} // namespace AudioCore::Renderer
|
||||
|
||||
@@ -10,11 +10,12 @@
|
||||
#include "audio_core/renderer/voice/voice_info.h"
|
||||
#include "common/common_types.h"
|
||||
|
||||
namespace AudioCore::AudioRenderer {
|
||||
namespace ADSP {
|
||||
namespace AudioCore::ADSP::AudioRenderer {
|
||||
class CommandListProcessor;
|
||||
}
|
||||
|
||||
namespace AudioCore::Renderer {
|
||||
|
||||
/**
|
||||
* AudioRenderer command for applying multiple biquads at once.
|
||||
*/
|
||||
@@ -25,14 +26,14 @@ struct MultiTapBiquadFilterCommand : ICommand {
|
||||
* @param processor - The CommandListProcessor processing this command.
|
||||
* @param string - The string to print into.
|
||||
*/
|
||||
void Dump(const ADSP::CommandListProcessor& processor, std::string& string) override;
|
||||
void Dump(const AudioRenderer::CommandListProcessor& processor, std::string& string) override;
|
||||
|
||||
/**
|
||||
* Process this command.
|
||||
*
|
||||
* @param processor - The CommandListProcessor processing this command.
|
||||
*/
|
||||
void Process(const ADSP::CommandListProcessor& processor) override;
|
||||
void Process(const AudioRenderer::CommandListProcessor& processor) override;
|
||||
|
||||
/**
|
||||
* Verify this command's data is valid.
|
||||
@@ -40,7 +41,7 @@ struct MultiTapBiquadFilterCommand : ICommand {
|
||||
* @param processor - The CommandListProcessor processing this command.
|
||||
* @return True if the command is valid, otherwise false.
|
||||
*/
|
||||
bool Verify(const ADSP::CommandListProcessor& processor) override;
|
||||
bool Verify(const AudioRenderer::CommandListProcessor& processor) override;
|
||||
|
||||
/// Input mix buffer index
|
||||
s16 input;
|
||||
@@ -56,4 +57,4 @@ struct MultiTapBiquadFilterCommand : ICommand {
|
||||
u8 filter_tap_count;
|
||||
};
|
||||
|
||||
} // namespace AudioCore::AudioRenderer
|
||||
} // namespace AudioCore::Renderer
|
||||
|
||||
@@ -4,11 +4,11 @@
|
||||
#include <numbers>
|
||||
#include <ranges>
|
||||
|
||||
#include "audio_core/renderer/adsp/command_list_processor.h"
|
||||
#include "audio_core/adsp/apps/audio_renderer/command_list_processor.h"
|
||||
#include "audio_core/renderer/command/effect/reverb.h"
|
||||
#include "common/polyfill_ranges.h"
|
||||
|
||||
namespace AudioCore::AudioRenderer {
|
||||
namespace AudioCore::Renderer {
|
||||
|
||||
constexpr std::array<f32, ReverbInfo::MaxDelayLines> FdnMaxDelayLineTimes = {
|
||||
53.9532470703125f,
|
||||
@@ -396,7 +396,7 @@ static void ApplyReverbEffect(const ReverbInfo::ParameterVersion2& params, Rever
|
||||
}
|
||||
}
|
||||
|
||||
void ReverbCommand::Dump([[maybe_unused]] const ADSP::CommandListProcessor& processor,
|
||||
void ReverbCommand::Dump([[maybe_unused]] const AudioRenderer::CommandListProcessor& processor,
|
||||
std::string& string) {
|
||||
string += fmt::format(
|
||||
"ReverbCommand\n\tenabled {} long_size_pre_delay_supported {}\n\tinputs: ", effect_enabled,
|
||||
@@ -411,7 +411,7 @@ void ReverbCommand::Dump([[maybe_unused]] const ADSP::CommandListProcessor& proc
|
||||
string += "\n";
|
||||
}
|
||||
|
||||
void ReverbCommand::Process(const ADSP::CommandListProcessor& processor) {
|
||||
void ReverbCommand::Process(const AudioRenderer::CommandListProcessor& processor) {
|
||||
std::array<std::span<const s32>, MaxChannels> input_buffers{};
|
||||
std::array<std::span<s32>, MaxChannels> output_buffers{};
|
||||
|
||||
@@ -435,8 +435,8 @@ void ReverbCommand::Process(const ADSP::CommandListProcessor& processor) {
|
||||
processor.sample_count);
|
||||
}
|
||||
|
||||
bool ReverbCommand::Verify(const ADSP::CommandListProcessor& processor) {
|
||||
bool ReverbCommand::Verify(const AudioRenderer::CommandListProcessor& processor) {
|
||||
return true;
|
||||
}
|
||||
|
||||
} // namespace AudioCore::AudioRenderer
|
||||
} // namespace AudioCore::Renderer
|
||||
|
||||
@@ -10,11 +10,12 @@
|
||||
#include "audio_core/renderer/effect/reverb.h"
|
||||
#include "common/common_types.h"
|
||||
|
||||
namespace AudioCore::AudioRenderer {
|
||||
namespace ADSP {
|
||||
namespace AudioCore::ADSP::AudioRenderer {
|
||||
class CommandListProcessor;
|
||||
}
|
||||
|
||||
namespace AudioCore::Renderer {
|
||||
|
||||
/**
|
||||
* AudioRenderer command for a Reverb effect. Apply a reverb to inputs mix buffer, outputs receives
|
||||
* the results.
|
||||
@@ -26,14 +27,14 @@ struct ReverbCommand : ICommand {
|
||||
* @param processor - The CommandListProcessor processing this command.
|
||||
* @param string - The string to print into.
|
||||
*/
|
||||
void Dump(const ADSP::CommandListProcessor& processor, std::string& string) override;
|
||||
void Dump(const AudioRenderer::CommandListProcessor& processor, std::string& string) override;
|
||||
|
||||
/**
|
||||
* Process this command.
|
||||
*
|
||||
* @param processor - The CommandListProcessor processing this command.
|
||||
*/
|
||||
void Process(const ADSP::CommandListProcessor& processor) override;
|
||||
void Process(const AudioRenderer::CommandListProcessor& processor) override;
|
||||
|
||||
/**
|
||||
* Verify this command's data is valid.
|
||||
@@ -41,7 +42,7 @@ struct ReverbCommand : ICommand {
|
||||
* @param processor - The CommandListProcessor processing this command.
|
||||
* @return True if the command is valid, otherwise false.
|
||||
*/
|
||||
bool Verify(const ADSP::CommandListProcessor& processor) override;
|
||||
bool Verify(const AudioRenderer::CommandListProcessor& processor) override;
|
||||
|
||||
/// Input mix buffer offsets for each channel
|
||||
std::array<s16, MaxChannels> inputs;
|
||||
@@ -59,4 +60,4 @@ struct ReverbCommand : ICommand {
|
||||
bool long_size_pre_delay_supported;
|
||||
};
|
||||
|
||||
} // namespace AudioCore::AudioRenderer
|
||||
} // namespace AudioCore::Renderer
|
||||
|
||||
Reference in New Issue
Block a user