// 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;
// 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 ) ) {