|
|
@@ -34,6 +34,8 @@ namespace Ryujinx.HLE.HOS.Services.Audio.AudioRendererManager
|
|
|
|
|
|
private VoiceContext[] _voices;
|
|
|
|
|
|
+ private EffectContext[] _effects;
|
|
|
+
|
|
|
private int _track;
|
|
|
|
|
|
private PlayState _playState;
|
|
|
@@ -42,22 +44,24 @@ namespace Ryujinx.HLE.HOS.Services.Audio.AudioRendererManager
|
|
|
Horizon system,
|
|
|
MemoryManager memory,
|
|
|
IAalOutput audioOut,
|
|
|
- AudioRendererParameter Params)
|
|
|
+ AudioRendererParameter rendererParams)
|
|
|
{
|
|
|
_updateEvent = new KEvent(system);
|
|
|
|
|
|
_memory = memory;
|
|
|
_audioOut = audioOut;
|
|
|
- _params = Params;
|
|
|
+ _params = rendererParams;
|
|
|
|
|
|
_track = audioOut.OpenTrack(
|
|
|
AudioRendererConsts.HostSampleRate,
|
|
|
AudioRendererConsts.HostChannelsCount,
|
|
|
AudioCallback);
|
|
|
|
|
|
- _memoryPools = CreateArray<MemoryPoolContext>(Params.EffectCount + Params.VoiceCount * 4);
|
|
|
+ _memoryPools = CreateArray<MemoryPoolContext>(rendererParams.EffectCount + rendererParams.VoiceCount * 4);
|
|
|
+
|
|
|
+ _voices = CreateArray<VoiceContext>(rendererParams.VoiceCount);
|
|
|
|
|
|
- _voices = CreateArray<VoiceContext>(Params.VoiceCount);
|
|
|
+ _effects = CreateArray<EffectContext>(rendererParams.EffectCount);
|
|
|
|
|
|
InitializeAudioOut();
|
|
|
|
|
|
@@ -205,6 +209,16 @@ namespace Ryujinx.HLE.HOS.Services.Audio.AudioRendererManager
|
|
|
voiceCtx.PlayState = voice.PlayState;
|
|
|
}
|
|
|
|
|
|
+ EffectIn[] effectsIn = reader.Read<EffectIn>(inputHeader.EffectSize);
|
|
|
+
|
|
|
+ for (int index = 0; index < effectsIn.Length; index++)
|
|
|
+ {
|
|
|
+ if (effectsIn[index].IsNew != 0)
|
|
|
+ {
|
|
|
+ _effects[index].OutStatus.State = EffectState.New;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
UpdateAudio();
|
|
|
|
|
|
UpdateDataHeader outputHeader = new UpdateDataHeader();
|
|
|
@@ -245,6 +259,11 @@ namespace Ryujinx.HLE.HOS.Services.Audio.AudioRendererManager
|
|
|
writer.Write(voice.OutStatus);
|
|
|
}
|
|
|
|
|
|
+ foreach (EffectContext effect in _effects)
|
|
|
+ {
|
|
|
+ writer.Write(effect.OutStatus);
|
|
|
+ }
|
|
|
+
|
|
|
return ResultCode.Success;
|
|
|
}
|
|
|
|