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

IVMRMixerControl9

COM
IID1a777eaa-47c8-4930-b2c9-8fee1c1b0f3b継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

IVMRMixerControl9 インターフェースは、アプリケーションが Video Mixing Renderer Filter 9 (VMR-9) に入力されるビデオストリームを操作できるようにします。このインターフェースはアプリケーションでの使用のみを想定しており、上流のフィルターで使用すべきではありません。

解説(Remarks)

VMR-9 は、ミキシングモードの場合にのみこのインターフェースをサポートします。ミキシングモードを有効にするには、IVMRFilterConfig9::SetNumberOfStreams を呼び出します。それ以外の場合、QueryInterfaceE_NOINTERFACE を返します。

Vmr9.h の前に DShow.h と D3d9.h をインクルードしてください。

メソッド 13

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

vtbl 3 HRESULT SetAlpha(DWORD dwStreamID, FLOAT Alpha)

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

dwStreamIDDWORDin入力ストリームを指定します。この値は入力ピンに対応します。たとえば、最初の入力ピンはストリーム 0 です。
AlphaFLOATinこのストリーム内のすべてのピクセルに適用されるアルファブレンディング値を指定します。

戻り値

このメソッドは HRESULT を返します。取り得る値には次の表に示すものが含まれます。

戻り値コード 説明
S_OK
メソッドが成功しました。
VFW_E_NOT_CONNECTED
ピンが接続されていません。

解説(Remarks)

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

Vmr9.h の前に DShow.h と D3d9.h をインクルードしてください。

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

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

dwStreamIDDWORDin入力ストリームを指定します。この値は入力ピンに対応します。たとえば、最初の入力ピンはストリーム 0 です。
pAlphaFLOAT*out現在のアルファ値を受け取る変数へのポインター。

戻り値

このメソッドは HRESULT を返します。取り得る値には次の表に示すものが含まれます。

戻り値コード 説明
S_OK
メソッドが成功しました。
E_POINTER
pAlpha が無効です。
VFW_E_NOT_CONNECTED
ピンが接続されていません。

解説(Remarks)

Vmr9.h の前に DShow.h と D3d9.h をインクルードしてください。

vtbl 5 HRESULT SetZOrder(DWORD dwStreamID, DWORD dwZ)

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

dwStreamIDDWORDin入力ストリームを指定します。この値は入力ピンに対応します。たとえば、最初の入力ピンはストリーム 0 です。
dwZDWORDinZ オーダー内でのストリームの位置を格納するダブルワード。

戻り値

このメソッドは HRESULT を返します。取り得る値には次の表に示すものが含まれます。

戻り値コード 説明
S_OK
メソッドが成功しました。
VFW_E_NOT_CONNECTED
ピンが接続されていません。

解説(Remarks)

Vmr9.h の前に DShow.h と D3d9.h をインクルードしてください。

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

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

dwStreamIDDWORDin入力ストリームを指定します。この値は入力ピンに対応します。たとえば、最初の入力ピンはストリーム 0 です。
pZDWORD*outZ オーダー内での現在の位置を受け取るポインター。

戻り値

このメソッドは HRESULT を返します。取り得る値には次の表に示すものが含まれます。

戻り値コード 説明
S_OK
メソッドが成功しました。
E_POINTER
pZ が無効です。
VFW_E_NOT_CONNECTED
ピンが接続されていません。

解説(Remarks)

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

Vmr9.h の前に DShow.h と D3d9.h をインクルードしてください。

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

SetOutputRect メソッドは、合成矩形内におけるこのストリームの位置を設定します。

dwStreamIDDWORDin入力ストリームを指定します。この値は入力ピンに対応します。たとえば、最初の入力ピンはストリーム 0 です。
pRectVMR9NormalizedRect*in合成空間における矩形の位置を指定する VMR9NormalizedRect 構造体へのポインター。

戻り値

このメソッドは HRESULT を返します。取り得る値には次の表に示すものが含まれます。

戻り値コード 説明
S_OK
メソッドが成功しました。
E_POINTER
pRect が無効です。
VFW_E_NOT_CONNECTED
ピンが接続されていません。

解説(Remarks)

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

