Microsoft DirectX 8.0 |
CTransInPlaceFilter クラスが使用する出力ピン。
宣言 : Transip.h
通常、このクラスから派生させる必要はない。派生させるなら、フィルタの CTransInPlaceFilter::GetPin メソッド をオーバーライドし、派生クラスのインスタンスを作成しなければならない。
Protected Member 変数 | |
---|---|
m_pTIPFilter | このピンを作成したフィルタへのポインタ。 |
Public メソッド | |
CTransInPlaceOutputPin | コンストラクタ メソッド。 |
DecideAllocator | メモリ アロケータを選択する。 |
CheckMediaType | 指定したメディア タイプをピンが許容することを確認する。 |
SetAllocator | 接続の際のアロケータを指定する。 |
ConnectedIMemInputPin | ダウンストリーム入力ピンへのポインタを取得する。 |
PeekAllocator | ピンのアロケータへのポインタを取得する。 |
IPin メソッド | |
EnumMediaTypes | ピンの優先メディア タイプを列挙する。 |
このピンを作成したフィルタへのポインタ。
構文
CTransInPlaceFilter * const m_pTIPFilter;
指定したメディア タイプをピンが許容することを確認する。
構文
HRESULT CheckMediaType( const CMediaType *pmt );
パラメータ
- pmt
- 提案されたメディアタイプを入れる CMediaType オブジェクトへのポインタ。
戻り値
HRESULT 値を返す。以下のテーブルに示されるいずれかの値。
S_OK 成功。 VFW_E_TYPE_NOT_ACCEPTED メディア タイプは許容されなかった。
注意
このメソッドは CTransformOutputPin::CheckMediaType メソッドをオーバーライドする。
フィルタが既にストリーミングを流し、2 つのアロケータを使っているなら、このメソッドはすべてのフォーマット変更を拒否する。それ以外なら、このメソッドはフィルタの CTransformFilter::CheckInputType メソッドを呼び出し、メディア タイプをチェックする。入力ピンが接続されているなら、アップストリーム出力ピンの IPin::QueryAccept メソッドをも呼び出す。
ダウンストリーム入力ピンへのポインタを取得する。このメソッドは CBaseOutputPin.m_pInputPin メンバ変数を返す。
構文
IMemInputPin *ConnectedIMemInputPin(void);
戻り値
ダウンストリーム入力ピンの IMemInputPin インターフェイスへのポインタを返す。
コンストラクタ メソッド。
構文
CTransInPlaceOutputPin( TCHAR *pObjectName, CTransInPlaceFilter *pFilter, HRESULT *phr, LPCWSTR pName );
パラメータ
- pObjectName
- オブジェクトのデバッグ名が入る文字列。詳細については、「CBaseObject」を参照すること。
- pFilter
- このピンを作成したフィルタへのポインタ、これは CTransInPlaceFilter オブジェクトでなければならない。
- phr
- メソッドの成功失敗を示す HRESULT 値を受け取る変数へのポインタ。この値はオブジェクトを作成する前に S_OK で初期化される。値はエラーが起きた場合のみ変更される。
- pName
- ピン名が入る Unicode 文字列。
注意
pName パラメータは IPin::QueryPinInfo メソッドが返すピン名を指定する。しかし、この文字列はピン ID としては 使われていない。このクラスではピン ID は必ず Out である。詳細については、「QueryId」を参照すること。
メモリ アロケータを選択する。
構文
HRESULT DecideAllocator( IMemInputPin *pPin, IMemAllocator **ppAlloc );
パラメータ
- pPin
- 入力ピンの IMemInputPin インターフェイスへのポインタ。
- ppAlloc
- アロケータの IMemAllocator インターフェイスのポインタを受け取る変数のアドレス。
戻り値
S_OK を返す。
注意
このメソッドは CBaseOutputPin::DecideAllocator メソッドをオーバーライドする。
これは何もしないダミーメソッドである、なぜならこのフィルタの出力ピンはアロケータを提供しないからである。そのかわり、アロケータは入力ピンの接続プロセス中に決定される。入力ピンの CTransInPlaceInputPin::NotifyAllocator メソッドはダウンストリーム入力ピンの NotifyAllocator を呼び出す。
ピンの優先メディア タイプを列挙する。IPin::EnumMediaTypes メソッドの実装。
構文
HRESULT EnumMediaTypes( IEnumMediaTypes **ppEnum );
パラメータ
- ppEnum
- IEnumMediaTypes インターフェイスへのポインタを受け取る変数のアドレス。
戻り値
HRESULT 値を返す。以下の表に示されるいずれかの値。
S_OK 成功。 E_OUTOFMEMORY メモリ不足。 E_POINTER NULL ポインタ。 VFW_E_NOT_CONNECTED フィルタの入力ピンが接続されていない。
注意
このメソッドはアップストリーム出力ピンから IEnumMediaTypes インターフェイスを返す。
ピンのアロケータへのポインタを取得する。このメソッドはインターフェイスの参照カウントをインクリメントしない。
構文
IMemAllocator *PeekAllocator(void)
戻り値
CBaseOutputPin.m_pAllocator メンバ変数を返す。
接続の際のアロケータを指定する。
構文
void SetAllocator( IMemAllocator *pAllocator );
パラメータ
- pAllocator
- アロケータの IMemAllocator インターフェイスへのポインタ。
注意
このフィルタの出力ピンはアロケータを提供しない。このメソッドは出力ピン用のアロケータを指定する。それは CBaseOutputPin.m_pAllocator メンバ変数の値を設定する。