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

IDirectXVideoDecoderService

COM
IIDfc51a551-d5e7-11d9-af55-00054e43ff02継承元IDirectXVideoAccelerationService自前メソッド開始 vtbl4

公式ドキュメント

DirectX Video Acceleration (DXVA) デコーダーサービスへのアクセスを提供します。

メソッド 4

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

vtbl 4 HRESULT GetDecoderDeviceGuids(DWORD* pCount, GUID** pGuids)

グラフィックスハードウェアがサポートするデコーダーデバイスを識別する GUID の配列を取得します。

pCountDWORD*outGUID の数を受け取ります。
pGuidsGUID**outGUID の配列を受け取ります。配列のサイズは Count パラメーターで取得されます。このメソッドが配列用のメモリを割り当てます。呼び出し元は CoTaskMemFree を呼び出してメモリを解放する必要があります。

戻り値

このメソッドは HRESULT を返します。指定可能な値には、次の表に示すものが含まれますが、これらに限定されません。

戻り値 説明
S_OK
メソッドが成功しました。
D3DERR_INVALIDCALL
Direct3D デバイスからのエラーです。
E_FAIL
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。
vtbl 5 HRESULT GetDecoderRenderTargets(GUID* Guid, DWORD* pCount, D3DFORMAT** pFormats)

指定したデコーダーデバイスがサポートするレンダーターゲットを取得します。

GuidGUID*inデコーダーデバイスを識別する GUID。利用可能なデバイス GUID を取得するには、IDirectXVideoDecoderService::GetDecoderDeviceGuids を呼び出します。
pCountDWORD*outフォーマットの数を受け取ります。
pFormatsD3DFORMAT**outD3DFORMAT 値として指定されたフォーマットの配列を受け取ります。配列のサイズは pCount パラメーターで取得されます。このメソッドが配列用のメモリを割り当てます。呼び出し元は CoTaskMemFree を呼び出してメモリを解放する必要があります。

戻り値

このメソッドは HRESULT を返します。指定可能な値には、次の表に示すものが含まれますが、これらに限定されません。

戻り値 説明
S_OK
メソッドが成功しました。
vtbl 6 HRESULT GetDecoderConfigurations(GUID* Guid, DXVA2_VideoDesc* pVideoDesc, void* pReserved, DWORD* pCount, DXVA2_ConfigPictureDecode** ppConfigs)

デコーダーデバイスで利用可能な構成を取得します。

GuidGUID*inデコーダーデバイスを識別する GUID。利用可能なデバイス GUID を取得するには、IDirectXVideoDecoderService::GetDecoderDeviceGuids を呼び出します。
pVideoDescDXVA2_VideoDesc*inビデオコンテンツを記述する DXVA2_VideoDesc 構造体へのポインター。
pReservedvoid*optional予約済み。NULL に設定します。
pCountDWORD*out構成の数を受け取ります。
ppConfigsDXVA2_ConfigPictureDecode**outDXVA2_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)

ビデオデコーダーデバイスを作成します。

GuidGUID*in作成するデコーダーデバイスを指定する GUID。利用可能なデバイス GUID を取得するには、IDirectXVideoDecoderService::GetDecoderDeviceGuids を呼び出します。
pVideoDescDXVA2_VideoDesc*inビデオコンテンツを記述する DXVA2_VideoDesc 構造体へのポインター。
pConfigDXVA2_ConfigPictureDecode*inデコーダーの構成を指定する DXVA2_ConfigPictureDecode 構造体へのポインター。
ppDecoderRenderTargetsIDirect3DSurface9**inデコーダーのレンダーターゲットへのポインターを格納した、IDirect3DSurface9 ポインターの配列へのポインター。これらのサーフェスを作成するには、IDirectXVideoAccelerationService::CreateSurface を呼び出します。DxvaType パラメーターには DXVA2_VideoDecoderRenderTarget を指定します。
NumRenderTargetsDWORDinppDecoderRenderTargets 配列のサイズ。この値をゼロにすることはできません。
ppDecodeIDirectXVideoDecoder**outデコーダーの IDirectXVideoDecoder インターフェイスへのポインターを受け取ります。呼び出し元はこのインターフェイスを解放する必要があります。

戻り値

このメソッドは HRESULT を返します。指定可能な値には、次の表に示すものが含まれますが、これらに限定されません。

戻り値 説明
S_OK
メソッドが成功しました。
出典・ライセンス: 上記「公式ドキュメント」の内容は 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_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 指定が可能。