Vmr9.h の前に DShow.h と D3d9.h をインクルードしてください。

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

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

dwStreamIDDWORDin入力ストリームを指定します。この値は入力ピンに対応します。たとえば、最初の入力ピンはストリーム 0 です。
pRectVMR9NormalizedRect*out合成空間における出力先の矩形を受け取る NORMALIZEDRECT 構造体へのポインター。

戻り値

このメソッドは HRESULT を返します。取り得る値には次の表に示すものが含まれます。

戻り値コード 説明
S_OK
メソッドが成功しました。
E_POINTER
pRect が無効です。
VFW_E_NOT_CONNECTED
ピンが接続されていません。

解説(Remarks)

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

Vmr9.h の前に DShow.h と D3d9.h をインクルードしてください。

vtbl 9 HRESULT SetBackgroundClr(COLORREF ClrBkg)

SetBackgroundClr メソッドは、出力矩形の背景色を設定します。

ClrBkgCOLORREFin背景色を指定します。

戻り値

このメソッドは HRESULT を返します。取り得る値には次の表に示すものが含まれます。

戻り値コード 説明
S_OK
メソッドが成功しました。

解説(Remarks)

Vmr9.h の前に DShow.h と D3d9.h をインクルードしてください。

vtbl 10 HRESULT GetBackgroundClr(COLORREF* lpClrBkg)

GetBackgroundClr メソッドは、出力矩形の現在の背景色を取得します。

lpClrBkgCOLORREF*in背景色を受け取る変数へのポインター。

戻り値

このメソッドは HRESULT を返します。取り得る値には次の表に示すものが含まれます。

戻り値コード 説明
S_OK
メソッドが成功しました。

解説(Remarks)

Vmr9.h の前に DShow.h と D3d9.h をインクルードしてください。

vtbl 11 HRESULT SetMixingPrefs(DWORD dwMixerPrefs)

SetMixingPrefs メソッドは、ストリームのミキシング設定を行います。

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

戻り値

このメソッドは HRESULT を返します。取り得る値には次の表に示すものが含まれます。

戻り値コード 説明
S_OK
メソッドが成功しました。

解説(Remarks)

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

各グループごとに有効なフラグを 1 つ指定する必要があります。1 つのフラグだけを変更したい場合は、現在の設定を取得し、不要なフラグを削除して、目的のフラグを追加します。次に例を示します。

// 現在のミキシング設定を取得します。
DWORD dwPrefs;
pMixControl->GetMixingPrefs(&dwPrefs);  

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

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

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

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

Vmr9.h の前に DShow.h と D3d9.h をインクルードしてください。

vtbl 12 HRESULT GetMixingPrefs(DWORD* pdwMixerPrefs)

GetMixingPrefs メソッドは、ストリームのミキシング設定を取得します。

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

戻り値

このメソッドは HRESULT を返します。取り得る値には次の表に示すものが含まれます。

戻り値コード 説明
S_OK
メソッドが成功しました。

解説(Remarks)

Vmr9.h の前に DShow.h と D3d9.h をインクルードしてください。

vtbl 13 HRESULT SetProcAmpControl(DWORD dwStreamID, VMR9ProcAmpControl* lpClrControl)

SetProcAmpControl メソッドは、VMR-9 の画像調整を設定します。

dwStreamIDDWORDin入力ストリームを指定します。この値は入力ピンに対応します。たとえば、最初の入力ピンはストリーム 0 です。
lpClrControlVMR9ProcAmpControl*in画像調整の設定を格納する VMR9ProcAmpControl 構造体へのポインター。

戻り値

このメソッドは HRESULT を返します。取り得る値には次の表に示すものが含まれます。

戻り値コード 説明
E_INVALIDARG
引数が無効です。このエラーの原因として、次のものが考えられます。
  • ストリーム番号が無効です
  • VMR9ProcAmpControl 構造体の dwSize の値が無効です。
E_POINTER
NULL ポインター引数です。
S_OK
成功しました。
VFW_E_NOT_CONNECTED
ピンが接続されていません。
VFW_E_VMR_NO_PROCAMP_HW
グラフィックスハードウェアが ProcAmp コントロールをサポートしていません。

解説(Remarks)

