using Ryujinx.Audio.Renderer.Server.Types; using System.Runtime.InteropServices; namespace Ryujinx.Audio.Renderer.Parameter { /// /// Audio Renderer user configuration. /// [StructLayout(LayoutKind.Sequential, Pack = 1)] public struct AudioRendererConfiguration { /// /// The target sample rate of the user. /// /// Only 32000Hz and 48000Hz are considered valid, other sample rates will cause undefined behaviour. public uint SampleRate; /// /// The target sample count per updates. /// public uint SampleCount; /// /// The maximum mix buffer count. /// public uint MixBufferCount; /// /// The maximum amount of sub mixes that could be used by the user. /// public uint SubMixBufferCount; /// /// The maximum amount of voices that could be used by the user. /// public uint VoiceCount; /// /// The maximum amount of sinks that could be used by the user. /// public uint SinkCount; /// /// The maximum amount of effects that could be used by the user. /// public uint EffectCount; /// /// The maximum amount of performance metric frames that could be used by the user. /// public uint PerformanceMetricFramesCount; /// /// Set to true if the user allows the to drop voices. /// /// [MarshalAs(UnmanagedType.I1)] public bool VoiceDropEnabled; /// /// Reserved/unused /// private byte _reserved; /// /// The target rendering device. /// /// Must be public AudioRendererRenderingDevice RenderingDevice; /// /// The target execution mode. /// /// Must be public AudioRendererExecutionMode ExecutionMode; /// /// The maximum amount of splitters that could be used by the user. /// public uint SplitterCount; /// /// The maximum amount of splitters destinations that could be used by the user. /// public uint SplitterDestinationCount; /// /// The size of the external context. /// /// This is a leftover of the old "codec" interface system that was present between 1.0.0 and 3.0.0. This was entirely removed from the server side with REV8. public uint ExternalContextSize; /// /// The user audio revision /// /// public int Revision; } }