Microsoft DirectX 8.0 |
Microsoft® DirectX® Media Object (DMO) の品質コントロールをサポートする。
DMO が遅延サンプルに対応できる場合、DMO はこのインターフェイスを公開する。品質コントロールが有効になっていると、DMO は、必要に応じて遅延サンプルを破棄し、サンプルを予定どおりに処理しようとする。品質コントロールが無効になっていると、DMO はすべてのサンプルを処理する。デフォルトでは、品質コントロールは無効になっている。
アプリケーションは、このインターフェイスを使って品質コントロールを有効または無効にする。メディア データをリアルタイムで表示しているときは、品質コントロールを使用した方がよい。品質コントロールを有効にすると DMO がサンプルを破棄する可能性があるため、データをファイルにキャプチャしている場合は、品質コントロールを有効にしないこと。サンプルの遅延はファイル キャプチャでは問題にならないし、データの欠損を避けた方がよい。
品質コントロールを使用するには、次の手順を実行する。
品質コントロールを無効にするには、フラグを設定せずに SetStatus を呼び出す。
IUnknown メソッド 説明 QueryInterface サポートされているインターフェイスを指すポインタを取得する。 AddRef 参照カウントをインクリメントする。 Release 参照カウントをデクリメントする。 IDMOQualityControl メソッド 説明 SetNow DMO がデータを配布する必要がある最も早いタイム スタンプを指定する。 SetStatus 品質コントロールを有効または無効にする。 GetStatus 品質コントロールがアクティブかどうかを判別する。
DMO が配布する最も早いタイム スタンプを指定する。
構文
HRESULT SetNow( REFERENCE_TIME rtNow );
パラメータ
- rtNow
- [in] 配布する最も早いタイム スタンプを指定する基準時間。
戻り値
HRESULT 値を返す。以下の値をとる。
S_OK 成功 E_FAIL 失敗
注意
品質コントロールが有効になっていると、DMO は、タイム スタンプが rtNow 未満のすべてのサンプルを破棄する。タイム スタンプが rtNow 以降のサンプルは、できる限り効率的に処理される。実装によっては、ペースを保つために DMO が一部のサンプルをドロップすることがある。
品質コントロールが無効になっていると、このメソッドは直ちには効果を及ぼさない。ただし、DMO は指定された基準時間を保存しておく。後で品質コントロールが有効になった場合、DMO はこの値を使用する。品質コントロールを有効にするには、SetNow メソッドを呼び出す。
入力されるサンプルにタイム スタンプがない場合、DMO は品質コントロールを実行しない。アプリケーションは、IMediaObject::ProcessInput メソッドでタイム スタンプを設定する。
品質コントロールを有効または無効にする。
構文
HRESULT SetStatus( DWORD dwFlags );
パラメータ
- dwFlags
- [in] 品質コントロールを有効にするか、無効にするかを指定する値。品質コントロールを有効にするには DMO_QUALITY_STATUS_ENABLED を指定し、品質コントロールを無効にするにはゼロを指定する。
戻り値
HRESULT 値を返す。以下の値をとる。
S_OK 成功。 E_INVALIDARG 無効な引数。
注意
品質コントロールが有効になっている場合、DMO はサンプルを予定どおりに配布しようとする。必要な場合、DMO は遅延サンプルをスキップすることができる。品質コントロールが無効になっていると、DMO はすべてのサンプルを配布する。品質コントロールを有効にする場合は、SetNow メソッドを呼び出して、DMO が処理する必要がある最も早いタイム スタンプを指定すること。そうしないと、SetStatus の呼び出しは成功するが、DMO は品質コントロールを実行しない。
デフォルトでは、品質コントロールは無効になっている。
品質コントロールがアクティブかどうかを判別する。
構文
HRESULT GetStatus( DWORD *pdwFlags );
パラメータ
- pdwFlags
- [out] 品質コントロールの状態を受け取る変数を指すポインタ。品質コントロールが無効になっている場合の値はゼロである。品質コントロールが有効になっている場合の値は DMO_QUALITY_STATUS_ENABLED である。
戻り値
HRESULT 値を返す。以下の値をとる。
S_OK 成功。 E_POINTER NULL ポインタ値。