diff options
Diffstat (limited to 'Ryujinx.Audio.Renderer/Server/Upsampler/UpsamplerState.cs')
-rw-r--r-- | Ryujinx.Audio.Renderer/Server/Upsampler/UpsamplerState.cs | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/Ryujinx.Audio.Renderer/Server/Upsampler/UpsamplerState.cs b/Ryujinx.Audio.Renderer/Server/Upsampler/UpsamplerState.cs new file mode 100644 index 00000000..19ba7626 --- /dev/null +++ b/Ryujinx.Audio.Renderer/Server/Upsampler/UpsamplerState.cs @@ -0,0 +1,80 @@ +// +// Copyright (c) 2019-2020 Ryujinx +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public License +// along with this program. If not, see <https://www.gnu.org/licenses/>. +// + +using System; + +namespace Ryujinx.Audio.Renderer.Server.Upsampler +{ + /// <summary> + /// Server state for a upsampling. + /// </summary> + public class UpsamplerState + { + /// <summary> + /// The output buffer containing the target samples. + /// </summary> + public Memory<float> OutputBuffer { get; } + + /// <summary> + /// The target sample count. + /// </summary> + public uint SampleCount { get; } + + /// <summary> + /// The index of the <see cref="UpsamplerState"/>. (used to free it) + /// </summary> + private int _index; + + /// <summary> + /// The <see cref="UpsamplerManager"/>. + /// </summary> + private UpsamplerManager _manager; + + /// <summary> + /// The source sample count. + /// </summary> + public uint SourceSampleCount; + + /// <summary> + /// The input buffer indices of the buffers holding the samples that need upsampling. + /// </summary> + public ushort[] InputBufferIndices; + + /// <summary> + /// Create a new <see cref="UpsamplerState"/>. + /// </summary> + /// <param name="manager">The upsampler manager.</param> + /// <param name="index">The index of the <see cref="UpsamplerState"/>. (used to free it)</param> + /// <param name="outputBuffer">The output buffer used to contain the target samples.</param> + /// <param name="sampleCount">The target sample count.</param> + public UpsamplerState(UpsamplerManager manager, int index, Memory<float> outputBuffer, uint sampleCount) + { + _manager = manager; + _index = index; + OutputBuffer = outputBuffer; + SampleCount = sampleCount; + } + + /// <summary> + /// Release the <see cref="UpsamplerState"/>. + /// </summary> + public void Release() + { + _manager.Free(_index); + } + } +} |