WASAPI Exclusive - некорректная разблокировка устройства [не баг]

Автор Evgeniy1990, 14 октября 2021, 09:11:32

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

Evgeniy1990

Описание проблемы:

Если включена опция "Разблокировать устройство во время ожидания", то при приостановке воспроизведения, само звуковое устройство не может разблокироваться (освободиться) вовремя, а продолжает оставаться заблокированным (занятым). Это очень легко проверить, запустив параллельно еще одну сессию с любым произвольным видео, или аудио файлом, что в конечном итоге приводит к полному отсутствию звука. А если он и появляется, то возникает рассинхрон.

Алгоритм воспроизведения:

1. Запустить первую сессию с любым произвольным видео, или аудио файлом в режиме WASAPI Exclusive, со включенной опцией "Разблокировать устройство во время ожидания".
2. Запустить вторую (новую) сессию с любым произвольным видео, или аудио файлом.
3. Поставить воспроизводимый видео, или аудио файл в первой сессии в режим "Пауза".
4. Вернуться ко второй сессии, в которой продолжается воспроизведение любого произвольного видео, или аудио файла.

Фактический результат:

После приостановки воспроизведения в первой сессии, звук во второй сессии не появляется, хотя должен, так как изначально (первоначально) была включена соответствующая опция "Разблокировать устройство во время ожидания".
Он появится лишь в том случае, если приостановить воспроизведение во второй сессии, а затем заново возобновить его, но это уже некорректное поведение и работа, поскольку в этом случае может быть рассинхрон и он есть на самом деле.

Ожидаемый результат:

После приостановки воспроизведения в первой сессии, звук во второй сессии должен сразу же появляться без всякого рассинхрона и задержки, причем неважно шло в ней (второй сессии) воспроизведение, или же было приостановлено.

P.S.

Данный баг является очередной поломкой, поскольку раньше, при данной опции, звук сразу же возвращался.
Motherboards: ASUS P5Q/GIGABYTE EP35C-DS3R, CPU: Core 2 Duo E8300/E8400, Memory: DDR2/DDR3, Video: MSI GTX 465/ASUS EAH5770/GTX 650 Ti, Audio: ASUS Xonar DG 5.1/Creative SB 5.1. VX/X-Fi Xtreme Gamer.

Aleksoid1978

Покажи фильтры во второй сессии.

По идее там должен быть DSound вывод. Если так - то какие вопросы то к нам.
AMD Ryzen 5 3600 /GIGABYTE B450 Gaming X /AMD Radeon R9 16Gb@3200 /Kingston 500Gb M.2 /GTX 1650 /Samsung U28R550UQI /OLED Philips 55OLED707 /Yamaha RX-V471 + NS-555 + NS-C444 + NS-333 + YST-SW215

Evgeniy1990

Aleksoid1978,
Цитата: Aleksoid1978 от 14 октября 2021, 10:03:47
Покажи фильтры во второй сессии.

По идее там должен быть DSound вывод. Если так - то какие вопросы то к нам.
Все верно, там у меня как раз этот DirectSound. Но проблема не в этом, а в том, что звуковое устройство не освобождается строго после установки воспроизведения в режим "Пауза" в первой сессии. Это просто для примера я вам привел вторую сессию. Обычно я, например, первоначально проверял таким образом - первая сессия нашего плеера в режиме WASAPI Exclusive, а в качестве параллельно запущенной выступал сам браузер с HTML5-плеером. Я точно помню, что раньше звук моментально возвращался, как только я освобождал звуковое устройство, поставив видео на паузу в основной первой сессии, т.е. там, где используется именно режим WASAPI Exclusive. Сейчас звук или возвращается с опозданием, или его просто нет, даже после освобождения звукового устройства. Вот в чем суть. Т.е. в качестве второй сессии необязательно может выступать именно наш плеер, это может быть любая программа, которая умеет воспроизводить видео, или аудио.
Motherboards: ASUS P5Q/GIGABYTE EP35C-DS3R, CPU: Core 2 Duo E8300/E8400, Memory: DDR2/DDR3, Video: MSI GTX 465/ASUS EAH5770/GTX 650 Ti, Audio: ASUS Xonar DG 5.1/Creative SB 5.1. VX/X-Fi Xtreme Gamer.

Aleksoid1978

Таймаут в 3 секунды, так было всегда(изначально). Ибо в DirectShow нет возможности отличить паузу от перемотки.
AMD Ryzen 5 3600 /GIGABYTE B450 Gaming X /AMD Radeon R9 16Gb@3200 /Kingston 500Gb M.2 /GTX 1650 /Samsung U28R550UQI /OLED Philips 55OLED707 /Yamaha RX-V471 + NS-555 + NS-C444 + NS-333 + YST-SW215