Microsoft DirectX 8.0

IMixerPinConfig インターフェイス

IMixerPinConfig インターフェイスは、オーバーレイ ミキサー フィルタの入力ピン上で公開され、ビデオ ストリームの各種操作を実行するメソッドを提供する。オーバーレイ ミキサーには、ビデオ入力ストリームの追加時に動的に作成される複数の入力ピンがある。最初のピンのビデオ ストリームを "プライマリ ストリーム"、その後のピンストリームを "セカンダリ ストリーム" と呼ぶ。

各種ビデオ ストリームのミキシングにかかわるパラメータを操作するには、このインターフェイスを使用する。これらのパラメータには、位置、Z オーダー、ブレンディング レベルと透過性レベル、アスペクト比補正、およびストリームのカラー キーの取得と設定が含まれる。

表示ウィンドウでのビデオ ストリームの位置を設定すると、"セカンダリ ストリーム" すべてのデフォルトの相対位置が {0, 0, 0, 0} になる。したがって、"セカンダリ ストリーム" 上にある SetRelativePosition メソッドを使用して、確実にすべてのビデオ ストリームを正しく配置する。

アプリケーションでは、複数のビデオ ストリームをミキシングするときに、このインターフェイスを使用して属性を取得および設定する。

要件

Mpconfig.h が必要である。

vtable 順のメソッド

IUnknown メソッド説明
QueryInterface サポートされているインターフェイスへのポインタを取得する。
AddRef 参照カウントをインクリメントする。
Release 参照カウントをデクリメントする。
IMixerPinConfig メソッド説明
SetRelativePosition 表示ウィンドウでのストリームの位置を設定する。
GetRelativePosition 表示ウィンドウでのストリームの位置を設定する。
SetZOrder 特定のビデオ ストリームの Z オーダーを設定する。
GetZOrder 特定のビデオ ストリームの Z オーダーを取得する。
SetColorKey ビデオ ストリームで使用されているカラー キーを設定する。
GetColorKey ビデオ ストリームで使用されているカラー キーを取得する。
SetBlendingParameter ブレンディング パラメータを設定する。このパラメータはセカンダリ ストリームとプライマリ ストリームのブレンド方法を定義する。
GetBlendingParameter ブレンディング パラメータの値を取得する。このパラメータはセカンダリ ストリームとプライマリ ストリームのブレンド方法を定義する。
SetAspectRatioMode ウィンドウのサイズ変更でのアスペクト比補正モードを設定する。
GetAspectRatioMode ウィンドウのサイズ変更でのアスペクト比補正モードを取得する。
SetStreamTransparent ストリームを透過に設定する。
SetStreamTransparent ストリームが透過かどうかを判断する。

IMixerPinConfig::GetAspectRatioMode

IMixerPinConfig インターフェイス

ウィンドウのサイズ変更でのアスペクト比補正モードを取得する。

構文

HRESULT GetAspectRatioMode(
    AM_ASPECT_RATIO_MODE *pamAspectRatioMode
    ) PURE;

パラメータ

pamAspectRatioMode
[out] AM_ASPECT_RATIO_MODE 列挙型メンバへのポインタ。

戻り値

インターフェイスの実装に応じた HRESULT 値を返す。現在の DirectShow の実装での戻り値は次のとおりである。
E_NOTIMPL セカンダリ ストリーム上のメソッドが呼び出された。
E_INVALIDARG 無効な値または NULL。
NOERRORエラーなし。

参照

IMixerPinConfig::SetAspectRatioMode

IMixerPinConfig::GetBlendingParameter

IMixerPinConfig インターフェイス

ブレンディング パラメータの値を取得する。このパラメータはセカンダリ ストリームとプライマリ ストリームのブレンド方法を定義する。

構文

HRESULT GetBlendingParameter(
    DWORD *pdwBlendingParameter
    ) PURE;

パラメータ

pdwBlendingParameter
[out] プライマリ ストリームとセカンダリ ストリームの間のブレンド量を示す 0 〜 255 の値へのポインタ。

戻り値

インターフェイスの実装に応じた HRESULT 値を返す。現在の DirectShow の実装での戻り値は次のとおりである。
E_UNEXPECTED プライマリ ストリーム上のメソッドが呼び出された。
E_INVALIDARG 値が可能な範囲 (0 〜 255) を超えている。
NOERRORエラーなし。

注意

