IVMRMixerBitmap
COM公式ドキュメント
IVMRMixerBitmap インターフェイスを使用すると、Video Mixing Renderer Filter 7 (VMR-7) の使用時に、ビットマップまたは DirectDraw サーフェスの静止画像をビデオ ストリームに合成できます。
メソッド 3
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
SetAlphaBitmap メソッドは、新しいビットマップ画像、ビットマップのソース位置、および描画先の矩形上のどこにどのように描画するかを指定します。
| pBmpParms | VMRALPHABITMAP* | in | ビットマップに関する情報を格納した VMRALPHABITMAP 構造体へのポインター。 |
戻り値
メソッドが成功した場合は S_OK を返します。失敗した場合はエラー コードを返します。
| リターン コード | 説明 |
|---|---|
| pBmpParms が NULL です。 | |
| 引数が無効です。「解説」を参照してください。 | |
| ビットマップの描画先 DC または DIBSection を作成できませんでした。 | |
| ビットマップ サーフェスへの BitBlt が失敗しました。 |
解説(Remarks)
ビットマップを削除するには、VMRALPHABITMAP 構造体を設定して SetAlphaBitmap を再度呼び出します。
このメソッドは、いくつかの理由により E_INVALIDARG を返すことがあります。
-
[VMRALPHABITMAP](/windows/desktop/api/strmif/ns-strmif-vmralphabitmap) 構造体に無効なフラグの組み合わせが含まれている。
[VMRALPHABITMAP](/windows/desktop/api/strmif/ns-strmif-vmralphabitmap) 構造体が有効な HDC または DirectDraw サーフェスを指定していない。
- fAlpha の値が無効である。
UpdateAlphaBitmapParameters メソッドは、ビットマップの位置、サイズ、およびブレンド値を変更します。
| pBmpParms | VMRALPHABITMAP* | in | VMRALPHABITMAP 構造体へのポインター。 |
戻り値
メソッドが成功した場合は S_OK を返します。失敗した場合はエラー コードを返します。
解説(Remarks)
変更を反映するには、フィルター グラフが実行中である必要があります。このメソッドはビットマップ画像自体は変更しません。描画先やカラー キーが設定されていない VMRALPHABITMAP 構造体を指定すると、ビットマップは表示されなくなります。この動作は下位互換性のために意図的に設計されたものであり、変更できません。
GetAlphaBitmapParameters メソッドは、現在の画像のコピーと関連するブレンド パラメーターを取得します。
| pBmpParms | VMRALPHABITMAP* | out | ビットマップ、ブレンド値に関する情報、および合成先の位置を受け取る VMRALPHABITMAP 構造体へのポインター。 |
戻り値
メソッドが成功した場合は S_OK を返します。失敗した場合はエラー コードを返します。
| リターン コード | 説明 |
|---|---|
| pBmpParms が無効です。 | |
| ミキサーがロードされていません。 |
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IVMRMixerBitmap "{1E673275-0257-40AA-AF20-7C608D4A0428}" #usecom global IVMRMixerBitmap IID_IVMRMixerBitmap "{}" #comfunc global IVMRMixerBitmap_SetAlphaBitmap 3 var #comfunc global IVMRMixerBitmap_UpdateAlphaBitmapParameters 4 var #comfunc global IVMRMixerBitmap_GetAlphaBitmapParameters 5 var ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。#define global IID_IVMRMixerBitmap "{1E673275-0257-40AA-AF20-7C608D4A0428}" #usecom global IVMRMixerBitmap IID_IVMRMixerBitmap "{}" #comfunc global IVMRMixerBitmap_SetAlphaBitmap 3 sptr #comfunc global IVMRMixerBitmap_UpdateAlphaBitmapParameters 4 sptr #comfunc global IVMRMixerBitmap_GetAlphaBitmapParameters 5 sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。