diff options
Diffstat (limited to 'Ryujinx.HLE/HOS/Services/Audio/AudioRendererManager/PerformanceManager.cs')
| -rw-r--r-- | Ryujinx.HLE/HOS/Services/Audio/AudioRendererManager/PerformanceManager.cs | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/Ryujinx.HLE/HOS/Services/Audio/AudioRendererManager/PerformanceManager.cs b/Ryujinx.HLE/HOS/Services/Audio/AudioRendererManager/PerformanceManager.cs new file mode 100644 index 00000000..1b8c8a7c --- /dev/null +++ b/Ryujinx.HLE/HOS/Services/Audio/AudioRendererManager/PerformanceManager.cs @@ -0,0 +1,30 @@ +using Ryujinx.Common.Logging; + +namespace Ryujinx.HLE.HOS.Services.Audio.AudioRendererManager +{ + static class PerformanceManager + { + public static long GetRequiredBufferSizeForPerformanceMetricsPerFrame(BehaviorInfo behaviorInfo, AudioRendererParameter parameters) + { + int performanceMetricsDataFormat = behaviorInfo.GetPerformanceMetricsDataFormat(); + + if (performanceMetricsDataFormat == 2) + { + return 24 * (parameters.VoiceCount + + parameters.EffectCount + + parameters.SubMixCount + + parameters.SinkCount + 1) + 0x990; + } + + if (performanceMetricsDataFormat != 1) + { + Logger.PrintWarning(LogClass.ServiceAudio, $"PerformanceMetricsDataFormat: {performanceMetricsDataFormat} is not supported!"); + } + + return (((parameters.VoiceCount + + parameters.EffectCount + + parameters.SubMixCount + + parameters.SinkCount + 1) << 32) >> 0x1C) + 0x658; + } + } +}
\ No newline at end of file |
