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

ID3D11VideoDevice

COM
IID10ec4d5b-975a-4689-b9e4-d0aac30fe333継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

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

解説(Remarks)

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

ID3D11Device に対して ID3D11VideoDevice をクエリした際に、作成された Direct3D 11 デバイスがリファレンスラスタライザーまたは WARP を使用している場合、あるいはハードウェアデバイスであっても Microsoft Basic Display Adapter を使用している場合は、E_NOINTERFACE が返されます。

メソッド 17

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

vtbl 3 HRESULT CreateVideoDecoder(D3D11_VIDEO_DECODER_DESC* pVideoDesc, D3D11_VIDEO_DECODER_CONFIG* pConfig, ID3D11VideoDecoder** ppDecoder)

Microsoft Direct3D 11 用のビデオデコーダーデバイスを作成します。

pVideoDescD3D11_VIDEO_DECODER_DESC*inビデオストリームとデコーダープロファイルを記述する D3D11_VIDEO_DECODER_DESC 構造体へのポインター。
pConfigD3D11_VIDEO_DECODER_CONFIG*inデコーダーの構成を指定する D3D11_VIDEO_DECODER_CONFIG 構造体へのポインター。
ppDecoderID3D11VideoDecoder**outID3D11VideoDecoder インターフェイスへのポインターを受け取ります。呼び出し元はこのインターフェイスを解放する必要があります。

戻り値

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

解説(Remarks)

このメソッドは必要なデコーダーバッファーを割り当てます。

ID3D11DeviceContext::ClearState メソッドは、ビデオデコーダーの内部状態には影響しません。

vtbl 4 HRESULT CreateVideoProcessor(ID3D11VideoProcessorEnumerator* pEnum, DWORD RateConversionIndex, ID3D11VideoProcessor** ppVideoProcessor)

Microsoft Direct3D 11 用のビデオプロセッサーデバイスを作成します。

pEnumID3D11VideoProcessorEnumerator*inID3D11VideoProcessorEnumerator インターフェイスへのポインター。このポインターを取得するには、ID3D11VideoDevice::CreateVideoProcessorEnumerator を呼び出します。
RateConversionIndexDWORDinビデオプロセッサーのフレームレート変換機能を指定します。この値は 0 から始まるインデックスで、ID3D11VideoProcessorEnumerator::GetVideoProcessorRateConversionCaps メソッドの TypeIndex パラメーターに対応します。
ppVideoProcessorID3D11VideoProcessor**outID3D11VideoProcessor インターフェイスへのポインターを受け取ります。呼び出し元はこのインターフェイスを解放する必要があります。

戻り値

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

解説(Remarks)

ID3D11DeviceContext::ClearState メソッドは、ビデオプロセッサーの内部状態には影響しません。

vtbl 5 HRESULT CreateAuthenticatedChannel(D3D11_AUTHENTICATED_CHANNEL_TYPE ChannelType, ID3D11AuthenticatedChannel** ppAuthenticatedChannel)

Microsoft Direct3D デバイスまたはグラフィックスドライバーと通信するためのチャネルを作成します。

ChannelTypeD3D11_AUTHENTICATED_CHANNEL_TYPEinチャネルの種類を D3D11_AUTHENTICATED_CHANNEL_TYPE 列挙型のメンバーとして指定します。
ppAuthenticatedChannelID3D11AuthenticatedChannel**outID3D11AuthenticatedChannel インターフェイスへのポインターを受け取ります。呼び出し元はこのインターフェイスを解放する必要があります。

戻り値

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

解説(Remarks)

ChannelType パラメーターが D3D11_AUTHENTICATED_CHANNEL_D3D11 の場合、このメソッドは Direct3D デバイスとのチャネルを作成します。この種類のチャネルは認証をサポートしません。

ChannelTypeD3D11_AUTHENTICATED_CHANNEL_DRIVER_SOFTWARE または D3D11_AUTHENTICATED_CHANNEL_DRIVER_HARDWARE の場合、このメソッドはグラフィックスドライバーとの認証済みチャネルを作成します。

