Win32 API 日本語リファレンス
ホームGraphics.Direct3D11 › ID3D11VideoDevice1

ID3D11VideoDevice1

COM
IID29da1d51-1321-4454-804b-f5fc9f861f0f継承元ID3D11VideoDevice自前メソッド開始 vtbl20

公式ドキュメント

Microsoft Direct3D 11 デバイスのビデオデコードおよびビデオ処理の機能を提供します。(ID3D11VideoDevice1)

解説(Remarks)

Direct3D 11 デバイスはこのインターフェイスをサポートします。このインターフェイスへのポインターを取得するには、ID3D11Device1 インターフェイスポインターに対して QueryInterface を呼び出します。

メソッド 4

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

vtbl 20 HRESULT GetCryptoSessionPrivateDataSize(GUID* pCryptoType, GUID* pDecoderProfile, GUID* pKeyExchangeType, DWORD* pPrivateInputSize, DWORD* pPrivateOutputSize)

ドライバーのプライベートデータ用の任意のサイズを取得します。

pCryptoTypeGUID*inプライベート入力サイズおよび出力サイズを問い合わせる暗号化の種類を指定します。
pDecoderProfileGUID*inoptionalプライベート入力サイズおよび出力サイズを問い合わせるデコーダープロファイルを指定します。
pKeyExchangeTypeGUID*inプライベート入力サイズおよび出力サイズを問い合わせるキー交換の種類を指定します。
pPrivateInputSizeDWORD*out入力コマンドのためにドライバーが必要とするプライベートデータのサイズを返します。
pPrivateOutputSizeDWORD*out出力コマンドのためにドライバーが必要とするプライベートデータのサイズを返します。

戻り値

型: HRESULT

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

解説(Remarks)

pKeyExchangeTypeD3D11_KEY_EXCHANGE_HW_PROTECTION の場合、ID3D11VideoContext::NegotiateCryptoSessionKeyExchange メソッドでは次の動作が想定されます。

vtbl 21 HRESULT GetVideoDecoderCaps(GUID* pDecoderProfile, DWORD SampleWidth, DWORD SampleHeight, DXGI_RATIONAL* pFrameRate, DWORD BitRate, GUID* pCryptoType, DWORD* pDecoderCaps)

ビデオデコーダーの機能と制限を取得します。

pDecoderProfileGUID*in機能を問い合わせるデコードプロファイルです。
SampleWidthDWORDin機能を問い合わせるビデオの幅です。
SampleHeightDWORDin機能を問い合わせるビデオの高さです。
pFrameRateDXGI_RATIONAL*inビデオコンテンツのフレームレートです。この情報は、ビデオをリアルタイムでデコードできるかどうかをドライバーが判断するために使用されます。
BitRateDWORDinビデオストリームのビットレートです。値が 0 の場合、ビットレートは無視できることを示します。
pCryptoTypeGUID*inoptionalビデオストリームの暗号化に使用される暗号化方式の種類です。NULL の場合、ビデオストリームが暗号化されていないことを示します。
pDecoderCapsDWORD*outデコーダーの機能を示す D3D11_VIDEO_DECODER_CAPS 値のビットごとの OR 組み合わせへのポインターです。

戻り値

型: HRESULT

このメソッドは次のいずれかのエラーコードを返します。

S_OK 操作は正常に完了しました。
E_INVALIDARG 無効なパラメーターが渡されたか、無効な呼び出しパターンでこの関数が呼び出されました。
vtbl 22 HRESULT CheckVideoDecoderDownsampling(D3D11_VIDEO_DECODER_DESC* pInputDesc, DXGI_COLOR_SPACE_TYPE InputColorSpace, D3D11_VIDEO_DECODER_CONFIG* pInputConfig, DXGI_RATIONAL* pFrameRate, D3D11_VIDEO_SAMPLE_DESC* pOutputDesc, BOOL* pSupported, BOOL* pRealTimeHint)

指定された入力フォーマットでビデオデコーダーがダウンサンプリングをサポートするかどうか、およびリアルタイムのダウンサンプリングがサポートされるかどうかを示します。