Vmr9.h の前に DShow.h と D3d9.h をインクルードしてください。

vtbl 14 HRESULT GetProcAmpControl(DWORD dwStreamID, VMR9ProcAmpControl* lpClrControl)

GetProcAmpControl メソッドは、VMR-9 の現在の画像調整設定を取得します。

dwStreamIDDWORDin入力ストリームを指定します。この値は入力ピンに対応します。たとえば、最初の入力ピンはストリーム 0 です。
lpClrControlVMR9ProcAmpControl*inout画像調整の設定を受け取る VMR9ProcAmpControl 構造体へのポインター。メソッドが戻ると、dwFlags フィールドはグラフィックスドライバーがサポートするプロパティを示します。このメソッドを呼び出す前に、構造体の dwSize メンバーを設定してください。

戻り値

このメソッドは HRESULT を返します。取り得る値には次の表に示すものが含まれます。

戻り値コード 説明
E_INVALIDARG
引数が無効です。このエラーの原因として、次のものが考えられます。
  • ストリーム番号が無効です
  • VMR9ProcAmpControl 構造体の dwSize の値が無効です。
E_POINTER
NULL ポインター引数です。
S_OK
成功しました。
VFW_E_NOT_CONNECTED
ピンが接続されていません。
VFW_E_VMR_NO_PROCAMP_HW
グラフィックスハードウェアが ProcAmp コントロールをサポートしていません。

解説(Remarks)

Vmr9.h の前に DShow.h と D3d9.h をインクルードしてください。

vtbl 15 HRESULT GetProcAmpControlRange(DWORD dwStreamID, VMR9ProcAmpControlRange* lpClrControl)

GetProcAmpControlRange メソッドは、明るさ、コントラスト、色相、彩度などの画像調整設定の値の範囲を取得します。

dwStreamIDDWORDin入力ストリームを指定します。この値は入力ピンに対応します。たとえば、最初の入力ピンはストリーム 0 です。
lpClrControlVMR9ProcAmpControlRange*inout範囲を受け取る VMR9ProcAmpControlRange 構造体へのポインター。呼び出し側は dwSize フィールドと dwProperty フィールドを設定する必要があります。

戻り値

このメソッドは HRESULT を返します。取り得る値には次の表に示すものが含まれます。

戻り値コード 説明
E_INVALIDARG
引数が無効です。このエラーの原因として、次のものが考えられます。
  • ストリーム番号が無効です
  • VMR9ProcAmpControl 構造体の dwSize または dwProperty の値が無効です。
E_POINTER
NULL ポインター引数です。
S_OK
成功しました。
VFW_E_NOT_CONNECTED
ピンが接続されていません。
VFW_E_VMR_NO_PROCAMP_HW
グラフィックスハードウェアが ProcAmp コントロールをサポートしていません。

解説(Remarks)

Vmr9.h の前に DShow.h と D3d9.h をインクルードしてください。

出典・ライセンス: 上記「公式ドキュメント」の内容は 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_IVMRMixerControl9 "{1A777EAA-47C8-4930-B2C9-8FEE1C1B0F3B}"
#usecom global IVMRMixerControl9 IID_IVMRMixerControl9 "{}"
#comfunc global IVMRMixerControl9_SetAlpha                3 int,float
#comfunc global IVMRMixerControl9_GetAlpha                4 int,var
#comfunc global IVMRMixerControl9_SetZOrder               5 int,int
#comfunc global IVMRMixerControl9_GetZOrder               6 int,var
#comfunc global IVMRMixerControl9_SetOutputRect           7 int,var
#comfunc global IVMRMixerControl9_GetOutputRect           8 int,var
#comfunc global IVMRMixerControl9_SetBackgroundClr        9 int
#comfunc global IVMRMixerControl9_GetBackgroundClr        10 var
#comfunc global IVMRMixerControl9_SetMixingPrefs          11 int
#comfunc global IVMRMixerControl9_GetMixingPrefs          12 var
#comfunc global IVMRMixerControl9_SetProcAmpControl       13 int,var
#comfunc global IVMRMixerControl9_GetProcAmpControl       14 int,var
#comfunc global IVMRMixerControl9_GetProcAmpControlRange  15 int,var
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。