vtbl 6 HRESULT CreateCryptoSession(GUID* pCryptoType, GUID* pDecoderProfile, GUID* pKeyExchangeType, ID3D11CryptoSession** ppCryptoSession)

グラフィックスドライバーへ送信されるビデオコンテンツを暗号化するための暗号化セッションを作成します。

pCryptoTypeGUID*in

使用する暗号化の種類を指定する GUID へのポインター。次の GUID が定義されています。

説明
D3D11_CRYPTO_TYPE_AES128_CTR
128 ビットの Advanced Encryption Standard CTR モード (AES-CTR) ブロック暗号。
pDecoderProfileGUID*inoptionalデコードプロファイルを指定する GUID へのポインター。指定可能な値の一覧については、ID3D11VideoDevice::GetVideoDecoderProfile を参照してください。デコードを使用しない場合は、このパラメーターに NULL を設定します。
pKeyExchangeTypeGUID*in

キー交換の種類を指定する GUID へのポインター。

説明
D3D11_KEY_EXCHANGE_RSAES_OAEP
呼び出し元がセッションキーを作成し、ドライバーの公開鍵を使用して RSA Encryption Scheme - Optimal Asymmetric Encryption Padding (RSAES-OAEP) で暗号化し、そのセッションキーをドライバーに渡します。
ppCryptoSessionID3D11CryptoSession**outID3D11CryptoSession インターフェイスへのポインターを受け取ります。呼び出し元はこのインターフェイスを解放する必要があります。

戻り値

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

解説(Remarks)

ID3D11DeviceContext::ClearState メソッドは、暗号化セッションの内部状態には影響しません。

vtbl 7 HRESULT CreateVideoDecoderOutputView(ID3D11Resource* pResource, D3D11_VIDEO_DECODER_OUTPUT_VIEW_DESC* pDesc, ID3D11VideoDecoderOutputView** ppVDOVView)

デコード処理の出力サンプルを記述する、ビデオデコーダー用のリソースビューを作成します。

pResourceID3D11Resource*inデコーダーサーフェスの ID3D11Resource インターフェイスへのポインター。このリソースは D3D11_BIND_DECODER フラグを指定して作成されている必要があります。D3D11_BIND_FLAG を参照してください。
pDescD3D11_VIDEO_DECODER_OUTPUT_VIEW_DESC*inビューを記述する D3D11_VIDEO_DECODER_OUTPUT_VIEW_DESC 構造体へのポインター。
ppVDOVViewID3D11VideoDecoderOutputView**outoptionalID3D11VideoDecoderOutputView インターフェイスへのポインターを受け取ります。呼び出し元はこのインターフェイスを解放する必要があります。このパラメーターが NULL の場合、メソッドはビューがサポートされているかどうかを確認しますが、ビューは作成しません。

戻り値

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

解説(Remarks)

ビューがサポートされているかどうかをテストするには、ppVDOVView パラメーターに NULL を設定します。

vtbl 8 HRESULT CreateVideoProcessorInputView(ID3D11Resource* pResource, ID3D11VideoProcessorEnumerator* pEnum, D3D11_VIDEO_PROCESSOR_INPUT_VIEW_DESC* pDesc, ID3D11VideoProcessorInputView** ppVPIView)

ビデオ処理操作の入力サンプルを記述する、ビデオプロセッサー用のリソースビューを作成します。

pResourceID3D11Resource*in入力サーフェスの ID3D11Resource インターフェイスへのポインター。
pEnumID3D11VideoProcessorEnumerator*inビデオプロセッサーを指定する ID3D11VideoProcessorEnumerator インターフェイスへのポインター。このポインターを取得するには、ID3D11VideoDevice::CreateVideoProcessorEnumerator を呼び出します。
pDescD3D11_VIDEO_PROCESSOR_INPUT_VIEW_DESC*inビューを記述する D3D11_VIDEO_PROCESSOR_INPUT_VIEW_DESC 構造体へのポインター。
ppVPIViewID3D11VideoProcessorInputView**outoptionalID3D11VideoProcessorInputView インターフェイスへのポインターを受け取ります。呼び出し元はこのリソースを解放する必要があります。このパラメーターが NULL の場合、メソッドはビューがサポートされているかどうかを確認しますが、ビューは作成しません。

