aboutsummaryrefslogtreecommitdiff
path: root/Ryujinx.Audio/Integration
diff options
context:
space:
mode:
Diffstat (limited to 'Ryujinx.Audio/Integration')
-rw-r--r--Ryujinx.Audio/Integration/HardwareDeviceImpl.cs14
-rw-r--r--Ryujinx.Audio/Integration/IHardwareDevice.cs12
-rw-r--r--Ryujinx.Audio/Integration/IHardwareDeviceDriver.cs2
3 files changed, 25 insertions, 3 deletions
diff --git a/Ryujinx.Audio/Integration/HardwareDeviceImpl.cs b/Ryujinx.Audio/Integration/HardwareDeviceImpl.cs
index d489b008..d51aa3fb 100644
--- a/Ryujinx.Audio/Integration/HardwareDeviceImpl.cs
+++ b/Ryujinx.Audio/Integration/HardwareDeviceImpl.cs
@@ -30,9 +30,9 @@ namespace Ryujinx.Audio.Integration
private byte[] _buffer;
- public HardwareDeviceImpl(IHardwareDeviceDriver deviceDriver, uint channelCount, uint sampleRate)
+ public HardwareDeviceImpl(IHardwareDeviceDriver deviceDriver, uint channelCount, uint sampleRate, float volume)
{
- _session = deviceDriver.OpenDeviceSession(IHardwareDeviceDriver.Direction.Output, null, SampleFormat.PcmInt16, sampleRate, channelCount);
+ _session = deviceDriver.OpenDeviceSession(IHardwareDeviceDriver.Direction.Output, null, SampleFormat.PcmInt16, sampleRate, channelCount, volume);
_channelCount = channelCount;
_sampleRate = sampleRate;
_currentBufferTag = 0;
@@ -56,6 +56,16 @@ namespace Ryujinx.Audio.Integration
_currentBufferTag = _currentBufferTag % 4;
}
+ public void SetVolume(float volume)
+ {
+ _session.SetVolume(volume);
+ }
+
+ public float GetVolume()
+ {
+ return _session.GetVolume();
+ }
+
public uint GetChannelCount()
{
return _channelCount;
diff --git a/Ryujinx.Audio/Integration/IHardwareDevice.cs b/Ryujinx.Audio/Integration/IHardwareDevice.cs
index 0f67b2c8..1eeb5ca4 100644
--- a/Ryujinx.Audio/Integration/IHardwareDevice.cs
+++ b/Ryujinx.Audio/Integration/IHardwareDevice.cs
@@ -26,6 +26,18 @@ namespace Ryujinx.Audio.Integration
public interface IHardwareDevice : IDisposable
{
/// <summary>
+ /// Sets the volume level for this device.
+ /// </summary>
+ /// <param name="volume">The volume level to set.</param>
+ void SetVolume(float volume);
+
+ /// <summary>
+ /// Gets the volume level for this device.
+ /// </summary>
+ /// <returns>The volume level of this device.</returns>
+ float GetVolume();
+
+ /// <summary>
/// Get the supported sample rate of this device.
/// </summary>
/// <returns>The supported sample rate of this device.</returns>
diff --git a/Ryujinx.Audio/Integration/IHardwareDeviceDriver.cs b/Ryujinx.Audio/Integration/IHardwareDeviceDriver.cs
index 1a53fa9b..c1869ce1 100644
--- a/Ryujinx.Audio/Integration/IHardwareDeviceDriver.cs
+++ b/Ryujinx.Audio/Integration/IHardwareDeviceDriver.cs
@@ -33,7 +33,7 @@ namespace Ryujinx.Audio.Integration
Output
}
- IHardwareDeviceSession OpenDeviceSession(Direction direction, IVirtualMemoryManager memoryManager, SampleFormat sampleFormat, uint sampleRate, uint channelCount);
+ IHardwareDeviceSession OpenDeviceSession(Direction direction, IVirtualMemoryManager memoryManager, SampleFormat sampleFormat, uint sampleRate, uint channelCount, float volume = 1f);
ManualResetEvent GetUpdateRequiredEvent();
ManualResetEvent GetPauseEvent();