Автор Тема: WASAPI рендерер - периодический дроп пакетов. [Исправлено]  (Прочитано 4591 раз)

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

Aleksoid1978

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 2130
Собственно недавно столкнулся с данной проблемой - изначально пользователь с дум9 сообщил о периодическом дропе данных при битстриме. Начал ковырять - и оказывается что не только при битстриме. Периодичность - раз в 5 - 20 минут. Дроп происходит по причине того что во время проигрывания накапливается разница между временем пакетов и "системными часами". Причина мне совершенно не ясна - ну хоть убей(т.к. пакеты обрабатываются не в реальном времени - а накапливаются в очередь, т.е. это не нехватка данных 100%, в момент дропа в очереди еще есть данные).

Просьба проверить у себя кто может. Запускаете билд и просто смотрите/ждете. При дропе пакета - создастся лог-файл на рабочем столе.

https://yadi.sk/d/ovRYpAL63UKAhj

P.S. Проверял только в эксклюзивном режиме.
I7 2600K@4.2 / Asrock P67 Extreme 4 Gen 3 / Kingston HyperX 8Gb 1866 (4x2) Kit / GIGABYTE GTX 960 / BenQ EW2430 / LG 47LM620T / Yamaha RX-V471 + NS-555 + NS-C444 + NS-333 + YST-SW215

V0lt

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 1736
Вопросы:
1. На какие форматы следует обратить внимание?
2. Если ли смысл проверять на рендерере DirectSound?
3. Настройка аудиодекодера. Включена или выключена странная опция "Корректировка A/V синхронизации"?
4. Настройка аудиорендерера. Какой метод синхронизации использовать?

Evgeniy1990

  • Ветеран
  • *****
  • Сообщений: 1380
Цитата: Aleksoid1978
Просьба проверить у себя кто может. Запускаете билд и просто смотрите/ждете. При дропе пакета - создастся лог-файл на рабочем столе.

https://yadi.sk/d/ovRYpAL63UKAhj

P.S. Проверял только в эксклюзивном режиме.
А есть ли у вас конкретные сэмплы, или видео файлы на которых 100% проявляется этот дроп пакетов?
Ибо у себя я ни разу не замечал никаких дропов, при том что я постоянно использую WASAPI на новых системах.

А как хоть примерно выглядит этот дроп, иначе говоря, что он собой представляет?
Это пропуски данных, пропуски кадров или что-то еще?
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

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 1736
Aleksoid1978
Вот что у меня получилось при отправке AC3 по HDMI на ТВ.
2018.04.11 21:16:24.216 : CMpcAudioRenderer::RenderWasapiBuffer() - Drop packet, size = 6144, dueTime = 8488960000, refclock = 8489290000(diff = 330000)
2018.04.11 21:37:05.495 : CMpcAudioRenderer::RenderWasapiBuffer() - Drop packet, size = 6144, dueTime = 20901760000, refclock = 20902090000(diff = 330000)
PS: Сам ТВ был отключен, но это не мешает компу его видеть (особенность моего ТВ). В общем получил два дропа на 16-й и 37-й минутах просмотра (начало воспроизведения примерно в 21:01).

Aleksoid1978

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 2130
Да вот именно так он выглядит. На PCM тоже самое, может просто интервал больше.
[merge_posts_bbcode]Добавлено: 2018-04-12 09:59:52[/merge_posts_bbcode]

А вот что интересно - на работе, с выводом на обычные наушники со звуковухи(в отличии от дома - там вывод по HDMI на телек/монитор) пока не смог поймать "дроп".
I7 2600K@4.2 / Asrock P67 Extreme 4 Gen 3 / Kingston HyperX 8Gb 1866 (4x2) Kit / GIGABYTE GTX 960 / BenQ EW2430 / LG 47LM620T / Yamaha RX-V471 + NS-555 + NS-C444 + NS-333 + YST-SW215

V0lt

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 1736
Поясни, что такое dueTime.

Есть ли разница при воспроизведении MKV, DVD, BD?

Aleksoid1978

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 2130
dueTime - время начала текущих данных(оно может быть больше времени начала текущего пакета - из-за того что часть данных из пакета уже обработались).
Формат не важен - хоть mkv, хоть BD
I7 2600K@4.2 / Asrock P67 Extreme 4 Gen 3 / Kingston HyperX 8Gb 1866 (4x2) Kit / GIGABYTE GTX 960 / BenQ EW2430 / LG 47LM620T / Yamaha RX-V471 + NS-555 + NS-C444 + NS-333 + YST-SW215

Evgeniy1990

  • Ветеран
  • *****
  • Сообщений: 1380
Aleksoid1978

Прогнал ваш тестовый билд. Получил лог-файл с дропом пакетов.

