Как выполнить рендеринг в текстуру DirectX11 из выходных данных IMFSample H.264 NV12?

Есть ли хорошие примеры, которые показывают, как сделать 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 ответ

Решение

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

D3D11NV12Rendering

Другие вопросы по тегам