Browse Source

libobs/audio-monitoring: Remove unnecessary device

jpark37 4 years ago
parent
commit
63ffae7d74
1 changed files with 7 additions and 8 deletions
  1. 7 8
      libobs/audio-monitoring/win32/wasapi-output.c

+ 7 - 8
libobs/audio-monitoring/win32/wasapi-output.c

@@ -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;