Win32 API 日本語リファレンス
ホームMedia.MediaFoundation › ID3D12VideoDevice2

ID3D12VideoDevice2

COM
IIDf019ac49-f838-4a95-9b17-579437c8f513継承元ID3D12VideoDevice1自前メソッド開始 vtbl9

公式ドキュメント

保護されたリソースのサポートを追加します。

メソッド 5

vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。

vtbl 9 HRESULT CreateVideoDecoder1(D3D12_VIDEO_DECODER_DESC* pDesc, ID3D12ProtectedResourceSession* pProtectedResourceSession, GUID* riid, void** ppVideoDecoder)

保護されたリソースのサポートを備え、解像度に依存しないドライバーのリソースと状態を保持するビデオデコーダーインスタンスを作成します。

pDescD3D12_VIDEO_DECODER_DESC*inデコーダーのデコードプロファイルとビットストリーム暗号化を記述する D3D12_VIDEO_DECODER_DESC 構造体へのポインター。
pProtectedResourceSessionID3D12ProtectedResourceSession*inoptional保護されたリソースへのアクセスを管理するための ID3D12ProtectedResourceSession
riidGUID*inデコードビデオ状態インターフェイスのグローバル一意識別子 (GUID)。
ppVideoDecodervoid**outID3D12VideoDecoder1 インターフェイスへのポインターを受け取るメモリブロックへのポインター。

戻り値

このメソッドは HRESULT を返します。

解説(Remarks)

新しいストリームをデコードするには、新しいデコーダーオブジェクトをインスタンス化する必要があります。

vtbl 10 HRESULT CreateVideoDecoderHeap1(D3D12_VIDEO_DECODER_HEAP_DESC* pVideoDecoderHeapDesc, ID3D12ProtectedResourceSession* pProtectedResourceSession, GUID* riid, void** ppVideoDecoderHeap)

保護されたリソースのサポートを備え、解像度に依存するドライバーのリソースと状態を保持するビデオデコーダーヒープを割り当てます。

pVideoDecoderHeapDescD3D12_VIDEO_DECODER_HEAP_DESC*inデコード構成を記述する D3D12_VIDEO_DECODER_HEAP_DESC へのポインター。
pProtectedResourceSessionID3D12ProtectedResourceSession*inoptional保護されたリソースへのアクセスを管理するための ID3D12ProtectedResourceSession
riidGUID*inデコードビデオ状態インターフェイスのグローバル一意識別子 (GUID)。
ppVideoDecoderHeapvoid**outID3D12VideoDecoderHeap1 インターフェイスへのポインターを受け取るメモリブロックへのポインター。

戻り値

このメソッドは HRESULT を返します。

vtbl 11 HRESULT CreateVideoProcessor1(DWORD NodeMask, D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC* pOutputStreamDesc, DWORD NumInputStreamDescs, D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC* pInputStreamDescs, ID3D12ProtectedResourceSession* pProtectedResourceSession, GUID* riid, void** ppVideoProcessor)

保護されたリソースのサポートを備えたビデオプロセッサーインスタンスを作成します。

NodeMaskDWORDinビデオプロセッサーを使用する物理アダプターを指定するノードマスク。単一 GPU での動作の場合は、これをゼロに設定します。複数の GPU ノードがある場合は、コマンドキューが適用されるノード、すなわちデバイスの物理アダプターを識別するビットを設定します。マスク内の各ビットは 1 つのノードに対応します。設定できるビットは 1 つのみです。
pOutputStreamDescD3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC*in出力ストリームを記述する D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC(ns-d3d12video-d3d12_video_process_output_stream_desc) 構造体へのポインター。
NumInputStreamDescsDWORDinpInputStreamDescs パラメーターで指定される入力ストリームの数。
pInputStreamDescsD3D12_VIDEO_PROCESS_INPUT_STREAM_DESC*in入力ストリームを記述する D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC(ns-d3d12video-d3d12_video_process_input_stream_desc) 構造体のリストへのポインター。指定する構造体の数は、NumInputStreamDescs パラメーターで指定した値と一致する必要があります。
pProtectedResourceSessionID3D12ProtectedResourceSession*inoptional保護されたリソースへのアクセスを管理するための ID3D12ProtectedResourceSession
riidGUID*inビデオプロセッサーインターフェイスのグローバル一意識別子 (GUID)。
ppVideoProcessorvoid**outID3D12VideoProcessor1 インターフェイスへのポインターを受け取るメモリブロックへのポインター。

