MPC-BE forum

MPC-BE => Баг Репорт / The bug report => Архив / Archive => Тема начата: V0lt от 23 мая 2016, 21:41:05

Название: EVR-cp падает при выборе поверхности во float формате [исправлено]
Отправлено: V0lt от 23 мая 2016, 21:41:05
Плеер падает на Clannad After Story OPA - sample HEVC main10 1080p.mkv (https://www.dropbox.com/sh/6iy4gxgsfn14opq/AAAK_L1M_NwZwBPb5IkEPh7Ga?dl=0) на EVR-cp, если выбрана поверхность во float формате.
В режиме отладки пишет следующее.
Unhandled exception at 0x000007FEEC14014A (nvd3dumx.dll) in mpc-be64.exe: 0xC0000094: Integer division by zero.Отключение DXVA не помогает.
С LAV Video Decoder 0.68.0.28-git не падает.
На VMR-9r не падает.

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

PS: недавно обновил видеодрайвер до v365.19.
[merge_posts_bbcode]Добавлено: 2016-05-23 21:41:05[/merge_posts_bbcode]

Падение происходит при 1-ом вызове следующего кода:{
    llClockBefore = GetPerfCounter();
    hr = m_pMixer->ProcessOutput(0 , 1, &Buffer, &dwStatus);
    llClockAfter = GetPerfCounter();
}
Название: EVR-cp падает при выборе поверхности во float формате [исправлено]
Отправлено: Evgeniy1990 от 23 мая 2016, 22:47:17
Цитата: V0ltПлеер падает на Clannad After Story OPA - sample HEVC main10 1080p.mkv на EVR-cp, если выбрана поверхность во float формате.
В режиме отладки пишет следующее.
Unhandled exception at 0x000007FEEC14014A (nvd3dumx.dll) in mpc-be64.exe: 0xC0000094: Integer division by zero.Отключение DXVA не помогает.
С LAV Video Decoder 0.68.0.28-git не падает.
На VMR-9r не падает.

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

PS: недавно обновил видеодрайвер до v365.19.
[merge_posts_bbcode]Добавлено: 2016-05-23 21:41:05[/merge_posts_bbcode]

Падение происходит при 5-ом вызове следующего кода:if (hr == D3DERR_DEVICELOST && m_pD3DDev->TestCooperativeLevel() == D3DERR_DEVICENOTRESET) {
    DbgLog((LOG_TRACE, 3, L"D3D Device Lost - need Reset Device"));
    bResetDevice = true;
}
Проверил видео файл "Clannad After Story"  на "ASUS EAH5770" - не падает, ни на 16-bit Float, ни на 32-bit Float - поверхностях.

Проверял таким образом - открыл видео файл и, во время его воспроизведения, просто переключал поверхности с 16-bit Floating Point Surfaces на 32-bit Floating Point Surfaces и обратно. И так чередовал по 10 раз одну и другую Float-поверхности. В результате, падения я не получил.

Единственное, что только заметил - это то, что переключение поверхностей происходит достаточно медленно.

Значит, скорее всего, падает только на NVIDIA-видеокартах, на драйверах, версии 365.19.

Вот здесь пользователь тоже пишет о еще одной проблеме с драйверами этой же версии:
http://www.light-alloy.ru/forum/en_questions_hints/blurred_video_/

Я позднее проверю еще у себя на другой машине с NVIDIA-видеокартой. Надо будет мне обновить драйверы, установить эту версию 365.19 и проверить.
[merge_posts_bbcode]Добавлено: 2016-05-23 22:47:17[/merge_posts_bbcode]

V0lt

Я проверил ваш видео файл "Clannad After Story", при условиях:

1. NVIDIA GeForce GTX 465
2. Драйверы, версии 365.19
3. Windows 10, x64

Если во время воспроизведения данного видео файла, изменить поверхность с 8-бит на 32-бит Floating, то плеер просто зависнет намертво, после чего система скажет, мол "MPC-BE не отвечает" и варианты - закрыть программу, или же ждать отклика программы.

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

В общем понятно, что дело однозначно в драйверах NVIDIA, поскольку на ATI точно не падает.
Название: EVR-cp падает при выборе поверхности во float формате [исправлено]
Отправлено: z_mashine от 23 мая 2016, 23:49:38
у меня тоже падает на дровах за февраль. сегодня выкатили 368.22.
Название: EVR-cp падает при выборе поверхности во float формате [исправлено]
Отправлено: Aleksoid1978 от 24 мая 2016, 03:39:17
С LAV Video Decoder не падает - возможно что он выдает другой выходной тип ??
Название: EVR-cp падает при выборе поверхности во float формате [исправлено]
Отправлено: V0lt от 24 мая 2016, 22:46:02
z_mashine
Проверил на 368.22 - не помогло. Возможно от драйвера не зависит.

Старые версии плеера не проверял еще.

Aleksoid1978
Вот входные пины рендерера - https://yadi.sk/d/reSZSlHOrxw6s
Разницы пинах между LAV int8 и float16 нет, но все равно выложил.
Название: EVR-cp падает при выборе поверхности во float формате [исправлено]
Отправлено: Evgeniy1990 от 25 мая 2016, 07:28:31
Цитата: V0ltz_mashine
Проверил на 368.22 - не помогло. Возможно от драйвера не зависит.

Старые версии плеера не проверял еще.
Проверил SVN r1135 и более ранние билды с драйверами 365.19 и 368.22 - аналогично точно также падают, при переключении на Floating Surfaces.

Также проверил SVN r1135 и более ранние билды на Windows 7, с версией драйверов 359.06 - тоже падает.

В любом случае, первопричиной являются драйверы к видеокартам от NVIDIA.
Только методом перебора всех WHQL-драйверов можно найти тот, на котором, возможно, падения не будет.

Или же, для видеокарт NVIDIA, эти поверхности должны работать как-то иначе.
Название: EVR-cp падает при выборе поверхности во float формате [исправлено]
Отправлено: Aleksoid1978 от 25 мая 2016, 15:26:28
Похоже дело в том что наш декодер выдает 1088 высоту - а LAV обрезает до 1080.
Но что-то у меня не получается обрезать у нас в декодере 1088 -> 1080.
Название: EVR-cp падает при выборе поверхности во float формате [исправлено]
Отправлено: V0lt от 25 мая 2016, 22:00:25
Получил такой же баг на H.264 с Microsoft DTV-DVD Video Decoder, и с ним же в MPC-HC.

По поводу размера 1088. Идея хорошая, но мне думается не в этом дело, хоть и может быть связано.
[merge_posts_bbcode]Добавлено: 2016-05-25 21:10:46[/merge_posts_bbcode]

Звиздец.
Походу реальный баг в драйвере. Вероятнее всего какая-то проверка криво сделана, как это уже было с ограничением DXVA на 2048 пикселей.
Написал в теме MPC-HC (http://forum.doom9.org/showthread.php?p=1768667#post1768667), надеюсь nevcairiel прояснит ситуацию.

Наделал тестовых файлов. (https://yadi.sk/d/hnn00O1xrzVuM)

[merge_posts_bbcode]Добавлено: 2016-05-25 21:14:45[/merge_posts_bbcode]

PS: поправил место падения в первом сообщении.
[merge_posts_bbcode]Добавлено: 2016-05-25 22:00:25[/merge_posts_bbcode]

С LAV Video Decoder не падает из-за хака:
 if (width == 1920 && height == 1088) {
    height = 1080;
  }
Который полностью согласуется с моими тестами (тут не просто высота 1088 влияет, а сочетание ширины и высоты).
Название: EVR-cp падает при выборе поверхности во float формате [исправлено]
Отправлено: Aleksoid1978 от 26 мая 2016, 01:20:50
А не проверял на.сборках Яна, у него код то свой.
Название: EVR-cp падает при выборе поверхности во float формате [исправлено]
Отправлено: V0lt от 26 мая 2016, 18:13:09
Цитата: Aleksoid1978А не проверял на.сборках Яна, у него код то свой.
Проверил на 7370. Так же падает. Тут проблема в том, что EVR-микшер просто отказывается работать с float поверхностями размером 1920x1088. Ноль в делителе получается, и кирдык. Чуть больше или меньше и все нормально. Явный баг драйвера.
[merge_posts_bbcode]Добавлено: 2016-05-26 18:13:09[/merge_posts_bbcode]

Обошел баг в r1542.