MPC Video Decoder (DXVA2) – не умеет переключаться в софт-режим [Исправлено]

Автор Evgeniy1990, 15 июня 2020, 23:29:17

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

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

Evgeniy1990

Тема: MPC Video Decoder (DXVA2-декодер) – не умеет переключаться в софт-режим декодирования.

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

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

А вот в случае переноса приложения на другое устройство, при условии, что на нем видео файл изначально был запущен на первом устройстве в режиме DXVA2, по логике вещей должен также работать софт-режим декодирования видео. Но вместо этого, MPC Video Decoder пытается продолжить работу в режиме аппаратного ускорения DXVA2, что противоречит корректной логике работы для данных видеокарт, поскольку они имеют всего лишь один поток аппаратного ускорения и способны работать только на одном из двух устройств в данном режиме. Из-за чего, на другом устройстве, вместо нормального воспроизведения кадров видео в софт-режиме, мы получаем просто черный экран в режиме DXVA2.

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

1. Открыть любой видео файл в режиме DXVA2
2. Выбрать второй монитор (DISPLAY (2)) для полноэкранного режима в настройках полного экрана плеера
3. Перейти в полноэкранный режим

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

После перехода в полноэкранный режим, на втором мониторе будет просто черный экран в режиме DXVA2, процесс воспроизведения будет стоять на месте.

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

После перехода в полноэкранный режим, на втором мониторе должно быть нормальное воспроизведение кадров видео в софт-режиме.
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

#1
Ну вообще то когда происходит переключение FSE на другое устройство вывода:
1 - происходит удаление текущего Direct3D9 устройства и создание нового.
2 - происходит реконнект с видео-декодером.
Поэтому тут не идет речи о "новом потоке" аппаратного декодирования - одно убивается, другое создается.

Ну а я что могу - debug логи из MPC-BE со встроенным декодером и с LAV, может что и будет видно(но это не точно) :)

P.S. Вот Debug версия LAV Filters, желательно сделать debug лог с LAV Video с этой версией - https://yadi.sk/d/3SLiOBUyBJpL8A
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

Evgeniy1990

Aleksoid1978,
ЦитироватьP.S. Вот Debug версия LAV Filters, желательно сделать debug лог с LAV Video с этой версией - https://yadi.sk/d/3SLiOBUyBJpL8A
Я даже не могу зарегистрировать эти debug-фильтры в системе.
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 от 16 июня 2020, 09:45:58
Aleksoid1978,
ЦитироватьP.S. Вот Debug версия LAV Filters, желательно сделать debug лог с LAV Video с этой версией - https://yadi.sk/d/3SLiOBUyBJpL8A
Я даже не могу зарегистрировать эти debug-фильтры в системе.
Обновил, ссылка та же(просто по умолчанию там так в проекте настроено что debug версия требует внешние debug dll от VS).

А регать и не надо - спокойно из файла добавляем во внешние фильтры и предпочесть, все.
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

Evgeniy1990

Aleksoid1978,
ЦитироватьОбновил, ссылка та же(просто по умолчанию там так в проекте настроено что debug версия требует внешние debug dll от VS).
Все равно не могу даже просто добавить эти debug-фильтры, как внешние, через "Внешние фильтры".
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

Ну странно, собраны в VS2019. Ну и ладно - хрен с ними :)
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

Evgeniy1990

Aleksoid1978,
Цитировать
Ну странно, собраны в VS2019. Ну и ладно - хрен с ними :)
Хочу сам попробовать собрать Debug-версию LAV Filters и проверить. Пытаюсь собрать и выскакивает ошибка, что нет файла "avconfig.h".
fatal error C1083: Cannot open include file: 'libavutil/avconfig.h': No such file or directory

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

Evgeniy1990

Aleksoid1978,
Цитировать
Сперва надо ffmpeg собрать :)
Я так и думал. В общем, собрал я ffmpeg, но при построении LAV Filters теперь стали появляться уже другие ошибки.
Да уж, не все так просто.
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

Ошибки такие:

LINK : fatal error LNK1104: cannot open file 'avutil-lav.lib'
C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\MSBuild\Microsoft\VC\v160\Microsoft.CppCommon.targets(861,5): error MSB6006: "link.exe" exited with code 1104.

Теперь почему-то нет файла "avutil-lav.lib".
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 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

Evgeniy1990

Aleksoid1978,
Цитировать
Значит ffmpeg не собрался :)
ffmpeg собрался, а этого файла нет. Я уже все перепробовал, не знаю, чего еще не хватает.
Лучше соберу отладочный билд MPC-BE и на нем создам лог файлы для MPC Video Decoder и для LAV Video Decoder.
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 Video Decoder и для LAV Video Decoder в режиме DXVA2.
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 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

Aleksoid1978

Вот пробуем - https://yadi.sk/d/Bt2s0t74VsIimg
Если на собранном билде ничего не изменилось, в комплекте патч - патчим исходники, собираем debug билд и выкладываем тест, со встроенным декодером.
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