Microsoft DirectX 8.0

CSourcePosition クラス

CSourcePosition クラスの階層

CSourcePosition は、ソース フィルタに IMediaPosition インターフェイスを実装するための抽象クラスである。

このクラスは使用しない。ソース フィルタがシーク可能であれば、IMediaPosition の代わりに IMediaSeeking インターフェイスを公開すべきである。この目的で CSourceSeeking 基底クラスを使用することができる。

CSourcePosition::put_CurrentPositionCSourcePosition::put_StopTime、または CSourcePosition::put_Rate が呼び出されると、CSourcePosition は純粋仮想メンバ関数 CSourcePosition::ChangeStartCSourcePosition::ChangeStop、または CSourcePosition::ChangeRate をそれぞれ呼び出す。派生クラス内でこれらの関数をオーバーライドする。

Protected データ メンバ

m_Duration ストリームの時間幅。
m_pLock ロックのための CCritSec オブジェクトへのポインタ。
m_Rate サンプル レート。
m_Start 開始タイム。
m_Stop 終了タイム。

メンバ関数

CSourcePosition CSourcePosition オブジェクトを作成する。

オーバーライド可能なメンバ関数

ChangeRate この純粋仮想関数をオーバーライドして、レート プロパティが変更された通知を処理する。
ChangeStart この純粋仮想関数をオーバーライドして、開始位置プロパティが変更された通知を処理する。
ChangeStop この純粋仮想関数をオーバーライドして、終了位置プロパティが変更された通知を処理する。

実装される IMediaPosition メソッド

get_CurrentPosition 現在は実装されていない。
get_Duration メディアの合計時間幅を取得する。
get_PrerollTime 現在は実装されていない。
get_Rate メディアの通常再生を基準にした再生レートを取得する。
get_StopTime 再生が停止すべきメディア内の位置を取得する。
put_CurrentPosition 再生が開始すべきメディア内の位置を設定する。
put_PrerollTime 現在は実装されていない。
put_Rate メディアの通常再生を基準にした再生レートを設定する。
put_StopTime 再生が停止すべきメディア内の位置を設定する。

CSourcePosition::ChangeRate

CSourcePosition クラス

このメンバ関数をオーバーライドして、サンプル レートの変更通知を処理する。

構文

virtual HRESULT ChangeRate(void) PURE;

戻り値

実装に応じた HRESULT 値を返す。HRESULT は、次の標準的な定数の 1 つか、または一覧に示されていないその他の値となる。
E_FAIL失敗。
E_POINTERNull ポインタ引数。
E_INVALIDARG無効な引数。
E_NOTIMPLメソッドがサポートされていない。
S_OK または NOERROR成功。

注意

このメンバ関数は、IMediaPosition::put_Rate の呼び出しによってレートが変更されると呼び出される。この関数をオーバーライドして送信されたデータのレートを変更する。通常は、CBaseInputPin::BeginFlush および CBaseInputPin::EndFlush の呼び出しの後で、新しいタイム スタンプがマークされたサンプルを送信する。

CSourcePosition::ChangeStart

CSourcePosition クラス

このメンバ関数をオーバーライドして、開始タイムの変更通知を処理する。

構文

virtual HRESULT ChangeStart(void) PURE;

戻り値

実装に応じた HRESULT 値を返す。HRESULT は、次の標準的な定数の 1 つか、または一覧に示されていないその他の値となる。
E_FAIL失敗。
E_POINTERNull ポインタ引数。
E_INVALIDARG無効な引数。
E_NOTIMPLメソッドがサポートされていない。
S_OK または NOERROR成功。

注意

このメンバ関数は、IMediaPosition::put_CurrentPosition の呼び出しによって新しい開始位置が要求されると呼び出される。この関数をオーバーライドして送信されたデータを変更する。通常は、CBaseInputPin::BeginFlush および CBaseInputPin::EndFlush の呼び出しの後で、新しいタイム スタンプがマークされたサンプルを送信する。

CSourcePosition::ChangeStop

CSourcePosition クラス

このメンバ関数をオーバーライドして、終了タイムの変更通知を処理する。

構文

virtual HRESULT ChangeStop(void) PURE;

戻り値

実装に応じた HRESULT 値を返す。HRESULT は、次の標準的な定数の 1 つか、または一覧に示されていないその他の値となる。
E_FAIL失敗。
E_POINTERNull ポインタ引数。
E_INVALIDARG無効な引数。
E_NOTIMPLメソッドがサポートされていない。
S_OK または NOERROR成功。

注意

このメンバ関数は、IMediaPosition::put_StopTime の呼び出しによって停止位置が変更されると呼び出される。この関数をオーバーライドして、正しい終了タイムが設定されていることを確認する。通常は、CBaseInputPin::BeginFlush および CBaseInputPin::EndFlush の呼び出しの後でデータを再送信する。

CSourcePosition::CSourcePosition

CSourcePosition クラス

CSourcePosition オブジェクトを作成する。

構文

CSourcePosition(

  const TCHAR *pName,
  LPUNKNOWN pUnk,
  HRESULT *phr,
  CCritSec *pLock
  );

パラメータ

pName
デバッギング目的で CSourcePosition コンストラクタで使用されるオブジェクトの名前へのポインタ。
pUnk
このオブジェクトの所有者へのポインタ。
phr
結果情報を返す HRESULT 値へのポインタ。
pLock
ロックのための CCritSec オブジェクトへのポインタ。

戻り値

戻り値なし。