pInputDescD3D11_VIDEO_DECODER_DESC*in入力ストリームのデコードプロファイル、解像度、フォーマットを記述するオブジェクトです。これはダウンサンプリングの対象となる解像度とフォーマットです。
InputColorSpaceDXGI_COLOR_SPACE_TYPEin参照フレームデータの色空間を指定する DXGI_COLOR_SPACE_TYPE 値です。
pInputConfigD3D11_VIDEO_DECODER_CONFIG*inデコードプロファイルに関連付けられた構成データです。
pFrameRateDXGI_RATIONAL*inビデオコンテンツのフレームレートです。ビデオをリアルタイムでデコードできるかどうかをドライバーが判断するために使用されます。
pOutputDescD3D11_VIDEO_SAMPLE_DESC*in出力フレームの解像度、フォーマット、色空間を記述するオブジェクトです。これはダウンサンプリング操作の出力先となる解像度とフォーマットです。
pSupportedBOOL*out指定された入力データでダウンサンプリングがサポートされるかどうかをドライバーが設定するブール値へのポインターです。要求されたダウンサンプリングをドライバーがサポートする場合は true、それ以外の場合は false になります。
pRealTimeHintBOOL*out指定された入力データでリアルタイムデコードがサポートされるかどうかをドライバーが設定するブール値へのポインターです。要求されたリアルタイムデコードをドライバーがサポートする場合は true、それ以外の場合は false になります。返される値はビデオデコーダーの現在の構成に基づくものであり、今後のダウンサンプリング操作でリアルタイムデコードがサポートされることを保証するものではない点に注意してください。

戻り値

型: HRESULT

このメソッドは次のいずれかのエラーコードを返します。

S_OK 操作は正常に完了しました。
E_INVALIDARG 無効なパラメーターが渡されたか、無効な呼び出しパターンでこの関数が呼び出されました。

解説(Remarks)

特定の構成のサポートを確認する前に、GetVideoDecoderCaps を呼び出して、デコーダーのダウンサンプリングがサポートされているかどうかを確認してください。

vtbl 23 HRESULT RecommendVideoDecoderDownsampleParameters(D3D11_VIDEO_DECODER_DESC* pInputDesc, DXGI_COLOR_SPACE_TYPE InputColorSpace, D3D11_VIDEO_DECODER_CONFIG* pInputConfig, DXGI_RATIONAL* pFrameRate, D3D11_VIDEO_SAMPLE_DESC* pRecommendedOutputDesc)

入力パラメーターに基づいて、最適な出力ダウンサンプルパラメーターをドライバーが推奨できるようにします。

pInputDescD3D11_VIDEO_DECODER_DESC*in入力ストリームのデコードプロファイル、解像度、フォーマットを記述する D3D11_VIDEO_DECODER_DESC オブジェクトです。これはダウンサンプリングの対象となる解像度とフォーマットです。
InputColorSpaceDXGI_COLOR_SPACE_TYPEin参照フレームデータの色空間を指定する DXGI_COLOR_SPACE_TYPE 値です。
pInputConfigD3D11_VIDEO_DECODER_CONFIG*inデコードプロファイルに関連付けられた構成データです。
pFrameRateDXGI_RATIONAL*inビデオコンテンツのフレームレートです。ビデオをリアルタイムでデコードできるかどうかをドライバーが判断するために使用されます。
pRecommendedOutputDescD3D11_VIDEO_SAMPLE_DESC*outダウンサンプリング操作で推奨される出力バッファーのパラメーターがドライバーによって設定される D3D11_VIDEO_SAMPLE_DESC 構造体へのポインターです。ドライバーはリアルタイムデコードをサポートできるパラメーターを推奨しようとします。それが不可能な場合は、リアルタイム処理に可能な限り近い値を推奨します。

戻り値

型: HRESULT

このメソッドは次のいずれかのエラーコードを返します。

S_OK 操作は正常に完了しました。
E_INVALIDARG 無効なパラメーターが渡されたか、無効な呼び出しパターンでこの関数が呼び出されました。

解説(Remarks)

特定の構成のサポートを確認する前に、GetVideoDecoderCaps を呼び出して、デコーダーのダウンサンプリングがサポートされているかどうかを確認してください。

出典・ライセンス: 上記「公式ドキュメント」の内容は 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_ID3D11VideoDevice1 "{29DA1D51-1321-4454-804B-F5FC9F861F0F}"
#usecom global ID3D11VideoDevice1 IID_ID3D11VideoDevice1 "{}"
#comfunc global ID3D11VideoDevice1_GetCryptoSessionPrivateDataSize            20 var,var,var,var,var
#comfunc global ID3D11VideoDevice1_GetVideoDecoderCaps                        21 var,int,int,var,int,var,var
#comfunc global ID3D11VideoDevice1_CheckVideoDecoderDownsampling              22 var,int,var,var,var,var,var
#comfunc global ID3D11VideoDevice1_RecommendVideoDecoderDownsampleParameters  23 var,int,var,var,var
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。