diff options
author | Narr the Reg <juangerman-13@hotmail.com> | 2023-02-10 02:38:03 +0100 |
---|---|---|
committer | Narr the Reg <juangerman-13@hotmail.com> | 2023-02-10 02:38:03 +0100 |
commit | 7c0dcea96cef421b6f670cdc5e7b1b3ed63bf939 (patch) | |
tree | 5d0f35f4bf0978168cfb6c17c0c05673d09330e2 /src/audio_core/sink/cubeb_sink.cpp | |
parent | Merge pull request #9749 from ameerj/pr9559-partial-revert (diff) | |
download | yuzu-7c0dcea96cef421b6f670cdc5e7b1b3ed63bf939.tar yuzu-7c0dcea96cef421b6f670cdc5e7b1b3ed63bf939.tar.gz yuzu-7c0dcea96cef421b6f670cdc5e7b1b3ed63bf939.tar.bz2 yuzu-7c0dcea96cef421b6f670cdc5e7b1b3ed63bf939.tar.lz yuzu-7c0dcea96cef421b6f670cdc5e7b1b3ed63bf939.tar.xz yuzu-7c0dcea96cef421b6f670cdc5e7b1b3ed63bf939.tar.zst yuzu-7c0dcea96cef421b6f670cdc5e7b1b3ed63bf939.zip |
Diffstat (limited to 'src/audio_core/sink/cubeb_sink.cpp')
-rw-r--r-- | src/audio_core/sink/cubeb_sink.cpp | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/src/audio_core/sink/cubeb_sink.cpp b/src/audio_core/sink/cubeb_sink.cpp index 32c1b1cb3..9133f5388 100644 --- a/src/audio_core/sink/cubeb_sink.cpp +++ b/src/audio_core/sink/cubeb_sink.cpp @@ -302,11 +302,21 @@ std::vector<std::string> ListCubebSinkDevices(bool capture) { std::vector<std::string> device_list; cubeb* ctx; +#ifdef _WIN32 + auto com_init_result = CoInitializeEx(nullptr, COINIT_MULTITHREADED); +#endif + if (cubeb_init(&ctx, "yuzu Device Enumerator", nullptr) != CUBEB_OK) { LOG_CRITICAL(Audio_Sink, "cubeb_init failed"); return {}; } +#ifdef _WIN32 + if (SUCCEEDED(com_init_result)) { + CoUninitialize(); + } +#endif + auto type{capture ? CUBEB_DEVICE_TYPE_INPUT : CUBEB_DEVICE_TYPE_OUTPUT}; cubeb_device_collection collection; if (cubeb_enumerate_devices(ctx, type, &collection) != CUBEB_OK) { @@ -329,12 +339,22 @@ std::vector<std::string> ListCubebSinkDevices(bool capture) { u32 GetCubebLatency() { cubeb* ctx; +#ifdef _WIN32 + auto com_init_result = CoInitializeEx(nullptr, COINIT_MULTITHREADED); +#endif + if (cubeb_init(&ctx, "yuzu Latency Getter", nullptr) != CUBEB_OK) { LOG_CRITICAL(Audio_Sink, "cubeb_init failed"); // Return a large latency so we choose SDL instead. return 10000u; } +#ifdef _WIN32 + if (SUCCEEDED(com_init_result)) { + CoUninitialize(); + } +#endif + cubeb_stream_params params{}; params.rate = TargetSampleRate; params.channels = 2; |