値 0 は、セカンダリ ストリームが非表示であることを示す。値 255 は、セカンダリ ストリームが占める領域でプライマリ ストリームが非表示であることを示す。

参照

IMixerPinConfig::SetBlendingParameter

IMixerPinConfig::GetColorKey

IMixerPinConfig インターフェイス

ビデオ ストリームで使用されているカラー キーを取得する。

構文

HRESULT GetColorKey(
    COLORKEY *pColorKey,
    DWORD *pColor ) PURE;

パラメータ

pColorKey
[out] キーの種類およびパレット インデックスが格納された COLORKEY 構造体へのポインタ。
pColor
[out] 返された値へのポインタ。値は、現在のディスプレイ モードが 8 ビットのパレット化モードの場合、返された COLORKEY の 8 ビット パレット インデックスを示す。それ以外の場合、カラー キーを現在のディスプレイ モードのピクセル フォーマットで表現したもの。

戻り値

インターフェイスの実装に応じた HRESULT 値を返す。現在の DirectShow の実装での戻り値は次のとおりである。
E_INVALIDARG 無効な引数。パラメータが両方とも NULL。
E_FAIL カラー キーが不明なため、GetColorKey が失敗した。
NOERRORエラーなし。

注意

プライマリ ストリーム上の値を取得すると、オーバーレイ サーフェスで使用している転送先カラー キーが得られる。セカンダリ ピン上の値を取得すると、そのストリームで使用しているカラー キーが得られる。

現在の DirectShow におけるこのインターフェイスの実装は、pColorKey パラメータと pColor パラメータのどちらかに NULL を返す場合がある。ただし、両方が NULL の場合、メソッドは失敗し、E_INVALIDARG を返す。

注 :  pColor パラメータで返される DWORD 値は、実際に使用されている色である。したがって、ディスプレイのビット深度が 8、16、24、または 32 の場合、それぞれ、DWORD の下位 8、16、24、32 ビットがカラー キーの実際の値を示す。

参照

IMixerPinConfig::SetColorKey

IMixerPinConfig::GetStreamTransparent

IMixerPinConfig インターフェイス

ストリームが透過かどうかを判断する。

構文

HRESULT GetStreamTransparent(
    BOOL *pbStreamTransparent
    ) PURE;

パラメータ

pbStreamTransparent
[out] ストリームが透過かどうかを示す値へのポインタ。TRUE は透過であることを示し、FALSE は透過でないことを示す。

戻り値

インターフェイスの実装に応じた HRESULT 値を返す。HRESULT は、次の標準的な定数の 1 つか、または一覧に示されていないその他の値となる。
E_FAIL失敗。
E_POINTERNull ポインタ引数。
E_NOTIMPLメソッドがサポートされていない。
NOERRORエラーなし。

参照

IMixerPinConfig::SetStreamTransparent

IMixerPinConfig::GetRelativePosition

IMixerPinConfig インターフェイス

表示ウィンドウでのストリームの位置を設定する。

構文

HRESULT GetRelativePosition(
    DWORD *pdwLeft,
    DWORD *pdwTop,
    DWORD *pdwRight,
    DWORD *pdwBottom ) PURE;

パラメータ

pdwLeft
[out] 表示ウィンドウの左上角の x 座標を示す値へのポインタ。
pdwTop
[out] 表示ウィンドウの左上角の y 座標を示す値へのポインタ。
pdwRight
[out] 表示ウィンドウの右下角の x 座標を示す値へのポインタ。
pdwBottom
[out] 表示ウィンドウの右下角の y 座標を示す値へのポインタ。

戻り値

インターフェイスの実装に応じた HRESULT 値を返す。現在の DirectShow の実装での戻り値は次のとおりである。
E_INVALIDARG 座標が {0, 0, 10,000, 10,000} の範囲を超えている。
NOERRORエラーなし。

注意

このメソッドでは、{0, 0, 10,000, 10,000} のウィンドウ座標が想定されている。表示ウィンドウの右下部分でビデオ ストリームがレンダリングされている場合、このメソッドは {5,000, 5,000, 10,000, 10,000} を返す。

参照

IMixerPinConfig::SetRelativePosition

IMixerPinConfig::GetZOrder

IMixerPinConfig インターフェイス

特定のビデオ ストリームの Z オーダーを取得する。

このメソッドは現在実装されていない。E_NOTIMPL を返す。