戻り値

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

解説(Remarks)

ビューがサポートされているかどうかをテストするには、ppVPIView パラメーターに NULL を設定します。

サーフェスの形式は、D3D11_VIDEO_PROCESSOR_INPUT_VIEW_DESC 構造体の FourCC メンバーで指定します。ビデオプロセッサーがその形式を入力サンプルとしてサポートしていない場合、このメソッドは失敗します。機能レベル 9_1、9_2、9_3 を使用する場合、アプリは 0 を指定する必要があります。

ビデオプロセッサー入力ビューに使用するリソースは、次のバインドフラグの組み合わせを使用する必要があります。

vtbl 9 HRESULT CreateVideoProcessorOutputView(ID3D11Resource* pResource, ID3D11VideoProcessorEnumerator* pEnum, D3D11_VIDEO_PROCESSOR_OUTPUT_VIEW_DESC* pDesc, ID3D11VideoProcessorOutputView** ppVPOView)

ビデオ処理操作の出力サンプルを記述する、ビデオプロセッサー用のリソースビューを作成します。

pResourceID3D11Resource*in出力サーフェスの ID3D11Resource インターフェイスへのポインター。このリソースは D3D11_BIND_RENDER_TARGET フラグを指定して作成されている必要があります。D3D11_BIND_FLAG を参照してください。
pEnumID3D11VideoProcessorEnumerator*inビデオプロセッサーを指定する ID3D11VideoProcessorEnumerator インターフェイスへのポインター。このポインターを取得するには、ID3D11VideoDevice::CreateVideoProcessorEnumerator を呼び出します。
pDescD3D11_VIDEO_PROCESSOR_OUTPUT_VIEW_DESC*inビューを記述する D3D11_VIDEO_PROCESSOR_OUTPUT_VIEW_DESC 構造体へのポインター。
ppVPOViewID3D11VideoProcessorOutputView**outoptionalID3D11VideoProcessorOutputView インターフェイスへのポインターを受け取ります。呼び出し元はこのリソースを解放する必要があります。このパラメーターが NULL の場合、メソッドはビューがサポートされているかどうかを確認しますが、ビューは作成しません。

戻り値

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

解説(Remarks)

ビューがサポートされているかどうかをテストするには、ppVPOView パラメーターに NULL を設定します。

ビデオプロセッサー出力ビューに使用するリソースは、次の D3D11_BIND_FLAG の組み合わせを使用する必要があります。

ステレオ出力が有効な場合、出力ビューは 2 個の配列要素を持つ必要があります。それ以外の場合は、配列要素は 1 個のみである必要があります。
vtbl 10 HRESULT CreateVideoProcessorEnumerator(D3D11_VIDEO_PROCESSOR_CONTENT_DESC* pDesc, ID3D11VideoProcessorEnumerator** ppEnum)

ドライバーのビデオプロセッサー機能を列挙します。

pDescD3D11_VIDEO_PROCESSOR_CONTENT_DESC*inビデオコンテンツを記述する D3D11_VIDEO_PROCESSOR_CONTENT_DESC 構造体へのポインター。
ppEnumID3D11VideoProcessorEnumerator**outID3D11VideoProcessorEnumerator インターフェイスへのポインターを受け取ります。呼び出し元はこのインターフェイスを解放する必要があります。

戻り値

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

解説(Remarks)

ビデオプロセッサーデバイスを作成するには、ID3D11VideoProcessorEnumerator ポインターを ID3D11VideoDevice::CreateVideoProcessor メソッドに渡します。

vtbl 11 DWORD GetVideoDecoderProfileCount()

ドライバーがサポートするプロファイルの数を取得します。

戻り値

プロファイルの数を返します。

解説(Remarks)

プロファイルを列挙するには、ID3D11VideoDevice::GetVideoDecoderProfile を呼び出します。

vtbl 12 HRESULT GetVideoDecoderProfile(DWORD Index, GUID* pDecoderProfile)

ドライバーがサポートするプロファイルを取得します。

