From 4e5d52a99bdf324c30ea8818b74696c45dac502d Mon Sep 17 00:00:00 2001 From: Marcus Tomlinson Date: Fri, 2 Nov 2018 16:01:49 +0000 Subject: [PATCH] Allow loopback without having to define output parameters --- RtAudio.cpp | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/RtAudio.cpp b/RtAudio.cpp index 34472d8..91e4f2c 100644 --- a/RtAudio.cpp +++ b/RtAudio.cpp @@ -4764,6 +4764,13 @@ bool RtApiWasapi::probeDeviceOpen( unsigned int device, StreamMode mode, unsigne // if device index falls within render devices and is configured for loopback if ( device < renderDeviceCount && mode == INPUT ) { + // if renderAudioClient is not initialised, initialise it now + IAudioClient*& renderAudioClient = ( ( WasapiHandle* ) stream_.apiHandle )->renderAudioClient; + if ( !renderAudioClient ) + { + probeDeviceOpen( device, OUTPUT, channels, firstChannel, sampleRate, format, bufferSize, options ); + } + // retrieve captureAudioClient from devicePtr IAudioClient*& captureAudioClient = ( ( WasapiHandle* ) stream_.apiHandle )->captureAudioClient; @@ -4793,8 +4800,12 @@ bool RtApiWasapi::probeDeviceOpen( unsigned int device, StreamMode mode, unsigne // if device index falls within render devices and is configured for output if ( device < renderDeviceCount && mode == OUTPUT ) { - // retrieve renderAudioClient from devicePtr + // if renderAudioClient is already initialised, don't initialise it again IAudioClient*& renderAudioClient = ( ( WasapiHandle* ) stream_.apiHandle )->renderAudioClient; + if ( renderAudioClient ) + { + return SUCCESS; + } hr = renderDevices->Item( device, &devicePtr ); if ( FAILED( hr ) ) { -- 2.30.2