戻り値

このメソッドは HRESULT を返します。

解説(Remarks)

作成時に設定したパラメーターを変更するには、ビデオプロセッサーオブジェクトを再作成する必要があります。

vtbl 12 HRESULT CreateVideoExtensionCommand(D3D12_VIDEO_EXTENSION_COMMAND_DESC* pDesc, void* pCreationParameters, UINT_PTR CreationParametersDataSizeInBytes, ID3D12ProtectedResourceSession* pProtectedResourceSession, GUID* riid, void** ppVideoExtensionCommand)

ビデオ拡張コマンドを作成します。

pDescD3D12_VIDEO_EXTENSION_COMMAND_DESC*in作成するコマンドを記述する D3D12_VIDEO_EXTENSION_COMMAND_DESC
pCreationParametersvoid*in作成パラメーター構造体へのポインター。この構造体はコマンドによって定義されます。パラメーター構造体は、フィーチャー値 D3D12_FEATURE_VIDEO_EXTENSION_COMMAND_PARAMETERS およびパラメーターステージ値 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE_CREATION を指定して ID3D12VideoDevice::CheckFeatureSupport を呼び出したときに列挙されるパラメーターと一致する必要があります。
CreationParametersDataSizeInBytesUINT_PTRinpCreationParameters パラメーター構造体のサイズ (バイト単位)。
pProtectedResourceSessionID3D12ProtectedResourceSession*inoptional保護されたリソースへのアクセスを管理するための ID3D12ProtectedResourceSession
riidGUID*inID3D12VideoExtensionCommand インターフェイスのグローバル一意識別子 (GUID)。
ppVideoExtensionCommandvoid**outID3D12VideoExtensionCommand インターフェイスへのポインターを受け取るメモリブロックへのポインター。

戻り値

このメソッドは HRESULT を返します。

vtbl 13 HRESULT ExecuteExtensionCommand(ID3D12VideoExtensionCommand* pExtensionCommand, void* pExecutionParameters, UINT_PTR ExecutionParametersSizeInBytes, void* pOutputData, UINT_PTR OutputDataSizeInBytes)

ビデオ拡張コマンドを実行します。

pExtensionCommandID3D12VideoExtensionCommand*in実行するビデオ拡張コマンドを表す ID3D12VideoExtensionCommand へのポインター。呼び出し元は、コマンドの実行が完了するまでオブジェクトの有効期間を維持する責任があります。
pExecutionParametersvoid*in実行入力パラメーター構造体へのポインター。この構造体はコマンドによって定義されます。パラメーター構造体は、フィーチャー値 D3D12_FEATURE_VIDEO_EXTENSION_COMMAND_PARAMETERS およびパラメーターステージ値 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE_EXECUTION を指定して ID3D12VideoDevice::CheckFeatureSupport を呼び出したときに列挙されるパラメーターと一致する必要があります。
ExecutionParametersSizeInBytesUINT_PTRinpExecutionParameters パラメーター構造体のサイズ (バイト単位)。
pOutputDatavoid*out実行出力パラメーター構造体へのポインター。この構造体はコマンドによって定義されます。
OutputDataSizeInBytesUINT_PTRinpExecutionParameters パラメーター構造体のサイズ (バイト単位) を受け取ります。

戻り値

このメソッドは HRESULT を返します。

解説(Remarks)

このメソッドを通じて実行されるビデオ拡張コマンドは、このメソッドが戻る前に完了する必要があります。効率のため、拡張の実装では、可能な限りこのメソッドを使用する代わりにコマンドリストで作業をスケジュールすべきです。各ビデオコマンドリストの種類は、スケジュールされた作業のための ExecuteExtensionCommand を提供します。これには次のものが含まれます。

出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
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 指定が可能。