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

IVMRMixerControl

COM
IID1c1a17b0-bed0-415d-974b-dc6696131599継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

IVMRMixerControl インターフェースは、アプリケーションが Video Mixing Renderer Filter 7 (VMR-7) に入力される複数のビデオストリームを操作できるようにします。

メソッド 10

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

vtbl 3 HRESULT SetAlpha(DWORD dwStreamID, FLOAT Alpha)

SetAlpha メソッドは、このビデオストリームに適用される一定のアルファ値を設定します。

dwStreamIDDWORDin入力ストリームを指定します。
AlphaFLOATinこのストリーム内のすべてのピクセルに適用されるアルファブレンディング値を指定します。

戻り値

メソッドが成功した場合は S_OK を返します。失敗した場合はエラーコードを返します。

戻り値 説明
VFW_E_NOT_CONNECTED
ピンが接続されていません。

解説(Remarks)

指定するアルファ値は、0.0(完全に透明)から 1.0(完全に不透明)までの範囲で指定できます。

vtbl 4 HRESULT GetAlpha(DWORD dwStreamID, FLOAT* pAlpha)

GetAlpha メソッドは、このビデオストリームに適用されている一定のアルファ値を取得します。

dwStreamIDDWORDin入力ストリームを指定します。
pAlphaFLOAT*out現在のアルファ値を受け取る float 型の変数へのポインターです。

戻り値

メソッドが成功した場合は S_OK を返します。失敗した場合はエラーコードを返します。

戻り値 説明
E_POINTER
pAlpha が無効です。
VFW_E_NOT_CONNECTED
ピンが接続されていません。
vtbl 5 HRESULT SetZOrder(DWORD dwStreamID, DWORD dwZ)

SetZOrder メソッドは、Z オーダーにおけるこのビデオストリームの位置を設定します。値が大きいほど奥に配置されます。

dwStreamIDDWORDin入力ストリームを指定します。
dwZDWORDinZ オーダー内におけるストリームの位置を格納する DWORD です。

戻り値

メソッドが成功した場合は S_OK を返します。失敗した場合はエラーコードを返します。

戻り値 説明
VFW_E_NOT_CONNECTED
ピンが接続されていません。

解説(Remarks)

既定の Z オーダーは、ピンが作成された順序になります。既定の Z オーダーを変更したい場合にのみ、このメソッドを使用する必要があります。

vtbl 6 HRESULT GetZOrder(DWORD dwStreamID, DWORD* pZ)

GetZOrder メソッドは、Z オーダーにおけるこのビデオストリームの位置を取得します。

dwStreamIDDWORDin入力ストリームを指定します。
pZDWORD*outZ オーダー内の現在の位置を受け取る DWORD へのポインターです。

戻り値

メソッドが成功した場合は S_OK を返します。失敗した場合はエラーコードを返します。

戻り値 説明
E_POINTER
pZOrder が無効です。
VFW_E_NOT_CONNECTED
ピンが接続されていません。

解説(Remarks)

既定の Z オーダーは、ピンが作成された順序になります。

vtbl 7 HRESULT SetOutputRect(DWORD dwStreamID, NORMALIZEDRECT* pRect)

SetOutputRect メソッドは、コンポジション矩形内におけるこのストリームの位置を設定します。

dwStreamIDDWORDin入力ストリームを指定します。
pRectNORMALIZEDRECT*inコンポジション空間における矩形の位置を指定する NORMALIZEDRECT 構造体へのポインターです。

戻り値

メソッドが成功した場合は S_OK を返します。失敗した場合はエラーコードを返します。

戻り値 説明
E_POINTER
pRect が無効です。
VFW_E_NOT_CONNECTED
ピンが接続されていません。

解説(Remarks)

この矩形はコンポジション空間内に存在するため、「無効な」矩形というものは存在しません。たとえば、left を right より大きく設定すると、ビデオが x 方向に反転します。空の矩形を指定すると、このストリームはオフになります。

vtbl 8 HRESULT GetOutputRect(DWORD dwStreamID, NORMALIZEDRECT* pRect)

