101

Re: MPC Video Renderer

По поводу DX11 - ну так все это можно опционально(в будущем). Для начала научиться бы рендерить ))

А вот и патч для CreateOffscreenPlainSurface() - https://yadi.sk/d/ALSQfvBV3TEx43

I7 2600K@4.2 / Asrock P67 Extreme 4 Gen 3 / Kingston HyperX 8Gb 1866 (4x2) Kit / GIGABYTE GTX 960 / BenQ EW2430 / LG 47LM620T / Yamaha RX-V471 + NS-555 + NS-C444 + NS-333 + YST-SW215

102

Re: MPC Video Renderer

В общем патч бесполезен. Тут надо разбираться почему такое происходит с дополнительным дисплеем.

Добавлено: 2018-03-12 17:27:13

Evgeniy1990
Видео с зеленью сможешь снять?
Возьми какое-нибудь видео, чтобы в масштабе 100% (Alt+2) помещалось на экране.

103

Re: MPC Video Renderer

V0lt пишет:

Evgeniy1990
Видео с зеленью сможешь снять?
Возьми какое-нибудь видео, чтобы в масштабе 100% (Alt+2) помещалось на экране.

Хорошо, попробую сделать видеозапись с проявлением зелени, после открытия видео файла.

Добавлено: 2018-03-12 18:08:47

V0lt, пожалуйста, сделал для вас видеозапись с проявлением зелени, при открытии видео файла.

Добавлено: 2018-03-12 18:09:11

Я надеюсь, сойдет?

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.

104

Re: MPC Video Renderer

Спасибо. Ничего особо страшного нет, 1-2 кадра зелени и все.
Вот попробуй это решение для начала - https://yadi.sk/d/irIuRIzV3THVQs

105

Re: MPC Video Renderer

V0lt пишет:

Спасибо. Ничего особо страшного нет, 1-2 кадра зелени и все.
Вот попробуй это решение для начала - https://yadi.sk/d/irIuRIzV3THVQs

Попробовал ваш тестовый билд. При открытии - падает.

Добавлено: 2018-03-12 20:32:26

Если нужно, прилагаю дамп-файл.

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.

106

Re: MPC Video Renderer

А так? - https://yadi.sk/d/xe1V4Pxz3THXZC

107 (изменено: Evgeniy1990, 2018-03-12 21:36:44)

Re: MPC Video Renderer

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.

108

Re: MPC Video Renderer

Evgeniy1990 пишет:

Я так понимаю, что вы сделали откат.

Нет. Я доработал обход бага для AMD. См. лог.

109 (изменено: Evgeniy1990, 2018-03-13 09:34:34)

Re: MPC Video Renderer

V0lt пишет:
Evgeniy1990 пишет:

Я так понимаю, что вы сделали откат.

Нет. Я доработал обход бага для AMD. См. лог.

Ясно, но теперь плеер падает при смене выходных форматов, как на лету, так и вручную, до открытия видео файлов.
Поправьте пожалуйста.

Добавлено: 2018-03-12 22:01:36

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

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

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

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.

110

Re: MPC Video Renderer

Aleksoid1978
Не могу создать поверхность Direct3D11.

hr = m_pDevice->CreateTexture2D(&desc, NULL, &m_pSrcTexture2D);

Добавлено: 2018-03-13 19:34:33

Немного о том как интерпритировать поверзность 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/WPFDXInter … evice9.cpp

Добавлено: 2018-03-14 22:14:09

Заметил проблему некорректного вывода на некоторых размерах кадра (например на 854x480).
http://jpegshare.net/thumbs/d9/48/d9482f010874f4d68abd57b37963d05c.jpg
Ссылка.
Буду разбираться.

111

Re: MPC Video Renderer

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

P.S. Исправил.

Добавлено: 2018-03-15 22:14:25

Реализовал поддержку кастомных интерфейсов от LAV для работы D3D11 Native декодера. Работает - но какие-то непонятки с рендерингом картинки - все идет рывками. Причина неясна. Мой английский слаб чтобы задавать вопросы smile

I7 2600K@4.2 / Asrock P67 Extreme 4 Gen 3 / Kingston HyperX 8Gb 1866 (4x2) Kit / GIGABYTE GTX 960 / BenQ EW2430 / LG 47LM620T / Yamaha RX-V471 + NS-555 + NS-C444 + NS-333 + YST-SW215

112

Re: MPC Video Renderer

Aleksoid1978 пишет:

Реализовал поддержку кастомных интерфейсов от LAV для работы D3D11 Native декодера. Работает - но какие-то непонятки с рендерингом картинки - все идет рывками. Причина неясна. Мой английский слаб чтобы задавать вопросы smile

У меня, на 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.

113

Re: MPC Video Renderer

Ну я поддержку его ещё не внедрял. Ты собирал с DX9 или 11 ??

I7 2600K@4.2 / Asrock P67 Extreme 4 Gen 3 / Kingston HyperX 8Gb 1866 (4x2) Kit / GIGABYTE GTX 960 / BenQ EW2430 / LG 47LM620T / Yamaha RX-V471 + NS-555 + NS-C444 + NS-333 + YST-SW215

114

Re: MPC Video Renderer

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.

115

Re: MPC Video Renderer

DX11 требуется ТОЛКО чтобы в связке с LAV Video в последнем DX11 декодирование работало в "нативном" режиме(для этого требуется специальные интерфейсы и поддержка на стороне видео-рендерера). Поддержку чего я, кстати, уже сделал.

Добавлено: 2018-03-16 19:21:03

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

