Как выполнить рендеринг в текстуру DirectX11 из вывода IMFSample H.264 NV12? - PullRequest
0 голосов
/ 18 мая 2018

Есть ли хорошие примеры, показывающие, как визуализировать вывод IMFSample из декодера H.264?В моем сценарии используется поток H.264 с разрешением 4K, и целевой компьютер будет принимать только 1080p с использованием буферов DXGI.Но декодер H.264 будет обрабатывать 4K, поэтому мне нужно найти способ передать этот NV12 IMFSample непосредственно в средство визуализации DirectX 11.Я уже пробовал использовать образец DX11VideoRenderer , но он не работает из-за этого конкретного IMFSample, не имеющего интерфейса IMFDXGIBuffer.

Это похоже на DX11VideoRenderer вход IMFDXGIBuffer имеет тип NV12 и может быть успешно обработан на аппаратном уровне.Таким образом, кажется логичным, что не-DXGI буфер типа NV12 тоже должен быть приемлемым?

Возможно, мне нужно создать ID3D11Texture2D текстуру или ресурс типа NV12?Я нашел примеры того, как создать текстуру из файла , но нет примеров того, как создать текстуру из образца, что может показаться еще более полезным.И если я смогу создать текстуру NV12, как выяснить значения SysMemPitch и SysMemSlicePitch в структуре D3D11_SUBRESOURCE_DATA для NV12?

Любая помощь будет очень признательна!Спасибо.

1 Ответ

0 голосов
/ 15 июня 2018

Мне удалось найти полный пример, который отображает образец NV12 на экран.Хотя существуют некоторые простые ошибки расчета шага при отображении собственного примера изображения, реальный код рендеринга работает правильно.Это старый образец Microsoft, о котором я не могу найти никакой другой информации.

D3D11NV12Rendering

...