Microsoft DirectX 8.0 |
CTransformFilter クラスが使用する入力ピン。
宣言 : Transfrm.h
通常、このクラスを派生させる必要はない。このクラスの大部分のメソッドはオーバーライド可能な CTransformFilter クラスの対応するメソッドを呼び出している。このクラスから派生させるなら、フィルタの CTransformFilter::GetPin メソッドをオーバーライドし、その派生クラスのインスタンスを作成しなければならない。
Protected メンバ変数 | |
---|---|
m_pTransformFilter | 所有者フィルタへのポインタ。 |
Public メソッド | |
CTransformInputPin | コンストラクタ メソッド。 |
CheckConnect | ピン接続が適切かどうかを確認する。 |
BreakConnect | ピンの接続を解除する。 |
CompleteConnect | 別のピンへの接続を完了する。 |
CheckMediaType | ピンが指定したメディア タイプを許容するかどうかを確認する。 |
SetMediaType | 接続の際のメディア タイプを設定する。 |
CheckStreaming | ピンがサンプルを許容するかどうかを確認する。 仮想。 |
CurrentMediaType | 現在のピン接続のメディア タイプを取得する。 |
IPin メソッド | |
QueryId | ピンの ID を取得する。 |
EndOfStream | 追加データがない事をピンに通知する。 |
BeginFlush | フラッシュ処理を開始する。 |
EndFlush | フラッシュ処理を終了する。 |
NewSegment | この呼び出し後に受け取ったメディア サンプルがセグメントとしてグループ化されたことをピンに通知する。 |
IMemInputPin メソッド | |
Receive | ストリーム内の次のメディア サンプルを取得する。 |
所有者フィルタへのポインタ。
構文
CTransformFilter *m_pTransformFilter;
フラッシュ処理を開始する。IPin::BeginFlush メソッドの実装。
構文
HRESULT BeginFlush(void);
戻り値
HRESULT 値を返す。 以下の表に示されるいずれかの値。
S_OK 成功。 VFW_E_NOT_CONNECTED 出力ピンが接続されていない。
注意
このメソッドはピンの CBaseInputPin::BeginFlush メソッドを呼び出す。次にそれはフィルタの CTransformFilter::BeginFlush メソッドを呼び出し、データストリーム呼び出しを出力する。
ピンの接続を解除する。
構文
HRESULT BreakConnect(void);
戻り値
S_OK を返す、あるいは他の HRESULT 値を返す。
注意
このメソッドは CBaseInputPin::BreakConnect メソッドをオーバーライドする。それは基底クラスでは S_OK を返す、フィルタの CTransformFilter::BreakConnect メソッドを呼び出す。派生クラスは CTransformFilter::BreakConnect メソッドをオーバーライドすることができる。
ピン接続が適切かどうかを確認する。
構文
HRESULT CheckConnect( IPin *pPin );
パラメータ
- pPin
- 出力ピンの IPin インターフェイスへのポインタ。
戻り値
HRESULT 値を返す。以下の表に示されるいずれかの値。
S_OK 成功。 VFW_E_INVALID_DIRECTION ピンの向きが正しくない。
注意
このメソッドは CBasePin::CheckConnect メソッドをオーバーライドする。それは基底クラスでは S_OK を返すフィルタの CTransformFilter::CheckConnect メソッドを呼び出す。派生クラスは CTransformFilter::CheckConnect メソッドをオーバーライドして、追加のチェックを行うことができる。
ピンが指定したメディア タイプを許容するかどうかを確認する。
構文
HRESULT CheckMediaType( const CMediaType *mtIn );
パラメータ
- mtIn
- 提案されたメディア タイプが入る CMediaType オブジェクトへのポインタ。
戻り値
S_OK を返す、あるいは他の HRESULT 値を返す。
注意
このメソッドは純粋仮想 CBasePin::CheckMediaType メソッドを実装する。それはフィルタの CTransformFilter::CheckInputType メソッドを呼び出す、それもまた純粋仮想である。フィルタの派生クラスは CheckInputType を実装して、与えられた入力タイプが許容されるかどうかを確認しなければならない。
フィルタの出力ピンが接続されているなら、今メソッドはまたフィルタの CTransformFilter::CheckTransform メソッドを呼び出し、入力タイプが出力タイプと互換性があるかどうかをも確認する。CheckTransform メソッドは同様に純粋仮想である。
ピンがサンプルを許容するかどうかを確認する。
構文
HRESULT CheckStreaming(void);
戻り値
HRESULT 値を返す。以下の表に示されるいずれかの値。
S_OK 成功。 S_FALSE ピンは現在フラッシュ中である。 VFW_E_NOT_CONNECTED 出力ピンが接続されていない。 VFW_E_RUNTIME_ERROR ランタイムエラーが発生した。 VFW_E_WRONG_STATE ピンが停止している。
注意
このメソッドは CBaseInputPin::CheckStreaming メソッド をオーバーライドする。
別のピンへの接続を完了する。
構文
HRESULT CompleteConnect( IPin *pReceivePin );
パラメータ
- pReceivePin
- 別のピンの IPin インターフェイスへのポインタ。
戻り値
S_OK を返す、あるいは他の HRESULT 値を返す。
注意
このメソッドは CBasePin::CompleteConnect メソッドをオーバーライドする。それは基底クラスでは S_OK を返すフィルタの CTransformFilter::CompleteConnect メソッドを呼び出す。派生クラスは CTransformFilter::CompleteConnect メソッドをオーバーライドして追加チェックを行うことができる。
コンストラクタ メソッド。
構文
CTransformInputPin( TCHAR *pObjectName, CTransformFilter *pTransformFilter, HRESULT *phr, LPCWSTR pName );
パラメータ
- pObjectName
- オブジェクトのデバッグ名が入る文字列。詳細については、「CBaseObject」を参照すること。
- pTransformFilter
- このピンを作成したフィルタへのポインタ、それは CTransformFilter オブジェクトでなければならない。
- phr
- メソッドの成功失敗を示す HRESULT 値を受け取る変数へのポインタ。オブジェクトを作成する前に S_OK でその値を初期化すること。この値はエラーが起きた場合のみ変更される。
- pName
- 接続しているピン名が入る Unicode 文字列。
注意
pName パラメータは IPin::QueryPinInfo メソッドが返すピン名を指定する。しかし、この文字列はピン ID としては 使われていない。このクラスではピン ID は必ず In である。詳細については、「QueryId」を参照すること。
現在のピン接続のメディア タイプを取得する。
構文
CMediaType& CurrentMediaType(void);
戻り値
CBasePin::m_mt メンバ変数への参照を返す。
フラッシュ処理を終了する。IPin::EndFlush メソッドの実装。
構文
HRESULT EndFlush(void);
戻り値
HRESULT 値を返す。 以下の表に示されるいずれかの値。
S_OK 成功。 VFW_E_NOT_CONNECTED 出力ピンが接続されていない。
注意
このメソッドはフィルタの CTransformFilter::EndFlush メソッドを呼び出し、ダウンストリーム呼び出しを出力する。次にそれはピンの CBaseInputPin::EndFlush メソッドを呼び出す。
追加データがない事をピンに通知する。 IPin::EndOfStream メソッドの実装。
構文
HRESULT EndOfStream(void);
戻り値
HRESULT 値を返す。 以下の表に示されるいずれかの値。
S_OK 成功。 S_FALSE ピンは現在フラッシュ中である。 VFW_E_NOT_CONNECTED 出力ピンが接続されていない。 VFW_E_RUNTIME_ERROR ランタイムエラーが発生。 VFW_E_WRONG_STATE ピンは停止中である。
注意
このメソッドはフィルタの CTransformFilter::EndOfStream メソッドを呼び出し、エンドオブストリーム (EOS) 通知をダウンストリームに出力する。
この呼び出し後に受け取ったメディア サンプルがセグメントとしてグループ化されたことをピンに通知する。IPin::NewSegment メソッドの実装。
構文
HRESULT NewSegment( REFERENCE_TIME tStart, REFERENCE_TIME tStop, double dRate );
パラメータ
- tStart
- セグメントの開始タイム。
- tStop
- セグメントのストップ タイム。
- dRate
- セグメントのレート。
戻り値
S_OK を返す、あるいは他の HRESULT 値を返す。
注意
このメソッドは CBasePin::NewSegment メソッドをオーバーライドする。それはフィルタの CTransformFilter::NewSegment メソッド を呼び出し、ダウンストリーム呼び出しを出力する。
ピンの ID を取得する。IPin::QueryId メソッドの実装。
構文
HRESULT QueryId( LPWSTR *Id );
パラメータ
- Id
- ピン ID が入る文字列を受け取る変数のアドレス。
戻り値
以下の表に示される HRESULT 値の 1 つを返す。
S_OK 成功。 E_OUTOFMEMORY メモリ不足。 E_POINTER NULL ポインタ引数。
注意
ピン ID はグラフで用いられる。このクラスのピン ID は In である。このクラスは CBasePin クラスの振る舞いをオーバーライドする。CBasePin クラスでは、ピン ID はクラス コンストラクタで指定されたピン名と同じである。CTransformInputPin クラスでは、ピン ID とピン名は同じではない。
ストリーム内の次のメディア サンプルを取得する。IMemInputPin::Receive メソッドの実装。
構文
HRESULT Receive( IMediaSample *pSample );
パラメータ
- pSample
- サンプルの IMediaSample インターフェイスへのポインタ。
戻り値
HRESULT 値を返す。 以下の表に示されるいずれかの値。
S_FALSE ピンは現在フラッシュ中である、サンプルは拒否された。 S_OK 成功。
注意
このメソッドはピンの CBaseInputPin::Receive メソッドを呼び出す、それはピンのストリーミング状態をチェックし、メディアタイプのフォーマット変更をチェックする。次にフィルタの CTransformFilter::Receive メソッドを呼び出す、それはサンプルを処理し、ダウンストリームに出力する。
このメソッドが返った後でフィルタがサンプルにアクセスする必要があるなら、サンプルで IUnknown::AddRef メソッドを呼び出し、参照カウントを保持すべきである。たとえば、あるデコーダ フィルタは次のサンプルをでコードするために現在のサンプルを必要とする。
接続の際のメディア タイプを設定する。
構文
HRESULT SetMediaType( const CMediaType *mt );
パラメータ
- mt
- メディア タイプを指定する CMediaType オブジェクトへのポインタ。
戻り値
S_OK を返す。
注意
このメソッドは CBasePin::SetMediaType メソッドをオーバーライドする。それはフィルタの CTransformFilter::SetMediaType メソッドを呼び出し、フィルタに情報を与える。
ピンはメディア タイプがこのメソッドを呼び出す前にアクセス可能であることを検証しなければならない。