IndexDWORDinプロファイルの 0 から始まるインデックス。ドライバーがサポートするプロファイルの数を取得するには、ID3D11VideoDevice::GetVideoDecoderProfileCount を呼び出します。
pDecoderProfileGUID*outプロファイルを識別する GUID を受け取ります。

戻り値

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

vtbl 13 HRESULT CheckVideoDecoderFormat(GUID* pDecoderProfile, DXGI_FORMAT Format, BOOL* pSupported)

指定されたプロファイルについて、ドライバーが指定の出力形式をサポートしているかどうかを確認します。

pDecoderProfileGUID*inプロファイルを識別する GUID へのポインター。サポートされるプロファイルの一覧を取得するには、ID3D11VideoDevice::GetVideoDecoderProfile を呼び出します。
FormatDXGI_FORMATin出力形式を指定する DXGI_FORMAT 値。代表的な値には DXGI_FORMAT_NV12DXGI_FORMAT_420_OPAQUE があります。
pSupportedBOOL*outその形式がサポートされている場合は値 TRUE を、そうでない場合は FALSE を受け取ります。

戻り値

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

解説(Remarks)

pDecoderProfile で指定されたプロファイルをドライバーがサポートしていない場合、このメソッドは E_INVALIDARG を返します。ドライバーがそのプロファイルをサポートしていても、DXGI 形式がプロファイルと互換性がない場合は、メソッドは成功しますが pSupportedFALSE を返します。

vtbl 14 HRESULT GetVideoDecoderConfigCount(D3D11_VIDEO_DECODER_DESC* pDesc, DWORD* pCount)

指定されたビデオ記述に対して、ドライバーがサポートするデコーダー構成の数を取得します。

pDescD3D11_VIDEO_DECODER_DESC*inビデオストリームを記述する D3D11_VIDEO_DECODER_DESC 構造体へのポインター。
pCountDWORD*outデコーダー構成の数を受け取ります。

戻り値

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

解説(Remarks)

デコーダー構成を列挙するには、ID3D11VideoDevice::GetVideoDecoderConfig を呼び出します。

vtbl 15 HRESULT GetVideoDecoderConfig(D3D11_VIDEO_DECODER_DESC* pDesc, DWORD Index, D3D11_VIDEO_DECODER_CONFIG* pConfig)

ドライバーがサポートするデコーダー構成を取得します。

pDescD3D11_VIDEO_DECODER_DESC*inビデオストリームを記述する D3D11_VIDEO_DECODER_DESC 構造体へのポインター。
IndexDWORDinデコーダー構成の 0 から始まるインデックス。ドライバーがサポートする構成の数を取得するには、ID3D11VideoDevice::GetVideoDecoderConfigCount を呼び出します。
pConfigD3D11_VIDEO_DECODER_CONFIG*outD3D11_VIDEO_DECODER_CONFIG 構造体へのポインター。メソッドはこの構造体にデコーダー構成を格納します。

戻り値

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

vtbl 16 HRESULT GetContentProtectionCaps(GUID* pCryptoType, GUID* pDecoderProfile, D3D11_VIDEO_CONTENT_PROTECTION_CAPS* pCaps)

ドライバーのコンテンツ保護機能を照会します。

pCryptoTypeGUID*inoptional

使用する暗号化の種類を指定する GUID へのポインター。次の GUID が定義されています。

説明
D3D11_CRYPTO_TYPE_AES128_CTR
128 ビットの Advanced Encryption Standard CTR モード (AES-CTR) ブロック暗号。

暗号化を使用しない場合は、このパラメーターに NULL を設定します。

pDecoderProfileGUID*inoptional

デコードプロファイルを指定する GUID へのポインター。ドライバーがサポートするプロファイルを取得するには、ID3D11VideoDevice::GetVideoDecoderProfile を呼び出します。デコードを使用しない場合は、このパラメーターに NULL を設定します。

ドライバーによっては、暗号化の種類とプロファイルの一部の組み合わせを許可しない場合があります。