注意

スタティック メモリに pName パラメータを割り当てる。この名前は、オブジェクトの作成および削除を行うデバッギング端末上に現れる。

CSourcePosition::get_CurrentPosition

CSourcePosition クラス

このメソッドは現在実装されていない。E_NOTIMPL を返す。

構文

HRESULT get_CurrentPosition(
  REFTIME *pllTime
);

パラメータ

pllTime
返された開始タイムへのポインタ (秒単位で示された double 値)。

戻り値

E_NOTIMPL を返す。

注意

実際に操作しているデータを返すことができる場合はこのメソッドをオーバーライドする。開始位置は、レートの前に適用される。したがって、通常の再生速度での位置になる。

CSourcePosition::get_Duration

CSourcePosition クラス

メディア ストリームの時間幅を取得する。

構文

HRESULT get_Duration(

  REFTIME *plength
  );

パラメータ

plength
返されたメディア ストリームの長さへのポインタ。

戻り値

pLength が無効な場合は、E_POINTER を返す。それ以外の場合は、S_OK を返す。

注意

時間幅は通常の再生速度を想定している。したがって、レートの影響を受けない。

CSourcePosition::get_PrerollTime

CSourcePosition クラス

ポインタを有効にするが、プリロールの取得は現在実装されていない。

構文

HRESULT get_PrerollTime(

  REFTIME *pllTime
  );

パラメータ

pllTime
返されたプリロール タイムへのポインタ (秒単位で示された double 値)。

戻り値

pllTime が無効な場合は、E_POINTER を返す。それ以外の場合は、E_NOTIMPL を返す。

注意

プリロール タイムとは、テープ プレーヤーなどのランダムでないアクセス デバイスがローリングを開始するべき開始位置より前の時間。

CSourcePosition::get_Rate

CSourcePosition クラス

通常の再生速度を基準にした再生レートを取得する。

構文

HRESULT get_Rate(

  double *pdRate
  );

パラメータ

pdRate
返されたレートへのポインタ。

戻り値

pdRate が無効な場合は、E_POINTER を返す。それ以外の場合は、S_OK を返す。

注意

レート 1.0 は通常の再生速度を示す。レート 0.5 は、半分の速度を示す。レート -1.0 は逆方向の通常速度を示す。

CSourcePosition::get_StopTime

CSourcePosition クラス

メディア ストリームが停止する時間を取得する。

構文

HRESULT get_StopTime(

  REFTIME *pllTime
  );

パラメータ

pllTime
返された終了タイムへのポインタ (秒単位で示された double 値)。

戻り値

pllTime が無効な場合は、E_POINTER を返す。それ以外の場合は、S_OK を返す。

注意

終了タイムは、ゼロと再生が停止するメディアの時間幅との間の位置である。

停止位置は、レートの前に適用される。したがって、通常の再生速度での位置になる。

CSourcePosition::put_CurrentPosition

CSourcePosition クラス

再生が開始すべきメディア ストリーム内のタイムを設定する。

構文

HRESULT put_CurrentPosition(
  REFTIME llTime
  );

パラメータ

llTime
開始タイムは、秒単位の double 値として表される。

戻り値

CSourcePosition::ChangeStart の呼び出しからの HRESULT 値を返す。

注意

開始タイムとは、ゼロと時間幅との間の、次の実行コマンドが発行されたときに再生が開始すべきメディアの位置である。

ポーズ状態で開始位置を設定した場合、実行コマンドが発行されると新しい開始位置から再生が再開される。

開始位置は、レートの前に適用される。したがって、通常の再生速度での位置になる。

CSourcePosition::put_PrerollTime

CSourcePosition クラス

このメソッドは現在実装されていない。E_NOTIMPL を返す。

構文

HRESULT put_PrerollTime(
   REFTIME llTime
);

パラメータ

llTime
設定するプリロール タイム。

戻り値

E_NOTIMPL を返す。

注意

プリロール タイムとは、テープ プレーヤーなどのランダムでないアクセス デバイスがローリングを開始するべき開始位置より前の時間。

CSourcePosition::put_Rate

CSourcePosition クラス

通常の速度を基準にした再生レートを設定する。

構文

HRESULT put_Rate(
  double dRate
  );

パラメータ

dRate
設定するレート。

戻り値

CSourcePosition::ChangeRate の呼び出しからの HRESULT 値を返す。

注意

このプロパティを使用すると、アプリケーションは通常のデフォルト再生速度を基準に再生をアクセラレーションまたは低速化することができる。レート 1.0 は通常の再生速度を示す。2.0 を指定すると、通常レートの 2 倍で再生が行われる。毎秒 10 フレーム (fps) で作成されたビデオは、リソースが許せば 20 fps で再生される。オーディオ ストリームを通常以上の速度で再生すると、フレームがドロップされる代わりにピッチが高くなる。

負の値のレートは、逆方向の再生を示す。すべてのメディアで逆方向再生がサポートされるとは限らない。

CSourcePosition::put_StopTime

CSourcePosition クラス

メディア ストリームが停止する時間を設定する。

構文

HRESULT put_StopTime(
  REFTIME llTime
  );

パラメータ

llTime
終了タイムは、秒単位の double 値として表される。

戻り値

CSourcePosition::ChangeStop の呼び出しからの HRESULT 値を返す。

注意

終了タイムは、ゼロと再生が停止するメディアの時間幅との間の位置である。

停止位置は、レートの前に適用される。したがって、通常の再生速度での位置になる。