diff options
Diffstat (limited to 'src/Ryujinx.Audio/Renderer/Parameter/Effect/CompressorStatistics.cs')
-rw-r--r-- | src/Ryujinx.Audio/Renderer/Parameter/Effect/CompressorStatistics.cs | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/src/Ryujinx.Audio/Renderer/Parameter/Effect/CompressorStatistics.cs b/src/Ryujinx.Audio/Renderer/Parameter/Effect/CompressorStatistics.cs new file mode 100644 index 00000000..65335e2d --- /dev/null +++ b/src/Ryujinx.Audio/Renderer/Parameter/Effect/CompressorStatistics.cs @@ -0,0 +1,38 @@ +using Ryujinx.Common.Memory; +using System.Runtime.InteropServices; + +namespace Ryujinx.Audio.Renderer.Parameter.Effect +{ + /// <summary> + /// Effect result state for <seealso cref="Common.EffectType.Compressor"/>. + /// </summary> + [StructLayout(LayoutKind.Sequential, Pack = 1)] + public struct CompressorStatistics + { + /// <summary> + /// Maximum input mean value since last reset. + /// </summary> + public float MaximumMean; + + /// <summary> + /// Minimum output gain since last reset. + /// </summary> + public float MinimumGain; + + /// <summary> + /// Last processed input sample, per channel. + /// </summary> + public Array6<float> LastSamples; + + /// <summary> + /// Reset the statistics. + /// </summary> + /// <param name="channelCount">Number of channels to reset.</param> + public void Reset(ushort channelCount) + { + MaximumMean = 0.0f; + MinimumGain = 1.0f; + LastSamples.AsSpan()[..channelCount].Clear(); + } + } +} |