I7 2600K@4.2 / Asrock P67 Extreme 4 Gen 3 / Kingston HyperX 8Gb 1866 (4x2) Kit / GIGABYTE GTX 960 / BenQ EW2430 / LG 47LM620T / Yamaha RX-V471 + NS-555 + NS-C444 + NS-333 + YST-SW215

116

Re: MPC Video Renderer

Aleksoid1978 пишет:

Это что - один и тот же сэмпл 2 раза рендерить, чтобы частота вывода увеличилась.

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

117

Re: MPC Video Renderer

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

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

Кстати - у нас на DX11 + D3D11 Native декодер в LAV прекрасно работает деинтерлейс(не знаю что не может сделать автор madVR).

I7 2600K@4.2 / Asrock P67 Extreme 4 Gen 3 / Kingston HyperX 8Gb 1866 (4x2) Kit / GIGABYTE GTX 960 / BenQ EW2430 / LG 47LM620T / Yamaha RX-V471 + NS-555 + NS-C444 + NS-333 + YST-SW215

118

Re: MPC Video Renderer

Aleksoid1978
Я думаю в madVR есть конфликт с шейдерными преобразованиями и D3D11. Мы после процессора сразу получаем RGB, а в madVR преобразование YUV->RGB скорее всего делается на  шейдерах.

Добавлено: 2018-03-17 18:06:50

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

119

Re: MPC Video Renderer

У меня, кстати, есть предложение - в VP делать только преобразование, а вот уже ресайз на шейдерах. Заодно научиться работать с шейдерами на DX11 smile

I7 2600K@4.2 / Asrock P67 Extreme 4 Gen 3 / Kingston HyperX 8Gb 1866 (4x2) Kit / GIGABYTE GTX 960 / BenQ EW2430 / LG 47LM620T / Yamaha RX-V471 + NS-555 + NS-C444 + NS-333 + YST-SW215

120

Re: MPC Video Renderer

Aleksoid1978 пишет:

У меня, кстати, есть предложение - в VP делать только преобразование, а вот уже ресайз на шейдерах.

Плохое предложение. Ресайз силами VP самый оптимальный по нагрузке на железо. Мы наконец-то сделали такой ресайз для NV12 и P010 , а ты уже хочешь его выкинуть.

Добавлено: 2018-03-18 07:46:37

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

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

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

121

Re: MPC Video Renderer

Ну шейдерами покачественнее будет. Ну и если нет - надо решить вопрос с размерами и ресайзом для DX11. Сейчас размер swapchain под размер окна, что ессно некорректно.

I7 2600K@4.2 / Asrock P67 Extreme 4 Gen 3 / Kingston HyperX 8Gb 1866 (4x2) Kit / GIGABYTE GTX 960 / BenQ EW2430 / LG 47LM620T / Yamaha RX-V471 + NS-555 + NS-C444 + NS-333 + YST-SW215

122

Re: MPC Video Renderer

Если хочеться потренироваться с шейдерами, то начни с простого, примени шейдеры на конечную поверхность перед самым выводом. Сначала попробуй grayscale, nightvision, затем всякие шарперы (они сложны тем что необходимо доп. параметры передавать). Из реально необходимого можно коррекцию YCgCo и HDR попробовать.

Делать сейчас шейдерный ресайз слишком рано.

123

Re: MPC Video Renderer

Ну это не мне уж точно smile

Добавлено: 2018-03-18 16:26:18

Ну тогда надо разобраться с размерами...

Добавлено: 2018-03-18 19:40:58

По хорошему(чтобы было все одинаково) надо D3D11 -> DX11, или DX9 -> D3D9.

I7 2600K@4.2 / Asrock P67 Extreme 4 Gen 3 / Kingston HyperX 8Gb 1866 (4x2) Kit / GIGABYTE GTX 960 / BenQ EW2430 / LG 47LM620T / Yamaha RX-V471 + NS-555 + NS-C444 + NS-333 + YST-SW215

124

Re: MPC Video Renderer

Но вообще-то там неодинаково.
D3D11 - это почти чистый Direct3D 11.
DX9 - это Direct3D 11, DXVA2-VP и куча всего.
Но Я подумывал об этом.

Добавил информацию в первое сообщение.

Добавлено: 2018-03-18 13:00:28

CComPtr<ID3D11Texture2D> m_pSrcTexture2D;
CComPtr<ID3D11Texture2D> m_pSrcTexture2D_Decode;

Для чего вторая текстура?

Добавлено: 2018-03-18 13:03:01

И вот это задвоение зачем?

DXGI_FORMAT m_srcDXGIFormat = DXGI_FORMAT_UNKNOWN;
UINT m_srcWidth = 0;
UINT m_srcHeight = 0;
...
DXGI_FORMAT m_D3D11_Src_Format = DXGI_FORMAT_UNKNOWN;
UINT m_D3D11_Src_Width = 0;
UINT m_D3D11_Src_Height = 0;

125

Re: MPC Video Renderer

А дело в том что размер в медиатипе и реальный размер с которым будет создаваться текстура могут отличаться, для DXVA2. Поэтому я ввел эти "дубли" - чтобы хранить и использовать при проверке при попытке создании текстур. ДЛя DX9 тоже самое.

Добавлено: 2018-03-18 20:20:05

По поводу текстур - одна с поддержкой записи из CPU и она не может участвовать в VideoProcessorBlt(). Поэтому приходиться держать вторую, "нормальную" - в которую просто копируем из первой после ее заполнения.

I7 2600K@4.2 / Asrock P67 Extreme 4 Gen 3 / Kingston HyperX 8Gb 1866 (4x2) Kit / GIGABYTE GTX 960 / BenQ EW2430 / LG 47LM620T / Yamaha RX-V471 + NS-555 + NS-C444 + NS-333 + YST-SW215