構文

HRESULT GetZOrder(
    DWORD *pdwZOrder
    ) PURE;

パラメータ

pdwZOrder
[out] ストリーム間のクリップ順序を示す値へのポインタ。

戻り値

E_NOTIMPL を返す。

注意

z 値が大きいイメージは、z 値が小さいイメージより常に手前にある。

参照

IMixerPinConfig::SetZOrder

IMixerPinConfig::SetAspectRatioMode

IMixerPinConfig インターフェイス

ウィンドウのサイズ変更でのアスペクト比補正モードを設定する。

構文

HRESULT SetAspectRatioMode(
    AM_ASPECT_RATIO_MODE amAspectRatioMode
    ) PURE;

パラメータ

amAspectRatioMode
[in] AM_ASPECT_RATIO_MODE 列挙型メンバのいずれかを指定する値。

戻り値

インターフェイスの実装に応じた HRESULT 値を返す。現在の DirectShow の実装での戻り値は次のとおりである。
E_NOTIMPL セカンダリ ストリーム上のメソッドが呼び出された。
E_INVALIDARG無効な引数。
NOERRORエラーなし。

注意

現在、このメソッドは、オーバーレイ ミキサー フィルタのプライマリ ピンのみに実装される。セカンダリ ピンのこのメソッドを呼び出すと、エラーになる。

参照

IMixerPinConfig::GetAspectRatioMode

IMixerPinConfig::SetBlendingParameter

IMixerPinConfig インターフェイス

ブレンディング パラメータを設定する。このパラメータはセカンダリ ストリームとプライマリ ストリームのブレンド方法を定義する。

構文

HRESULT SetBlendingParameter(
    DWORD dwBlendingParameter
    ) PURE;

パラメータ

dwBlendingParameter
[in] プライマリ ストリームとセカンダリ ストリームのブレンドの量を示す 0 〜 255 の値。

戻り値

インターフェイスの実装に応じた HRESULT 値を返す。現在の DirectShow の実装での戻り値は次のとおりである。
E_UNEXPECTED プライマリ ストリーム上のメソッドが呼び出された。
E_INVALIDARG 値が可能な範囲 (0 〜 255) を超えている。
NOERRORエラーなし。

注意

dwBlendingParameter パラメータには、0 〜 255 の値を指定する。値 0 では、セカンダリ ストリームが非表示になる。また、値 255 では、セカンダリ ストリームが占める領域でプライマリ ストリームが非表示になる。値を設定しないと、デフォルト値 255 が使用される。

このメソッドでは、プライマリ ストリーム上での呼び出しは想定されていない。

注 :  現在の DirectShow におけるこのインターフェイスの実装では、dwBlendingParameter パラメータに使用できる値は 0 〜 255 のみである。これ以外の値はすべて無効になる。

参照

IMixerPinConfig::GetBlendingParameter

IMixerPinConfig::SetColorKey

IMixerPinConfig インターフェイス

ビデオ ストリームで使用されているカラー キーを設定する。

構文

HRESULT SetColorKey(
    COLORKEY *pColorKey
) PURE;

パラメータ

pColorKey
[in] COLORKEY 構造体へのポインタ。

戻り値

インターフェイスの実装に応じた HRESULT 値を返す。

注意

カラー キーという用語の持つ意味は、対象のストリームによって異なる。プライマリ ストリームのカラー キーとは、オーバーレイ サーフェスで使用されている転送先カラー キーを意味する。セカンダリ ストリームのカラー キーとは、オフスクリーン サーフェスからプライマリ サーフェスへのブリットで使用される転送元カラー キーを意味する。

アプリケーションでは、プライマリ ピンのカラー キーに表示されない色 (デスクトップにないと思われる色) を設定すること。オーバーレイ ミキサー フィルタは、目立たない色を選択しようとするが、指定された色がほかのコンテンツに含まれていることがわかっている場合は、アプリケーション側で変更すること。

セカンダリ ストリームのカラー キーを設定してストリームを透過にすると、矩形以外のイメージが可能になる。たとえば、セカンダリ ストリームがクローズド キャプション テキストなら、クローズド キャプション テキスト デコーダで、背景を純色で塗りつぶしたうえで、対応するピンのカラー キーとしてそのカラーを設定する。この結果、カラー キーで指定したピクセル以外がすべて転送される。可能であれば、アプリケーションで、セカンダリ ストリームのカラー キーにプライマリ ストリームのカラー キーと同じ色を設定すると、パフォーマンスを若干上げることができる。

