IVMRMixerControl9
COM公式ドキュメント
IVMRMixerControl9 インターフェースは、アプリケーションが Video Mixing Renderer Filter 9 (VMR-9) に入力されるビデオストリームを操作できるようにします。このインターフェースはアプリケーションでの使用のみを想定しており、上流のフィルターで使用すべきではありません。
解説(Remarks)
VMR-9 は、ミキシングモードの場合にのみこのインターフェースをサポートします。ミキシングモードを有効にするには、IVMRFilterConfig9::SetNumberOfStreams を呼び出します。それ以外の場合、QueryInterface は E_NOINTERFACE を返します。
Vmr9.h の前に DShow.h と D3d9.h をインクルードしてください。
メソッド 13
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
SetAlpha メソッドは、このビデオストリームに適用される一定のアルファ値を設定します。
| dwStreamID | DWORD | in | 入力ストリームを指定します。この値は入力ピンに対応します。たとえば、最初の入力ピンはストリーム 0 です。 |
| Alpha | FLOAT | in | このストリーム内のすべてのピクセルに適用されるアルファブレンディング値を指定します。 |
戻り値
このメソッドは HRESULT を返します。取り得る値には次の表に示すものが含まれます。
| 戻り値コード | 説明 |
|---|---|
| メソッドが成功しました。 | |
| ピンが接続されていません。 |
解説(Remarks)
指定できるアルファ値の範囲は 0.0(完全に透明)から 1.0(完全に不透明)です。
Vmr9.h の前に DShow.h と D3d9.h をインクルードしてください。
GetAlpha メソッドは、このビデオストリームに適用されている一定のアルファ値を取得します。
| dwStreamID | DWORD | in | 入力ストリームを指定します。この値は入力ピンに対応します。たとえば、最初の入力ピンはストリーム 0 です。 |
| pAlpha | FLOAT* | out | 現在のアルファ値を受け取る変数へのポインター。 |
戻り値
このメソッドは HRESULT を返します。取り得る値には次の表に示すものが含まれます。
| 戻り値コード | 説明 |
|---|---|
| メソッドが成功しました。 | |
| pAlpha が無効です。 | |
| ピンが接続されていません。 |
解説(Remarks)
Vmr9.h の前に DShow.h と D3d9.h をインクルードしてください。
SetZOrder メソッドは、このビデオストリームの Z オーダー内での位置を設定します。値が大きいほど奥に配置されます。
| dwStreamID | DWORD | in | 入力ストリームを指定します。この値は入力ピンに対応します。たとえば、最初の入力ピンはストリーム 0 です。 |
| dwZ | DWORD | in | Z オーダー内でのストリームの位置を格納するダブルワード。 |
戻り値
このメソッドは HRESULT を返します。取り得る値には次の表に示すものが含まれます。
| 戻り値コード | 説明 |
|---|---|
| メソッドが成功しました。 | |
| ピンが接続されていません。 |
解説(Remarks)
Vmr9.h の前に DShow.h と D3d9.h をインクルードしてください。
GetZOrder メソッドは、このビデオストリームの Z オーダー内での位置を取得します。
| dwStreamID | DWORD | in | 入力ストリームを指定します。この値は入力ピンに対応します。たとえば、最初の入力ピンはストリーム 0 です。 |
| pZ | DWORD* | out | Z オーダー内での現在の位置を受け取るポインター。 |
戻り値
このメソッドは HRESULT を返します。取り得る値には次の表に示すものが含まれます。
| 戻り値コード | 説明 |
|---|---|
| メソッドが成功しました。 | |
| pZ が無効です。 | |
| ピンが接続されていません。 |
解説(Remarks)
既定の Z オーダーは、ピンが作成された順序です。
Vmr9.h の前に DShow.h と D3d9.h をインクルードしてください。
SetOutputRect メソッドは、合成矩形内におけるこのストリームの位置を設定します。
| dwStreamID | DWORD | in | 入力ストリームを指定します。この値は入力ピンに対応します。たとえば、最初の入力ピンはストリーム 0 です。 |
| pRect | VMR9NormalizedRect* | in | 合成空間における矩形の位置を指定する VMR9NormalizedRect 構造体へのポインター。 |
戻り値
このメソッドは HRESULT を返します。取り得る値には次の表に示すものが含まれます。
| 戻り値コード | 説明 |
|---|---|
| メソッドが成功しました。 | |
| pRect が無効です。 | |
| ピンが接続されていません。 |
解説(Remarks)
この矩形は合成空間に存在するため、「無効な」矩形というものは存在しません。たとえば、left を right より大きく設定すると、ビデオを x 方向に反転させることができます。空の矩形を指定すると、このストリームはオフになります。
Vmr9.h の前に DShow.h と D3d9.h をインクルードしてください。
GetOutputRect メソッドは、合成矩形内におけるこのストリームのビデオ矩形の位置を取得します。
| dwStreamID | DWORD | in | 入力ストリームを指定します。この値は入力ピンに対応します。たとえば、最初の入力ピンはストリーム 0 です。 |
| pRect | VMR9NormalizedRect* | out | 合成空間における出力先の矩形を受け取る NORMALIZEDRECT 構造体へのポインター。 |
戻り値
このメソッドは HRESULT を返します。取り得る値には次の表に示すものが含まれます。
| 戻り値コード | 説明 |
|---|---|
| メソッドが成功しました。 | |
| pRect が無効です。 | |
| ピンが接続されていません。 |
解説(Remarks)
この矩形は合成空間に存在するため、「無効な」矩形というものは存在しません。たとえば、left が right より大きい場合は、ビデオが x 方向に反転していることを意味します。空の矩形はこのストリームをオフにします。
Vmr9.h の前に DShow.h と D3d9.h をインクルードしてください。
SetBackgroundClr メソッドは、出力矩形の背景色を設定します。
| ClrBkg | COLORREF | in | 背景色を指定します。 |
戻り値
このメソッドは HRESULT を返します。取り得る値には次の表に示すものが含まれます。
| 戻り値コード | 説明 |
|---|---|
| メソッドが成功しました。 |
解説(Remarks)
Vmr9.h の前に DShow.h と D3d9.h をインクルードしてください。
GetBackgroundClr メソッドは、出力矩形の現在の背景色を取得します。
| lpClrBkg | COLORREF* | in | 背景色を受け取る変数へのポインター。 |
戻り値
このメソッドは HRESULT を返します。取り得る値には次の表に示すものが含まれます。
| 戻り値コード | 説明 |
|---|---|
| メソッドが成功しました。 |
解説(Remarks)
Vmr9.h の前に DShow.h と D3d9.h をインクルードしてください。
SetMixingPrefs メソッドは、ストリームのミキシング設定を行います。
| dwMixerPrefs | DWORD | in | VMR9MixerPrefs フラグのビット単位 OR の組み合わせ。 |
戻り値
このメソッドは HRESULT を返します。取り得る値には次の表に示すものが含まれます。
| 戻り値コード | 説明 |
|---|---|
| メソッドが成功しました。 |
解説(Remarks)
ミキシング設定のフラグは、デシメーション、フィルタリング、レンダーターゲットの 3 つのグループに分かれています。VMR9MixerPrefs 列挙型は、これらのフラグを分離するためのビットマスクを定義しています。
- MixerPref9_DecimateMask
- MixerPref9_FilteringMask
- MixerPref9_RenderTargetMask
// 現在のミキシング設定を取得します。
DWORD dwPrefs;
pMixControl->GetMixingPrefs(&dwPrefs);
// 現在のレンダーターゲットフラグを削除します。
dwPrefs &= ~MixerPref_RenderTargetMask;
// 目的のレンダーターゲットフラグを追加します。
dwPrefs |= MixerPref_RenderTargetYUV;
// 新しいフラグを設定します。
pMixControl->SetMixingPrefs(dwPrefs);
VMR がレンダーレスモードの場合は、SetMixingPrefs を呼び出す前にアロケーター・プレゼンターを設定する必要があります。そうしないと、VMR は Direct3D デバイスの機能を判別できません。
Vmr9.h の前に DShow.h と D3d9.h をインクルードしてください。
GetMixingPrefs メソッドは、ストリームのミキシング設定を取得します。
| pdwMixerPrefs | DWORD* | out | VMR9MixerPrefs フラグのビット単位 OR の組み合わせを受け取る変数のアドレス。 |
戻り値
このメソッドは HRESULT を返します。取り得る値には次の表に示すものが含まれます。
| 戻り値コード | 説明 |
|---|---|
| メソッドが成功しました。 |
解説(Remarks)
Vmr9.h の前に DShow.h と D3d9.h をインクルードしてください。
SetProcAmpControl メソッドは、VMR-9 の画像調整を設定します。
| dwStreamID | DWORD | in | 入力ストリームを指定します。この値は入力ピンに対応します。たとえば、最初の入力ピンはストリーム 0 です。 |
| lpClrControl | VMR9ProcAmpControl* | in | 画像調整の設定を格納する VMR9ProcAmpControl 構造体へのポインター。 |
戻り値
このメソッドは HRESULT を返します。取り得る値には次の表に示すものが含まれます。
| 戻り値コード | 説明 |
|---|---|
引数が無効です。このエラーの原因として、次のものが考えられます。
|
|
| NULL ポインター引数です。 | |
| 成功しました。 | |
| ピンが接続されていません。 | |
| グラフィックスハードウェアが ProcAmp コントロールをサポートしていません。 |
解説(Remarks)
Vmr9.h の前に DShow.h と D3d9.h をインクルードしてください。
GetProcAmpControl メソッドは、VMR-9 の現在の画像調整設定を取得します。
| dwStreamID | DWORD | in | 入力ストリームを指定します。この値は入力ピンに対応します。たとえば、最初の入力ピンはストリーム 0 です。 |
| lpClrControl | VMR9ProcAmpControl* | inout | 画像調整の設定を受け取る VMR9ProcAmpControl 構造体へのポインター。メソッドが戻ると、dwFlags フィールドはグラフィックスドライバーがサポートするプロパティを示します。このメソッドを呼び出す前に、構造体の dwSize メンバーを設定してください。 |
戻り値
このメソッドは HRESULT を返します。取り得る値には次の表に示すものが含まれます。
| 戻り値コード | 説明 |
|---|---|
引数が無効です。このエラーの原因として、次のものが考えられます。
|
|
| NULL ポインター引数です。 | |
| 成功しました。 | |
| ピンが接続されていません。 | |
| グラフィックスハードウェアが ProcAmp コントロールをサポートしていません。 |
解説(Remarks)
Vmr9.h の前に DShow.h と D3d9.h をインクルードしてください。
GetProcAmpControlRange メソッドは、明るさ、コントラスト、色相、彩度などの画像調整設定の値の範囲を取得します。
| dwStreamID | DWORD | in | 入力ストリームを指定します。この値は入力ピンに対応します。たとえば、最初の入力ピンはストリーム 0 です。 |
| lpClrControl | VMR9ProcAmpControlRange* | inout | 範囲を受け取る VMR9ProcAmpControlRange 構造体へのポインター。呼び出し側は dwSize フィールドと dwProperty フィールドを設定する必要があります。 |
戻り値
このメソッドは HRESULT を返します。取り得る値には次の表に示すものが含まれます。
| 戻り値コード | 説明 |
|---|---|
引数が無効です。このエラーの原因として、次のものが考えられます。
|
|
| NULL ポインター引数です。 | |
| 成功しました。 | |
| ピンが接続されていません。 | |
| グラフィックスハードウェアが ProcAmp コントロールをサポートしていません。 |
解説(Remarks)
Vmr9.h の前に DShow.h と D3d9.h をインクルードしてください。
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 方式にも切替可。#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,sptr #comfunc global IVMRMixerControl9_SetZOrder 5 int,int #comfunc global IVMRMixerControl9_GetZOrder 6 int,sptr #comfunc global IVMRMixerControl9_SetOutputRect 7 int,sptr #comfunc global IVMRMixerControl9_GetOutputRect 8 int,sptr #comfunc global IVMRMixerControl9_SetBackgroundClr 9 int #comfunc global IVMRMixerControl9_GetBackgroundClr 10 sptr #comfunc global IVMRMixerControl9_SetMixingPrefs 11 int #comfunc global IVMRMixerControl9_GetMixingPrefs 12 sptr #comfunc global IVMRMixerControl9_SetProcAmpControl 13 int,sptr #comfunc global IVMRMixerControl9_GetProcAmpControl 14 int,sptr #comfunc global IVMRMixerControl9_GetProcAmpControlRange 15 int,sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。