diff options
author | Pavel Dubsky <pavel.dubsky@qt.io> | 2023-10-03 11:49:05 +0200 |
---|---|---|
committer | Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> | 2023-10-05 03:01:31 +0000 |
commit | f63286ea8b22008c207713070dc42abdc76c0d56 (patch) | |
tree | 72272a996ea859873a58caa6da41c19f18c5518b | |
parent | 49c18876913325de5e2272b6d6fc2b129ebc6859 (diff) |
Add audio warm-up opt out option
Current workaround to fix audio cutting out in the beginning of the
audio on Windows introduced some weird side effects which are hard to
reproduce, such as: blocking sleep mode, stucking CPU core at the
minimum frequency. So far, there's no any other solution to the cutting
sound issue, so an environment variable that provides the ability to
opt out is introduced.
Task-number: QTBUG-117528
Task-number: QTBUG-117612
Change-Id: I8b6ecab5cb3ae9136fd29adf5186d15c9128707f
Reviewed-by: Artem Dyomin <artem.dyomin@qt.io>
Reviewed-by: Jøger Hansegård <joger.hansegard@qt.io>
(cherry picked from commit 194b1b22dcd49df3949a6c8ed5d54585970798cf)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
(cherry picked from commit ac55a1c164de20c11143aae6feb49a78cb1d3d15)
-rw-r--r-- | src/multimedia/windows/qwindowsmediadevices.cpp | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/src/multimedia/windows/qwindowsmediadevices.cpp b/src/multimedia/windows/qwindowsmediadevices.cpp index 3027cde1e..fbdc46fbe 100644 --- a/src/multimedia/windows/qwindowsmediadevices.cpp +++ b/src/multimedia/windows/qwindowsmediadevices.cpp @@ -291,8 +291,20 @@ QPlatformAudioSink *QWindowsMediaDevices::createAudioSink(const QAudioDevice &de return new QWindowsAudioSink(devInfo->immDev(), parent); } +static bool isPrepareAudioEnabled() +{ + static bool isDisableAudioPrepareSet = false; + static const int disableAudioPrepare = + qEnvironmentVariableIntValue("QT_DISABLE_AUDIO_PREPARE", &isDisableAudioPrepareSet); + + return !isDisableAudioPrepareSet || disableAudioPrepare == 0; +} + void QWindowsMediaDevices::prepareAudio() { + if (!isPrepareAudioEnabled()) + return; + if (m_isAudioClientWarmedUp.exchange(true)) return; |