/ src / Ryujinx.Audio / Integration / IHardwareDeviceDriver.cs
IHardwareDeviceDriver.cs
 1  using Ryujinx.Audio.Common;
 2  using Ryujinx.Memory;
 3  using System;
 4  using System.Threading;
 5  
 6  namespace Ryujinx.Audio.Integration
 7  {
 8      /// <summary>
 9      /// Represent an hardware device driver used in <see cref="Output.AudioOutputSystem"/>.
10      /// </summary>
11      public interface IHardwareDeviceDriver : IDisposable
12      {
13          public enum Direction
14          {
15              Input,
16              Output,
17          }
18  
19          float Volume { get; set; }
20  
21          IHardwareDeviceSession OpenDeviceSession(Direction direction, IVirtualMemoryManager memoryManager, SampleFormat sampleFormat, uint sampleRate, uint channelCount);
22  
23          ManualResetEvent GetUpdateRequiredEvent();
24          ManualResetEvent GetPauseEvent();
25  
26          bool SupportsDirection(Direction direction);
27          bool SupportsSampleRate(uint sampleRate);
28          bool SupportsSampleFormat(SampleFormat sampleFormat);
29          bool SupportsChannelCount(uint channelCount);
30  
31          static abstract bool IsSupported { get; }
32  
33          IHardwareDeviceDriver GetRealDeviceDriver()
34          {
35              return this;
36          }
37      }
38  }