ID3D12VideoDevice2
COM公式ドキュメント
保護されたリソースのサポートを追加します。
メソッド 5
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
保護されたリソースのサポートを備え、解像度に依存しないドライバーのリソースと状態を保持するビデオデコーダーインスタンスを作成します。
| pDesc | D3D12_VIDEO_DECODER_DESC* | in | デコーダーのデコードプロファイルとビットストリーム暗号化を記述する D3D12_VIDEO_DECODER_DESC 構造体へのポインター。 |
| pProtectedResourceSession | ID3D12ProtectedResourceSession* | inoptional | 保護されたリソースへのアクセスを管理するための ID3D12ProtectedResourceSession。 |
| riid | GUID* | in | デコードビデオ状態インターフェイスのグローバル一意識別子 (GUID)。 |
| ppVideoDecoder | void** | out | ID3D12VideoDecoder1 インターフェイスへのポインターを受け取るメモリブロックへのポインター。 |
戻り値
このメソッドは HRESULT を返します。
解説(Remarks)
新しいストリームをデコードするには、新しいデコーダーオブジェクトをインスタンス化する必要があります。
保護されたリソースのサポートを備え、解像度に依存するドライバーのリソースと状態を保持するビデオデコーダーヒープを割り当てます。
| pVideoDecoderHeapDesc | D3D12_VIDEO_DECODER_HEAP_DESC* | in | デコード構成を記述する D3D12_VIDEO_DECODER_HEAP_DESC へのポインター。 |
| pProtectedResourceSession | ID3D12ProtectedResourceSession* | inoptional | 保護されたリソースへのアクセスを管理するための ID3D12ProtectedResourceSession。 |
| riid | GUID* | in | デコードビデオ状態インターフェイスのグローバル一意識別子 (GUID)。 |
| ppVideoDecoderHeap | void** | out | ID3D12VideoDecoderHeap1 インターフェイスへのポインターを受け取るメモリブロックへのポインター。 |
戻り値
このメソッドは HRESULT を返します。
保護されたリソースのサポートを備えたビデオプロセッサーインスタンスを作成します。
| 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 パラメーターで指定した値と一致する必要があります。 |
| pProtectedResourceSession | ID3D12ProtectedResourceSession* | inoptional | 保護されたリソースへのアクセスを管理するための ID3D12ProtectedResourceSession。 |
| riid | GUID* | in | ビデオプロセッサーインターフェイスのグローバル一意識別子 (GUID)。 |
| ppVideoProcessor | void** | out | ID3D12VideoProcessor1 インターフェイスへのポインターを受け取るメモリブロックへのポインター。 |
戻り値
このメソッドは HRESULT を返します。
解説(Remarks)
作成時に設定したパラメーターを変更するには、ビデオプロセッサーオブジェクトを再作成する必要があります。
ビデオ拡張コマンドを作成します。
| pDesc | D3D12_VIDEO_EXTENSION_COMMAND_DESC* | in | 作成するコマンドを記述する D3D12_VIDEO_EXTENSION_COMMAND_DESC。 |
| pCreationParameters | void* | in | 作成パラメーター構造体へのポインター。この構造体はコマンドによって定義されます。パラメーター構造体は、フィーチャー値 D3D12_FEATURE_VIDEO_EXTENSION_COMMAND_PARAMETERS およびパラメーターステージ値 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE_CREATION を指定して ID3D12VideoDevice::CheckFeatureSupport を呼び出したときに列挙されるパラメーターと一致する必要があります。 |
| CreationParametersDataSizeInBytes | UINT_PTR | in | pCreationParameters パラメーター構造体のサイズ (バイト単位)。 |
| pProtectedResourceSession | ID3D12ProtectedResourceSession* | inoptional | 保護されたリソースへのアクセスを管理するための ID3D12ProtectedResourceSession。 |
| riid | GUID* | in | ID3D12VideoExtensionCommand インターフェイスのグローバル一意識別子 (GUID)。 |
| ppVideoExtensionCommand | void** | out | ID3D12VideoExtensionCommand インターフェイスへのポインターを受け取るメモリブロックへのポインター。 |
戻り値
このメソッドは HRESULT を返します。
ビデオ拡張コマンドを実行します。
| pExtensionCommand | ID3D12VideoExtensionCommand* | in | 実行するビデオ拡張コマンドを表す ID3D12VideoExtensionCommand へのポインター。呼び出し元は、コマンドの実行が完了するまでオブジェクトの有効期間を維持する責任があります。 |
| pExecutionParameters | void* | in | 実行入力パラメーター構造体へのポインター。この構造体はコマンドによって定義されます。パラメーター構造体は、フィーチャー値 D3D12_FEATURE_VIDEO_EXTENSION_COMMAND_PARAMETERS およびパラメーターステージ値 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE_EXECUTION を指定して ID3D12VideoDevice::CheckFeatureSupport を呼び出したときに列挙されるパラメーターと一致する必要があります。 |
| ExecutionParametersSizeInBytes | UINT_PTR | in | pExecutionParameters パラメーター構造体のサイズ (バイト単位)。 |
| pOutputData | void* | out | 実行出力パラメーター構造体へのポインター。この構造体はコマンドによって定義されます。 |
| OutputDataSizeInBytes | UINT_PTR | in | pExecutionParameters パラメーター構造体のサイズ (バイト単位) を受け取ります。 |
戻り値
このメソッドは HRESULT を返します。
解説(Remarks)
このメソッドを通じて実行されるビデオ拡張コマンドは、このメソッドが戻る前に完了する必要があります。効率のため、拡張の実装では、可能な限りこのメソッドを使用する代わりにコマンドリストで作業をスケジュールすべきです。各ビデオコマンドリストの種類は、スケジュールされた作業のための ExecuteExtensionCommand を提供します。これには次のものが含まれます。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_ID3D12VideoDevice2 "{F019AC49-F838-4A95-9B17-579437C8F513}" #usecom global ID3D12VideoDevice2 IID_ID3D12VideoDevice2 "{}" #comfunc global ID3D12VideoDevice2_CreateVideoDecoder1 9 var,sptr,var,sptr #comfunc global ID3D12VideoDevice2_CreateVideoDecoderHeap1 10 var,sptr,var,sptr #comfunc global ID3D12VideoDevice2_CreateVideoProcessor1 11 int,var,int,var,sptr,var,sptr #comfunc global ID3D12VideoDevice2_CreateVideoExtensionCommand 12 var,sptr,sptr,sptr,var,sptr #comfunc global ID3D12VideoDevice2_ExecuteExtensionCommand 13 sptr,sptr,sptr,sptr,sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。#define global IID_ID3D12VideoDevice2 "{F019AC49-F838-4A95-9B17-579437C8F513}" #usecom global ID3D12VideoDevice2 IID_ID3D12VideoDevice2 "{}" #comfunc global ID3D12VideoDevice2_CreateVideoDecoder1 9 sptr,sptr,sptr,sptr #comfunc global ID3D12VideoDevice2_CreateVideoDecoderHeap1 10 sptr,sptr,sptr,sptr #comfunc global ID3D12VideoDevice2_CreateVideoProcessor1 11 int,sptr,int,sptr,sptr,sptr,sptr #comfunc global ID3D12VideoDevice2_CreateVideoExtensionCommand 12 sptr,sptr,sptr,sptr,sptr,sptr #comfunc global ID3D12VideoDevice2_ExecuteExtensionCommand 13 sptr,sptr,sptr,sptr,sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。