MPC Video Renderer

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

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

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

V0lt


Evgeniy1990

Цитата: V0ltА так? - https://yadi.sk/d/xe1V4Pxz3THXZC
Проверил. При открытии - не падает, зелень, при открытии, также отсутствует.
Но, при попытке переключить выходные форматы на лету, плеер падает.

Я так понимаю, что вы сделали откат.
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Я так понимаю, что вы сделали откат.
Нет. Я доработал обход бага для AMD. См. лог.

Evgeniy1990

Цитата: V0lt
Цитата: Evgeniy1990Я так понимаю, что вы сделали откат.
Нет. Я доработал обход бага для AMD. См. лог.
Ясно, но теперь плеер падает при смене выходных форматов, как на лету, так и вручную, до открытия видео файлов.
Поправьте пожалуйста.
[merge_posts_bbcode]Добавлено: 2018-03-12 22:01:36[/merge_posts_bbcode]

Странно, memset нормально работает только с NV12, со всеми остальными выходными форматами - полный крах.

V0lt, обратите пожалуйста внимание на этот скриншот.

[merge_posts_bbcode]Добавлено: 2018-03-13 06:43:01[/merge_posts_bbcode]

V0lt / Aleksoid1978

Собрал и проверил MpcVideoRenderer.ax (build 94 - Commit 45be5d1).

1. При открытии различных видео файлов, больше не проявляется зелень.
2. Полностью исправлено и работает переключение выходных форматов, как на лету, так и вручную.
3. Также, зелень больше не проявляется, при переключении выходных форматов.
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

Aleksoid1978
Не могу создать поверхность Direct3D11.
hr = m_pDevice->CreateTexture2D(&desc, NULL, &m_pSrcTexture2D);[merge_posts_bbcode]Добавлено: 2018-03-13 19:34:33[/merge_posts_bbcode]

Немного о том как интерпритировать поверзность DX9Ex в DX11
Есть статья Surface Sharing Between Windows Graphics APIs.
В ней есть ссылки на пример кода, которые более недействительны.
http://code.msdn.microsoft.com/D3D9ExDXGISharedSurf
http://archive.msdn.microsoft.com/D3D9ExDXGISharedSurf

На форуме MSDN есть тема по этому примеру кода, в которой пример так и не нашли, но нашли кое-что похожее.
https://github.com/Microsoft/WPFDXInterop/blob/master/src/Microsoft.Wpf.Interop.DirectX/SurfaceDevice9.cpp

[merge_posts_bbcode]Добавлено: 2018-03-14 22:14:09[/merge_posts_bbcode]

Заметил проблему некорректного вывода на некоторых размерах кадра (например на 854x480).

Ссылка.
Буду разбираться.

Aleksoid1978

Возможно что при работе с dx9 поверхностями есть ограничение на кратность, может размеры должны кратны 8.

P.S. Исправил.
[merge_posts_bbcode]Добавлено: 2018-03-15 22:14:25[/merge_posts_bbcode]

Реализовал поддержку кастомных интерфейсов от LAV для работы D3D11 Native декодера. Работает - но какие-то непонятки с рендерингом картинки - все идет рывками. Причина неясна. Мой английский слаб чтобы задавать вопросы :)
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Реализовал поддержку кастомных интерфейсов от LAV для работы D3D11 Native декодера. Работает - но какие-то непонятки с рендерингом картинки - все идет рывками. Причина неясна. Мой английский слаб чтобы задавать вопросы :)
У меня, на Windows 10, при использовании "LAV D3D11 Native"-декодера, при открытии просто черный экран.
Воспроизведение видео файлов даже не начинается, плеер просто висит намертво, при старте, т.е. полностью построил граф фильтров и висит намертво на месте.
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

Ну я поддержку его ещё не внедрял. Ты собирал с DX9 или 11 ??
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Ну я поддержку его ещё не внедрял. Ты собирал с DX9 или 11 ??
Ясно. Я собирал как обычно, с DX9. Значит требуется все-таки DX11.
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

DX11 требуется ТОЛКО чтобы в связке с LAV Video в последнем DX11 декодирование работало в "нативном" режиме(для этого требуется специальные интерфейсы и поддержка на стороне видео-рендерера). Поддержку чего я, кстати, уже сделал.
[merge_posts_bbcode]Добавлено: 2018-03-16 19:21:03[/merge_posts_bbcode]

Надо бы уже подумать об очереди, чтобы самим контролировать A/V синхронизацию. Пока мне не ясен момент с интерлесным видео, его надо выводить в 2-а раза быстрее. Это что - один и тот же сэмпл 2 раза рендерить, чтобы частота вывода увеличилась.
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Это что - один и тот же сэмпл 2 раза рендерить, чтобы частота вывода увеличилась.
По идее должно быть так, что входит один сэмпл, вытаскиваем два. Но примеров кода я не видел.

Aleksoid1978

Проверил как работает A/V синхронизация с нашим видео-рендерером - да как бы все отлично, спецом проверял даже на VFR видео - все корректно, fps видео меняется. Так что, в принципе, можно не вводить никакой очереди(ну пока не решим добавлять всякие V-Sync и т.д.).

А вот вопрос с выводом интерлейс материала остается открытым - нам надо кадры выводить "в 2 раза чаще" чем они поступают. Это вот как - брать и каждый интерлейсный кадр выводить 2 раз ??

Кстати - у нас на DX11 + D3D11 Native декодер в LAV прекрасно работает деинтерлейс(не знаю что не может сделать автор madVR).
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
Я думаю в madVR есть конфликт с шейдерными преобразованиями и D3D11. Мы после процессора сразу получаем RGB, а в madVR преобразование YUV->RGB скорее всего делается на  шейдерах.
[merge_posts_bbcode]Добавлено: 2018-03-17 18:06:50[/merge_posts_bbcode]

Сделал возможность включения режима Dirеct3D11 через сохраняемую опцию.

Aleksoid1978

У меня, кстати, есть предложение - в VP делать только преобразование, а вот уже ресайз на шейдерах. Заодно научиться работать с шейдерами на DX11 :)
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У меня, кстати, есть предложение - в VP делать только преобразование, а вот уже ресайз на шейдерах.
Плохое предложение. Ресайз силами VP самый оптимальный по нагрузке на железо. Мы наконец-то сделали такой ресайз для NV12 и P010 , а ты уже хочешь его выкинуть.
[merge_posts_bbcode]Добавлено: 2018-03-18 07:46:37[/merge_posts_bbcode]

Попробую сделать класс для DX9.

[merge_posts_bbcode]Добавлено: 2018-03-18 07:53:31[/merge_posts_bbcode]

Кстати. У кого-нибудь есть дремучая карта, которая знает только DirecX 10 или только DirecX 9?