aboutsummaryrefslogtreecommitdiff
path: root/src/Ryujinx.Audio/Renderer/Dsp/Command/DeviceSinkCommand.cs
diff options
context:
space:
mode:
Diffstat (limited to 'src/Ryujinx.Audio/Renderer/Dsp/Command/DeviceSinkCommand.cs')
-rw-r--r--src/Ryujinx.Audio/Renderer/Dsp/Command/DeviceSinkCommand.cs16
1 files changed, 14 insertions, 2 deletions
diff --git a/src/Ryujinx.Audio/Renderer/Dsp/Command/DeviceSinkCommand.cs b/src/Ryujinx.Audio/Renderer/Dsp/Command/DeviceSinkCommand.cs
index 9c88a4e7..27bb34bf 100644
--- a/src/Ryujinx.Audio/Renderer/Dsp/Command/DeviceSinkCommand.cs
+++ b/src/Ryujinx.Audio/Renderer/Dsp/Command/DeviceSinkCommand.cs
@@ -67,7 +67,19 @@ namespace Ryujinx.Audio.Renderer.Dsp.Command
const int sampleCount = Constants.TargetSampleCount;
- short[] outputBuffer = new short[bufferCount * sampleCount];
+ uint inputCount;
+
+ // In case of upmixing to 5.1, we allocate the right amount.
+ if (bufferCount != channelCount && channelCount == 6)
+ {
+ inputCount = (uint)channelCount;
+ }
+ else
+ {
+ inputCount = bufferCount;
+ }
+
+ short[] outputBuffer = new short[inputCount * sampleCount];
for (int i = 0; i < bufferCount; i++)
{
@@ -79,7 +91,7 @@ namespace Ryujinx.Audio.Renderer.Dsp.Command
}
}
- device.AppendBuffer(outputBuffer, InputCount);
+ device.AppendBuffer(outputBuffer, inputCount);
}
else
{