2018.04.12 08:41:33.630 : CMpcAudioRenderer::RenderWasapiBuffer() - Discontinuity detected by -520.63 ms
2018.04.12 08:41:33.630 : CMpcAudioRenderer::RenderWasapiBuffer() - Correct reference clock by -520.63 ms
2018.04.12 08:41:33.630 : CMpcAudioRenderer::RenderWasapiBuffer() - Drop packet, size = 1672, dueTime = 2328167082, refclock = 2333150000(diff = 4982918)

2018.04.12 08:45:26.743 : CMpcAudioRenderer::RenderWasapiBuffer() - Discontinuity detected by -502.04 ms
2018.04.12 08:45:26.744 : CMpcAudioRenderer::RenderWasapiBuffer() - Correct reference clock by -502.04 ms
2018.04.12 08:45:26.744 : CMpcAudioRenderer::RenderWasapiBuffer() - Drop packet, size = 7440, dueTime = 2319799791, refclock = 2324630000(diff = 4830209)

Интересно то, что визуально никак это даже не увидеть. Ни за что не догадаться, что вообще есть какие-то там дропы пакетов.
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

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 2130
Ну по идее в этом месте будет слышно, т.к. один пакет теряется.
[merge_posts_bbcode]Добавлено: 2018-04-12 19:26:40[/merge_posts_bbcode]

И самое что интересное - если убрать этот дроп, то со временем будет накапливаться рассинхронизация. Да - очень медленно, но будет. А вот на работе нет такого, сегодня более часа проигрывания и все ок.

[merge_posts_bbcode]Добавлено: 2018-04-12 23:53:24[/merge_posts_bbcode]

Очередной тестовый билд - в нем кое что изменил именно для бистрима(ну так, для тестов).
https://yadi.sk/d/CnPLkVxg3UMWj5

Т.к. со временем нарастает разница и возникает дроп - я при бистриме просто корректирую системные часы под аудио-данные. Если есть возможность - погонять и понаблюдать за видео-картинкой, нет ли рывков или еще чело ли.

[merge_posts_bbcode]Добавлено: 2018-04-14 10:04:52[/merge_posts_bbcode]

Вообщем я переделываю систему работу с "часами" - сам аудио-рендерер будет выступать в роли часов(а не как сейчас - подстраиваться под системные). Опцию выбора синхронизации уберу - аудио данные всегда будут выступать за источник времени.
I7 2600K@4.2 / Asrock P67 Extreme 4 Gen 3 / Kingston HyperX 8Gb 1866 (4x2) Kit / GIGABYTE GTX 960 / BenQ EW2430 / LG 47LM620T / Yamaha RX-V471 + NS-555 + NS-C444 + NS-333 + YST-SW215

V0lt

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 1736
Цитата: Aleksoid1978
Опцию выбора синхронизации уберу - аудио данные всегда будут выступать за источник времени.
Круто!

Aleksoid1978

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 2130
Вроде бы получилось переделать, но пока остались нюансы - плохо стартует после паузы и освобождения устройства, после длительного прожатия плей/пауза.
[merge_posts_bbcode]Добавлено: 2018-04-15 19:16:02[/merge_posts_bbcode]

Предлагаю тестовый билд - https://yadi.sk/d/yQMMAgxB3URVs8
Единственное что - не проверял в нем(и наверняка некорректно будут работать) смена настроек/устройства, потеря устройства(в случае использования Shared режима). Но основное все должно работать корректно.
Опция выбора синхронизации ессно игнорируется.

[merge_posts_bbcode]Добавлено: 2018-04-16 16:26:04[/merge_posts_bbcode]

Новая версия - https://yadi.sk/d/UpfUpIRi3USdrS
Работает вроде бы все что должно, но при реинициализации устройства присутствует небольшой рывок видео.

Просьба погонять по разному и потом отписаться.
I7 2600K@4.2 / Asrock P67 Extreme 4 Gen 3 / Kingston HyperX 8Gb 1866 (4x2) Kit / GIGABYTE GTX 960 / BenQ EW2430 / LG 47LM620T / Yamaha RX-V471 + NS-555 + NS-C444 + NS-333 + YST-SW215

Evgeniy1990

  • Ветеран
  • *****
  • Сообщений: 1380
Цитата: Aleksoid1978
Предлагаю тестовый билд - https://yadi.sk/d/yQMMAgxB3URVs8
Единственное что - не проверял в нем(и наверняка некорректно будут работать) смена настроек/устройства, потеря устройства(в случае использования Shared режима). Но основное все должно работать корректно.
Опция выбора синхронизации ессно игнорируется.х.
Прогнал вчера ваш первый данный тестовый билд. Все верно, при переключении звуковых устройств на лету, во время воспроизведения, происходит мертвое зависание, как на Exclusive, так и на Shared-режимах. В остальном все работает нормально.  
Цитата: Aleksoid1978
Новая версия - https://yadi.sk/d/UpfUpIRi3USdrS
Работает вроде бы все что должно, но при реинициализации устройства присутствует небольшой рывок видео.

