mirror of
https://github.com/Ryujinx/Ryujinx.git
synced 2024-08-17 14:18:44 +02:00
* amadeus: Add missing compressor effect from REV11 This was in my reversing notes but seems I completely forgot to implement it Also took the opportunity to simplify the Limiter effect a bit. * Remove some outdated comment * Address gdkchan's comments
310 lines
10 KiB
C#
310 lines
10 KiB
C#
using Ryujinx.Audio.Renderer.Dsp.Command;
|
|
using System;
|
|
using System.Diagnostics;
|
|
|
|
namespace Ryujinx.Audio.Renderer.Server
|
|
{
|
|
/// <summary>
|
|
/// <see cref="ICommandProcessingTimeEstimator"/> version 5. (added with REV11)
|
|
/// </summary>
|
|
public class CommandProcessingTimeEstimatorVersion5 : CommandProcessingTimeEstimatorVersion4
|
|
{
|
|
public CommandProcessingTimeEstimatorVersion5(uint sampleCount, uint bufferCount) : base(sampleCount, bufferCount) { }
|
|
|
|
public override uint Estimate(DelayCommand command)
|
|
{
|
|
Debug.Assert(_sampleCount == 160 || _sampleCount == 240);
|
|
|
|
if (_sampleCount == 160)
|
|
{
|
|
if (command.Enabled)
|
|
{
|
|
switch (command.Parameter.ChannelCount)
|
|
{
|
|
case 1:
|
|
return 8929;
|
|
case 2:
|
|
return 25501;
|
|
case 4:
|
|
return 47760;
|
|
case 6:
|
|
return 82203;
|
|
default:
|
|
throw new NotImplementedException($"{command.Parameter.ChannelCount}");
|
|
}
|
|
}
|
|
else
|
|
{
|
|
switch (command.Parameter.ChannelCount)
|
|
{
|
|
case 1:
|
|
return (uint)1295.20f;
|
|
case 2:
|
|
return (uint)1213.60f;
|
|
case 4:
|
|
return (uint)942.03f;
|
|
case 6:
|
|
return (uint)1001.6f;
|
|
default:
|
|
throw new NotImplementedException($"{command.Parameter.ChannelCount}");
|
|
}
|
|
}
|
|
}
|
|
|
|
if (command.Enabled)
|
|
{
|
|
switch (command.Parameter.ChannelCount)
|
|
{
|
|
case 1:
|
|
return 11941;
|
|
case 2:
|
|
return 37197;
|
|
case 4:
|
|
return 69750;
|
|
case 6:
|
|
return 12004;
|
|
default:
|
|
throw new NotImplementedException($"{command.Parameter.ChannelCount}");
|
|
}
|
|
}
|
|
else
|
|
{
|
|
switch (command.Parameter.ChannelCount)
|
|
{
|
|
case 1:
|
|
return (uint)997.67f;
|
|
case 2:
|
|
return (uint)977.63f;
|
|
case 4:
|
|
return (uint)792.31f;
|
|
case 6:
|
|
return (uint)875.43f;
|
|
default:
|
|
throw new NotImplementedException($"{command.Parameter.ChannelCount}");
|
|
}
|
|
}
|
|
}
|
|
|
|
public override uint Estimate(ReverbCommand command)
|
|
{
|
|
Debug.Assert(_sampleCount == 160 || _sampleCount == 240);
|
|
|
|
if (_sampleCount == 160)
|
|
{
|
|
if (command.Enabled)
|
|
{
|
|
switch (command.Parameter.ChannelCount)
|
|
{
|
|
case 1:
|
|
return 81475;
|
|
case 2:
|
|
return 84975;
|
|
case 4:
|
|
return 91625;
|
|
case 6:
|
|
return 95332;
|
|
default:
|
|
throw new NotImplementedException($"{command.Parameter.ChannelCount}");
|
|
}
|
|
}
|
|
else
|
|
{
|
|
switch (command.Parameter.ChannelCount)
|
|
{
|
|
case 1:
|
|
return (uint)536.30f;
|
|
case 2:
|
|
return (uint)588.80f;
|
|
case 4:
|
|
return (uint)643.70f;
|
|
case 6:
|
|
return (uint)706.0f;
|
|
default:
|
|
throw new NotImplementedException($"{command.Parameter.ChannelCount}");
|
|
}
|
|
}
|
|
}
|
|
|
|
if (command.Enabled)
|
|
{
|
|
switch (command.Parameter.ChannelCount)
|
|
{
|
|
case 1:
|
|
return 120170;
|
|
case 2:
|
|
return 125260;
|
|
case 4:
|
|
return 135750;
|
|
case 6:
|
|
return 141130;
|
|
default:
|
|
throw new NotImplementedException($"{command.Parameter.ChannelCount}");
|
|
}
|
|
}
|
|
else
|
|
{
|
|
switch (command.Parameter.ChannelCount)
|
|
{
|
|
case 1:
|
|
return (uint)617.64f;
|
|
case 2:
|
|
return (uint)659.54f;
|
|
case 4:
|
|
return (uint)711.44f;
|
|
case 6:
|
|
return (uint)778.07f;
|
|
default:
|
|
throw new NotImplementedException($"{command.Parameter.ChannelCount}");
|
|
}
|
|
}
|
|
}
|
|
|
|
public override uint Estimate(Reverb3dCommand command)
|
|
{
|
|
Debug.Assert(_sampleCount == 160 || _sampleCount == 240);
|
|
|
|
if (_sampleCount == 160)
|
|
{
|
|
if (command.Enabled)
|
|
{
|
|
switch (command.Parameter.ChannelCount)
|
|
{
|
|
case 1:
|
|
return 116750;
|
|
case 2:
|
|
return 125910;
|
|
case 4:
|
|
return 146340;
|
|
case 6:
|
|
return 165810;
|
|
default:
|
|
throw new NotImplementedException($"{command.Parameter.ChannelCount}");
|
|
}
|
|
}
|
|
else
|
|
{
|
|
switch (command.Parameter.ChannelCount)
|
|
{
|
|
case 1:
|
|
return 735;
|
|
case 2:
|
|
return (uint)766.62f;
|
|
case 4:
|
|
return (uint)834.07f;
|
|
case 6:
|
|
return (uint)875.44f;
|
|
default:
|
|
throw new NotImplementedException($"{command.Parameter.ChannelCount}");
|
|
}
|
|
}
|
|
}
|
|
|
|
if (command.Enabled)
|
|
{
|
|
switch (command.Parameter.ChannelCount)
|
|
{
|
|
case 1:
|
|
return 170290;
|
|
case 2:
|
|
return 183880;
|
|
case 4:
|
|
return 214700;
|
|
case 6:
|
|
return 243850;
|
|
default:
|
|
throw new NotImplementedException($"{command.Parameter.ChannelCount}");
|
|
}
|
|
}
|
|
else
|
|
{
|
|
switch (command.Parameter.ChannelCount)
|
|
{
|
|
case 1:
|
|
return (uint)508.47f;
|
|
case 2:
|
|
return (uint)582.45f;
|
|
case 4:
|
|
return (uint)626.42f;
|
|
case 6:
|
|
return (uint)682.47f;
|
|
default:
|
|
throw new NotImplementedException($"{command.Parameter.ChannelCount}");
|
|
}
|
|
}
|
|
}
|
|
|
|
public override uint Estimate(CompressorCommand command)
|
|
{
|
|
Debug.Assert(_sampleCount == 160 || _sampleCount == 240);
|
|
|
|
if (_sampleCount == 160)
|
|
{
|
|
if (command.Enabled)
|
|
{
|
|
switch (command.Parameter.ChannelCount)
|
|
{
|
|
case 1:
|
|
return 34431;
|
|
case 2:
|
|
return 44253;
|
|
case 4:
|
|
return 63827;
|
|
case 6:
|
|
return 83361;
|
|
default:
|
|
throw new NotImplementedException($"{command.Parameter.ChannelCount}");
|
|
}
|
|
}
|
|
else
|
|
{
|
|
switch (command.Parameter.ChannelCount)
|
|
{
|
|
case 1:
|
|
return (uint)630.12f;
|
|
case 2:
|
|
return (uint)638.27f;
|
|
case 4:
|
|
return (uint)705.86f;
|
|
case 6:
|
|
return (uint)782.02f;
|
|
default:
|
|
throw new NotImplementedException($"{command.Parameter.ChannelCount}");
|
|
}
|
|
}
|
|
}
|
|
|
|
if (command.Enabled)
|
|
{
|
|
switch (command.Parameter.ChannelCount)
|
|
{
|
|
case 1:
|
|
return 51095;
|
|
case 2:
|
|
return 65693;
|
|
case 4:
|
|
return 95383;
|
|
case 6:
|
|
return 124510;
|
|
default:
|
|
throw new NotImplementedException($"{command.Parameter.ChannelCount}");
|
|
}
|
|
}
|
|
else
|
|
{
|
|
switch (command.Parameter.ChannelCount)
|
|
{
|
|
case 1:
|
|
return (uint)840.14f;
|
|
case 2:
|
|
return (uint)826.1f;
|
|
case 4:
|
|
return (uint)901.88f;
|
|
case 6:
|
|
return (uint)965.29f;
|
|
default:
|
|
throw new NotImplementedException($"{command.Parameter.ChannelCount}");
|
|
}
|
|
}
|
|
}
|
|
}
|
|
} |