MPC Audio Renderer - вечный баг с "A/V DeSync"

Автор Evgeniy1990, 23 февраля 2025, 21:15:18

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

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

Evgeniy1990

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

Примерно с того времени, когда была реализована масштабная переделка MPC Audio Renderer, в нем до сих пор осталась "A/V DeSync".

Условие проявления "A/V DeSync":

"A/V Desync" проявляется, когда само приложение MPC-BE используется при полной нагрузке на центральный процессор.

На практике это выглядит следующим образом:

1. Открываем любой локальный файл. Его открытие занимает чуть больше обычного времени.
2. После открытия файла, в нем несколько секунд сначала отсутствует звук, при этом видеокадры воспроизводятся нормально, а потом появляется звук и останавливаются уже видеокадры на несколько секунд.
3. Спустя некоторое количество времени (несколько секунд), начинают уже воспроизводится и видеокадры и сам звук, но, при этом, звук уходит вперед кадров видео.

Фактический результат: в конечном итоге, мы получаем классическую "A/V DeSync".
Ожидаемый результат: В конечном итоге, не должно быть "A/V DeSync".

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

0. Для начала нужно выбрать, чем нагрузить центральный процессор. Скажу сразу, что нагрузка на него должна быть полной и постоянной, хотя бы на время воспроизведения и получения данного бага. Наиболее подходящим будет так называемый "пси-нагрузчик".
1. Итак, открываем данный "пси-нагрузчик"
2. Выбираем уровень нагрузки = 100%, т.е. двигаем ползунок с левой стороны в правую сторону до конца.
3. Нажимаем на зеленую кнопку "Нагрузить процессор"
4. Пока процессор полностью нагружен, открываем любой произвольный локальный видео файл.

Фактический результат:
 
Открытие файла займет чуть больше времени. После открытия файла, в нем несколько секунд сначала не будет звука, видеокадры начнут воспроизводиться в обычном нормальном режиме, потом, через несколько секунд, появится звук, но приостановятся видеокадры, после чего, опять же через несколько секунд, начнут нормально воспроизводиться и видеокадры вместе со звуком, но он, т.е. звук, будет идти впереди воспроизводимых видеокадров. Это значит, что у нас возникла рассинхронизация (десинхронизация), т.е. "A/V DeSync".

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

Открытие файла займет чуть больше времени. После открытия файла, в большинстве случаев, даже с учетом нагрузки, не должно быть такого поведения, когда он открылся, но звук, при этом, полностью отсутствует. А когда появляется, то уже замирают на несколько секунд видеокадры. После чего все нормализуется, но звук уходит вперед воспроизводимых видеокадров. Да, так как используется полная нагрузка, видеокадры могут чуть приостановиться, но аудио-рендерер должен всегда строго подгонять звук под них, какие бы ни были ситуации в момент полной нагрузки на центральный процессор. При любом малейшем отклонении всегда будет "A/V DeSync".
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

AMD Ryzen 7 7700 /ASRock B650M Pro RS /G.Skill RIPJAWS 32 ГБ /Kingston 1Tb M.2 /RTX 4060 /Samsung U28R550UQI /OLED Philips 55OLED707 /Yamaha RX-V471 + NS-555 + NS-C444 + NS-333 + YST-SW215

V0lt

Цитата: Evgeniy1990 от 23 февраля 2025, 21:15:182. Выбираем уровень нагрузки = 100%, т.е. двигаем ползунок с левой стороны в правую сторону до конца.
3. Нажимаем на зеленую кнопку "Нагрузить процессор"
4. Пока процессор полностью нагружен, открываем любой произвольный локальный видео файл.
А плееру типа ресурсов совсем не нужно?

Evgeniy1990

V0lt
Цитата: V0lt от 24 февраля 2025, 17:14:17А плееру типа ресурсов совсем не нужно?
Нужно, именно поэтому у нас по умолчанию и работает аппаратный режим декодирования, чтобы переносить нагрузку с процессора на видеокарту, оставляя тем самым оставшиеся ресурсы процессору. И вот как раз, чаще всего, у нас на практике и бывают такие случаи, когда происходит, например, конвертация видео, или же компиляция плеера, что достаточно сильно нагружает центральный процессор. При этом, мы, в это время, просматриваем какой-либо видео файл. Нагрузка на процессор необязательно может быть стопроцентной, особенно при конвертации видео, а вот при компиляции она обычно всегда в пределах 100%.

Но даже в таких условиях, плеер все равно должен грамотно использовать те самые оставшиеся для него ресурсы, что он и пытается сделать, хоть и не всегда корректно. Еще раз повторюсь, что можно выставить нагрузку хоть 70%, хоть 80%, но общего расклада это никак не изменит.

Другая беда в том, что наш MPC Video Renderer, после последних изменений, стал работать значительно хуже, чем работал до них. И естественно, при нагрузке, это также сказывается и на нем. В качестве примера можно привести "дрожание" кадров, при взаимодействии с основным окном плеера, а также и еще один пример - это проявление "пилы" на графике времени кадра, при переключении на лету "Swap Effect". Т.е. вы уже должны понимать, что это происходит даже без нагрузки и всегда на ровном месте. А теперь представьте себе, что будет при любой, даже самой незначительной нагрузке? Ответ всегда будет очевидным. И естественно всего этого быть не должно, но оно есть, даже если вы у себя этого вообще не видите.
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.

Evgeniy1990

Aleksoid1978
Ситуация прояснилась. Еще кое что не учли. Есть еще ситуация, при которой может отсутствовать звук - это когда мы меняем настройки MPC Audio Renderer во время паузы.

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

1. Открыть любой локальный видеофайл.
2. Поставить его воспроизведение на паузу.
3. Открыть свойства MPC Audio Renderer.
4. Переключить метод работы WASAPI с Event на Push.
5. Возобновить воспроизведение локального видеофайла.

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

После возобновления воспроизведения, всегда будет отсутствовать звук.

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

После возобновления воспроизведкния, всегда должен присутствовать звук.
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

Цитата: Evgeniy1990 от 02 марта 2025, 10:21:54Aleksoid1978
Ситуация прояснилась. Еще кое что не учли. Есть еще ситуация, при которой может отсутствовать звук - это когда мы меняем настройки MPC Audio Renderer во время паузы.

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

1. Открыть любой локальный видеофайл.
2. Поставить его воспроизведение на паузу.
3. Открыть свойства MPC Audio Renderer.
4. Переключить метод работы WASAPI с Event на Push.
5. Возобновить воспроизведение локального видеофайла.

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

После возобновления воспроизведения, всегда будет отсутствовать звук.

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

После возобновления воспроизведкния, всегда должен присутствовать звук.

Исправлено.
AMD Ryzen 7 7700 /ASRock B650M Pro RS /G.Skill RIPJAWS 32 ГБ /Kingston 1Tb M.2 /RTX 4060 /Samsung U28R550UQI /OLED Philips 55OLED707 /Yamaha RX-V471 + NS-555 + NS-C444 + NS-333 + YST-SW215