LimiterState.cs 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. //
  2. // Copyright (c) 2019-2021 Ryujinx
  3. //
  4. // This program is free software: you can redistribute it and/or modify
  5. // it under the terms of the GNU Lesser General Public License as published by
  6. // the Free Software Foundation, either version 3 of the License, or
  7. // (at your option) any later version.
  8. //
  9. // This program is distributed in the hope that it will be useful,
  10. // but WITHOUT ANY WARRANTY; without even the implied warranty of
  11. // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  12. // GNU Lesser General Public License for more details.
  13. //
  14. // You should have received a copy of the GNU Lesser General Public License
  15. // along with this program. If not, see <https://www.gnu.org/licenses/>.
  16. //
  17. using Ryujinx.Audio.Renderer.Parameter.Effect;
  18. using System;
  19. namespace Ryujinx.Audio.Renderer.Dsp.State
  20. {
  21. public class LimiterState
  22. {
  23. public float[] DectectorAverage;
  24. public float[] CompressionGain;
  25. public float[] DelayedSampleBuffer;
  26. public int[] DelayedSampleBufferPosition;
  27. public LimiterState(ref LimiterParameter parameter, ulong workBuffer)
  28. {
  29. DectectorAverage = new float[parameter.ChannelCount];
  30. CompressionGain = new float[parameter.ChannelCount];
  31. DelayedSampleBuffer = new float[parameter.ChannelCount * parameter.DelayBufferSampleCountMax];
  32. DelayedSampleBufferPosition = new int[parameter.ChannelCount];
  33. DectectorAverage.AsSpan().Fill(0.0f);
  34. CompressionGain.AsSpan().Fill(1.0f);
  35. DelayedSampleBufferPosition.AsSpan().Fill(0);
  36. UpdateParameter(ref parameter);
  37. }
  38. public void UpdateParameter(ref LimiterParameter parameter) {}
  39. }
  40. }