From d1230c292e39283aaef66d405d23be3b6f7afb62 Mon Sep 17 00:00:00 2001 From: jpark37 Date: Mon, 27 Sep 2021 12:17:57 -0700 Subject: [PATCH] win-wasapi: Register capture thread with MMCSS Ensure audio gets more priority to help prevent glitching. --- plugins/win-wasapi/CMakeLists.txt | 1 + plugins/win-wasapi/win-wasapi.cpp | 8 ++++++++ 2 files changed, 9 insertions(+) diff --git a/plugins/win-wasapi/CMakeLists.txt b/plugins/win-wasapi/CMakeLists.txt index 387efb608..4a5542960 100644 --- a/plugins/win-wasapi/CMakeLists.txt +++ b/plugins/win-wasapi/CMakeLists.txt @@ -15,6 +15,7 @@ add_library(win-wasapi MODULE ${win-wasapi_SOURCES} ${win-wasapi_HEADERS}) target_link_libraries(win-wasapi + Avrt libobs) set_target_properties(win-wasapi PROPERTIES FOLDER "plugins") diff --git a/plugins/win-wasapi/win-wasapi.cpp b/plugins/win-wasapi/win-wasapi.cpp index 03597f7e1..801fd9c10 100644 --- a/plugins/win-wasapi/win-wasapi.cpp +++ b/plugins/win-wasapi/win-wasapi.cpp @@ -13,6 +13,8 @@ #include #include +#include + using namespace std; #define OPT_DEVICE_ID "device_id" @@ -577,6 +579,9 @@ DWORD WINAPI WASAPISource::CaptureThread(LPVOID param) hr); } + DWORD unused = 0; + const HANDLE handle = AvSetMmThreadCharacteristics(L"Audio", &unused); + WASAPISource *source = (WASAPISource *)param; const HANDLE inactive_sigs[] = { @@ -684,6 +689,9 @@ DWORD WINAPI WASAPISource::CaptureThread(LPVOID param) } } + if (handle) + AvRevertMmThreadCharacteristics(handle); + if (com_initialized) CoUninitialize();