IMediaSeeking::SetRate メソッド (strmif.h)
[このページに関連付けられている機能 DirectShow は、従来の機能です。 MediaPlayer、IMFMediaEngine、および Media Foundation のオーディオ/ビデオ キャプチャに置き換わりました。 これらの機能は、Windows 10とWindows 11用に最適化されています。 新しいコードでは、可能であれば、DirectShow ではなく Media Foundation で MediaPlayer、IMFMediaEngine、Audio/Video Capture を使用することを強くお勧めします。 Microsoft は、従来の API を使用する既存のコードを、可能であれば新しい API を使用するように書き直すよう提案しています。]
メソッドは SetRate
再生速度を設定します。
構文
HRESULT SetRate(
[in] double dRate
);
パラメーター
[in] dRate
再生速度。 0 にすることはできません。
戻り値
HRESULT 値を返します。 使用可能な値は次のとおりです。
リターン コード | 説明 |
---|---|
|
正常終了しました。 |
|
指定されたレートは 0 または負の値でした。 (「解説」を参照してください。) |
|
実装されていません。 |
|
NULL ポインター引数。 |
|
オーディオ デバイスまたはフィルターでは、このレートはサポートされていません。 |
注釈
再生速度は、通常の速度の比率で表されます。 したがって、1.0 は通常の再生速度、0.5 は半分の速度、2.0 は 2 倍の速度です。 オーディオ ストリームの場合、レートを変更するとピッチも変わります。
負の値は、逆再生を示します。 ほとんどのフィルターは負の再生をサポートしていませんが、 dRate パラメーターが負の場合はエラー コードを返します。
アプリケーションがフィルター グラフ マネージャーでこのメソッドを呼び出すと、フィルター グラフ マネージャーによって次の処理が行われます。
- IMediaSeeking::GetCurrentPosition メソッドを呼び出します。 この呼び出しは、フィルター グラフ マネージャーによって計算された現在の位置を返します。
- フィルター グラフを停止します (グラフが一時停止または実行中の場合)。
- フィルターで IMediaSeeking::SetPositions メソッドを呼び出し、現在の位置を開始時刻として指定します。 これは、ストリーム時間を 0 にリセットする効果があります。
- フィルターの メソッドを
SetRate
新しいレートで呼び出します。 - フィルター グラフが一時停止または実行中の場合は、フィルター グラフを再開します。
フィルターは、レートの変化に次のように応答する必要があります。
パーサーとソース フィルター: タイムスタンプを生成するフィルターは、呼び出しに SetRate
応答します。 これは通常、 AVI スプリッター フィルターなどのパーサー フィルターですが、ソース フィルターである可能性があります。 シークまたはレートが変更された後、フィルターは新しい設定で IPin::NewSegment メソッドを呼び出す必要があります。 レート変更後は、それに応じてタイムスタンプを調整する必要があります。 レート変更の前にシークがあるため、タイムスタンプは 0 から再開されるため、フィルターは単純にレートで除算して新しいタイムスタンプを計算できます。
デコーダー フィルター: デコーダーは、アップストリームに渡す以外の SetRate
呼び出しに対して動作しないでください。 代わりに、アップストリーム パーサーが発行する NewSegment 呼び出しに応答する必要があります。 デコーダー フィルターは、新しいセグメント情報を受信すると、値を格納し、 NewSegment 呼び出しをダウンストリームに渡す必要があります。 一部のデコーダーでは、入力を補間して追加のタイムスタンプを生成する必要があります。この場合、レートの変更を考慮する必要があります。
レンダラー: 受信フレームには正しいタイム スタンプが既に存在するため、ビデオ レンダラーは通常、レートの変更を無視できます。 オーディオ デコーダーは通常、レート変更変換を行わないので、オーディオ レンダラーは再生レートを変更する必要があります。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows 2000 Professional [デスクトップ アプリのみ] |
サポートされている最小のサーバー | Windows 2000 Server [デスクトップ アプリのみ] |
対象プラットフォーム | Windows |
ヘッダー | strmif.h (Dshow.h を含む) |
Library | Strmiids.lib |