Microsoft DirectX 8.0

CTransformInputPin クラス

CTransformInputPin クラスの階層

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ストリーム内の次のメディア サンプルを取得する。

CTransformInputPin.m_pTransformFilter

CTransformInputPin クラス

所有者フィルタへのポインタ。

構文

CTransformFilter *m_pTransformFilter;

CTransformInputPin::BeginFlush

CTransformInputPin クラス

フラッシュ処理を開始する。IPin::BeginFlush メソッドの実装。

構文

HRESULT BeginFlush(void);

戻り値

HRESULT 値を返す。 以下の表に示されるいずれかの値。

S_OK成功。
VFW_E_NOT_CONNECTED出力ピンが接続されていない。

注意

このメソッドはピンの CBaseInputPin::BeginFlush メソッドを呼び出す。次にそれはフィルタの CTransformFilter::BeginFlush メソッドを呼び出し、データストリーム呼び出しを出力する。

CTransformInputPin::BreakConnect

CTransformInputPin クラス

ピンの接続を解除する。

構文

HRESULT BreakConnect(void);

戻り値

S_OK を返す、あるいは他の HRESULT 値を返す。

注意

このメソッドは CBaseInputPin::BreakConnect メソッドをオーバーライドする。それは基底クラスでは S_OK を返す、フィルタの CTransformFilter::BreakConnect メソッドを呼び出す。派生クラスは CTransformFilter::BreakConnect メソッドをオーバーライドすることができる。

CTransformInputPin::CheckConnect

CTransformInputPin クラス

ピン接続が適切かどうかを確認する。

構文

HRESULT CheckConnect(
    IPin *pPin
);

パラメータ

pPin
出力ピンの IPin インターフェイスへのポインタ。

戻り値

HRESULT 値を返す。以下の表に示されるいずれかの値。

S_OK成功。
VFW_E_INVALID_DIRECTIONピンの向きが正しくない。

注意

このメソッドは CBasePin::CheckConnect メソッドをオーバーライドする。それは基底クラスでは S_OK を返すフィルタの CTransformFilter::CheckConnect メソッドを呼び出す。派生クラスは CTransformFilter::CheckConnect メソッドをオーバーライドして、追加のチェックを行うことができる。

CTransformInputPin::CheckMediaType

CTransformInputPin クラス

ピンが指定したメディア タイプを許容するかどうかを確認する。

構文

HRESULT CheckMediaType(
    const CMediaType *mtIn
);

パラメータ

mtIn
提案されたメディア タイプが入る CMediaType オブジェクトへのポインタ。

戻り値

S_OK を返す、あるいは他の HRESULT 値を返す。

注意

このメソッドは純粋仮想 CBasePin::CheckMediaType メソッドを実装する。それはフィルタの CTransformFilter::CheckInputType メソッドを呼び出す、それもまた純粋仮想である。フィルタの派生クラスは CheckInputType を実装して、与えられた入力タイプが許容されるかどうかを確認しなければならない。

フィルタの出力ピンが接続されているなら、今メソッドはまたフィルタの CTransformFilter::CheckTransform メソッドを呼び出し、入力タイプが出力タイプと互換性があるかどうかをも確認する。CheckTransform メソッドは同様に純粋仮想である。

CTransformInputPin::CheckStreaming

CTransformInputPin クラス

ピンがサンプルを許容するかどうかを確認する。

構文

HRESULT CheckStreaming(void);

戻り値

HRESULT 値を返す。以下の表に示されるいずれかの値。

S_OK成功。
S_FALSEピンは現在フラッシュ中である。
VFW_E_NOT_CONNECTED出力ピンが接続されていない。
VFW_E_RUNTIME_ERRORランタイムエラーが発生した。
VFW_E_WRONG_STATEピンが停止している。

注意

このメソッドは CBaseInputPin::CheckStreaming メソッド をオーバーライドする。

CTransformInputPin::CompleteConnect

CTransformInputPin クラス

別のピンへの接続を完了する。

構文

HRESULT CompleteConnect(
    IPin *pReceivePin
);

パラメータ

pReceivePin
別のピンの IPin インターフェイスへのポインタ。

戻り値

S_OK を返す、あるいは他の HRESULT 値を返す。

注意

このメソッドは CBasePin::CompleteConnect メソッドをオーバーライドする。それは基底クラスでは S_OK を返すフィルタの CTransformFilter::CompleteConnect メソッドを呼び出す。派生クラスは CTransformFilter::CompleteConnect メソッドをオーバーライドして追加チェックを行うことができる。