GetOutputRect メソッドは、コンポジション矩形内におけるこのストリームのビデオ矩形の位置を取得します。

dwStreamIDDWORDin入力ストリームを指定します。
pRectNORMALIZEDRECT*outコンポジション空間における転送先の矩形を受け取る NORMALIZEDRECT 構造体へのポインターです。

戻り値

メソッドが成功した場合は S_OK を返します。失敗した場合はエラーコードを返します。

戻り値 説明
E_POINTER
pRect が無効です。
VFW_E_NOT_CONNECTED
ピンが接続されていません。

解説(Remarks)

この矩形はコンポジション空間内に存在するため、「無効な」矩形というものは存在しません。たとえば、left が right より大きい場合、ビデオが x 方向に反転していることを意味します。空の矩形はこのストリームをオフにします。

vtbl 9 HRESULT SetBackgroundClr(COLORREF ClrBkg)

出力矩形の背景色を設定します。

ClrBkgCOLORREFin背景色を指定します。

戻り値

メソッドが成功した場合は S_OK を返します。失敗した場合はエラーコードを返します。

vtbl 10 HRESULT GetBackgroundClr(COLORREF* lpClrBkg)

出力矩形の現在の背景色を取得します。

lpClrBkgCOLORREF*in背景色を受け取る変数のアドレスです。

戻り値

メソッドが成功した場合は S_OK を返します。失敗した場合はエラーコードを返します。

vtbl 11 HRESULT SetMixingPrefs(DWORD dwMixerPrefs)

ストリームのミキシング設定を設定します。

dwMixerPrefsDWORDinVMRMixerPrefs フラグのビット単位の OR の組み合わせです。

戻り値

メソッドが成功した場合は S_OK を返します。失敗した場合はエラーコードを返します。

解説(Remarks)

ミキシング設定のフラグは、デシメーション、フィルタリング、レンダーターゲットの 3 つのグループに分かれています。VMRMixerPrefs 列挙型は、これらのフラグを抽出するためのビットマスクを定義しています。

各グループに対して有効なフラグを 1 つ指定する必要があります。単一のフラグだけを変更したい場合は、現在の設定を取得し、不要なフラグを削除して、必要なフラグを追加します。例:
C++
// 現在のミキシング設定を取得します。
DWORD dwPrefs;
pMixControl->GetMixingPrefs(&dwPrefs);  

// 現在のレンダーターゲットフラグを削除します。 dwPrefs &= ~MixerPref_RenderTargetMask;

// 目的のレンダーターゲットフラグを追加します。 dwPrefs |= MixerPref_RenderTargetYUV;

// 新しいフラグを設定します。 pMixControl->SetMixingPrefs(dwPrefs);

VMR がレンダーレスモードの場合、SetMixingPrefs を呼び出す前にアロケーター・プレゼンターを設定する必要があります。そうしないと、VMR は Direct3D デバイスの機能を判別できません。
vtbl 12 HRESULT GetMixingPrefs(DWORD* pdwMixerPrefs)

ストリームのミキシング設定を取得します。

pdwMixerPrefsDWORD*outVMRMixerPrefs フラグのビット単位の OR の組み合わせを受け取る変数のアドレスです。

戻り値

メソッドが成功した場合は 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_IVMRMixerControl "{1C1A17B0-BED0-415D-974B-DC6696131599}"
#usecom global IVMRMixerControl IID_IVMRMixerControl "{}"
#comfunc global IVMRMixerControl_SetAlpha          3 int,float
#comfunc global IVMRMixerControl_GetAlpha          4 int,var
#comfunc global IVMRMixerControl_SetZOrder         5 int,int
#comfunc global IVMRMixerControl_GetZOrder         6 int,var
#comfunc global IVMRMixerControl_SetOutputRect     7 int,var
#comfunc global IVMRMixerControl_GetOutputRect     8 int,var
#comfunc global IVMRMixerControl_SetBackgroundClr  9 int
#comfunc global IVMRMixerControl_GetBackgroundClr  10 var
#comfunc global IVMRMixerControl_SetMixingPrefs    11 int
#comfunc global IVMRMixerControl_GetMixingPrefs    12 var
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。