From: Marcus Tomlinson Date: Fri, 2 Nov 2018 16:01:49 +0000 (+0000) Subject: Allow loopback without having to define output parameters X-Git-Url: https://git.carlh.net/gitweb/?a=commitdiff_plain;h=4e5d52a99bdf324c30ea8818b74696c45dac502d;p=rtaudio-cdist.git Allow loopback without having to define output parameters --- 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 ) ) {