diff options
Diffstat (limited to 'Ryujinx.Audio/Renderer/Dsp/Command/UpsampleCommand.cs')
-rw-r--r-- | Ryujinx.Audio/Renderer/Dsp/Command/UpsampleCommand.cs | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/Ryujinx.Audio/Renderer/Dsp/Command/UpsampleCommand.cs b/Ryujinx.Audio/Renderer/Dsp/Command/UpsampleCommand.cs index 1617a642..0870d59c 100644 --- a/Ryujinx.Audio/Renderer/Dsp/Command/UpsampleCommand.cs +++ b/Ryujinx.Audio/Renderer/Dsp/Command/UpsampleCommand.cs @@ -40,6 +40,12 @@ namespace Ryujinx.Audio.Renderer.Dsp.Command info.InputBufferIndices[i] = (ushort)(bufferOffset + inputBufferOffset[i]); } + if (info.BufferStates?.Length != (int)inputCount) + { + // Keep state if possible. + info.BufferStates = new UpsamplerBufferState[(int)inputCount]; + } + UpsamplerInfo = info; } @@ -50,8 +56,6 @@ namespace Ryujinx.Audio.Renderer.Dsp.Command public void Process(CommandList context) { - float ratio = (float)InputSampleRate / Constants.TargetSampleRate; - uint bufferCount = Math.Min(BufferCount, UpsamplerInfo.SourceSampleCount); for (int i = 0; i < bufferCount; i++) @@ -59,9 +63,7 @@ namespace Ryujinx.Audio.Renderer.Dsp.Command Span<float> inputBuffer = context.GetBuffer(UpsamplerInfo.InputBufferIndices[i]); Span<float> outputBuffer = GetBuffer(UpsamplerInfo.InputBufferIndices[i], (int)UpsamplerInfo.SampleCount); - float fraction = 0.0f; - - ResamplerHelper.ResampleForUpsampler(outputBuffer, inputBuffer, ratio, ref fraction, (int)(InputSampleCount / ratio)); + UpsamplerHelper.Upsample(outputBuffer, inputBuffer, (int)UpsamplerInfo.SampleCount, (int)InputSampleCount, ref UpsamplerInfo.BufferStates[i]); } } } |