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

IDXGIDecodeSwapChain

COM
IID2633066b-4514-4c7a-8fd8-12ea98059d18継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

デスクトップ向けメディアアプリがビデオデータをデコードして DirectComposition サーフェスに表示するために使用するスワップチェーンを表します。

解説(Remarks)

デコードスワップチェーンは、主に YUV サーフェスフォーマットでの使用を想定しています。RGB サーフェスフォーマットで作成したデコードバッファーを使用する場合、TargetRectDestSize はバッファーの寸法と等しく設定する必要があります。SourceRect はバッファーの寸法を超えることができません。

クローンモードでは、デコードスワップチェーンはプライマリ出力(アウトプット)にのみ表示されることが保証されます。

デコードスワップチェーンはダーティ矩形と併用できません。

メソッド 9

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

vtbl 3 HRESULT PresentBuffer(DWORD BufferToPresent, DWORD SyncInterval, DXGI_PRESENT Flags)

出力(アウトプット)アダプター上にフレームを表示(プレゼント)します。

BufferToPresentDWORDinサブリソース配列のどのメンバーを表示(プレゼント)するかを示すインデックス。
SyncIntervalDWORDin

フレームの表示(プレゼント)を垂直帰線とどのように同期するかを指定する整数値。

ビットブロック転送(ビットブリット)モデル(DXGI_SWAP_EFFECT_DISCARD または DXGI_SWAP_EFFECT_SEQUENTIAL)の場合、値は次のとおりです。

  • 0 - 表示(プレゼント)は即座に行われ、同期は行われません。
  • 1,2,3,4 - n 回目の垂直帰線の後に表示(プレゼント)を同期します。
フリップモデル(DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL)の場合、値は次のとおりです。
  • 0 - 直前に表示(プレゼント)したフレームの残り時間をキャンセルし、より新しいフレームがキューに入っている場合はこのフレームを破棄します。
  • n > 0 - 少なくとも n 回の垂直帰線の間、表示(プレゼント)を同期します。
FlagsDXGI_PRESENTin

スワップチェーンの表示(プレゼント)オプションを含む整数値。これらのオプションは DXGI_PRESENT 定数によって定義されます。

カスタムの表示(プレゼント)時間(カスタムリフレッシュレート)を使用する場合は、DXGI_PRESENT_USE_DURATION フラグを設定する必要があります。

戻り値

このメソッドは成功時に S_OK を返し、失敗時には次のいずれかのエラーコードを返します。

vtbl 4 HRESULT SetSourceRect(RECT* pRect)

ビデオ処理ブリット操作のソース領域を定義する矩形を設定します。

pRectRECT*inスワップチェーンに設定するソース領域を格納した RECT 構造体へのポインター。

戻り値

このメソッドは成功時に S_OK を返し、失敗時には DXGI_ERROR のトピックで説明されているエラーコードのいずれかを返します。

vtbl 5 HRESULT SetTargetRect(RECT* pRect)

ビデオ処理ブリット操作のターゲット領域を定義する矩形を設定します。

pRectRECT*inスワップチェーンに設定するターゲット領域を格納した RECT 構造体へのポインター。

戻り値

このメソッドは成功時に S_OK を返し、失敗時には DXGI_ERROR のトピックで説明されているエラーコードのいずれかを返します。

vtbl 6 HRESULT SetDestSize(DWORD Width, DWORD Height)

ビデオ処理ブリット操作に使用する宛先サーフェスのサイズを設定します。

WidthDWORDin宛先サイズの幅(ピクセル単位)。
HeightDWORDin宛先サイズの高さ(ピクセル単位)。

戻り値

このメソッドは成功時に S_OK を返し、失敗時には DXGI_ERROR のトピックで説明されているエラーコードのいずれかを返します。

vtbl 7 HRESULT GetSourceRect(RECT* pRect)

スワップチェーンに使用されているソース領域を取得します。

pRectRECT*outスワップチェーンのソース領域を受け取る RECT 構造体へのポインター。

戻り値

このメソッドは成功時に S_OK を返し、失敗時には DXGI_ERROR のトピックで説明されているエラーコードのいずれかを返します。

vtbl 8 HRESULT GetTargetRect(RECT* pRect)

ビデオ処理ブリット操作のターゲット領域を定義する矩形を取得します。

pRectRECT*outスワップチェーンのターゲット領域を受け取る RECT 構造体へのポインター。

戻り値

このメソッドは成功時に S_OK を返し、失敗時には DXGI_ERROR のトピックで説明されているエラーコードのいずれかを返します。

vtbl 9 HRESULT GetDestSize(DWORD* pWidth, DWORD* pHeight)

ビデオ処理ブリット操作に使用する宛先サーフェスのサイズを取得します。

pWidthDWORD*out幅(ピクセル単位)を受け取る変数へのポインター。
pHeightDWORD*out高さ(ピクセル単位)を受け取る変数へのポインター。

戻り値

このメソッドは成功時に S_OK を返し、失敗時には DXGI_ERROR のトピックで説明されているエラーコードのいずれかを返します。

vtbl 10 HRESULT SetColorSpace(DXGI_MULTIPLANE_OVERLAY_YCbCr_FLAGS ColorSpace)

スワップチェーンが使用する色空間を設定します。(IDXGIDecodeSwapChain.SetColorSpace)

ColorSpaceDXGI_MULTIPLANE_OVERLAY_YCbCr_FLAGSinビット単位の OR 演算で結合された DXGI_MULTIPLANE_OVERLAY_YCbCr_FLAGS 型の値の組み合わせへのポインター。結果の値は、スワップチェーンに設定する色空間を指定します。

戻り値

このメソッドは成功時に S_OK を返し、失敗時には DXGI_ERROR のトピックで説明されているエラーコードのいずれかを返します。

vtbl 11 DXGI_MULTIPLANE_OVERLAY_YCbCr_FLAGS GetColorSpace()

スワップチェーンが使用する色空間を取得します。

戻り値

ビット単位の OR 演算で結合された DXGI_MULTIPLANE_OVERLAY_YCbCr_FLAGS 型の値の組み合わせ。結果の値は、スワップチェーンの色空間を指定します。

出典・ライセンス: 上記「公式ドキュメント」の内容は 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_IDXGIDecodeSwapChain "{2633066B-4514-4C7A-8FD8-12EA98059D18}"
#usecom global IDXGIDecodeSwapChain IID_IDXGIDecodeSwapChain "{}"
#comfunc global IDXGIDecodeSwapChain_PresentBuffer  3 int,int,int
#comfunc global IDXGIDecodeSwapChain_SetSourceRect  4 var
#comfunc global IDXGIDecodeSwapChain_SetTargetRect  5 var
#comfunc global IDXGIDecodeSwapChain_SetDestSize    6 int,int
#comfunc global IDXGIDecodeSwapChain_GetSourceRect  7 var
#comfunc global IDXGIDecodeSwapChain_GetTargetRect  8 var
#comfunc global IDXGIDecodeSwapChain_GetDestSize    9 var,var
#comfunc global IDXGIDecodeSwapChain_SetColorSpace  10 int
#comfunc global IDXGIDecodeSwapChain_GetColorSpace  11
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。