Rate Change プロパティ セット
[このページに関連付けられている機能 DirectShow は、従来の機能です。 MediaPlayer、IMFMediaEngine、および Media Foundation のオーディオ/ビデオ キャプチャに置き換わりました。 これらの機能は、Windows 10とWindows 11用に最適化されています。 新しいコードでは、可能であれば、DirectShow ではなく Media Foundation で MediaPlayer、IMFMediaEngine、Audio/Video Capture を使用することを強くお勧めします。 Microsoft は、従来の API を使用する既存のコードを、可能であれば新しい API を使用するように書き直すよう提案しています。]
Rate Change プロパティ セットを使用すると、MPEG-2 ソース/パーサー フィルターで再生レートを変更できます。 MPEG-2 デコーダーは、このプロパティ セットをサポートする必要があります。 DVD ナビゲーターとストリーム バッファー エンジンの両方で、このプロパティ セットを使用して再生レートを制御します。
Label | 値 |
---|---|
[プロパティ セット GUID] | AM_KSPROPSETID_TSRateChange |
プロパティ ID | 説明 |
---|---|
AM_RATE_CorrectTS | ナビゲーターが正しいタイム スタンプを設定していることをデコーダーに通知します。 |
AM_RATE_ExactRateChange | 互換性のために残されています。 |
AM_RATE_MaxFullDataRate | デコーダーの最大データ レートをデコーダーに照会します。 |
AM_RATE_QueryFullFrameRate | デコーダーに対して、デコーダーの最大フル フレーム レートを照会します。 |
AM_RATE_QueryLastRateSegPTS | デコーダーに対して、直近に設定されたレート セグメントの開始時刻を照会します。 |
AM_RATE_SimpleRateChange | レート変更をデコーダーに送信します。 |
AM_RATE_Step | 互換性のために残されています。 「 Frame Stepping Property Set」を参照してください。 |
AM_RATE_UseRateVersion | 使用するレート変更メカニズムのバージョンを指定します。 |
解説
このプロパティ セットのコンテキストでは、rate は、タイム スタンプが基準クロックに対して進む速度を測定します。 再生速度の逆を評価します。 たとえば、再生速度が 2 倍の場合、タイムスタンプは通常のレートの 1/2 で増加する必要があります。 これは、サンプルが通常よりも早くレンダリングされるため、再生速度が速くなります。
サンプルは、プレゼンテーション時間と等しいタイムスタンプを 1 倍のレートでデコーダーに送信します。 デコーダーは、出力サンプルのタイム スタンプを現在のレートの正しいプレゼンテーション時間にスケーリングする必要があります。 たとえば、レートが 1/2 (再生速度が 2 倍) の場合、デコーダーはタイムスタンプを 1/2 ずつスケーリングする必要があります。 一般に、タイム スタンプを持つのは I フレームだけです。 デコーダーは、B フレームと P フレームのタイム スタンプを補間する必要があります。 逆再生中は、タイムスタンプは増加し続けるので、タイム スタンプは逆になることはありません。
Rate Change プロパティ セットの 2 つのバージョン (バージョン 1.0 とバージョン 1.1) が定義されています。 既定の動作は、バージョン 1.0 によって指定されます。 デコーダー ベンダーは、よりスムーズな再生エクスペリエンスを提供するため、バージョン 1.1 をサポートすることをお勧めします。 現在、DVD ナビゲーターではバージョン 1.0 が使用されています。 ストリーム バッファー エンジンでは、バージョン 1.1 が使用されます。
レート変更バージョン 1.0
Rate Change プロパティ セットのバージョン 1.0 では、MPEG-2 デコーダーの既定の動作が定義されています。
ソース フィルターは、 AM_RATE_SimpleRateChange プロパティを設定してレートの変更を通知します。 このプロパティのデータは、新しいレートに加えて、レートが有効になったときの入力サンプルの開始時刻です。 デコーダーは、保留中のレート変更のキューを開始時刻別に並べ替えます。
DVD ナビゲーターが 1 倍以外の速度に変更される前に、保留中のすべてのサンプルが配信され、一時的にレートが 1.0 に設定され、グラフがフラッシュされます。 次に、新しいレートを設定します。 すべてのレート変更は、現在の VOBU (ビデオ オブジェクト ユニット) の最後にスケジュールされます。 グラフをフラッシュすると、プレゼンテーション時間が 0 にリセットされることに注意してください。
DVD ナビゲーターは、 スムーズ モード または スキャン モードで動作します。 スムーズ モードでは、B フレームや P フレームなど、すべてのフレームをデコーダーに送信します。 DVD ナビゲーターは、再生速度が 0 より大きく、デコーダーの maxmimum データ レートより小さい場合は常にスムーズ モードを使用します。 再生速度が 0 未満 (逆再生) であるか、デコーダーの最大データ レートを超えている場合、DVD ナビゲーターはスキャン モードを使用し、I フレームだけをデコーダーに送信します。 非常に高速では、いくつかのIフレームをスキップする可能性があります。たとえば、他のすべての I フレームを送信できます。
既定では、DVD ナビゲーターは 1.0 以外のレートでオーディオ ストリームをミュートします。 これを変更するには、DVD_AudioDuringFFwdRew フラグを指定して IDvdControl2::SetOption を 呼び出します。
レート変更バージョン 1.1
Rate Change プロパティ セットのバージョン 1.1 は、バージョン 1.0 と同じ基本原則に従い、次の違いがあります。
- ソース フィルターは、 AM_RATE_UseRateVersion プロパティを設定することで、デコーダーにバージョン 1.1 を使用するように通知します。 それ以外の場合、デコーダーはバージョン 1.0 の動作を使用する必要があります。
- ソース フィルターは、レートの変化の間にグラフをフラッシュしません。 したがって、タイム スタンプは、ゼロにリセットするのではなく、レート変更の境界を越えて単調に増加します。
- ソース フィルターでは、特定の参照時間のレート変更をキューに入れる代わりに、デコーダーの送信キューの先頭にあるサンプルとして定義されたデコーダーの 最も前方のサンプルにレート変更が適用されるように指定できます。 これを行うには、ソース フィルターで AM_RATE_SimpleRateChange プロパティが使用されますが、開始時刻は -1 に設定されます。
- ソース フィルターは、直前にキューに入ったレート変更の開始時刻をデコーダーに照会できます。 この目的では 、AM_RATE_QueryLastRateSegPTS プロパティを使用します。
- ソース フィルターはサンプルを削除しません。 レートがデコーダーの最大データ レートを超える場合、デコーダーは必要に応じてフレームをドロップする必要があります。
- ソース フィルターは、オーディオ デコーダーの最大データ レートに関係なく、オーディオ ストリームをミュートしません。 オーディオ デコーダーは、再生速度がデコーダーの最大レートを超えた場合にサンプルをドロップできます。 ただし、スケジュールされたレート変更のキューを維持する必要があります。
要件
要件 | 値 |
---|---|
ヘッダー |
|
関連項目