Просьба погонять по разному и потом отписаться.
Прогнал и продолжаю гонять сегодня ваш второй тестовый билд. И теперь абсолютно все работает правильно, корректно. При переключении звуковых устройств и режимов WASAPI на лету, во время воспроизведения, зависания и отсутствие звука, больше не проявляются. Все переключения работают достаточно быстро и мгновенно, как звуковых устройств, так и режимов WASAPI на лету, во время воспроизведения. Никаких рывков видео вообще не наблюдается, ни при каких условиях, даже, при переключении на лету, во время воспроизведения, все выполняется моментально быстро, кадры при этом вообще никак не дергаются, да и по статистике видео-рендерера этого не видно.

В общем, ваши изменения/исправления полностью удались и работают просто превосходно! ;)
[merge_posts_bbcode]Добавлено: 2018-04-16 11:10:47[/merge_posts_bbcode]

Продолжаю тщательную прогонку...

[merge_posts_bbcode]Добавлено: 2018-04-16 11:19:42[/merge_posts_bbcode]

Раньше, до ваших изменений и переделок, были методы синхронизации, которые, согласно последним тестам и последним всем массовым изменениям, до ваших новых переделок, влияли лишь на некоторые аудио форматы, например на "True-HD", или "DTS-HD MA", включающие "Core".

Сейчас же, методы синхронизации не используются вообще, т.е. теперь их вообще нет, и данные видео файлы содержащие некоторые такие форматы и им подобные воспроизводятся также нормально.

Под "нормально" имеется в виду то, что отсутствуют рывки аудио потоков.

Из своих прошлых тестовых, прежних пометок я нашел следующее:

DTS HD MA Core (Sync Method\'s WASAPI in MPC Audio Renderer):

Sync Method:

Sync Audio to Video - прерывистый звук
Sync Video to Audio - нормальный звук
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

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 2130
В тестовых билдах есть метод синхронизации, и это видео к аудио. Поэтому ессно никаких рывков в аудио не может быть. По поводу переключения на лету и изменения настроек - есть короткие рывки видео, это заметно при включенной статистике(смотреть на линии графа)
I7 2600K@4.2 / Asrock P67 Extreme 4 Gen 3 / Kingston HyperX 8Gb 1866 (4x2) Kit / GIGABYTE GTX 960 / BenQ EW2430 / LG 47LM620T / Yamaha RX-V471 + NS-555 + NS-C444 + NS-333 + YST-SW215

Evgeniy1990

  • Ветеран
  • *****
  • Сообщений: 1380
Цитата: Aleksoid1978
В тестовых билдах есть метод синхронизации, и это видео к аудио. Поэтому ессно никаких рывков в аудио не может быть.)

А, ясно, значит все-таки теперь остался только один метод синхронизации из двух и это "Видео по аудио".
Тогда понятно, почему звук на некоторых форматах полностью нормальный, без рывков.
Цитата: Aleksoid1978
По поводу переключения на лету и изменения настроек - есть короткие рывки видео, это заметно при включенной статистике(смотреть на линии графа
В моем случае только красная линия заметно, но незначительно слегка съехала вниз.
[merge_posts_bbcode]Добавлено: 2018-04-16 11:42:10[/merge_posts_bbcode]

Хотя нет, если переключать звуковые устройства на лету, то обе линии и зеленая и красная становятся заметно искривленными, а вот если переключать режимы WASAPI на лету, во время воспроизведения, то в этом случае преимущественно, в большинстве случаев искривляется в основном только красная линия.
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

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 2130
Я же говорил что есть рывки. Сейчас задача моя от них избавиться :)
[merge_posts_bbcode]Добавлено: 2018-04-16 19:38:00[/merge_posts_bbcode]

Я сейчас в раздумье - либо залить как оно сейчас есть и потом уже "пытаться" довести до ума, либо доводить и периодически выкладывать тестовый билды. Я считаю что лучше залить - тем более что все эти переключения и микро-рывки не особо и заметны ))

Кто что думает ??
I7 2600K@4.2 / Asrock P67 Extreme 4 Gen 3 / Kingston HyperX 8Gb 1866 (4x2) Kit / GIGABYTE GTX 960 / BenQ EW2430 / LG 47LM620T / Yamaha RX-V471 + NS-555 + NS-C444 + NS-333 + YST-SW215