Microsoft DirectX 8.0

IDMOQualityControl インターフェイス

Microsoft® DirectX® Media Object (DMO) の品質コントロールをサポートする。

DMO が遅延サンプルに対応できる場合、DMO はこのインターフェイスを公開する。品質コントロールが有効になっていると、DMO は、必要に応じて遅延サンプルを破棄し、サンプルを予定どおりに処理しようとする。品質コントロールが無効になっていると、DMO はすべてのサンプルを処理する。デフォルトでは、品質コントロールは無効になっている。

アプリケーションは、このインターフェイスを使って品質コントロールを有効または無効にする。メディア データをリアルタイムで表示しているときは、品質コントロールを使用した方がよい。品質コントロールを有効にすると DMO がサンプルを破棄する可能性があるため、データをファイルにキャプチャしている場合は、品質コントロールを有効にしないこと。サンプルの遅延はファイル キャプチャでは問題にならないし、データの欠損を避けた方がよい。

品質コントロールを使用するには、次の手順を実行する。

  1. 処理の対象となる最も早いサンプルを基準時間にして、SetNow メソッドを呼び出す。
  2. DMO_QUALITY_STATUS_ENABLED フラグを設定して SetStatus メソッドを呼び出す。

品質コントロールを無効にするには、フラグを設定せずに SetStatus を呼び出す。

Vtable 順のメソッド

IUnknown メソッド説明
QueryInterfaceサポートされているインターフェイスを指すポインタを取得する。
AddRef参照カウントをインクリメントする。
Release参照カウントをデクリメントする。
IDMOQualityControl メソッド説明
SetNowDMO がデータを配布する必要がある最も早いタイム スタンプを指定する。
SetStatus品質コントロールを有効または無効にする。
GetStatus品質コントロールがアクティブかどうかを判別する。

IDMOQualityControl::SetNow

IDMOQualityControl インターフェイス

DMO が配布する最も早いタイム スタンプを指定する。

構文

HRESULT SetNow(
    REFERENCE_TIME rtNow
);

パラメータ

rtNow
[in] 配布する最も早いタイム スタンプを指定する基準時間。

戻り値

HRESULT 値を返す。以下の値をとる。

S_OK成功
E_FAIL失敗

注意

品質コントロールが有効になっていると、DMO は、タイム スタンプが rtNow 未満のすべてのサンプルを破棄する。タイム スタンプが rtNow 以降のサンプルは、できる限り効率的に処理される。実装によっては、ペースを保つために DMO が一部のサンプルをドロップすることがある。

品質コントロールが無効になっていると、このメソッドは直ちには効果を及ぼさない。ただし、DMO は指定された基準時間を保存しておく。後で品質コントロールが有効になった場合、DMO はこの値を使用する。品質コントロールを有効にするには、SetNow メソッドを呼び出す。

入力されるサンプルにタイム スタンプがない場合、DMO は品質コントロールを実行しない。アプリケーションは、IMediaObject::ProcessInput メソッドでタイム スタンプを設定する。

IDMOQualityControl::SetStatus

IDMOQualityControl インターフェイス

品質コントロールを有効または無効にする。

構文

HRESULT SetStatus(
DWORD dwFlags
);

パラメータ

dwFlags
[in] 品質コントロールを有効にするか、無効にするかを指定する値。品質コントロールを有効にするには DMO_QUALITY_STATUS_ENABLED を指定し、品質コントロールを無効にするにはゼロを指定する。

戻り値

HRESULT 値を返す。以下の値をとる。

S_OK成功。
E_INVALIDARG無効な引数。

注意

品質コントロールが有効になっている場合、DMO はサンプルを予定どおりに配布しようとする。必要な場合、DMO は遅延サンプルをスキップすることができる。品質コントロールが無効になっていると、DMO はすべてのサンプルを配布する。品質コントロールを有効にする場合は、SetNow メソッドを呼び出して、DMO が処理する必要がある最も早いタイム スタンプを指定すること。そうしないと、SetStatus の呼び出しは成功するが、DMO は品質コントロールを実行しない。

デフォルトでは、品質コントロールは無効になっている。

IDMOQualityControl::GetStatus

IDMOQualityControl インターフェイス

品質コントロールがアクティブかどうかを判別する。

構文

HRESULT GetStatus(
DWORD *pdwFlags
);

パラメータ

pdwFlags
[out] 品質コントロールの状態を受け取る変数を指すポインタ。品質コントロールが無効になっている場合の値はゼロである。品質コントロールが有効になっている場合の値は DMO_QUALITY_STATUS_ENABLED である。

戻り値

HRESULT 値を返す。以下の値をとる。

S_OK成功。
E_POINTERNULL ポインタ値。