LimiterState.cs 1.2 KB

12345678910111213141516171819202122232425262728293031
  1. using Ryujinx.Audio.Renderer.Dsp.Effect;
  2. using Ryujinx.Audio.Renderer.Parameter.Effect;
  3. using System;
  4. namespace Ryujinx.Audio.Renderer.Dsp.State
  5. {
  6. public class LimiterState
  7. {
  8. public ExponentialMovingAverage[] DetectorAverage;
  9. public ExponentialMovingAverage[] CompressionGainAverage;
  10. public float[] DelayedSampleBuffer;
  11. public int[] DelayedSampleBufferPosition;
  12. public LimiterState(ref LimiterParameter parameter, ulong workBuffer)
  13. {
  14. DetectorAverage = new ExponentialMovingAverage[parameter.ChannelCount];
  15. CompressionGainAverage = new ExponentialMovingAverage[parameter.ChannelCount];
  16. DelayedSampleBuffer = new float[parameter.ChannelCount * parameter.DelayBufferSampleCountMax];
  17. DelayedSampleBufferPosition = new int[parameter.ChannelCount];
  18. DetectorAverage.AsSpan().Fill(new ExponentialMovingAverage(0.0f));
  19. CompressionGainAverage.AsSpan().Fill(new ExponentialMovingAverage(1.0f));
  20. DelayedSampleBufferPosition.AsSpan().Fill(0);
  21. DelayedSampleBuffer.AsSpan().Fill(0.0f);
  22. UpdateParameter(ref parameter);
  23. }
  24. public void UpdateParameter(ref LimiterParameter parameter) { }
  25. }
  26. }