Microsoft DirectX 8.0 |
CTransformFilter クラスが使用する出力ピン。
宣言: Transfrm.h
通常、このクラスを派生させる必要はない。このクラスの大部分のメソッドはオーバーライド可能な CTransformFilter クラスの対応するメソッドを呼び出している。このクラスから派生させるなら、フィルタの CTransformFilter::GetPin メソッドをオーバーライドし、その派生クラスのインスタンスを作成しなければならない。
Protected メンバ変数 | |
---|---|
m_pTransformFilter | 所有者フィルタへのポインタ。 |
Public Member Variables | |
m_pPosition | シークコマンドをアップストリームに渡すヘルパー オブジェクト。 |
Public メソッド | |
CTransformOutputPin | コンストラクタ メソッド。 |
~CTransformOutputPin | デストラクタ メソッド。 |
CheckConnect | ピン接続が適切かどうかを確認する。 |
BreakConnect | ピンの接続を解除する。 |
CompleteConnect | 別のピンへの接続を完了する。 |
CheckMediaType | ピンが指定したメディア タイプを許容するかどうかを確認する。 |
SetMediaType | 接続の際のメディア タイプを設定する。 |
DecideBufferSize | バッファ要求を設定する。 |
GetMediaType | インデックス値で優先メディア タイプを取得する。 |
CurrentMediaType | 現在のピン接続のメディア タイプを取得する。 |
IPin Methods | |
QueryId | ピンの ID を取得する。 |
IQualityControl Methods | |
Notify | 品質変更が要求された事をピンに通知する。 |
所有者フィルタへのポインタ。
構文
CTransformOutputPin *m_pTransformFilter;
シークコマンドをアップストリームに渡すヘルパー オブジェクト。
構文
IUnknown *m_pPosition;
注意
ピンが最初に IMediaPosition インターフェイスあるいは IMediaSeeking インターフェイスでクエリされるとき、それは CPosPassThru オブジェクトを作成、集成する。
ピンの接続を解除する。
構文
HRESULT BreakConnect(void);
戻り値
S_OK を返す、あるいは他の HRESULT 値を返す。
注意
このメソッドは CBaseOutputPin::BreakConnect メソッドをオーバーライドする。それは基底クラスでは S_OK を返す、フィルタの CTransformFilter::BreakConnect メソッドを呼び出す。派生クラスは CTransformFilter::BreakConnect メソッドをオーバーライドすることができる。
ピン接続が適切かどうかを確認する。
構文
HRESULT CheckConnect( IPin *pPin );
パラメータ
- pPin
- 出力ピンの IPin インターフェイスへのポインタ。
戻り値
HRESULT 値を返す。以下の表に示されるいずれかの値。
S_OK 成功。 E_UNEXPECTED フィルタの入力ピンが接続されていない。
注意
このメソッドは CBaseOutputPin::CheckConnect メソッドをオーバーライドする。それは基底クラスでは S_OK を返すフィルタの CTransformFilter::CheckConnect メソッドを呼び出す。派生クラスは CTransformFilter::CheckConnect メソッドをオーバーライドして、追加のチェックを行うことができる。
ピンが指定したメディア タイプを許容するかどうかを確認する。
構文
HRESULT CheckMediaType( const CMediaType *mtIn );
パラメータ
- mtIn
- 提案されたメディア タイプが入る CMediaType オブジェクトへのポインタ。
戻り値
HRESULT 値を返す。 以下の表に示されるいずれかの値。
S_OK 成功。 E_INVALIDARG フィルタの入力ピンが接続されていない。
注意
このメソッドは純粋仮想 CBasePin::CheckMediaType メソッドを実装する。このメソッドはフィルタの入力ピンが接続されていないと失敗する。そうでなければ、それはフィルタの CTransformFilter::CheckTransform メソッドを呼び出す、それもまた純粋仮想である。フィルタの派生クラスは CheckTransform を実装して、提案された出力メディア タイプが入力メディア タイプと互換性があるかどうかを確認する。
別のピンへの接続を完了する。
構文
HRESULT CompleteConnect( IPin *pReceivePin );
パラメータ
- pReceivePin
- 別のピンの IPin インターフェイスへのポインタ。
戻り値
S_OK を返す、あるいは他の HRESULT 値を返す。
注意
このメソッドは CBaseOutputPin::CompleteConnect メソッドをオーバーライドする。それは基底クラスでは S_OK を返すフィルタの CTransformFilter::CompleteConnect メソッドを呼び出す。派生クラスは CTransformFilter::CompleteConnect メソッドをオーバーライドして追加チェックを行うことができる。
コンストラクタ メソッド。
構文
CTransformOutputPin( TCHAR *pObjectName, CTransformFilter *pTransformFilter, HRESULT *phr, LPCWSTR pName );
パラメータ
- pObjectName
- オブジェクトのデバッグ名が入る文字列。詳細については、「CBaseObject」を参照すること。
- pTransformFilter
- このピンを作成したフィルタへのポインタ、それは CTransformFilter オブジェクトでなければならない。
- phr
- メソッドの成功失敗を示す HRESULT 値を受け取る変数へのポインタ。オブジェクトを作成する前に S_OK でその値を初期化すること。この値はエラーが起きた場合のみ変更される。
- pName
- 接続しているピン名が入る Unicode 文字列。
注意
pName パラメータは IPin::QueryPinInfo メソッドが返すピン名を指定する。しかし、この文字列はピン ID としては 使われていない。このクラスではピン ID は必ず Out である。詳細については、「QueryId」を参照すること。
デストラクタ メソッド。
構文
~CTransformOutputPin(void);
現在のピン接続のメディア タイプを取得する。
構文
CMediaType& CurrentMediaType(void);
戻り値
CBasePin::m_mt メンバ変数への参照を返す。
バッファ要求を設定する。
構文
HRESULT DecideBufferSize( IMemAllocator *pAlloc, ALLOCATOR_PROPERTIES *ppropInputRequest );
パラメータ
- pAlloc
- アロケータの IMemAllocator インターフェイスへのポインタ。
- ppropInputRequest
- 入力ピンのバッファ要求が入る ALLOCATOR_PROPERTIES 構造体のポインタ。
戻り値
HRESULT 値を返す。
注意
このメソッドは CBaseOutputPin::DecideBufferSize メソッドをオーバーライドする。フィルタの純粋仮想 CTransformFilter::DecideBufferSize メソッドを呼び出す、フィルタの派生クラスはそれを実装しなければならない。
インデックス値で優先メディア タイプを取得する
構文
HRESULT GetMediaType( int iPosition, CMediaType *pMediaType );
パラメータ
- iPosition
- ゼロから始まるインデックス データ。
- pMediaType
- メディア タイプを受け取る CMediaType オブジェクトへのポインタ。
戻り値
HRESULT 値を返す。 以下の表に示されるいずれかの値。
S_OK 成功。 VFW_S_NO_MORE_ITEMS インデックスが制限幅を超えた。
注意
このメソッドは CBasePin::GetMediaType メソッドをオーバーライドする。フィルタの入力ピンが接続されていないと、そのメソッドは VFW_S_NO_MORE_ITEMS を返す。そうでなければ、フィルタの CTransformFilter::GetMediaType メソッドを呼び出し、メディア タイプを取得する。CTransformFilter::GetMediaType メソッドは純粋仮想である、フィルタの派生クラスはそれをオーバーライドしなければならない。
品質変更が要求されたことをピンに通知する。IQualityControl::Notify メソッドの実装。
構文
HRESULT Notify( IBaseFilter *pSelf, Quality q );
パラメータ
- pSelf
- 品質管理メッセージを出力するフィルタの IBaseFilter インターフェイスへのポインタ。
- q
- 品質管理メッセージが入る Quality 構造体。
戻り値
HRESULT 値を返す。 以下の表に示されるいずれかの値。
S_OK 成功。 VFW_E_NOT_FOUND メッセージを許容するオブジェクトを見つけられなかった。
注意
このメソッドはフィルタの CTransformFilter::AlterQuality メソッドを呼び出す。フィルタが品質メッセージを処理しないなら、このメソッドは CBaseInputPin::PassNotify メソッドをフィルタの入力ピンで呼び出す。PassNotify メソッドは品質メッセージをアップストリームに渡す (あるいは、インストールされているなら、カスタム品質マネージャに渡す)。
ピンの ID を取得する。IPin::QueryId メソッドの実装
構文
HRESULT QueryId( LPWSTR *Id );
パラメータ
- Id
- ピン ID が入る文字列を受け取る変数のアドレス。
戻り値
以下の表に示される HRESULT 値の 1 つを返す。
S_OK 成功。 E_OUTOFMEMORY メモリ不足。 E_POINTER NULL ポインタ引数。
注意
ピン ID はグラフで用いられる。このクラスのピン ID は Out である。このクラスは CBasePin クラスの振る舞いをオーバーライドする。CBasePin クラスでは、ピン ID はクラス コンストラクタで指定されたピン名と同じである。CTransformInputPin クラスでは、ピン ID とピン名は同じではない。
接続の際のメディア タイプを設定する。
構文
HRESULT SetMediaType( const CMediaType *mt );
パラメータ
- mt
- メディア タイプを指定する CMediaType オブジェクトへのポインタ。
戻り値
S_OK を返す。
注意
このメソッドは CBasePin::SetMediaType メソッドをオーバーライドする。それはフィルタの CTransformFilter::SetMediaType メソッドを呼び出し、フィルタに情報を与える。
ピンはメディア タイプがこのメソッドを呼び出す前にアクセス可能であることを検証しなければならない。