Как выполнить рендеринг в текстуру 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, о котором я не могу найти никакой другой информации.