CTransformInputPin::CTransformInputPin

CTransformInputPin クラス

コンストラクタ メソッド。

構文

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」を参照すること。

CTransformInputPin::CurrentMediaType

CTransformInputPin クラス

現在のピン接続のメディア タイプを取得する。

構文

CMediaType& CurrentMediaType(void);

戻り値

CBasePin::m_mt メンバ変数への参照を返す。

CTransformInputPin::EndFlush

CTransformInputPin クラス

フラッシュ処理を終了する。IPin::EndFlush メソッドの実装。

構文

HRESULT EndFlush(void);

戻り値

HRESULT 値を返す。 以下の表に示されるいずれかの値。

S_OK成功。
VFW_E_NOT_CONNECTED出力ピンが接続されていない。

注意

このメソッドはフィルタの CTransformFilter::EndFlush メソッドを呼び出し、ダウンストリーム呼び出しを出力する。次にそれはピンの CBaseInputPin::EndFlush メソッドを呼び出す。

CTransformInputPin::EndOfStream

CTransformInputPin クラス

追加データがない事をピンに通知する。 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) 通知をダウンストリームに出力する。

CTransformInputPin::NewSegment

CTransformInputPin クラス

この呼び出し後に受け取ったメディア サンプルがセグメントとしてグループ化されたことをピンに通知する。IPin::NewSegment メソッドの実装。

構文

HRESULT NewSegment(
    REFERENCE_TIME tStart,
    REFERENCE_TIME tStop,
    double dRate
);

パラメータ

tStart
セグメントの開始タイム。
tStop
セグメントのストップ タイム。
dRate
セグメントのレート。

戻り値

S_OK を返す、あるいは他の HRESULT 値を返す。

注意

このメソッドは CBasePin::NewSegment メソッドをオーバーライドする。それはフィルタの CTransformFilter::NewSegment メソッド を呼び出し、ダウンストリーム呼び出しを出力する。

CTransformInputPin::QueryId

CTransformInputPin クラス

ピンの ID を取得する。IPin::QueryId メソッドの実装。

構文

HRESULT QueryId(
    LPWSTR *Id
);

パラメータ

Id
ピン ID が入る文字列を受け取る変数のアドレス。

戻り値

以下の表に示される HRESULT 値の 1 つを返す。

S_OK成功。
E_OUTOFMEMORYメモリ不足。
E_POINTERNULL ポインタ引数。

注意

ピン ID はグラフで用いられる。このクラスのピン ID は In である。このクラスは CBasePin クラスの振る舞いをオーバーライドする。CBasePin クラスでは、ピン ID はクラス コンストラクタで指定されたピン名と同じである。CTransformInputPin クラスでは、ピン ID とピン名は同じではない。

CTransformInputPin::Receive

CTransformInputPin クラス

ストリーム内の次のメディア サンプルを取得する。IMemInputPin::Receive メソッドの実装。

構文

HRESULT Receive(
    IMediaSample *pSample
);

パラメータ

pSample
サンプルの IMediaSample インターフェイスへのポインタ。

戻り値

HRESULT 値を返す。 以下の表に示されるいずれかの値。

S_FALSEピンは現在フラッシュ中である、サンプルは拒否された。
S_OK成功。

注意

このメソッドはピンの CBaseInputPin::Receive メソッドを呼び出す、それはピンのストリーミング状態をチェックし、メディアタイプのフォーマット変更をチェックする。次にフィルタの CTransformFilter::Receive メソッドを呼び出す、それはサンプルを処理し、ダウンストリームに出力する。

このメソッドが返った後でフィルタがサンプルにアクセスする必要があるなら、サンプルで IUnknown::AddRef メソッドを呼び出し、参照カウントを保持すべきである。たとえば、あるデコーダ フィルタは次のサンプルをでコードするために現在のサンプルを必要とする。

CTransformInputPin::SetMediaType

CTransformInputPin クラス

接続の際のメディア タイプを設定する。

構文

HRESULT SetMediaType(
    const CMediaType *mt
);

パラメータ

mt
メディア タイプを指定する CMediaType オブジェクトへのポインタ。

戻り値

S_OK を返す。

注意

このメソッドは CBasePin::SetMediaType メソッドをオーバーライドする。それはフィルタの CTransformFilter::SetMediaType メソッドを呼び出し、フィルタに情報を与える。

ピンはメディア タイプがこのメソッドを呼び出す前にアクセス可能であることを検証しなければならない。