internal AudioSessionManager(IAudioSessionManager audioSessionManager) { _audioSessionManager2 = audioSessionManager as IAudioSessionManager2; //if (_audioSessionManager2 == null) // throw new InvalidOperationException("Not supported on this version of Windows"); }
internal AudioSessionManager(IAudioSessionManager audioSessionManager) { audioSessionInterface = audioSessionManager; audioSessionInterface2 = audioSessionManager as IAudioSessionManager2; RefreshSessions(); }
public void SetAppAndSystemVolume(float volume, bool muted) { Guid guidEnumetator = typeof(IMMDeviceEnumerator).GUID; Guid guidManager = typeof(IAudioSessionManager).GUID; Guid guidVolume = typeof(IAudioEndpointVolume).GUID; CoCreateInstance(ref MMDeviceEnumerator, null, CLSCTX_ALL, ref guidEnumetator, out IUnknown _enumerater); IMMDeviceEnumerator enumerator = _enumerater as IMMDeviceEnumerator; enumerator.GetDefaultAudioEndpoint(EDataFlow.eRender, ERole.eMultimedia, out IMMDevice endpoint); endpoint.Activate(ref guidManager, CLSCTX_ALL, IntPtr.Zero, out IUnknown _manager); endpoint.Activate(ref guidVolume, CLSCTX_ALL, IntPtr.Zero, out IUnknown _volume); IAudioSessionManager manager = _manager as IAudioSessionManager; manager.GetSimpleAudioVolume(Guid.Empty, false, out ISimpleAudioVolume processvolume); processvolume.GetMasterVolume(out float prevolume); if (prevolume != volume) { processvolume.SetMasterVolume(volume, Guid.Empty); } processvolume.SetMute(muted, Guid.Empty); IAudioEndpointVolume systemvolume = _volume as IAudioEndpointVolume; systemvolume.SetMasterVolumeLevelScalar(muted?0:1, Guid.Empty); systemvolume.SetMute(muted, Guid.Empty); }
/// <summary> /// Processes the media session event. /// </summary> private void ProcessEvent() { while (m_Session != null) { try { m_Session.GetEvent(1, out IMFMediaEvent _event);//requests events and returns immediately _event.GetType(out MediaEventType eventtype); switch (eventtype) { case MediaEventType.MESessionEnded: PlaybackState = PlaybackState.Stopped; PlaybackStopped?.Invoke(this, new StoppedEventArgs()); break; case MediaEventType.MESessionTopologyStatus: //topology loaded Guid guidManager = typeof(IAudioSessionManager).GUID; (new MMDeviceEnumeratorComObject() as IMMDeviceEnumerator). GetDefaultAudioEndpoint(CoreAudioApi.DataFlow.Render, CoreAudioApi.Role.Multimedia, out IMMDevice endoint); endoint.Activate(ref guidManager, ClsCtx.ALL, IntPtr.Zero, out object _manager); IAudioSessionManager manager = _manager as IAudioSessionManager; manager.GetSimpleAudioVolume(Guid.Empty, 0, out m_volume); m_Session.GetClock(out m_clock); Guid guid_ratecontrol = typeof(IMFRateControl).GUID; Guid MF_RATE_CONTROL_SERVICE = Guid.Parse("866fa297-b802-4bf8-9dc9-5e3b6a9f53c9"); MediaFoundationInterop.MFGetService(m_Session, ref MF_RATE_CONTROL_SERVICE, ref guid_ratecontrol, out object _control); //gets rate control m_rate = _control as IMFRateControl; Prepared = true; break; } _event = null; } catch (COMException e) { if (e.HResult == MediaFoundationErrors.MF_E_NO_EVENTS_AVAILABLE) { continue; } else { throw e; } } catch (ThreadAbortException) { break; } } }
private static void MuteApplication() { IMMDeviceEnumerator deviceEnumerator = (IMMDeviceEnumerator)(new MMDeviceEnumerator()); deviceEnumerator.GetDefaultAudioEndpoint(DataFlow.Render, Role.Multimedia, out IMMDevice device); Guid guid = typeof(IAudioSessionManager).GUID; device.Activate(ref guid, 0, IntPtr.Zero, out Object interfacePointer); IAudioSessionManager audioSessionManager = (IAudioSessionManager)interfacePointer; audioSessionManager.GetSimpleAudioVolume(Guid.Empty, 0, out ISimpleAudioVolume simpleAudioVolume); Marshal.ThrowExceptionForHR(simpleAudioVolume.SetMute(true, Guid.Empty)); audioSessionManager.GetAudioSessionControl(Guid.Empty, 0, out IAudioSessionControl audioSessionControl); Marshal.ThrowExceptionForHR(audioSessionControl.SetDisplayName("Audio Fixer", Guid.Empty)); Marshal.ReleaseComObject(audioSessionControl); Marshal.ReleaseComObject(simpleAudioVolume); Marshal.ReleaseComObject(audioSessionManager); Marshal.ReleaseComObject(device); Marshal.ReleaseComObject(deviceEnumerator); }
internal AudioSessionManager(IAudioSessionManager audioSessionManager) { this.audioSessionInterface = audioSessionManager; this.audioSessionInterface2 = (audioSessionManager as IAudioSessionManager2); this.RefreshSessions(); }
internal AudioSessionManager(IAudioSessionManager audioSessionManager) { audioSessionInterface = audioSessionManager; }
internal AudioSessionManager(IAudioSessionManager realAudioSessionManager) { _AudioSessionManager = realAudioSessionManager; }