Microsoft DirectX 8.0 |
このインターフェイスは、データが存在する場所でデータを処理するためのメソッドを備えている。以下の条件が満たされていれば、Microsoft® DirectX® Media Object (DMO) はこのインターフェイスを公開できる。
このインターフェイスは、最適化されたデータ処理手段を提供する。アプリケーションは、IMediaObject::ProcessInput メソッドと IMediaObject::ProcessOutput メソッドを呼び出す代わりに、1 つの Process メソッドを呼び出す。ただし、このインターフェイスを実装する DMO は、必ず IMediaObject インターフェイスも実装する必要がある。したがって、アプリケーションにはこのインターフェイスを使用する義務はなく、DMO がこのインターフェイスを実装することも保証されない。
IUnknown メソッド 説明 QueryInterface サポートされているインターフェイスを指すポインタを取得する。 AddRef 参照カウントをインクリメントする。 Release 参照カウントをデクリメントする。 IMediaObjectInPlace メソッド 説明 Process データのブロックを処理する。 Clone 現在の状態の DMO のコピーを作成する。 GetLatency この DMO によって生じる待機時間を取得する。
データのブロックを処理する。アプリケーションは入力データのブロックを指すポインタを供給する。DMO は指定された場所でデータを処理する。
構文
HRESULT Process( ULONG ulSize, BYTE *pData REFERENCE_TIME refTimeStart, DWORD dwFlags );
パラメータ
- ulSize
- [in] バイト単位で表すデータのサイズ。
- pData
- [in, out] サイズが ulSize のバッファを指すポインタ。入力時にはバッファに入力データが格納される。メソッドが正常に終了すると、バッファには出力データが格納される。
- refTimeStart
- [in] データの開始タイム。
- dwFlags
- [in] DMO_INPLACE_NORMAL または DMO_INPLACE_ZERO のいずれか。詳細については、「注意」を参照すること。
戻り値
HRESULT 値を返す。以下の値をとる。
S_FALSE 成功。処理するデータがまだある。 S_TRUE 成功。処理するデータが残っていない。 E_FAIL 失敗。
注意
メソッドが失敗すると、バッファに不要データが残ることがある。アプリケーションはバッファの内容を使ってはいけない。
DMO は、入力データの長さを超える出力データを生成することがある。この現象は "エフェクト テール" と呼ばれる。たとえば、残響エフェクトは、入力が無音になった後も継続する。DMO でエフェクト テールが発生すると、このメソッドは S_FALSE を返す。
アプリケーションに処理する入力データがある間は、dwFlags パラメータを DMO_INPLACE_NORMAL に設定して Process メソッドを呼び出す。この呼び出しが S_FALSE を返したら、入力バッファをゼロにして、DMO_INPLACE_ZERO フラグを設定し、Process を再び呼び出す。DMO はゼロなったバッファにエフェクト テールを格納する。戻り値が、DMO がエフェクト テールの処理を終了したことを示す S_TRUE になるまで、この方法で Process の呼び出しを繰り返す。
DMO でエフェクト テールが発生しなければ、このメソッドは常に S_TRUE (またはエラー コード) を返す。
現在の状態の DMO のコピーを作成する。
構文
HRESULT Clone( IMediaObjectInPlace **ppMediaObject );
パラメータ
- ppMediaObject
- [out] 新しい DMO の IMediaObjectInPlace インターフェイスを受け取るポインタのアドレス。
戻り値
成功すれば S_OK を返す。それ以外の場合は、エラーの原因を示す HRESULT 値を返す。
注意
メソッドが成功すると、メソッドが返す IMediaObjectInPlace インターフェイスには未処理の参照カウントが残る。インターフェイスを使い終わったら、必ずインターフェイスを解放すること。
この DMO によって生じる待機時間を取得する。
構文
HRESULT GetLatency( REFERENCE_TIME *pLatencyTime );
パラメータ
- pLatencyTime
- [out] 待機時間を 100 ナノ秒単位で受け取る変数を指すポインタ。
戻り値
成功すれば S_OK を返す。それ以外の場合は、エラーの原因を示す HRESULT 値を返す。
注意
このメソッドは、各バッファを処理するのに必要な平均時間を返す。通常、この値は、プロセッサ速度および CPU 負荷などの実行時環境の要因に依存する。このメソッドを実装する方法の 1 つは、DMO が履歴データに基づいて稼働平均値を記録する方法である。