diff options
| author | TSR Berry <20988865+TSRBerry@users.noreply.github.com> | 2023-04-08 01:22:00 +0200 |
|---|---|---|
| committer | Mary <thog@protonmail.com> | 2023-04-27 23:51:14 +0200 |
| commit | cee712105850ac3385cd0091a923438167433f9f (patch) | |
| tree | 4a5274b21d8b7f938c0d0ce18736d3f2993b11b1 /Ryujinx.Audio.Backends.OpenAL/OpenALHardwareDeviceDriver.cs | |
| parent | cd124bda587ef09668a971fa1cac1c3f0cfc9f21 (diff) | |
Move solution and projects to src
Diffstat (limited to 'Ryujinx.Audio.Backends.OpenAL/OpenALHardwareDeviceDriver.cs')
| -rw-r--r-- | Ryujinx.Audio.Backends.OpenAL/OpenALHardwareDeviceDriver.cs | 167 |
1 files changed, 0 insertions, 167 deletions
diff --git a/Ryujinx.Audio.Backends.OpenAL/OpenALHardwareDeviceDriver.cs b/Ryujinx.Audio.Backends.OpenAL/OpenALHardwareDeviceDriver.cs deleted file mode 100644 index 0c793f24..00000000 --- a/Ryujinx.Audio.Backends.OpenAL/OpenALHardwareDeviceDriver.cs +++ /dev/null @@ -1,167 +0,0 @@ -using OpenTK.Audio.OpenAL; -using Ryujinx.Audio.Common; -using Ryujinx.Audio.Integration; -using Ryujinx.Memory; -using System; -using System.Collections.Concurrent; -using System.Linq; -using System.Threading; -using static Ryujinx.Audio.Integration.IHardwareDeviceDriver; - -namespace Ryujinx.Audio.Backends.OpenAL -{ - public class OpenALHardwareDeviceDriver : IHardwareDeviceDriver - { - private readonly ALDevice _device; - private readonly ALContext _context; - private readonly ManualResetEvent _updateRequiredEvent; - private readonly ManualResetEvent _pauseEvent; - private readonly ConcurrentDictionary<OpenALHardwareDeviceSession, byte> _sessions; - private bool _stillRunning; - private Thread _updaterThread; - - public OpenALHardwareDeviceDriver() - { - _device = ALC.OpenDevice(""); - _context = ALC.CreateContext(_device, new ALContextAttributes()); - _updateRequiredEvent = new ManualResetEvent(false); - _pauseEvent = new ManualResetEvent(true); - _sessions = new ConcurrentDictionary<OpenALHardwareDeviceSession, byte>(); - - _stillRunning = true; - _updaterThread = new Thread(Update) - { - Name = "HardwareDeviceDriver.OpenAL" - }; - - _updaterThread.Start(); - } - - public static bool IsSupported - { - get - { - try - { - return ALC.GetStringList(GetEnumerationStringList.DeviceSpecifier).Any(); - } - catch - { - return false; - } - } - } - - public IHardwareDeviceSession OpenDeviceSession(Direction direction, IVirtualMemoryManager memoryManager, SampleFormat sampleFormat, uint sampleRate, uint channelCount, float volume) - { - if (channelCount == 0) - { - channelCount = 2; - } - - if (sampleRate == 0) - { - sampleRate = Constants.TargetSampleRate; - } - - if (direction != Direction.Output) - { - throw new ArgumentException($"{direction}"); - } - else if (!SupportsChannelCount(channelCount)) - { - throw new ArgumentException($"{channelCount}"); - } - - OpenALHardwareDeviceSession session = new OpenALHardwareDeviceSession(this, memoryManager, sampleFormat, sampleRate, channelCount, volume); - - _sessions.TryAdd(session, 0); - - return session; - } - - internal bool Unregister(OpenALHardwareDeviceSession session) - { - return _sessions.TryRemove(session, out _); - } - - public ManualResetEvent GetUpdateRequiredEvent() - { - return _updateRequiredEvent; - } - - public ManualResetEvent GetPauseEvent() - { - return _pauseEvent; - } - - private void Update() - { - ALC.MakeContextCurrent(_context); - - while (_stillRunning) - { - bool updateRequired = false; - - foreach (OpenALHardwareDeviceSession session in _sessions.Keys) - { - if (session.Update()) - { - updateRequired = true; - } - } - - if (updateRequired) - { - _updateRequiredEvent.Set(); - } - - // If it's not slept it will waste cycles. - Thread.Sleep(10); - } - } - - public void Dispose() - { - Dispose(true); - } - - protected virtual void Dispose(bool disposing) - { - if (disposing) - { - _stillRunning = false; - - foreach (OpenALHardwareDeviceSession session in _sessions.Keys) - { - session.Dispose(); - } - - ALC.DestroyContext(_context); - ALC.CloseDevice(_device); - - _pauseEvent.Dispose(); - } - } - - public bool SupportsSampleRate(uint sampleRate) - { - return true; - } - - public bool SupportsSampleFormat(SampleFormat sampleFormat) - { - return true; - } - - public bool SupportsChannelCount(uint channelCount) - { - return channelCount == 1 || channelCount == 2 || channelCount == 6; - } - - public bool SupportsDirection(Direction direction) - { - return direction == Direction.Output; - } - } -} |
