public static async Task <T> ActivateAudioInterfaceAsync <T>(string deviceInterfacePath) { ActivateAudioInterfaceCompletionHandler <T> activationHandler = new ActivateAudioInterfaceCompletionHandler <T>(); ActivateAudioInterfaceAsyncInternal(deviceInterfacePath, typeof(T).GUID, IntPtr.Zero, activationHandler, out _); return(await activationHandler); }
private async Task <IAudioClient2> Activate() { ActivateAudioInterfaceCompletionHandler activateCompletionHandler = new ActivateAudioInterfaceCompletionHandler( audioClient2 => { this.InitializeCaptureDevice(audioClient2); }); Guid IID_IAudioClient2 = new Guid("726778CD-F60A-4eda-82DE-E47610CD78AA"); IActivateAudioInterfaceAsyncOperation activationOperation; // This call must be made on the main UI thread. NativeMethods.ActivateAudioInterfaceAsync(this.device, IID_IAudioClient2, IntPtr.Zero, activateCompletionHandler, out activationOperation); return(await activateCompletionHandler.GetTask()); }
private static IAudioEndpointVolume GetAudioEndpointVolumeInterface() { var speakerId = MediaDevice.GetDefaultAudioRenderId(AudioDeviceRole.Default); var completionHandler = new ActivateAudioInterfaceCompletionHandler <IAudioEndpointVolume>(); var hr = ActivateAudioInterfaceAsync( speakerId, typeof(IAudioEndpointVolume).GetTypeInfo().GUID, IntPtr.Zero, completionHandler, out var activateOperation); Debug.Assert(hr == (uint)HResult.S_OK); return(completionHandler.WaitForCompletion()); }
/// <summary> /// Create, activate and initialize the AudioClient /// </summary> /// <returns></returns> private async Task Activate() { this.EventWriterDLL.BuildLine("+2 start => WasapiOutRT::Activate => starting"); var activateCompletionHandler = new ActivateAudioInterfaceCompletionHandler( (audioClient2) => { this.InitializeAudio(audioClient2); }); this.EventWriterDLL.BuildLine("+3 start => WasapiOutRT::Activate => getting default audio stream"); var IID_IAudioClient2 = new Guid("726778CD-F60A-4eda-82DE-E47610CD78AA"); IActivateAudioInterfaceAsyncOperation activationOperation; NativeMethods.ActivateAudioInterfaceAsync(this.device, IID_IAudioClient2, IntPtr.Zero, activateCompletionHandler, out activationOperation); await activateCompletionHandler.GetTask(); this.EventWriterDLL.BuildLine("+5 start => WasapiOutRT::Activate => creating AudioClient"); }