次の方法で共有


品質メッセージ

[このページに関連付けられている機能 DirectShow は、従来の機能です。 MediaPlayer、IMFMediaEngine、Media Foundation のオーディオ/ビデオ キャプチャに置き換わりました。 これらの機能は、Windows 10とWindows 11用に最適化されています。 新しいコードでは、可能であれば、DirectShow ではなく Media Foundation で MediaPlayerIMFMediaEngineAudio/Video Capture を使用することを強くお勧めします。 Microsoft は、レガシ API を使用する既存のコードを、可能であれば新しい API を使用するように書き換えるよう提案しています。]

品質メッセージは Quality 構造体で 定義されます。 この構造体には、次のメンバーが含まれています。

  • 型:QualityMessageType 列挙体によって定義されます。フィルターが受信するデータが少なすぎることを示す Famine か、フィルターが大量のデータを受信していることを示すフラッド。
  • 割合: ベースライン 1000 からのデータ レートの要求された調整。 たとえば、750 は 75% を示し、1500 は 150% を示します。
  • 後半: 最新のサンプルが到着した時間を示す参照時間。 サンプルが早期に到着した場合、値は負の値になります。
  • タイムスタンプ: 最新のサンプルのタイム スタンプ。

たとえば、タイム スタンプが 240 ミリ秒 (ms) のサンプルが、ストリーム時間の 280 ミリ秒でレンダラーに到達するとします。 レンダラーは、Famine 型の品質メッセージを作成します。 サンプルは 40 ミリ秒遅れて到着したので、 遅延 メンバーは 400000 です。 (すべての参照時間は 100 ナノ秒単位です。 TimeStamp メンバーは 2400000 です。

比率メンバーの場合、レンダラーは実行平均を使用して値を計算する場合があります。 おそらく、サンプルは期限内に到着しており、このサンプルは異常です。 その場合、レンダラーは小さな修正のみを要求する可能性があります。 一方、サンプルが一貫して遅れている場合、レンダラーは大きな修正を要求する可能性があります。

品質管理は、 IQualityControl インターフェイスを介して処理されます。 これには 2 つのメソッドが含まれています。

  • 通知: 品質メッセージを送信します。
  • SetSink: カスタム品質マネージャーを指定します。

IQualityControl を実装するオブジェクトは、Notify メソッドを介して品質メッセージを受信します。 メッセージを処理するか、別のオブジェクトにメッセージを渡すことができます。 アプリケーションがオブジェクトの SetSink メソッドを呼び出す場合、オブジェクトは指定された品質マネージャーに品質管理を委任する必要があります。