ホーム › Media.MediaFoundation › IDirectXVideoDecoderService
IDirectXVideoDecoderService
COM公式ドキュメント
DirectX Video Acceleration (DXVA) デコーダーサービスへのアクセスを提供します。
メソッド 4
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
グラフィックスハードウェアがサポートするデコーダーデバイスを識別する GUID の配列を取得します。
| pCount | DWORD* | out | GUID の数を受け取ります。 |
| pGuids | GUID** | out | GUID の配列を受け取ります。配列のサイズは Count パラメーターで取得されます。このメソッドが配列用のメモリを割り当てます。呼び出し元は CoTaskMemFree を呼び出してメモリを解放する必要があります。 |
戻り値
このメソッドは HRESULT を返します。指定可能な値には、次の表に示すものが含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドが成功しました。 | |
|
Direct3D デバイスからのエラーです。 |
| Microsoft Basic Display Adapter が使用されているか、Direct3D 11 デバイスの種類がリファレンスラスタライザーである場合。これらのデバイスはビデオデコーダーをサポートしていません。 |
解説(Remarks)
次のデコーダー GUID が定義されています。これらの GUID の一部には、括弧内に示す別名があります。
| GUID | 説明 |
|---|---|
| DXVA2_ModeH264_A (DXVA2_ModeH264_MoComp_NoFGT) | H.264 動き補償 (MoComp)、フィルムグレイン技術 (FGT) なし。 |
| DXVA2_ModeH264_B (DXVA2_ModeH264_MoComp_FGT) | H.264 MoComp、FGT あり。 |
| DXVA2_ModeH264_C (DXVA2_ModeH264_IDCT_NoFGT) | H.264 逆離散コサイン変換 (IDCT)、FGT なし。 |
| DXVA2_ModeH264_D (DXVA2_ModeH264_IDCT_FGT) | H.264 IDCT、FGT あり。 |
| DXVA2_ModeH264_E (DXVA2_ModeH264_VLD_NoFGT) | H.264 VLD、FGT なし。 |
| DXVA2_ModeH264_F (DXVA2_ModeH264_VLD_FGT) | H.264 可変長デコーダー (VLD)、FGT あり。 |
| DXVA2_ModeHEVC_VLD_Main | H.265 / HEVC Main プロファイル |
| DXVA2_ModeHEVC_VLD_Main10 | H.265 / HEVC Main 10 プロファイル |
| DXVA2_ModeMPEG2_IDCT | MPEG-2 IDCT。 |
| DXVA2_ModeMPEG2_MoComp | MPEG-2 MoComp。 |
| DXVA2_ModeMPEG2_VLD | MPEG-2 VLD。 |
| DXVA2_ModeVC1_A (DXVA2_ModeVC1_PostProc) | VC-1 ポストプロセッシング。 |
| DXVA2_ModeVC1_B (DXVA2_ModeVC1_MoComp) | VC-1 MoComp。 |
| DXVA2_ModeVC1_C (DXVA2_ModeVC1_IDCT) | VC-1 IDCT。 |
| DXVA2_ModeVC1_D (DXVA2_ModeVC1_VLD) | VC-1 VLD。 |
| DXVA2_ModeWMV8_A (DXVA2_ModeWMV8_PostProc) | Windows Media Video 8 ポストプロセッシング。 |
| DXVA2_ModeWMV8_B (DXVA2_ModeWMV8_MoComp) | Windows Media Video 8 MoComp。 |
| DXVA2_ModeWMV9_A (DXVA2_ModeWMV9_PostProc) | Windows Media Video 9 ポストプロセッシング。 |
| DXVA2_ModeWMV9_B (DXVA2_ModeWMV9_MoComp) | Windows Media Video 9 MoComp。 |
| DXVA2_ModeWMV9_C (DXVA2_ModeWMV9_IDCT) | Windows Media Video 9 IDCT。 |
指定したデコーダーデバイスがサポートするレンダーターゲットを取得します。
| Guid | GUID* | in | デコーダーデバイスを識別する GUID。利用可能なデバイス GUID を取得するには、IDirectXVideoDecoderService::GetDecoderDeviceGuids を呼び出します。 |
| pCount | DWORD* | out | フォーマットの数を受け取ります。 |
| pFormats | D3DFORMAT** | out | D3DFORMAT 値として指定されたフォーマットの配列を受け取ります。配列のサイズは pCount パラメーターで取得されます。このメソッドが配列用のメモリを割り当てます。呼び出し元は CoTaskMemFree を呼び出してメモリを解放する必要があります。 |
戻り値
このメソッドは HRESULT を返します。指定可能な値には、次の表に示すものが含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドが成功しました。 |
vtbl 6 HRESULT GetDecoderConfigurations(GUID* Guid, DXVA2_VideoDesc* pVideoDesc, void* pReserved, DWORD* pCount, DXVA2_ConfigPictureDecode** ppConfigs)
デコーダーデバイスで利用可能な構成を取得します。
| Guid | GUID* | in | デコーダーデバイスを識別する GUID。利用可能なデバイス GUID を取得するには、IDirectXVideoDecoderService::GetDecoderDeviceGuids を呼び出します。 |
| pVideoDesc | DXVA2_VideoDesc* | in | ビデオコンテンツを記述する DXVA2_VideoDesc 構造体へのポインター。 |
| pReserved | void* | optional | 予約済み。NULL に設定します。 |
| pCount | DWORD* | out | 構成の数を受け取ります。 |
| ppConfigs | DXVA2_ConfigPictureDecode** | out | DXVA2_ConfigPictureDecode 構造体の配列を受け取ります。配列のサイズは pCount パラメーターで取得されます。呼び出し元は CoTaskMemFree を呼び出して配列用のメモリを解放する必要があります。単に構成の数 (pCount に返されます) を取得したいだけで GUID は不要な場合、このパラメーターを NULL にできます。 |
戻り値
このメソッドが成功すると S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
vtbl 7 HRESULT CreateVideoDecoder(GUID* Guid, DXVA2_VideoDesc* pVideoDesc, DXVA2_ConfigPictureDecode* pConfig, IDirect3DSurface9** ppDecoderRenderTargets, DWORD NumRenderTargets, IDirectXVideoDecoder** ppDecode)
ビデオデコーダーデバイスを作成します。
| Guid | GUID* | in | 作成するデコーダーデバイスを指定する GUID。利用可能なデバイス GUID を取得するには、IDirectXVideoDecoderService::GetDecoderDeviceGuids を呼び出します。 |
| pVideoDesc | DXVA2_VideoDesc* | in | ビデオコンテンツを記述する DXVA2_VideoDesc 構造体へのポインター。 |
| pConfig | DXVA2_ConfigPictureDecode* | in | デコーダーの構成を指定する DXVA2_ConfigPictureDecode 構造体へのポインター。 |
| ppDecoderRenderTargets | IDirect3DSurface9** | in | デコーダーのレンダーターゲットへのポインターを格納した、IDirect3DSurface9 ポインターの配列へのポインター。これらのサーフェスを作成するには、IDirectXVideoAccelerationService::CreateSurface を呼び出します。DxvaType パラメーターには DXVA2_VideoDecoderRenderTarget を指定します。 |
| NumRenderTargets | DWORD | in | ppDecoderRenderTargets 配列のサイズ。この値をゼロにすることはできません。 |
| ppDecode | IDirectXVideoDecoder** | out | デコーダーの IDirectXVideoDecoder インターフェイスへのポインターを受け取ります。呼び出し元はこのインターフェイスを解放する必要があります。 |
戻り値
このメソッドは HRESULT を返します。指定可能な値には、次の表に示すものが含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドが成功しました。 |
出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
出力引数:
#define global IID_IDirectXVideoDecoderService "{FC51A551-D5E7-11D9-AF55-00054E43FF02}" #usecom global IDirectXVideoDecoderService IID_IDirectXVideoDecoderService "{}" #comfunc global IDirectXVideoDecoderService_GetDecoderDeviceGuids 4 var,var #comfunc global IDirectXVideoDecoderService_GetDecoderRenderTargets 5 var,var,var #comfunc global IDirectXVideoDecoderService_GetDecoderConfigurations 6 var,var,sptr,var,var #comfunc global IDirectXVideoDecoderService_CreateVideoDecoder 7 var,var,var,sptr,int,sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。#define global IID_IDirectXVideoDecoderService "{FC51A551-D5E7-11D9-AF55-00054E43FF02}" #usecom global IDirectXVideoDecoderService IID_IDirectXVideoDecoderService "{}" #comfunc global IDirectXVideoDecoderService_GetDecoderDeviceGuids 4 sptr,sptr #comfunc global IDirectXVideoDecoderService_GetDecoderRenderTargets 5 sptr,sptr,sptr #comfunc global IDirectXVideoDecoderService_GetDecoderConfigurations 6 sptr,sptr,sptr,sptr,sptr #comfunc global IDirectXVideoDecoderService_CreateVideoDecoder 7 sptr,sptr,sptr,sptr,int,sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。