| 
					
				 | 
			
			
				@@ -30,7 +30,6 @@ ACTUALLY_DEFINE_GUID(IID_IAudioRenderClient, 0xF294ACFC, 0x3146, 0x4483, 0xA7, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 struct audio_monitor { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	obs_source_t *source; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	IMMDevice *device; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	IAudioClient *client; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	IAudioRenderClient *render; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -222,7 +221,6 @@ static inline void audio_monitor_free(struct audio_monitor *monitor) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	if (monitor->client) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		monitor->client->lpVtbl->Stop(monitor->client); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	safe_release(monitor->device); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	safe_release(monitor->client); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	safe_release(monitor->render); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	audio_resampler_destroy(monitor->resampler); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -290,14 +288,15 @@ static bool audio_monitor_init(struct audio_monitor *monitor, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		return false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	IMMDevice *device = NULL; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	if (strcmp(id, "default") == 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		hr = immde->lpVtbl->GetDefaultAudioEndpoint( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			immde, eRender, eConsole, &monitor->device); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		hr = immde->lpVtbl->GetDefaultAudioEndpoint(immde, eRender, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							    eConsole, &device); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		wchar_t w_id[512]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		os_utf8_to_wcs(id, 0, w_id, 512); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		hr = immde->lpVtbl->GetDevice(immde, w_id, &monitor->device); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		hr = immde->lpVtbl->GetDevice(immde, w_id, &device); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	if (FAILED(hr)) { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -308,9 +307,9 @@ static bool audio_monitor_init(struct audio_monitor *monitor, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	/* ------------------------------------------ * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	 * Init client                                */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	hr = monitor->device->lpVtbl->Activate(monitor->device, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					       &IID_IAudioClient, CLSCTX_ALL, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					       NULL, (void **)&monitor->client); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	hr = device->lpVtbl->Activate(device, &IID_IAudioClient, CLSCTX_ALL, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				      NULL, (void **)&monitor->client); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	device->lpVtbl->Release(device); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	if (FAILED(hr)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		warn("%s: Failed to activate device: %08lX", __FUNCTION__, hr); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		goto fail; 
			 |