ホーム › Media.MediaFoundation › ID3D12VideoDevice
ID3D12VideoDevice
COM公式ドキュメント
ビデオ機能のクエリ、およびビデオデコーダーとプロセッサーのインスタンス化を含む、Microsoft Direct3D 12 デバイスのビデオデコードおよび処理機能を提供します。
メソッド 4
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
vtbl 3 HRESULT CheckFeatureSupport(D3D12_FEATURE_VIDEO FeatureVideo, void* pFeatureSupportData, DWORD FeatureSupportDataSize)
現在のビデオドライバーがサポートしている機能に関する情報を取得します。(ID3D12VideoDevice::CheckFeatureSupport)
| FeatureVideo | D3D12_FEATURE_VIDEO | in | サポートをクエリする機能を指定する D3D12_FEATURE_VIDEO 列挙体のメンバー。 |
| pFeatureSupportData | void* | inout | サポートを要求する機能の構成の詳細を記述するデータを格納する構造体であり、呼び出しの完了時に利用可能なサポートレベルの詳細が設定されます。各種類の機能サポート要求に関連付けられた構造体については、D3D12_FEATURE_VIDEO のフィールドの説明を参照してください。 |
| FeatureSupportDataSize | DWORD | in | pFeatureSupportData パラメーターに渡す構造体のサイズ。 |
戻り値
成功した場合は S_OK を返します。それ以外の場合、pFeatureSupportData パラメーターにサポートされていないデータ型が渡されたとき、または FeatureSupportDataSize パラメーターでサイズの不一致が検出されたときは E_INVALIDARG を返します。
vtbl 4 HRESULT CreateVideoDecoder(D3D12_VIDEO_DECODER_DESC* pDesc, GUID* riid, void** ppVideoDecoder)
ビデオデコーダーのインスタンスを作成します。
| pDesc | D3D12_VIDEO_DECODER_DESC* | in | デコーダーのデコードプロファイルとビットストリーム暗号化を記述する D3D12_VIDEO_DECODER_DESC 構造体へのポインター。 |
| riid | GUID* | in | デコードビデオ状態インターフェイスのグローバル一意識別子 (GUID)。 |
| ppVideoDecoder | void** | out | ID3D12VideoDecoder インターフェイスへのポインターを受け取るメモリブロックへのポインター。 |
戻り値
このメソッドは HRESULT を返します。
解説(Remarks)
新しいストリームをデコードするには、新しいデコーダーオブジェクトをインスタンス化する必要があります。
vtbl 5 HRESULT CreateVideoDecoderHeap(D3D12_VIDEO_DECODER_HEAP_DESC* pVideoDecoderHeapDesc, GUID* riid, void** ppVideoDecoderHeap)
ビデオデコーダーヒープを割り当てます。
| pVideoDecoderHeapDesc | D3D12_VIDEO_DECODER_HEAP_DESC* | in | デコード構成を記述する D3D12_VIDEO_DECODER_HEAP_DESC へのポインター。 |
| riid | GUID* | in | デコードビデオ状態インターフェイスのグローバル一意識別子 (GUID)。 |
| ppVideoDecoderHeap | void** | out | ID3D12VideoDecoderHeap インターフェイスへのポインターを受け取るメモリブロックへのポインター。 |
戻り値
このメソッドは HRESULT を返します。
vtbl 6 HRESULT CreateVideoProcessor(DWORD NodeMask, D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC* pOutputStreamDesc, DWORD NumInputStreamDescs, D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC* pInputStreamDescs, GUID* riid, void** ppVideoProcessor)
ビデオプロセッサーのインスタンスを作成します。
| NodeMask | DWORD | in | ビデオプロセッサーが使用される物理アダプターを指定するノードマスク。単一 GPU での動作の場合は、これをゼロに設定します。複数の GPU ノードがある場合は、コマンドキューが適用されるノード、すなわちデバイスの物理アダプターを識別するビットを設定します。マスク内の各ビットが 1 つのノードに対応します。設定できるビットは 1 つだけです。 |
| pOutputStreamDesc | D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC* | in | 出力ストリームを記述する D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC(ns-d3d12video-d3d12_video_process_output_stream_desc) 構造体へのポインター。 |
| NumInputStreamDescs | DWORD | in | pInputStreamDescs パラメーターで指定される入力ストリームの数。 |
| pInputStreamDescs | D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC* | in | 入力ストリームを記述する D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC(ns-d3d12video-d3d12_video_process_input_stream_desc) 構造体のリストへのポインター。指定する構造体の数は、NumInputStreamDescs パラメーターで指定した値と一致している必要があります。 |
| riid | GUID* | in | ビデオプロセッサーインターフェイスのグローバル一意識別子 (GUID)。 |
| ppVideoProcessor | void** | out | ID3D12VideoProcessor インターフェイスへのポインターを受け取るメモリブロックへのポインター。 |
戻り値
このメソッドは HRESULT を返します。
解説(Remarks)
作成時に設定したパラメーターを変更するには、ビデオプロセッサーオブジェクトを再作成する必要があります。
出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
出力引数:
#define global IID_ID3D12VideoDevice "{1F052807-0B46-4ACC-8A89-364F793718A4}" #usecom global ID3D12VideoDevice IID_ID3D12VideoDevice "{}" #comfunc global ID3D12VideoDevice_CheckFeatureSupport 3 int,sptr,int #comfunc global ID3D12VideoDevice_CreateVideoDecoder 4 var,var,sptr #comfunc global ID3D12VideoDevice_CreateVideoDecoderHeap 5 var,var,sptr #comfunc global ID3D12VideoDevice_CreateVideoProcessor 6 int,var,int,var,var,sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。#define global IID_ID3D12VideoDevice "{1F052807-0B46-4ACC-8A89-364F793718A4}" #usecom global ID3D12VideoDevice IID_ID3D12VideoDevice "{}" #comfunc global ID3D12VideoDevice_CheckFeatureSupport 3 int,sptr,int #comfunc global ID3D12VideoDevice_CreateVideoDecoder 4 sptr,sptr,sptr #comfunc global ID3D12VideoDevice_CreateVideoDecoderHeap 5 sptr,sptr,sptr #comfunc global ID3D12VideoDevice_CreateVideoProcessor 6 int,sptr,int,sptr,sptr,sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。