プライマリ ストリームにこの値を設定すると、オーバーレイ サーフェスで使用される転送先カラー キーが設定される。デフォルトでは、透過の (セカンダリ) ストリームすべてのカラー キーとして、転送先カラー キーが使用される。

pColorKey パラメータとして有効な引数には、CK_INDEX および CK_RGB が含まれる。ビデオ ディスプレイ モードは、CK_INDEX では 256 色に設定され、CK_RGB ではハイカラー、24 ビット、32 ビットなどの比較的高い色深度に設定される。CK_RGB フラグは、CK_INDEX と共に指定する。CK_INDEX フラグを設定すると、256 色モードでのパレット インデックスとして、そのインデックスが使用される。ただし、ディスプレイ モードが突然変更されたときに DirectShow が指定されたトゥルーカラーを使用できるように、COLORREF には有効なトゥルーカラーを提供する必要がある。これは、複数のトゥルーカラーは単独のパレット インデックスにマップできるが、パレット インデックスからトゥルーカラーへのマップは 1 対 1 でないためである。

注 :  現在、このメソッドはプライマリ入力ピン用にのみ実装される。

参照

IMixerPinConfig::GetColorKey

IMixerPinConfig::SetStreamTransparent

IMixerPinConfig インターフェイス

ストリームを透過に設定する。

構文

HRESULT SetStreamTransparent(
    BOOL bStreamTransparent
    ) PURE;

パラメータ

bStreamTransparent
[in] ストリームの透過性を指定する値。ストリームが透過の場合は、TRUE を渡す。透過でない場合は、FALSE を渡す。

戻り値

インターフェイスの実装に応じた HRESULT 値を返す。HRESULT は、次の標準的な定数の 1 つか、または一覧に示されていないその他の値となる。
E_FAIL失敗。
E_POINTERNull ポインタ引数。
E_NOTIMPLメソッドがサポートされていない。
NOERRORエラーなし。

参照

IMixerPinConfig::GetStreamTransparent

IMixerPinConfig::SetRelativePosition

IMixerPinConfig インターフェイス

表示ウィンドウにおけるストリームの位置を設定する。

構文

HRESULT SetRelativePosition(
    DWORD dwLeft,
    DWORD dwTop,
    DWORD dwRight,
    DWORD dwBottom ) PURE;

パラメータ

dwLeft
[in] 表示ウィンドウの左上角の x 座標を指定する値。
dwTop
[in] 表示ウィンドウの左上角の y 座標を指定する値。
dwRight
[in] 表示ウィンドウの右下角の x 座標を指定する値。
dwBottom
[in] 表示ウィンドウの右下角の y 座標を指定する値。

戻り値

インターフェイスの実装に応じた HRESULT 値を返す。現在の DirectShow の実装での戻り値は次のとおりである。
E_INVALIDARG 座標が {0, 0, 10,000, 10,000} の範囲を超えている。
NOERRORエラーなし。

注意

このメソッドでは、{0, 0, 10,000, 10,000} のウィンドウ座標が想定されている。したがって、表示ウィンドウの右下部分でビデオ ストリームをレンダリングするには、パラメータに {5,000, 5,000, 10,000, 10,000} を指定して呼び出す。

注 :  10,000 を超える値は無効である。指定するとエラーになる。

参照

IMixerPinConfig::GetRelativePosition

IMixerPinConfig::SetZOrder

IMixerPinConfig インターフェイス

特定のビデオ ストリームの Z オーダーを設定する。

このメソッドは現在実装されていない。E_NOTIMPL を返す。

構文

HRESULT SetZOrder(
  DWORD dwZOrder
) PURE;

パラメータ

dwZOrder
[in] ストリーム間のクリップ順序を示す値。

戻り値

E_NOTIMPL を返す。

注意

Z オーダーは、どのストリームがどのストリームをクリップできるかを示す。z 値が大きいイメージは、z 値が小さいイメージより常に手前にある。

複数ストリーム間の相対順序は、それらのビデオ イメージがオーバーラップする場合にのみ意味を持つ。

オーバーラップする 2 つのストリームに同じ Z オーダーを指定すると、ビデオに不自然な効果が現れることがある。

参照

IMixerPinConfig::GetZOrder