IDMOQualityControl
COM公式ドキュメント
IDMOQualityControl インターフェイスは、Microsoft DirectX Media Object (DMO) における品質制御をサポートします。
メソッド 3
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
SetNow メソッドは、DMO が配信する最も早いタイムスタンプを指定します。
| rtNow | LONGLONG | in | 配信する最も早いタイムスタンプを指定する基準時刻。 |
戻り値
解説(Remarks)
品質制御が有効な場合、DMO は rtNow より前のタイムスタンプを持つサンプルをすべて破棄します。タイムスタンプが rtNow 以降のサンプルは、可能な限り効率的に処理されます。実装によっては、処理を追従させるために DMO が一部のサンプルをドロップする場合があります。
品質制御が無効な場合、このメソッドは即座の効果を持ちません。ただし、DMO は指定された基準時刻を保存します。後で品質制御が有効化された場合に、この値が使用されます。品質制御を有効にするには、IDMOQualityControl::SetStatus メソッドを呼び出します。
入力されるサンプルにタイムスタンプが付いていない場合、DMO は品質制御を一切実行しません。タイムスタンプは、アプリケーションが IMediaObject::ProcessInput メソッドで設定します。
SetStatus メソッドは、品質制御を有効または無効にします。
| dwFlags | DWORD | in | 品質制御を有効にするか無効にするかを指定する値。品質制御を有効にするには DMO_QUALITY_STATUS_ENABLED を、無効にするにはゼロを使用します。 |
戻り値
HRESULT 値を返します。返される可能性のある値には、次の表に示すものが含まれます。
| 戻り値 | 説明 |
|---|---|
| 引数が無効です | |
| 成功 |
解説(Remarks)
品質制御が有効な場合、DMO はサンプルを時間どおりに配信しようとします。必要に応じて、遅延したサンプルをスキップすることがあります。品質制御が無効な場合、DMO はすべてのサンプルを配信します。品質制御を有効にする場合は、IDMOQualityControl::SetNow メソッドを呼び出して、DMO が処理すべき最も早いタイムスタンプを指定してください。指定しない場合、SetStatus の呼び出しは成功しますが、DMO は品質制御を実行しません。
既定では、品質制御は無効です。
GetStatus メソッドは、品質制御が有効かどうかを判定します。
| pdwFlags | DWORD* | out | 品質制御の状態を受け取る変数へのポインター。品質制御が無効な場合、値はゼロです。品質制御が有効な場合、値は DMO_QUALITY_STATUS_ENABLED になります。 |
戻り値
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IDMOQualityControl "{65ABEA96-CF36-453F-AF8A-705E98F16260}" #usecom global IDMOQualityControl IID_IDMOQualityControl "{}" #comfunc global IDMOQualityControl_SetNow 3 int64 #comfunc global IDMOQualityControl_SetStatus 4 int #comfunc global IDMOQualityControl_GetStatus 5 var ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。#define global IID_IDMOQualityControl "{65ABEA96-CF36-453F-AF8A-705E98F16260}" #usecom global IDMOQualityControl IID_IDMOQualityControl "{}" #comfunc global IDMOQualityControl_SetNow 3 int64 #comfunc global IDMOQualityControl_SetStatus 4 int #comfunc global IDMOQualityControl_GetStatus 5 sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。