Win32 API 日本語リファレンス
ホームMedia.DxMediaObjects › IDMOQualityControl

IDMOQualityControl

COM
IID65abea96-cf36-453f-af8a-705e98f16260継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

IDMOQualityControl インターフェイスは、Microsoft DirectX Media Object (DMO) における品質制御をサポートします。

メソッド 3

vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。

vtbl 3 HRESULT SetNow(LONGLONG rtNow)

SetNow メソッドは、DMO が配信する最も早いタイムスタンプを指定します。

rtNowLONGLONGin配信する最も早いタイムスタンプを指定する基準時刻。

戻り値

HRESULT 値を返します。返される可能性のある値には、次の表に示すものが含まれます。

戻り値 説明
E_FAIL
失敗
S_OK
成功

解説(Remarks)

品質制御が有効な場合、DMO は rtNow より前のタイムスタンプを持つサンプルをすべて破棄します。タイムスタンプが rtNow 以降のサンプルは、可能な限り効率的に処理されます。実装によっては、処理を追従させるために DMO が一部のサンプルをドロップする場合があります。

品質制御が無効な場合、このメソッドは即座の効果を持ちません。ただし、DMO は指定された基準時刻を保存します。後で品質制御が有効化された場合に、この値が使用されます。品質制御を有効にするには、IDMOQualityControl::SetStatus メソッドを呼び出します。

入力されるサンプルにタイムスタンプが付いていない場合、DMO は品質制御を一切実行しません。タイムスタンプは、アプリケーションが IMediaObject::ProcessInput メソッドで設定します。

vtbl 4 HRESULT SetStatus(DWORD dwFlags)

SetStatus メソッドは、品質制御を有効または無効にします。

dwFlagsDWORDin品質制御を有効にするか無効にするかを指定する値。品質制御を有効にするには DMO_QUALITY_STATUS_ENABLED を、無効にするにはゼロを使用します。

戻り値

HRESULT 値を返します。返される可能性のある値には、次の表に示すものが含まれます。

戻り値 説明
E_INVALIDARG
引数が無効です
S_OK
成功

解説(Remarks)

品質制御が有効な場合、DMO はサンプルを時間どおりに配信しようとします。必要に応じて、遅延したサンプルをスキップすることがあります。品質制御が無効な場合、DMO はすべてのサンプルを配信します。品質制御を有効にする場合は、IDMOQualityControl::SetNow メソッドを呼び出して、DMO が処理すべき最も早いタイムスタンプを指定してください。指定しない場合、SetStatus の呼び出しは成功しますが、DMO は品質制御を実行しません。

既定では、品質制御は無効です。

vtbl 5 HRESULT GetStatus(DWORD* pdwFlags)

GetStatus メソッドは、品質制御が有効かどうかを判定します。

pdwFlagsDWORD*out品質制御の状態を受け取る変数へのポインター。品質制御が無効な場合、値はゼロです。品質制御が有効な場合、値は DMO_QUALITY_STATUS_ENABLED になります。

戻り値

HRESULT 値を返します。返される可能性のある値には、次の表に示すものが含まれます。

戻り値 説明
E_POINTER
NULL ポインター値
S_OK
成功
出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
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 方式にも切替可。