Files
FocusVolumeControlPlugin/src/FocusVolumeControl/AudioSessions/SystemVolumeAudioSession.cs
T

42 lines
978 B
C#
Raw Normal View History

using System;
using System.Runtime.InteropServices;
2023-08-20 20:52:48 -06:00
namespace FocusVolumeControl.AudioSessions;
internal sealed class SystemVolumeAudioSession : IAudioSession
2023-08-20 20:52:48 -06:00
{
public SystemVolumeAudioSession(IAudioEndpointVolume volumeControl)
2023-08-20 20:52:48 -06:00
{
_volumeControl = volumeControl;
}
IAudioEndpointVolume _volumeControl;
2023-08-20 20:52:48 -06:00
public string DisplayName => "System Volume";
public string GetIcon() => "Images/encoderIcon";
2023-08-20 20:52:48 -06:00
public void ToggleMute()
{
_volumeControl.SetMute(!IsMuted(), Guid.Empty);
2023-08-20 20:52:48 -06:00
}
public bool IsMuted()
{
_volumeControl.GetMute(out var mute);
return mute;
}
2023-08-20 20:52:48 -06:00
public void IncrementVolumeLevel(int step, int ticks)
{
_volumeControl.GetMasterVolumeLevelScalar(out var level);
level = VolumeHelpers.GetAdjustedVolume(level, step, ticks);
_volumeControl.SetMasterVolumeLevelScalar(level, Guid.Empty);
2023-08-20 20:52:48 -06:00
}
public int GetVolumeLevel()
{
_volumeControl.GetMasterVolumeLevelScalar(out var level);
return VolumeHelpers.GetVolumePercentage(level);
}
2023-08-20 20:52:48 -06:00
}