CompressorEffect.cs 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. using Ryujinx.Audio.Renderer.Common;
  2. using Ryujinx.Audio.Renderer.Dsp.State;
  3. using Ryujinx.Audio.Renderer.Parameter;
  4. using Ryujinx.Audio.Renderer.Parameter.Effect;
  5. using Ryujinx.Audio.Renderer.Server.MemoryPool;
  6. using System;
  7. using System.Diagnostics;
  8. using System.Runtime.InteropServices;
  9. namespace Ryujinx.Audio.Renderer.Server.Effect
  10. {
  11. /// <summary>
  12. /// Server state for a compressor effect.
  13. /// </summary>
  14. public class CompressorEffect : BaseEffect
  15. {
  16. /// <summary>
  17. /// The compressor parameter.
  18. /// </summary>
  19. public CompressorParameter Parameter;
  20. /// <summary>
  21. /// The compressor state.
  22. /// </summary>
  23. public Memory<CompressorState> State { get; }
  24. /// <summary>
  25. /// Create a new <see cref="CompressorEffect"/>.
  26. /// </summary>
  27. public CompressorEffect()
  28. {
  29. State = new CompressorState[1];
  30. }
  31. public override EffectType TargetEffectType => EffectType.Compressor;
  32. public override ulong GetWorkBuffer(int index)
  33. {
  34. return GetSingleBuffer();
  35. }
  36. public override void Update(out BehaviourParameter.ErrorInfo updateErrorInfo, ref EffectInParameterVersion1 parameter, PoolMapper mapper)
  37. {
  38. // Nintendo doesn't do anything here but we still require updateErrorInfo to be initialised.
  39. updateErrorInfo = new BehaviourParameter.ErrorInfo();
  40. }
  41. public override void Update(out BehaviourParameter.ErrorInfo updateErrorInfo, ref EffectInParameterVersion2 parameter, PoolMapper mapper)
  42. {
  43. Debug.Assert(IsTypeValid(ref parameter));
  44. UpdateParameterBase(ref parameter);
  45. Parameter = MemoryMarshal.Cast<byte, CompressorParameter>(parameter.SpecificData)[0];
  46. IsEnabled = parameter.IsEnabled;
  47. updateErrorInfo = new BehaviourParameter.ErrorInfo();
  48. }
  49. public override void UpdateForCommandGeneration()
  50. {
  51. UpdateUsageStateForCommandGeneration();
  52. Parameter.Status = UsageState.Enabled;
  53. }
  54. }
  55. }