ID3D11VideoContext1
COM公式ドキュメント
Microsoft Direct3D 11 デバイスのビデオ機能を提供します。(ID3D11VideoContext1)
解説(Remarks)
このインターフェイスへのポインターを取得するには、ID3D11DeviceContext1 インターフェイスポインターに対して QueryInterface を呼び出します。
メソッド 14
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
デコード用に 1 つ以上のバッファーを送信します。(ID3D11VideoContext1.SubmitDecoderBuffers1)
| pDecoder | ID3D11VideoDecoder* | in | ID3D11VideoDecoder インターフェイスへのポインター。このポインターを取得するには、ID3D11VideoDevice::CreateVideoDecoder メソッドを呼び出します。 |
| NumBuffers | DWORD | in | デコード用に送信するバッファーの数。 |
| pBufferDesc | D3D11_VIDEO_DECODER_BUFFER_DESC1* | in | D3D11_VIDEO_DECODER_BUFFER_DESC1 構造体の配列へのポインター。配列の要素数は NumBuffers パラメーターで指定します。配列の各要素は、デコード対象の圧縮バッファーを記述します。 |
戻り値
解説(Remarks)
この関数は、設定されている可能性のある D3D11 の述語 (predicate) を考慮しません。
D3D11_QUERY_DATA_PIPELINE_STATISTICS は、どの機能レベルにおいてもこの関数を集計に含めません。
新しいハードウェアキーの初期化時に使用される IHV 固有の情報を、ドライバーが返せるようにします。
| pCryptoSession | ID3D11CryptoSession* | in | ID3D11CryptoSession インターフェイスへのポインター。このポインターを取得するには、ID3D11VideoDevice1::CreateCryptoSession を呼び出します。 |
| PrivateInputSize | DWORD | in | pPrivateInputData パラメーターが参照するメモリのサイズ。 |
| pPrivatInputData | void* | in | プライベート入力データ。このパラメーターの内容は、セキュア実行環境の実装によって定義されます。ライセンスに関するデータや、ストリームのプロパティに関するデータが含まれる場合があります。 |
| pPrivateOutputData | ULONGLONG* | out | プライベート出力データへのポインター。返されるデータはセキュア実行環境の実装によって定義されます。基になるハードウェアキーに関連付けられるグラフィックス固有のデータが含まれる場合があります。 |
戻り値
暗号セッションの状態を確認します。
| pCryptoSession | ID3D11CryptoSession* | in | 状態を確認する対象の ID3D11CryptoSession を指定します。 |
| pStatus | D3D11_CRYPTO_SESSION_STATUS* | out | 完了時に暗号セッションの状態が設定される D3D11_CRYPTO_SESSION_STATUS。 |
戻り値
型: HRESULT
このメソッドは次のいずれかのエラーコードを返します。
| S_OK | 操作が正常に完了しました。 |
| E_INVALIDARG | 無効なパラメーターが渡されたか、無効な呼び出しパターンでこの関数が呼び出されました。 |
| E_OUTOFMEMORY | 操作を完了するためのメモリが不足しています。 |
デコーダーのダウンサンプリングを使用することを示し、ドライバーが適切な参照フレームを割り当てるようにします。
| pDecoder | ID3D11VideoDecoder* | in | ID3D11VideoDecoder インターフェイスへのポインター。 |
| InputColorSpace | DXGI_COLOR_SPACE_TYPE | in | 参照フレームデータの色空間情報。 |
| pOutputDesc | D3D11_VIDEO_SAMPLE_DESC* | in | 出力/表示フレームの解像度、フォーマット、および色空間。これはダウンサンプル操作の出力先の解像度およびフォーマットです。 |
| ReferenceFrameCount | DWORD | in | 操作で使用される参照フレームの数。 |
戻り値
型: HRESULT
このメソッドは次のいずれかのエラーコードを返します。
| S_OK | 操作が正常に完了しました。 |
| E_INVALIDARG | 無効なパラメーターが渡されたか、無効な呼び出しパターンでこの関数が呼び出されました。 |
| E_OUTOFMEMORY | 操作を完了するためのメモリが不足しています。 |
解説(Remarks)
この関数は、特定の ID3D11VideoDecoder インターフェイスに対して 1 回だけ呼び出せます。このメソッドは、最初に DecoderBeginFrame を呼び出す前に呼び出す必要があります。ダウンサンプリングのパラメーターを更新するには、DecoderUpdateDownsampling を使用します。
デコーダーのダウンサンプリングパラメーターを更新します。
| pDecoder | ID3D11VideoDecoder* | in | ID3D11VideoDecoder インターフェイスへのポインター。 |
| pOutputDesc | D3D11_VIDEO_SAMPLE_DESC* | in | 出力/表示フレームの解像度、フォーマット、および色空間。これはダウンサンプル操作の出力先の解像度およびフォーマットです。 |
戻り値
型: HRESULT
このメソッドは次のいずれかのエラーコードを返します。
| S_OK | 操作が正常に完了しました。 |
| E_INVALIDARG | 無効なパラメーターが渡されたか、無効な呼び出しパターンでこの関数が呼び出されました。 |
| E_OUTOFMEMORY | 操作を完了するためのメモリが不足しています。 |
解説(Remarks)
このメソッドは、DecoderEnableDownsampling を呼び出してデコードのダウンサンプリングを有効にした後にのみ呼び出せます。このメソッドは、D3D11_VIDEO_DECODER_CAPS_DOWNSAMPLE_DYNAMIC の機能が報告されている場合にのみサポートされます。
ビデオプロセッサーの出力サーフェスの色空間情報を設定します。
| pVideoProcessor | ID3D11VideoProcessor* | in | ID3D11VideoProcessor インターフェイスへのポインター。 |
| ColorSpace | DXGI_COLOR_SPACE_TYPE | in | ビデオプロセッサーの出力サーフェスの色空間を指定する DXGI_COLOR_SPACE_TYPE 値。 |
ID3D11VideoContext::VideoProcessorBlt の呼び出しによる出力サーフェスが Direct3D シェーダーによって読み取られるかどうかを示す値を設定します。
| pVideoProcessor | ID3D11VideoProcessor* | in | ID3D11VideoProcessor インターフェイスへのポインター。 |
| ShaderUsage | BOOL | in | ID3D11VideoContext::VideoProcessorBlt を使用してレンダリングされたサーフェスが Direct3D シェーダーによって読み取られる場合は true、それ以外の場合は false。マルチプレーンオーバーレイハードウェアがサポートされている場合、false に設定できます。 |
ビデオプロセッサーの出力サーフェスの色空間情報を取得します。
| pVideoProcessor | ID3D11VideoProcessor* | in | ID3D11VideoProcessor インターフェイスへのポインター。 |
| pColorSpace | DXGI_COLOR_SPACE_TYPE* | out | ビデオプロセッサーの出力サーフェスの色空間を示す DXGI_COLOR_SPACE_TYPE 値へのポインター。 |
ID3D11VideoContext::VideoProcessorBlt の呼び出しによる出力サーフェスを Direct3D シェーダーが読み取れるかどうかを示す値を取得します。
| pVideoProcessor | ID3D11VideoProcessor* | in | ID3D11VideoProcessor インターフェイスへのポインター。 |
| pShaderUsage | BOOL* | out | 出力サーフェスを Direct3D シェーダーが読み取れるかどうかを示すブール値へのポインター。ID3D11VideoContext::VideoProcessorBlt を使用してレンダリングされたサーフェスを Direct3D シェーダーが読み取れる場合は true、それ以外の場合は false になります。 |
ビデオプロセッサーの入力ストリームの色空間情報を設定します。
| pVideoProcessor | ID3D11VideoProcessor* | in | ID3D11VideoProcessor インターフェイスへのポインター。 |
| StreamIndex | DWORD | in | 入力ストリームを識別するインデックス。 |
| ColorSpace | DXGI_COLOR_SPACE_TYPE | in | ビデオプロセッサーの入力ストリームの色空間を指定する DXGI_COLOR_SPACE_TYPE 値。 |
ビデオプロセッサーの入力ストリームを垂直方向または水平方向に反転するかどうかを指定します。
| pVideoProcessor | ID3D11VideoProcessor* | in | ID3D11VideoProcessor インターフェイスへのポインター。 |
| StreamIndex | DWORD | in | 入力ストリームを識別するインデックス。 |
| Enable | BOOL | in | ミラーリングを有効にする場合は true、それ以外の場合は false。 |
| FlipHorizontal | BOOL | in | ストリームを水平方向に反転する場合は true、それ以外の場合は false。 |
| FlipVertical | BOOL | in | ストリームを垂直方向に反転する場合は true、それ以外の場合は false。 |
解説(Remarks)
これらを組み合わせて使用する場合、プロセッサーの入力ストリームに対する変換は次の順序で適用されます。
- 回転
- ミラーリング
- ソースのクリッピング
ビデオプロセッサーの入力ストリームの色空間情報を取得します。
| pVideoProcessor | ID3D11VideoProcessor* | in | ID3D11VideoProcessor インターフェイスへのポインター。 |
| StreamIndex | DWORD | in | 入力ストリームを識別するインデックス。 |
| pColorSpace | DXGI_COLOR_SPACE_TYPE* | out | ビデオプロセッサーの入力ストリームの色空間を示す DXGI_COLOR_SPACE_TYPE 値へのポインター。 |
ビデオプロセッサーの入力ストリームが垂直方向または水平方向に反転されているかどうかを示す値を取得します。
| pVideoProcessor | ID3D11VideoProcessor* | in | ID3D11VideoProcessor インターフェイスへのポインター。 |
| StreamIndex | DWORD | in | 入力ストリームを識別するインデックス。 |
| pEnable | BOOL* | out | ミラーリングが有効かどうかを示すブール値へのポインター。ミラーリングが有効な場合は true、それ以外の場合は false になります。 |
| pFlipHorizontal | BOOL* | out | ストリームが水平方向に反転されているかどうかを示すブール値へのポインター。水平方向に反転されている場合は true、それ以外の場合は false になります。 |
| pFlipVertical | BOOL* | out | ストリームが垂直方向に反転されているかどうかを示すブール値へのポインター。垂直方向に反転されている場合は true、それ以外の場合は false になります。 |
ビデオプロセッサーの各操作のうち、ID3D11VideoContext::VideoProcessorBlt メソッドよりもマルチプレーンオーバーレイハードウェアを使用した方が適しているものを示す、ドライバーからのヒントを返します。
| pVideoProcessor | ID3D11VideoProcessor* | in | ID3D11VideoProcessor インターフェイスへのポインター。 |
| OutputWidth | DWORD | in | 出力ストリームの幅。 |
| OutputHeight | DWORD | in | 出力ストリームの高さ。 |
| OutputFormat | DXGI_FORMAT | in | 出力ストリームのフォーマット。 |
| StreamCount | DWORD | in | 処理する入力ストリームの数。 |
| pStreams | D3D11_VIDEO_PROCESSOR_STREAM_BEHAVIOR_HINT* | in | 各入力ストリームのフォーマットと、動作ヒントの計算時に各ストリームを使用するかどうかを指定する構造体の配列。 |
| pBehaviorHints | DWORD* | out | D3D11_VIDEO_PROCESSOR_BEHAVIOR_HINTS 値のビットごとの OR の組み合わせへのポインター。ID3D11VideoContext::VideoProcessorBlt メソッドよりもマルチプレーンオーバーレイハードウェアを使用した方が適しているビデオプロセッサーの操作を示します。 |
戻り値
型: HRESULT
このメソッドは次のいずれかのエラーコードを返します。
| S_OK | 操作が正常に完了しました。 |
| E_INVALIDARG | 無効なパラメーターが渡されたか、無効な呼び出しパターンでこの関数が呼び出されました。 |
| E_OUTOFMEMORY | 操作を完了するためのメモリが不足しています。 |
解説(Remarks)
このメソッドは、ID3D11VideoContext および ID3D11VideoContext1 の "SetOutput" 系および "SetStream" 系メソッドによって設定された、ビデオプロセッサーの現在の状態を使用して動作ヒントを計算します。返されるヒントが有用なデータを含むようにするには、このメソッドを呼び出す前に適切な状態を設定しておく必要があります。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_ID3D11VideoContext1 "{A7F026DA-A5F8-4487-A564-15E34357651E}" #usecom global ID3D11VideoContext1 IID_ID3D11VideoContext1 "{}" #comfunc global ID3D11VideoContext1_SubmitDecoderBuffers1 65 sptr,int,var #comfunc global ID3D11VideoContext1_GetDataForNewHardwareKey 66 sptr,int,sptr,var #comfunc global ID3D11VideoContext1_CheckCryptoSessionStatus 67 sptr,var #comfunc global ID3D11VideoContext1_DecoderEnableDownsampling 68 sptr,int,var,int #comfunc global ID3D11VideoContext1_DecoderUpdateDownsampling 69 sptr,var #comfunc global ID3D11VideoContext1_VideoProcessorSetOutputColorSpace1 70 sptr,int #comfunc global ID3D11VideoContext1_VideoProcessorSetOutputShaderUsage 71 sptr,int #comfunc global ID3D11VideoContext1_VideoProcessorGetOutputColorSpace1 72 sptr,var #comfunc global ID3D11VideoContext1_VideoProcessorGetOutputShaderUsage 73 sptr,var #comfunc global ID3D11VideoContext1_VideoProcessorSetStreamColorSpace1 74 sptr,int,int #comfunc global ID3D11VideoContext1_VideoProcessorSetStreamMirror 75 sptr,int,int,int,int #comfunc global ID3D11VideoContext1_VideoProcessorGetStreamColorSpace1 76 sptr,int,var #comfunc global ID3D11VideoContext1_VideoProcessorGetStreamMirror 77 sptr,int,var,var,var #comfunc global ID3D11VideoContext1_VideoProcessorGetBehaviorHints 78 sptr,int,int,int,int,var,var ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。#define global IID_ID3D11VideoContext1 "{A7F026DA-A5F8-4487-A564-15E34357651E}" #usecom global ID3D11VideoContext1 IID_ID3D11VideoContext1 "{}" #comfunc global ID3D11VideoContext1_SubmitDecoderBuffers1 65 sptr,int,sptr #comfunc global ID3D11VideoContext1_GetDataForNewHardwareKey 66 sptr,int,sptr,sptr #comfunc global ID3D11VideoContext1_CheckCryptoSessionStatus 67 sptr,sptr #comfunc global ID3D11VideoContext1_DecoderEnableDownsampling 68 sptr,int,sptr,int #comfunc global ID3D11VideoContext1_DecoderUpdateDownsampling 69 sptr,sptr #comfunc global ID3D11VideoContext1_VideoProcessorSetOutputColorSpace1 70 sptr,int #comfunc global ID3D11VideoContext1_VideoProcessorSetOutputShaderUsage 71 sptr,int #comfunc global ID3D11VideoContext1_VideoProcessorGetOutputColorSpace1 72 sptr,sptr #comfunc global ID3D11VideoContext1_VideoProcessorGetOutputShaderUsage 73 sptr,sptr #comfunc global ID3D11VideoContext1_VideoProcessorSetStreamColorSpace1 74 sptr,int,int #comfunc global ID3D11VideoContext1_VideoProcessorSetStreamMirror 75 sptr,int,int,int,int #comfunc global ID3D11VideoContext1_VideoProcessorGetStreamColorSpace1 76 sptr,int,sptr #comfunc global ID3D11VideoContext1_VideoProcessorGetStreamMirror 77 sptr,int,sptr,sptr,sptr #comfunc global ID3D11VideoContext1_VideoProcessorGetBehaviorHints 78 sptr,int,int,int,int,sptr,sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。