"WASAPI: Shared Mode" - пропадание звука [не баг, исправлено]

Автор Evgeniy1990, 23 мая 2016, 10:03:54

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

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

Aleksoid1978

Ладно - закрываю тогда тему, т.к. это не баг.
[merge_posts_bbcode]Добавлено: 2016-05-27 13:36:25[/merge_posts_bbcode]

Вариант №4 - https://yadi.sk/d/u4A6oW6xs3Y8J

[merge_posts_bbcode]Добавлено: 2016-05-27 15:17:48[/merge_posts_bbcode]

Вот Debug билд - https://yadi.sk/d/NAnNpKOns3apA
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Вариант №4 - https://yadi.sk/d/u4A6oW6xs3Y8J

Вот Debug билд - https://yadi.sk/d/NAnNpKOns3apA
В четвертом варианте звук также по прежнему не восстанавливается на более ранних операционных системах.
Прилагаю лог-файл с отладочного тестового билда: https://yadi.sk/i/BN02C3z1s3cJb
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

Странно - по логу ничего нужного совершенно нету.
Попробуй вот так - запусти Debug билд с Shared режимом. После этого еще одну копию MPC-HC но уже с Exclusive режимом. Подожди несколько секунд - закрой вторую копию. Потом закрой Debug билд и лог в студию.
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Странно - по логу ничего нужного совершенно нету.
Попробуй вот так - запусти Debug билд с Shared режимом. После этого еще одну копию MPC-HC но уже с Exclusive режимом. Подожди несколько секунд - закрой вторую копию. Потом закрой Debug билд и лог в студию.
Я так и сделал в первый раз с отладочным билдом.
Ладно, буду пробовать дальше... Попытка №2: https://yadi.sk/i/RL6uXo5Ps3gTc
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

Кажется понял в чем может быть дело, вот пробуем - https://yadi.sk/d/vfbVlywQs3giL
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Кажется понял в чем может быть дело, вот пробуем - https://yadi.sk/d/vfbVlywQs3giL
Проверил второй отладочный тестовый билд - звук не восстанавливается.
Прилагаю лог-файл с данного второго отладочного тестового билда: https://yadi.sk/i/-qRYHEI5s3hEM
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

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

Sanear нормально восстанавливает ??
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Очень и очень странно - я просто напросто не вижу в логе ошибок, которая случается в случае "перехвата" устройства другим приложением. Поэтому и звук не восстанавливается :)

Sanear нормально восстанавливает ??

Sanear нормально и всегда восстанавливает звук.
Вот лог-файл, при использовании Sanear: https://yadi.sk/i/j-ex5-u2s3igW
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

Да тут лог не причем - у него там своя логика.
[merge_posts_bbcode]Добавлено: 2016-05-29 20:08:10[/merge_posts_bbcode]

Вариант №5 - https://yadi.sk/d/VNVcDpKHs69Ft
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Вариант №5 - https://yadi.sk/d/VNVcDpKHs69Ft
Проверил пятый тестовый билд (пятый вариант).
Вот теперь наконец-то звук, после вызова аудио устройства, или же после закрытия другого плеера, при условии, что в нем в это время работал Exclusive-режим, полностью стал восстанавливаться на Windows 7.

В общем, вам удалось разобраться с восстановлением звука на более ранних операционных системах, т.е. на системах, ниже Windows 10. :)
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.

V0lt

Aleksoid1978
Таймаут в 1 секунду не мал будет для реинициализации? Не будут ли ложные срабатывания?

Не знаю какими блоками отправляет рендерер, но приходить от декодера он может довольно большими кусками (Monkey's Audio, TAK, WavPack).
Просто не такое уж частое событие реального отвала устройства. Можно и подольше подождать.

Aleksoid1978

Наоборот - 1 секунда это много. Обычно период запроса данных 20 - 100мс. У нас минимальное значение периода 50мс. Все зависит от звуковухи и драйвера. И если за этот период не поступило сообщения о запросе новых данных - значит что-то пошло не так. Так что я взял с огромным запасом.

Посмотри в отладчике во время работы значение переменной m_hnsPeriod(10000 = 1мс).
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

V0lt

Т.е., допустим, имея 2 секундный блок от декодера, мы все равно отдаем его кусками по 50 мс. Если так, тогда вроде нормально.

Я бы сделал побольше секунды 2 или даже 5. Зачем вообще часто теребить реинициализацию, если и устройство забрано и звук пропал? Спешить некуда, спокойно ждем, периодически пытаемся вернуть устройство.