はじめに

今日DirectX 12は、ビデオ復号化、ビデオ処理、動き推定などのいくつかのビデオアプリケーションのためのGPU加速をサポートするためのAPIを提供します。

D3D12が既存のビデオAPIファミリに新しいビデオエンコード機能を追加し、開発者がGPU Accelerated Video Enginesを使用してビデオエンコーディングを実行できるようにする新しいビデオエンコード機能を追加しています。

この機能は、DirectX 12の原則とスタイルと一貫してビデオエンコーディングを実装するための新しい方法を提供します。

ビデオエンコードAPI備考

データフローに関しては、APIは ID3D12Resource テクスチャによって表される各ビデオフレームを取り、それらをスライスヘッダと各符号化されたフレームのペイロードを含む ID3D12Resource </ Bバッファに圧縮します。現在、DXGI_FORMAT_NV12 DXGI_FORMAT_P010 DXGI_FORMAT_P010は、ドライバのサポートによって使用可能であるため、入力コンテンツはAPIユーザーによって以前にサンプリングされた色変換およびダウンサンプリングされる必要があります。

今日の利用可能なコーデックはH264であり、HEVCおよび各コーデックの特定のサポートであり、それらのエンコーディングツールは、ドライバサポート要件があるため、 ID3D12VIDEVICE :: CheckFeatureSupport を使用して照会する必要があります。

残りのビットストリームコーデックヘッダ(すなわち、SEI / VUI / VPS / SPS / PPS)を処理する責任は、GPU操作から得られた圧縮ビットストリームとともにそれらを最終ビットストリームに生成してパックするユーザに完全に委任される。各フレームについて。

以下の DirectX 12の原則とSTYLE 、参照フレームは明示的に管理され、それらのメモリはAPIユーザーによって完全に追跡されます。これにより、明示的なメモリ予算/管理制御を行うDPBを格納するためのテクスチャまたはテクスチャアレイの配列の明確な使用法が可能になり、APIユーザーがDPBサイズと参照ピクチャ選択戦略を完全に制御できるようにすることができます。 I / P / Bピクチャタイプの選択およびBフレーム写真タイプの選択およびBフレームグループの並べ替えなどの参照ピクチャ管理の他の態様も、ユーザ内でも制御されており、誰が表示順序付けおよび参照フレーム依存性トポロジを追跡し、GPU操作を送信する。所望のピクチャタイプで順序付けられている順序.Aは、符号化プロセスのさまざまな側面を調整するためのこのAPIによってかなりの数の設定可​​能なパラメータが公開されており、カスタムスライス分割方式、アクティブ(すなわちCBR)のようなシナリオに最適に適合させる、VBR、QBVR)およびパッシブ(絶対/デルタカスタムQPマップ)レート制御構成モード、カスタムコーデックエンコーディングツールの使用、カスタムコーデックブロックおよび変換サイズ、動きベクトル精度制限、イントラリフレッシュセッションの明示的な使用、ビデオの動的再構成ストリーム解像度/レート制御/スライス分割など。

このAPIはエンコード統計情報も報告し、 SetPredication および Timestamp D3D12機能と共に使用できます。

Video Encode APIのドキュメントリソース

APIの使用法は他の既存のビデオDirectX 12の機能と似ていますが、高度なステップは次のとおりです。

DirectX12ビデオエンコーディング操作のサポート詳細を確認するには、I D3D12VIDEVICE :: CheckFeaturesUpport を呼び出します。 D3D12_FEATURE_VIDEO 列挙体から値を渡して、サポート情報を要求している機能を指定して、 ID3D12VIDEODERODERのインスタンスを作成するためのCreateVideoEncoder の機能を指定します。 B>符号化セッションの状態を保持するインタフェース。

id3d12videodevice :: createvideoEncoderHeap を呼び出して、 id3d12videoEncodeRheap インターフェースのインスタンスを作成します。このオブジェクトには、解決依存ドライバリソースと状態が含まれています。

フレームをエンコードするには

ビデオエンコード操作のすべての入力および出力パラメータは、入力パラメータ構造と出力パラメータ構造に編成されています。 ID3D12VIDEOCOMMANDLIST2 :: ENCODEFRAMELLIST2 :: ENCODEFRAMELSLIST2 :: ENCODEFRAMESLIST2 :: ENCODEFRAMESLIST2 :: ENCODEFRAMESLIST2 :: ENCODEFRAMELLIST2 :: ENCODEFRAME を記録する指図。

符号化操作の後、ユーザは、実行しなければならないID3D12VideoCommandList2 から:: ResolveEncoderOutputMetadata 解決ハードウェアに依存して、符号化結果D3D12_VIDEO_ENCODER_RESOLVE_METADATA_INPUT_ARGUMENTS D3D12_VIDEO_ENCODER_RESOLVE_METADATA_OUTPUT_ARGUMENTS

コマンドリストが正しく記録されている場合は、ビデオコマンドキューの id3d12commandqueue :: executeCommandlists を呼び出して、フレームエンコードとメタデータ解決操作をGPUに送信します。

詳細なAPIインタフェースと構造定義は、ここでを見つけることができます。

APIの詳細な詳細と詳細な文書を調べるには、この文書を参照してください。

Video Encode API対応プラットフォーム

ビデオエンコードAPIはWindows 11の一部として含まれており、 DirectX 12 Agility SDK (バージョン 1.700.10-Preview または新しい)にもあります。以下を参照してください。現在、H264とHEVCコーデックの両方のビデオエンコードをサポートしているハードウェアプラットフォームのリストとその最小ドライバのバージョン要件。

ベンダ サポートプラットフォーム最小ビデオドライバのバージョン AMD

Radeon RX 5000シリーズ以上

Ryzen 2xxxxシリーズ以上

開発中 – ETA Q2 \’2022inTel.

タイガー湖

アイスレイク

Alder Lake(2022年初め)

V30.0.100.995555NVIDIA.

GeForce GTX 10xx以上

GeForce RTX 20xx以上

Quadro RTX

NVIDIA RTX

v471.41

出典: https://devblogs.microsoft.com/direc…ideo-encoding/

By admin

Leave a Reply

Your email address will not be published.