EVR-cp падает при выборе поверхности во float формате [исправлено]

Автор V0lt, 23 мая 2016, 21:41:05

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

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

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]

Падение происходит при 1-ом вызове следующего кода:{
    llClockBefore = GetPerfCounter();
    hr = m_pMixer->ProcessOutput(0 , 1, &Buffer, &dwStatus);
    llClockAfter = GetPerfCounter();
}

Evgeniy1990

Цитата: 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 точно не падает.
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.

z_mashine

у меня тоже падает на дровах за февраль. сегодня выкатили 368.22.

Aleksoid1978

С LAV Video Decoder не падает - возможно что он выдает другой выходной тип ??
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

z_mashine
Проверил на 368.22 - не помогло. Возможно от драйвера не зависит.

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

Aleksoid1978
Вот входные пины рендерера - https://yadi.sk/d/reSZSlHOrxw6s
Разницы пинах между LAV int8 и float16 нет, но все равно выложил.

Evgeniy1990

Цитата: V0ltz_mashine
Проверил на 368.22 - не помогло. Возможно от драйвера не зависит.

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

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

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

Или же, для видеокарт NVIDIA, эти поверхности должны работать как-то иначе.
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

Похоже дело в том что наш декодер выдает 1088 высоту - а LAV обрезает до 1080.
Но что-то у меня не получается обрезать у нас в декодере 1088 -> 1080.
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

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

Наделал тестовых файлов.

[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

А не проверял на.сборках Яна, у него код то свой.
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

Цитата: Aleksoid1978А не проверял на.сборках Яна, у него код то свой.
Проверил на 7370. Так же падает. Тут проблема в том, что EVR-микшер просто отказывается работать с float поверхностями размером 1920x1088. Ноль в делителе получается, и кирдык. Чуть больше или меньше и все нормально. Явный баг драйвера.
[merge_posts_bbcode]Добавлено: 2016-05-26 18:13:09[/merge_posts_bbcode]

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