MPC Video Renderer

Автор V0lt, 24 февраля 2018, 19:10:59

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

Preoc и 1 гость просматривают эту тему.

V0lt

Прикол с видео без звука.

Тяжелое видео. Т.к. нормальных часов нет, то ничего не дропается. Иногда это бывает даже хорошо, можно слоумо посмотреть. Но иногда декодер выдает кадры волнами и получается не очень.
На EVR-CP тоже самое.

На видео средней тяжести проблема тоже может присутствовать. Запускаю 23,976 на мониторе с 60 Гц, а картинки неравномерно выводятся, группами.
Тут EVR-CP плавнее.

Это я так на будущее. :-)

Aleksoid1978

Ну как бы без нормальных часов оно так и будет, иногда рывками. Не стоит на это обращать внимание.
AMD Ryzen 5 3600 /GIGABYTE B450 Gaming X /AMD Radeon R9 16Gb@3200 /Kingston 500Gb M.2 /GTX 1650 /Samsung U28R550UQI /LG 47LM620T /Yamaha RX-V471 + NS-555 + NS-C444 + NS-333 + YST-SW215

Evgeniy1990

V0lt/Aleksoid1978
Иногда, при открытии различных видео файлов, может выскакивать ASSERT.
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

Evgeniy1990
На отладочной версии такое бывает. Что-то не нравиться базовому классу.

V0lt

Предварительные данные для рантайим компиляции шейдеров DX11.
Шейдер convert_color (для NV12) компилируется около 10 мс, шейдер convert_color_st2084 (для P010) - около 40 мс.

Evgeniy1990

Цитата: V0ltНа отладочной версии такое бывает. Что-то не нравиться базовому классу.
Интересно, что такое проявляется только в паре с нашим MPC Video Decoder.

Если создать (построить) чистый граф фильтров, состоящий только из наших автономных фильтров с нашим же MPC Video Renderer, то можно даже получить ситуацию, когда "Scaling 0x0 -> 0x0", при этом нет никакого изображения, просто "черный экран".
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

Цитата: Evgeniy1990Если создать (построить) чистый граф фильтров, состоящий только из наших автономных фильтров с нашим же MPC Video Renderer, то можно даже получить ситуацию, когда "Scaling 0x0 -> 0x0", при этом нет никакого изображения, просто "черный экран".
Очень странно на входе 1280x720, на выходе окно тоже имеет размер. Посмотри, что в отладочная версия MPC VR пишет во вкладке "Information".

Evgeniy1990

Цитата: V0ltОчень странно на входе 1280x720, на выходе окно тоже имеет размер. Посмотри, что в отладочная версия MPC VR пишет во вкладке "Information".
Посмотрел.

Там у меня вот такая информация:

DirectX 11
Graphics adapter: AMD Radeon HD 5700 Series (1002:68B8)
VideoProcessor  : D3D11
Source rect   : 0,0,1280,720 - 1280x720
Target rect   : 0,0,1280,720 - 1280x720
Video rect    : 0,0,0,0 - 0x0
Window rect   : 0,0,1272,716 - 1272x716
SrcRender rect: 0,0,0,0 - 0x0
DstRender rect: 0,0,0,0 - 0x0

Самое странное и неприятное то, что:

Video rect    : 0,0,0,0 - 0x0
SrcRender rect: 0,0,0,0 - 0x0
DstRender rect: 0,0,0,0 - 0x0


Все эти строчки строго по нулям.
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

Значит не прилетает SetVideoRect
AMD Ryzen 5 3600 /GIGABYTE B450 Gaming X /AMD Radeon R9 16Gb@3200 /Kingston 500Gb M.2 /GTX 1650 /Samsung U28R550UQI /LG 47LM620T /Yamaha RX-V471 + NS-555 + NS-C444 + NS-333 + YST-SW215

V0lt

Ответы на вопросы о пропуск кадров в MPC VR

1. Для чего нужно пропускать кадры?
Чтобы видео успевало за звуком.

2. Когда нужно пропускать кадры?
А. Когда видео декодируется и рендериться медленнее, чем требуется.
Б. Когда частота кадров больше частоты дисплея.

3. Каков алгоритм пропуска кадров?
Допустим у нас видео с частотой 25 кадров/сек. Соответственно длительность одного кадра 40 мс и время начала отображения кадров можно представить в виде ряда:
0 40 80 120 160 200 240...
Соответственно время конца отображения кадра равно началу следующего.
Алгоритм вывода-пропуска кадров (упрощенный для понимания сути).
Первый кадр после начала воспроизведения или поиска выводиться всегда. Это нужно, чтобы мы хоть что-то увидели на медленной машине.
Остальные кадры выводятся, если они попадают в свое время (или немного раньше его, но для простоты понимания пока не будем учитывать). Например, в рендерер прилетел кадр со временем 120 мс. Сравниваем с текущем временем, если оно попадает в диапазон 120..160мс, то кадр выводиться. Если менее 120 мс, то придерживается, если более 160 мс, то отбрасывается.

4. Каков алгоритм пропуска кадров для интерлейсного видео
Кадры первого поля выводятся как обычные кадры (см. предыдущий ответ). Кадры второго поля выводятся вслед за предыдущим, если они попадают в тот же диапазон. Для кадра 120 мс, второе поле будет выведено, если текущее время менее 160 мс, в противном случае оно будет отброшено. В данном случае механизм придерживания кадра отсутствует, т.к. не требуется для типичных ситуаций (первое поле уже использовало примерно половину времени).

Aleksoid1978

Есть возможность в окно свойств добавить как в EVR/EVR-CP(статистика вывода), что думаем ?
AMD Ryzen 5 3600 /GIGABYTE B450 Gaming X /AMD Radeon R9 16Gb@3200 /Kingston 500Gb M.2 /GTX 1650 /Samsung U28R550UQI /LG 47LM620T /Yamaha RX-V471 + NS-555 + NS-C444 + NS-333 + YST-SW215

V0lt

Aleksoid1978, о чем конкретно идет речь?

Добавлено: 2019-08-05 20:40:11

Речь о вкладке "Качество"?


Aleksoid1978

Да - да, именно о ней.

Добавлено: 2019-08-06 09:30:26

Все отлично работает, вопрос только в том где разместить.
Вот сам патч - https://yadi.sk/d/5gTueUiBPhBtnA

Вкладка "Качество" располагается после всех "наших", перед Pin Info.
AMD Ryzen 5 3600 /GIGABYTE B450 Gaming X /AMD Radeon R9 16Gb@3200 /Kingston 500Gb M.2 /GTX 1650 /Samsung U28R550UQI /LG 47LM620T /Yamaha RX-V471 + NS-555 + NS-C444 + NS-333 + YST-SW215

V0lt

Aleksoid1978, обычно оно в конце располагается. Перед плеерским PinInfo. Вот скриншот для EVR-ов.


Патч не смотрел еще.

Evgeniy1990

V0lt

Присутствует проблема с "Direct3D 9Ex".

Если, при "Direct3D 9Ex", мы откроем плейлист и будем растягивать его вверх, или налево, в зависимости от его расположения, то у нас резко начинает возрастать Sync Offset и появляются пропущенные кадры прямо во время воспроизведения видео файла. с Direct3D11 данной проблемы нет.
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.