MPC Video Renderer

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

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

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

Evgeniy1990

Цитата: V0ltНе надо так делать. В коде это пока не предусмотрено.
Ясно. Просто мне так переключать их удобнее и быстрее всего проверить каждый из них.
Потом тогда реализуете такую возможность. Ее просто не хватает сейчас для удобства проверки.
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

YV12 выводиться некорректно:
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

V0lt говорил, что "YV12 выводится почти правильно".

На AMD-видеокарте выходной формат YV12 выглядит еще более невероятно.

В общем, выглядит так, как будто взяли одно изображение и разделили (разрезали) его на четыре равные части и продублировали их.
[merge_posts_bbcode]Добавлено: 2018-03-04 08:09:04[/merge_posts_bbcode]

V0lt / Aleksoid1978

С выходным форматом P010 есть проблема. В моем случае, на AMD-видеокарте, при выводе в данный формат, просто черный экран, т.е. изображения нет. Я запустил видео файл "H.264 (10 bit)", вижу в видео декодере, что работает выходной формат P010, т.е. 10 бит выводятся в чистом виде, но само изображение отсутствует.
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

С YV12 разберусь и поправлю.

RGB32 в будущем оставлю только для DXVA-HD, а для DXVA2-VP сделаю интерполяцию через шейдеры. Там не шибко сложно должно быть, т.к. не надо преорбразования YUV->RGB делать.

Вопрос. Мы будем куда-нибудь выкладывать сборки фильтра?
Если будем то надо архиву порядковый номер присваивать (как в MPC-HC) и часть хеша.
Пример: MpcVideoRenderer-r20-7cf381d2.zip.

Evgeniy1990

Цитата: V0ltВопрос. Мы будем куда-нибудь выкладывать сборки фильтра?
Если будем то надо архиву порядковый номер присваивать (как в MPC-HC) и часть хеша.
Пример: MpcVideoRenderer-r20-7cf381d2.zip.
Я буду собирать и выкладывать сборки фильтра на Я.Диск в отдельную папку.
Позже могу добавить ссылку на данный фильтр в шапку в нашу тему проекта "MPC-BE" на Ruboard.

В общем, будет само название фильтра, его порядковый номер (текущее последнее изменение) и текущий коммит (7 знаков), как в вашем примере.
[merge_posts_bbcode]Добавлено: 2018-03-04 08:42:16[/merge_posts_bbcode]

V0lt
Может лучше для 64-битной версии фильтра в его название добавить "64", т.е. вот так "MpcVideoRenderer64.ax", чтобы можно было положить две версии 32 и 64 битную в один архив. Как вы считаете?
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
Не спеши. Там батник еще надо написать, которого нет. :)

Evgeniy1990

Цитата: V0ltEvgeniy1990
Не спеши. Там батник еще надо написать, которого нет. :)
Ок, понял вас, в общем, тогда буду ждать батника. :)
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Куда вы летите - еще настолько сырое чтобы выкладывать. Да и вообще - какой смысл его отдавать в паблик ??
Мы пока никуда не торопимся, пока просто обдумываем как будем его в дальнейшем собирать, куда выкладывать и т.д.
Пока только мысли на будущее. :)
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

Хмм.
В общем DXVA-HD оказался беднее в плане вариантов преобразования YUV->RGB
Спецификации для сравнения: DXVA-HD и DXVA2-VP.

Aleksoid1978

Необходимо реализовать поддержку ресайза на паузе. А для этого надо хранить послдений кадр. И если с софтовым декодированием все более-менее просто(у нас последние данные есть в m_pSrcSurface и можно на паузе спокойно выводить их), то с DXVA2 сложнее - тут надо данные из pSample как-то вытаскивать в туже m_pSrcSurface.
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
Тут вот какое дело. Если мы будет прикручивать деинтерлейс, то скорее всего у нас появиться очередь и тогда вопрос с паузой решиться сам с собой. :)

Aleksoid1978

В любом случае, для начала - надо научиться вытаскивать данные из surface для DXVA2 режима.
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

Исправил вывод YV12.
[merge_posts_bbcode]Добавлено: 2018-03-04 14:25:08[/merge_posts_bbcode]

Aleksoid1978, тебе вопрос.
В коде ниже кто рулит буфером в виде pSurface? Декодер?
   if (CComQIPtr pService = pSample) {
        CComPtr pSurface;
        if (SUCCEEDED(pService->GetService(MR_BUFFER_SERVICE, IID_PPV_ARGS(&pSurface)))) {


        }
    }

[merge_posts_bbcode]Добавлено: 2018-03-04 14:49:27[/merge_posts_bbcode]

Про деинтерлейс в DXVA2-VP.
Сейчас мы используем ProgressiveDevice. Но если понадобиться, то можно использовать BobDevice. Он стандартный, использует фичу BOBVerticalStretch и вроде как удваивает частоту.

Есть еще "девайсы" от вендеров.
Nvidia {6CB69578-7617-4637-91E5-1C02DB810285}, который использует PixelAdaptive.
Intel {BF752EF6-8CC4-457A-BE1B-08BD1CAEEE9F}, который использует EdgeFiltering, InverseTelecine и требует 1 BackwardRefSamples.

Aleksoid1978

В случае DXVA2 - тем pSurface рулит DXVA2 декодер, тот который в Direct3D9(не путать с видео-декодером).
Поэтому чтобы получить данные от DXVA2 декодера - нам и нужно вот таким образом получить указатель на поверхность, которая содержит сами данные. Вот их и надо научиться сохранять.
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