Пример #1
0
        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);
        }
Пример #2
0
        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());
        }
Пример #3
0
        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());
        }
Пример #4
0
        /// <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");
        }