pCapsD3D11_VIDEO_CONTENT_PROTECTION_CAPS*outD3D11_VIDEO_CONTENT_PROTECTION_CAPS 構造体へのポインター。メソッドはこの構造体にドライバーのコンテンツ保護機能を格納します。

戻り値

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

vtbl 17 HRESULT CheckCryptoKeyExchange(GUID* pCryptoType, GUID* pDecoderProfile, DWORD Index, GUID* pKeyExchangeType)

ドライバーがサポートする暗号キー交換メカニズムを取得します。

pCryptoTypeGUID*in

使用する暗号化の種類を指定する GUID へのポインター。次の GUID が定義されています。

説明
D3D11_CRYPTO_TYPE_AES128_CTR
128 ビットの Advanced Encryption Standard CTR モード (AES-CTR) ブロック暗号。
pDecoderProfileGUID*inoptionalデコードプロファイルを指定する GUID へのポインター。ドライバーがサポートするプロファイルを取得するには、ID3D11VideoDevice::GetVideoDecoderProfile を呼び出します。デコードを使用しない場合は、このパラメーターに NULL を設定します。
IndexDWORDinキー交換の種類の 0 から始まるインデックス。ドライバーは種類の数を D3D11_VIDEO_CONTENT_PROTECTION_CAPS 構造体の KeyExchangeTypeCount メンバーで報告します。
pKeyExchangeTypeGUID*outキー交換の種類を識別する GUID を受け取ります。

戻り値

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

vtbl 18 HRESULT SetPrivateData(GUID* guid, DWORD DataSize, void* pData)

ビデオデバイスにプライベートデータを設定し、そのデータを GUID に関連付けます。

guidGUID*inデータに関連付ける GUID。
DataSizeDWORDinデータのサイズ (バイト単位)。
pDatavoid*inoptionalデータへのポインター。

戻り値

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

vtbl 19 HRESULT SetPrivateDataInterface(GUID* guid, IUnknown* pData)

ビデオデバイスにプライベートな IUnknown ポインターを設定し、そのポインターを GUID に関連付けます。

guidGUID*inポインターに関連付ける GUID。
pDataIUnknown*inoptionalIUnknown インターフェイスへのポインター。

戻り値

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

出典・ライセンス: 上記「公式ドキュメント」の内容は 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_ID3D11VideoDevice "{10EC4D5B-975A-4689-B9E4-D0AAC30FE333}"
#usecom global ID3D11VideoDevice IID_ID3D11VideoDevice "{}"
#comfunc global ID3D11VideoDevice_CreateVideoDecoder              3 var,var,sptr
#comfunc global ID3D11VideoDevice_CreateVideoProcessor            4 sptr,int,sptr
#comfunc global ID3D11VideoDevice_CreateAuthenticatedChannel      5 int,sptr
#comfunc global ID3D11VideoDevice_CreateCryptoSession             6 var,var,var,sptr
#comfunc global ID3D11VideoDevice_CreateVideoDecoderOutputView    7 sptr,var,sptr
#comfunc global ID3D11VideoDevice_CreateVideoProcessorInputView   8 sptr,sptr,var,sptr
#comfunc global ID3D11VideoDevice_CreateVideoProcessorOutputView  9 sptr,sptr,var,sptr
#comfunc global ID3D11VideoDevice_CreateVideoProcessorEnumerator  10 var,sptr
#comfunc global ID3D11VideoDevice_GetVideoDecoderProfileCount     11
#comfunc global ID3D11VideoDevice_GetVideoDecoderProfile          12 int,var
#comfunc global ID3D11VideoDevice_CheckVideoDecoderFormat         13 var,int,var
#comfunc global ID3D11VideoDevice_GetVideoDecoderConfigCount      14 var,var
#comfunc global ID3D11VideoDevice_GetVideoDecoderConfig           15 var,int,var
#comfunc global ID3D11VideoDevice_GetContentProtectionCaps        16 var,var,var
#comfunc global ID3D11VideoDevice_CheckCryptoKeyExchange          17 var,var,int,var
#comfunc global ID3D11VideoDevice_SetPrivateData                  18 var,int,sptr
#comfunc global ID3D11VideoDevice_SetPrivateDataInterface         19 var,sptr
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。