Плеер падает на 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();
}
Цитата: 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 точно не падает.
у меня тоже падает на дровах за февраль. сегодня выкатили 368.22.
С LAV Video Decoder не падает - возможно что он выдает другой выходной тип ??
z_mashine
Проверил на 368.22 - не помогло. Возможно от драйвера не зависит.
Старые версии плеера не проверял еще.
Aleksoid1978
Вот входные пины рендерера - https://yadi.sk/d/reSZSlHOrxw6s
Разницы пинах между LAV int8 и float16 нет, но все равно выложил.
Цитата: V0ltz_mashine
Проверил на 368.22 - не помогло. Возможно от драйвера не зависит.
Старые версии плеера не проверял еще.
Проверил SVN r1135 и более ранние билды с драйверами 365.19 и 368.22 - аналогично точно также падают, при переключении на Floating Surfaces.
Также проверил SVN r1135 и более ранние билды на Windows 7, с версией драйверов 359.06 - тоже падает.
В любом случае, первопричиной являются драйверы к видеокартам от NVIDIA.
Только методом перебора всех WHQL-драйверов можно найти тот, на котором, возможно, падения не будет.
Или же, для видеокарт NVIDIA, эти поверхности должны работать как-то иначе.
Похоже дело в том что наш декодер выдает 1088 высоту - а LAV обрезает до 1080.
Но что-то у меня не получается обрезать у нас в декодере 1088 -> 1080.
Получил такой же баг на 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 влияет, а сочетание ширины и высоты).
А не проверял на.сборках Яна, у него код то свой.
Цитата: Aleksoid1978А не проверял на.сборках Яна, у него код то свой.
Проверил
на 7370. Так же падает. Тут проблема в том, что EVR-микшер просто отказывается работать с float поверхностями размером 1920x1088. Ноль в делителе получается, и кирдык. Чуть больше или меньше и все нормально. Явный баг драйвера.
[merge_posts_bbcode]Добавлено: 2016-05-26 18:13:09[/merge_posts_bbcode]
Обошел баг в
r1542.