Microsoft DirectX 8.0 |
CSourcePosition は、ソース フィルタに IMediaPosition インターフェイスを実装するための抽象クラスである。
このクラスは使用しない。ソース フィルタがシーク可能であれば、IMediaPosition の代わりに IMediaSeeking インターフェイスを公開すべきである。この目的で CSourceSeeking 基底クラスを使用することができる。
CSourcePosition::put_CurrentPosition、CSourcePosition::put_StopTime、または CSourcePosition::put_Rate が呼び出されると、CSourcePosition は純粋仮想メンバ関数 CSourcePosition::ChangeStart、CSourcePosition::ChangeStop、または CSourcePosition::ChangeRate をそれぞれ呼び出す。派生クラス内でこれらの関数をオーバーライドする。
Protected データ メンバ
m_Duration ストリームの時間幅。 m_pLock ロックのための CCritSec オブジェクトへのポインタ。 m_Rate サンプル レート。 m_Start 開始タイム。 m_Stop 終了タイム。
メンバ関数
CSourcePosition CSourcePosition オブジェクトを作成する。
オーバーライド可能なメンバ関数
ChangeRate この純粋仮想関数をオーバーライドして、レート プロパティが変更された通知を処理する。 ChangeStart この純粋仮想関数をオーバーライドして、開始位置プロパティが変更された通知を処理する。 ChangeStop この純粋仮想関数をオーバーライドして、終了位置プロパティが変更された通知を処理する。
get_CurrentPosition 現在は実装されていない。 get_Duration メディアの合計時間幅を取得する。 get_PrerollTime 現在は実装されていない。 get_Rate メディアの通常再生を基準にした再生レートを取得する。 get_StopTime 再生が停止すべきメディア内の位置を取得する。 put_CurrentPosition 再生が開始すべきメディア内の位置を設定する。 put_PrerollTime 現在は実装されていない。 put_Rate メディアの通常再生を基準にした再生レートを設定する。 put_StopTime 再生が停止すべきメディア内の位置を設定する。
このメンバ関数をオーバーライドして、サンプル レートの変更通知を処理する。
構文
virtual HRESULT ChangeRate(void) PURE;
戻り値
実装に応じた HRESULT 値を返す。HRESULT は、次の標準的な定数の 1 つか、または一覧に示されていないその他の値となる。
E_FAIL 失敗。 E_POINTER Null ポインタ引数。 E_INVALIDARG 無効な引数。 E_NOTIMPL メソッドがサポートされていない。 S_OK または NOERROR 成功。
注意
このメンバ関数は、IMediaPosition::put_Rate の呼び出しによってレートが変更されると呼び出される。この関数をオーバーライドして送信されたデータのレートを変更する。通常は、CBaseInputPin::BeginFlush および CBaseInputPin::EndFlush の呼び出しの後で、新しいタイム スタンプがマークされたサンプルを送信する。
このメンバ関数をオーバーライドして、開始タイムの変更通知を処理する。
構文
virtual HRESULT ChangeStart(void) PURE;
戻り値
実装に応じた HRESULT 値を返す。HRESULT は、次の標準的な定数の 1 つか、または一覧に示されていないその他の値となる。
E_FAIL 失敗。 E_POINTER Null ポインタ引数。 E_INVALIDARG 無効な引数。 E_NOTIMPL メソッドがサポートされていない。 S_OK または NOERROR 成功。
注意
このメンバ関数は、IMediaPosition::put_CurrentPosition の呼び出しによって新しい開始位置が要求されると呼び出される。この関数をオーバーライドして送信されたデータを変更する。通常は、CBaseInputPin::BeginFlush および CBaseInputPin::EndFlush の呼び出しの後で、新しいタイム スタンプがマークされたサンプルを送信する。
このメンバ関数をオーバーライドして、終了タイムの変更通知を処理する。
構文
virtual HRESULT ChangeStop(void) PURE;
戻り値
実装に応じた HRESULT 値を返す。HRESULT は、次の標準的な定数の 1 つか、または一覧に示されていないその他の値となる。
E_FAIL 失敗。 E_POINTER Null ポインタ引数。 E_INVALIDARG 無効な引数。 E_NOTIMPL メソッドがサポートされていない。 S_OK または NOERROR 成功。
注意
このメンバ関数は、IMediaPosition::put_StopTime の呼び出しによって停止位置が変更されると呼び出される。この関数をオーバーライドして、正しい終了タイムが設定されていることを確認する。通常は、CBaseInputPin::BeginFlush および CBaseInputPin::EndFlush の呼び出しの後でデータを再送信する。
CSourcePosition オブジェクトを作成する。
構文
CSourcePosition(
const TCHAR *pName,
LPUNKNOWN pUnk,
HRESULT *phr,
CCritSec *pLock
);
パラメータ
- pName
- デバッギング目的で CSourcePosition コンストラクタで使用されるオブジェクトの名前へのポインタ。
- pUnk
- このオブジェクトの所有者へのポインタ。
- phr
- 結果情報を返す HRESULT 値へのポインタ。
- pLock
- ロックのための CCritSec オブジェクトへのポインタ。
戻り値
戻り値なし。
注意
スタティック メモリに pName パラメータを割り当てる。この名前は、オブジェクトの作成および削除を行うデバッギング端末上に現れる。
このメソッドは現在実装されていない。E_NOTIMPL を返す。
構文
HRESULT get_CurrentPosition( REFTIME *pllTime );
パラメータ
- pllTime
- 返された開始タイムへのポインタ (秒単位で示された double 値)。
戻り値
E_NOTIMPL を返す。
注意
実際に操作しているデータを返すことができる場合はこのメソッドをオーバーライドする。開始位置は、レートの前に適用される。したがって、通常の再生速度での位置になる。
メディア ストリームの時間幅を取得する。
構文
HRESULT get_Duration(
REFTIME *plength
);
パラメータ
- plength
- 返されたメディア ストリームの長さへのポインタ。
戻り値
pLength が無効な場合は、E_POINTER を返す。それ以外の場合は、S_OK を返す。
注意
時間幅は通常の再生速度を想定している。したがって、レートの影響を受けない。
ポインタを有効にするが、プリロールの取得は現在実装されていない。
構文
HRESULT get_PrerollTime(
REFTIME *pllTime
);
パラメータ
- pllTime
- 返されたプリロール タイムへのポインタ (秒単位で示された double 値)。
戻り値
pllTime が無効な場合は、E_POINTER を返す。それ以外の場合は、E_NOTIMPL を返す。
注意
プリロール タイムとは、テープ プレーヤーなどのランダムでないアクセス デバイスがローリングを開始するべき開始位置より前の時間。
通常の再生速度を基準にした再生レートを取得する。
構文
HRESULT get_Rate(
double *pdRate
);
パラメータ
- pdRate
- 返されたレートへのポインタ。
戻り値
pdRate が無効な場合は、E_POINTER を返す。それ以外の場合は、S_OK を返す。
注意
レート 1.0 は通常の再生速度を示す。レート 0.5 は、半分の速度を示す。レート -1.0 は逆方向の通常速度を示す。
メディア ストリームが停止する時間を取得する。
構文
HRESULT get_StopTime(
REFTIME *pllTime
);
パラメータ
- pllTime
- 返された終了タイムへのポインタ (秒単位で示された double 値)。
戻り値
pllTime が無効な場合は、E_POINTER を返す。それ以外の場合は、S_OK を返す。
注意
終了タイムは、ゼロと再生が停止するメディアの時間幅との間の位置である。
停止位置は、レートの前に適用される。したがって、通常の再生速度での位置になる。
再生が開始すべきメディア ストリーム内のタイムを設定する。
構文
HRESULT put_CurrentPosition(
REFTIME llTime
);
パラメータ
- llTime
- 開始タイムは、秒単位の double 値として表される。
戻り値
CSourcePosition::ChangeStart の呼び出しからの HRESULT 値を返す。
注意
開始タイムとは、ゼロと時間幅との間の、次の実行コマンドが発行されたときに再生が開始すべきメディアの位置である。
ポーズ状態で開始位置を設定した場合、実行コマンドが発行されると新しい開始位置から再生が再開される。
開始位置は、レートの前に適用される。したがって、通常の再生速度での位置になる。
このメソッドは現在実装されていない。E_NOTIMPL を返す。
構文
HRESULT put_PrerollTime( REFTIME llTime );
パラメータ
- llTime
- 設定するプリロール タイム。
戻り値
E_NOTIMPL を返す。
注意
プリロール タイムとは、テープ プレーヤーなどのランダムでないアクセス デバイスがローリングを開始するべき開始位置より前の時間。
通常の速度を基準にした再生レートを設定する。
構文
HRESULT put_Rate(
double dRate
);
パラメータ
- dRate
- 設定するレート。
戻り値
CSourcePosition::ChangeRate の呼び出しからの HRESULT 値を返す。
注意
このプロパティを使用すると、アプリケーションは通常のデフォルト再生速度を基準に再生をアクセラレーションまたは低速化することができる。レート 1.0 は通常の再生速度を示す。2.0 を指定すると、通常レートの 2 倍で再生が行われる。毎秒 10 フレーム (fps) で作成されたビデオは、リソースが許せば 20 fps で再生される。オーディオ ストリームを通常以上の速度で再生すると、フレームがドロップされる代わりにピッチが高くなる。
負の値のレートは、逆方向の再生を示す。すべてのメディアで逆方向再生がサポートされるとは限らない。
メディア ストリームが停止する時間を設定する。
構文
HRESULT put_StopTime(
REFTIME llTime
);
パラメータ
- llTime
- 終了タイムは、秒単位の double 値として表される。
戻り値
CSourcePosition::ChangeStop の呼び出しからの HRESULT 値を返す。
注意
終了タイムは、ゼロと再生が停止するメディアの時間幅との間の位置である。
停止位置は、レートの前に適用される。したがって、通常の再生速度での位置になる。