using System;
namespace NAudio.CoreAudioApi.Interfaces
{
///
/// interface to receive session related events
///
public interface IAudioSessionEventsHandler
{
///
/// notification of volume changes including muting of audio session
///
/// the current volume
/// the current mute state, true muted, false otherwise
void OnVolumeChanged(float volume, bool isMuted);
///
/// notification of display name changed
///
/// the current display name
void OnDisplayNameChanged(string displayName);
///
/// notification of icon path changed
///
/// the current icon path
void OnIconPathChanged(string iconPath);
///
/// notification of the client that the volume level of an audio channel in the session submix has changed
///
/// The channel count.
/// An array of volumnes cooresponding with each channel index.
/// The number of the channel whose volume level changed.
void OnChannelVolumeChanged(UInt32 channelCount, IntPtr newVolumes, UInt32 channelIndex);
///
/// notification of the client that the grouping parameter for the session has changed
///
/// >The new grouping parameter for the session.
void OnGroupingParamChanged(ref Guid groupingId);
///
/// notification of the client that the stream-activity state of the session has changed
///
/// The new session state.
void OnStateChanged(AudioSessionState state);
///
/// notification of the client that the session has been disconnected
///
/// The reason that the audio session was disconnected.
void OnSessionDisconnected(AudioSessionDisconnectReason disconnectReason);
}
}