Microsoft DirectX 8.0 |
CTransInPlaceFilter クラスが使用する入力ピン。
宣言 : Transip.h
通常、このクラスから派生させる必要はない。派生させるなら、フィルタの CTransInPlaceFilter::GetPin メソッド をオーバーライドし、派生クラスのインスタンスを作成しなければならない。
Protected Member 変数 | |
---|---|
m_bReadOnly | 入力ストリームが読み込み専用かどうかを指定するフラグ。 |
m_pTIPFilter | このピンを作成したフィルタへのポインタ。 |
Public メソッド | |
CTransInPlaceInputPin | コンストラクタ メソッド。 |
CheckMediaType | 指定したメディア タイプが許容されることを確認する。 |
PeekAllocator | ピンのアロケータへのポインタを取得する。 |
ReadOnly | 入力ストリームが読み込み専用かどうかを確認する。 |
IPin メソッド | |
EnumMediaTypes | ピンの優先メディア タイプを列挙する。 |
IMemInputPin メソッド | |
GetAllocator | このピンが提案したメモリ アロケータを取得する。 |
NotifyAllocator | 接続のアロケータを指定する。 |
GetAllocatorRequirements | ピンが要求したアロケータを取得する。 |
入力ストリームが読み込み専用かどうかを指定するフラグ。アップストリーム フィルタ が NotifyAllocator メソッドを呼び出したとき、この情報を指定する。デフォルトではこの値は FALSE である。
構文
BOOL m_bReadOnly;
このピンを作成したフィルタへのポインタ。
構文
CTransInPlaceFilter * const m_pTIPFilter;
指定したメディア タイプが許容されることを確認する。
構文
HRESULT CheckMediaType( const CMediaType *pmt );
パラメータ
- pmt
- 提案されたメディア タイプが入る CMediaType オブジェクトへのポインタ。
戻り値
メディア タイプが許容されるなら S_OK が返る。それ以外なら、S_FLASE かエラーコードが返る。
注意
このメソッドは CTransformInputPin::CheckMediaType メソッドをオーバーライドする。それはフィルタの CTransformFilter::CheckInputType メソッドを呼び出し、入力タイプをチェックする。出力ピンが接続されていれば、このメソッドはダウンストリーム入力ピンの IPin::QueryAccept メソッドをも呼び出し。
コンストラクタ メソッド。
構文
CTransInPlaceInputPin( TCHAR *pObjectName, CTransInPlaceFilter *pFilter, HRESULT *phr, LPCWSTR pName );
パラメータ
- pObjectName
- オブジェクトのデバッグ名が入る文字列。詳細については、「CBaseObject」を参照すること。
- pFilter
- このピンを作成したフィルタへのポインタ、これは CTransformFilter オブジェクトでなければならない。
- phr
- メソッドの成功失敗を示す HRESULT 値を受け取る変数へのポインタ。この値はオブジェクトを作成する前に S_OK で初期化される。値はエラーが起きた場合のみ変更される。
- pName
- ピン名が入る Unicode 文字列。
注意
pName パラメータは IPin::QueryPinInfo メソッドが返すピン名を指定する。しかし、この文字列はピン ID としては 使われていない。このクラスではピン ID は必ず In である。詳細については、「QueryId」を参照すること。
ピンの優先メディア タイプを列挙する。IPin::EnumMediaTypes メソッドの実装。
構文
HRESULT EnumMediaTypes( IEnumMediaTypes **ppEnum );
パラメータ
- ppEnum
- IEnumMediaTypes インターフェイスへのポインタを受け取る変数のアドレス。
戻り値
HRESULT 値を返す。以下の表に示されるいずれかの値。
S_OK 成功。 E_OUTOFMEMORY メモリ不足。 E_POINTER NULL ポインタ。 VFW_E_NOT_CONNECTED 出力ピンが接続されていない。
注意
このメソッドはダウンストリーム入力ピンから IEnumMediaTypes インターフェイスを返す。
このピンが提案したメモリ アロケータを取得する。 IMemInputPin::GetAllocator メソッドの実装。
構文
HRESULT GetAllocator( IMemAllocator **ppAllocator );
パラメータ
- ppAllocator
- アロケータの IMemAllocator インターフェイスへのポインタを受け取る変数のアドレス。
戻り値
HRESULT 値を返す。以下のテーブルに示されるいずれかの値。
S_OK 成功。 VFW_E_NO_ALLOCATOR 利用可能なアロケータがない。
注意
フィルタの出力ピンが接続されているなら、このメソッドはダウンストリーム フィルタの入力ピンを要求する。
フィルタの出力ピンが接続されていないなら、このメソッドはテンポラリ アロケータを作成する。後で、出力ピンが接続されたとき、フィルタは入力ピンと再接続し、アロケータを再ネゴシエーションする。
ピンが要求したアロケータを取得する。IMemInputPin::GetAllocatorRequirements メソッドの実装。
構文
HRESULT GetAllocatorRequirements( ALLOCATOR_PROPERTIES *pProps );
パラメータ
- pProps
- 要求が書き込まれる ALLOCATOR_PROPERTIES 構造体へのポインタ
戻り値
HRESULT 値を返す。以下のテーブルに示されるいずれかの値。
S_OK 成功。 E_NOTIMPL 出力ピンが接続されていない、あるいはダウン ストリームピンがメソッドをサポートしていない。 E_POINTER Null ポインタ引数。
注意
出力ピンが接続されていれば、このメソッドは呼び出しをダウンストリーム入力ピンに渡す。それ以外なら E_NOTIMPL を返す。
接続のアロケータを指定する。IMemInputPin::NotifyAllocator メソッドの実装。
構文
HRESULT NotifyAllocator( IMemAllocator *pAllocator, BOOL bReadOnly );
パラメータ
- pAllocator
- アロケータの IMemAllocator インターフェイスへのポインタ。
- bReadOnly
- このアロケータからのサンプルが読み込み専用かどうかを示すフラグ。TRUE ならサンプルは読み込み専用。
戻り値
HRESULT 値を返す。 以下の表に示されるいずれかの値。
S_OK 成功。 E_FAIL 失敗。 E_POINTER NULL ポインタ引数。
注意
フィルタは両方のピン接続に同じアロケータを使おうとする。
- 出力ピンが接続されていないなら、入力ピンは自動的にアロケータを承認する。出力ピンが接続されていると、フィルタは入力ピンを再接続する。そのとき、フィルタは再び 1 つのアロケータを使おうとする。
- 出力ピンが接続されていると、入力ピンはアロケータを許容する。出力ピンも同じアロケータを使用する。それはダウンストリーム入力ピンの NotifyAllocator を呼び出す。
上記のケースには次の例外がある :
- 提案されたアロケータが読み込み専用 (これは bReadOnly が TRUE) かつ、フィルタがサンプルを集成する必要がある場合、フィルタは 2 つの異なったアロケータ使う必要がある。この場合、アップストリーム フィルタはダウンストリーム フィルタのアロケータの使用を提案すれば、メソッドは E_FAIL を返す。
ピンのアロケータへのポインタを取得する。このメソッドはインターフェイスの参照カウントをインクリメントしない。
構文
IMemAllocator *PeekAllocator(void)
戻り値
CBaseInputPin.m_pAllocator メンバ変数を返す。
入力ストリームが読み込み専用かどうかを確認する。
構文
const BOOL ReadOnly(void);
戻り値
m_bReadOnly メンバ変数の値を返す。