Microsoft DirectX 8.0 |
フィルタ グラフは、グラフ内のいずれかのフィルタがシーク可能であれば (ストリーム内の任意の位置をシークできれば)、IMediaPosition オブジェクトを公開する。フィルタがフィルタのデータをシークできる場合、または、シーク可能なストリームを表す出力ピンに接続される場合、フィルタは IMediaPosition を公開する。
フィルタ グラフと通信するアプリケーションは、このインターフェイスのメソッドを呼び出して、ストリームの時間幅、開始タイムと終了タイム、プリロール タイム、速度、現在位置などのプロパティを設定または取得できる。フィルタ グラフは、シーク可能なフィルタ上でこれらのプロパティを使って、グラフ内のストリームの再生を制御する。複数のストリームがある場合、フィルタ グラフは、それらすべてが同じ位置を開始位置として並行して再生されるように設定し、最も長いストリームの時間幅を時間幅として報告する。このインターフェイスで使われるパラメータは、小数点値の秒を表す double 型の値である。フィルタは、内部的には、時間を 100 ナノ秒の精度で格納する。
プロパティ
CurrentPosition メディア ストリーム全体の長さに対する現在の位置を取得または設定する。 Duration メディア ストリームの総時間幅を取得する。 PrerollTime 非ランダム アクセス デバイスが回転を開始する必要がある、開始位置より前の位置から開始位置までの時間を取得または設定する。 Rate メディア ストリームの標準再生速度に対する相対的な再生速度を取得または設定する。 StopTime 再生を停止する必要があるメディア ストリーム内の位置を取得または設定する。
メソッド
CanSeekBackward 現在のストリームを逆方向にシークできるかどうかを示す値を取得する。 CanSeekForward 現在のストリームを順方向にシークできるかどうかを示す値を取得する。
メディア ストリーム全体の長さに対する現在の位置を取得または設定する。
構文
objMediaPosition.CurrentPosition [=dblValue]
指定項目
- objMediaPosition
- 評価結果が IMediaPosition オブジェクトになるオブジェクト式。
- dblValue
- 新しい現在位置を指定する Double 型の値。
注意
CurrentPosition プロパティは、現在までに再生が達した位置を表す。このプロパティは、ゼロと時間幅の間の値 (速度と開始タイムによって調整された値) になる。グラフがポーズしている場合、このプロパティは、グラフが動作を再開する位置を示す。
このプロパティを使用して、開始タイムを設定することもできる。その場合の現在位置は、Run メソッドが呼び出されたときに再生を開始する、ゼロと時間幅の間の位置を示す。
フィルタ グラフが停止またはポーズしている場合、このプロパティは、再生を再開する位置を返す。フィルタ グラフがトランスポートしている場合、フィルタ グラフ マネージャは、基準クロックに従って位置を返す。それぞれのフィルタがこれを実装する場合、フィルタは、ポーズまたはトランスポートしているときに、現在処理しているサンプルのストリーム タイム (開始位置からのオフセット時間) を返す必要がある。
停止またはポーズした後、run コマンドを実行すると、再生が現在の位置から開始される。アプリケーションが CurrentPosition 呼び出しを変更しない限り、この位置は、再生が停止またはポーズした位置になる。
フィルタ グラフ マネージャが動作している間にこのメソッドが呼び出されると、フィルタ グラフ マネージャはグラフをポーズさせ、メソッドを実行し、新しい run コマンドを実行する。
ポーズ中または停止中に現在位置を設定すると、run コマンドを実行したときに、新しい開始位置から再生が再開される。
現在位置は速度の前に適用されるため、通常の再生速度での位置になる。
メディア ストリームの総時間幅を取得する。
構文
objMediaPosition.Duration
指定項目
- objMediaPosition
- 評価結果が IMediaPosition オブジェクトになるオブジェクト式。
注意
時間幅は標準再生速度を前提としているため、速度の影響を受けない。
デバイスが回転を開始する必要がある、開始位置より前の位置から開始位置までの時間を取得または設定する。
構文
objMediaPosition.PrerollTime [=dblValue]
指定項目
- objMediaPosition
- 評価結果が IMediaPosition オブジェクトになるオブジェクト式。
- dblValue
- PrerollTime プロパティを示す Double 型の値。
注意
プリロール時間とは、テープ プレーヤーなどの非ランダム アクセス デバイスが回転を開始する必要がある、開始位置より前の位置から開始位置までの時間のことである。
標準再生速度に対する相対的な再生速度を取得または設定する。
構文
objMediaPosition.Rate [= dblValue]
指定項目
- objMediaPosition
- 評価結果が IMediaPosition オブジェクトになるオブジェクト式。
- dblValue
- 速度の新しい値。Double 型。
注意
このプロパティを利用して、アプリケーションは、再生速度を標準のデフォルト再生速度より速くしたり遅くしたりすることができる。速度 1.0 は標準再生速度を示し、速度 0.5 は半分の速度を示す。また、1.0 は、標準の逆再生速度を示す。2.0 を指定すると、再生速度は標準速度の 2 倍になり、リソースが十分にあれば、1 秒あたり 10 フレーム (fps) で作成されたビデオが 20 fps で再生される。標準速度より速い速度でオーディオ ストリームを再生すると、サンプルはドロップされず、ピッチが高くなる。速度 0.5 は、半分の速度を示す。
メディア ストリームが停止する時間を取得または設定する。
構文
objMediaPosition.StopTime [ = dblValue]
指定項目
- objMediaPosition
- 評価結果が IMediaPosition オブジェクトになるオブジェクト式。
- dblValue
- 終了タイムの新しい値。
注意
終了タイムは、再生が停止する、ゼロとメディアの時間幅の間の位置である。
停止位置は速度の前に適用されるため、標準再生速度での位置になる。
現在のストリームを逆方向にシークできるかどうかを示す値を取得する。
構文
objMediaPosition.CanSeekBackward
指定項目
- objMediaPosition
- 評価結果が IMediaPosition オブジェクトになるオブジェクト式。
注意
戻り値は整数型の値である。値が 0 の場合、現在のストリームはシークできない。値が –1 であれば、シークできる。ストリームをシークできない場合でも、CurrentPosition でストリームの現在位置を設定できる。
このメソッドは、WAV ファイルやビデオのみの MPEG ファイルなど、メディア ストリームが 1 つのメディア タイプから構成されている場合にのみ –1 (TRUE) を返すことができる。
現在のストリームを順方向にシークできるかどうかを示す値を取得する。
構文
objMediaPosition.CanSeekForward
指定項目
- objMediaPosition
- 評価結果が IMediaPosition オブジェクトになるオブジェクト式。
注意
戻り値は整数型の値である。値が 0 の場合、現在のストリームはシークできない。値が –1 であれば、シークできる。ストリームをシークできない場合でも、CurrentPosition でストリームの現在位置を設定できる。
このメソッドは、WAV ファイルやビデオのみの MPEG ファイルなど、メディア ストリームが 1 つのメディア タイプから構成されている場合にのみ –1 (TRUE) を返すことができる。