forked from Mirror/Ryujinx
1825bd87b4
This is the first commit of a series of reformat around the codebase as discussed internally some weeks ago. This project being one that isn't touched that much, it shouldn't cause conflict with any opened PRs.
75 lines
No EOL
2.3 KiB
C#
75 lines
No EOL
2.3 KiB
C#
using Ryujinx.Audio.Renderer.Common;
|
|
using Ryujinx.Audio.Renderer.Parameter;
|
|
using Ryujinx.Audio.Renderer.Parameter.Sink;
|
|
using Ryujinx.Audio.Renderer.Server.MemoryPool;
|
|
using Ryujinx.Audio.Renderer.Server.Upsampler;
|
|
using System;
|
|
using System.Diagnostics;
|
|
using System.Runtime.InteropServices;
|
|
|
|
namespace Ryujinx.Audio.Renderer.Server.Sink
|
|
{
|
|
/// <summary>
|
|
/// Server information for a device sink.
|
|
/// </summary>
|
|
public class DeviceSink : BaseSink
|
|
{
|
|
/// <summary>
|
|
/// The downmix coefficients.
|
|
/// </summary>
|
|
public float[] DownMixCoefficients;
|
|
|
|
/// <summary>
|
|
/// The device parameters.
|
|
/// </summary>
|
|
public DeviceParameter Parameter;
|
|
|
|
/// <summary>
|
|
/// The upsampler instance used by this sink.
|
|
/// </summary>
|
|
/// <remarks>Null if no upsampling is needed.</remarks>
|
|
public UpsamplerState UpsamplerState;
|
|
|
|
/// <summary>
|
|
/// Create a new <see cref="DeviceSink"/>.
|
|
/// </summary>
|
|
public DeviceSink()
|
|
{
|
|
DownMixCoefficients = new float[4];
|
|
}
|
|
|
|
public override void CleanUp()
|
|
{
|
|
UpsamplerState?.Release();
|
|
|
|
UpsamplerState = null;
|
|
|
|
base.CleanUp();
|
|
}
|
|
|
|
public override SinkType TargetSinkType => SinkType.Device;
|
|
|
|
public override void Update(out BehaviourParameter.ErrorInfo errorInfo, ref SinkInParameter parameter, ref SinkOutStatus outStatus, PoolMapper mapper)
|
|
{
|
|
Debug.Assert(IsTypeValid(ref parameter));
|
|
|
|
ref DeviceParameter inputDeviceParameter = ref MemoryMarshal.Cast<byte, DeviceParameter>(parameter.SpecificData)[0];
|
|
|
|
if (parameter.IsUsed != IsUsed)
|
|
{
|
|
UpdateStandardParameter(ref parameter);
|
|
Parameter = inputDeviceParameter;
|
|
}
|
|
else
|
|
{
|
|
Parameter.DownMixParameterEnabled = inputDeviceParameter.DownMixParameterEnabled;
|
|
inputDeviceParameter.DownMixParameter.ToSpan().CopyTo(Parameter.DownMixParameter.ToSpan());
|
|
}
|
|
|
|
Parameter.DownMixParameter.ToSpan().CopyTo(DownMixCoefficients.AsSpan());
|
|
|
|
errorInfo = new BehaviourParameter.ErrorInfo();
|
|
outStatus = new SinkOutStatus();
|
|
}
|
|
}
|
|
} |