IQualProp
COM公式ドキュメント
IQualProp インターフェイスは、ビデオレンダラーからパフォーマンス情報を取得するためのメソッドを提供します。
メソッド 6
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
get_FramesDroppedInRenderer メソッドは、レンダラーがドロップしたフレーム数を取得します。
| pcFrames | INT* | out | レンダラーがドロップしたフレーム数へのポインター。 |
戻り値
HRESULT 値を返します。
解説(Remarks)
プロパティ ページは、このメソッドを使用してレンダラーからデータを取得します。
get_FramesDrawn メソッドは、ストリーミング開始以降に実際に描画されたフレーム数を取得します。
| pcFramesDrawn | INT* | out | ストリーミング開始以降に描画されたフレーム数へのポインター。 |
戻り値
HRESULT 値を返します。
get_AvgFrameRate メソッドは、ストリーミング開始以降の実際の平均フレームレートを取得します。
| piAvgFrameRate | INT* | out | 1 秒あたりの実際のフレーム数を 100 倍した値を受け取る変数へのポインター。たとえば、平均フレームレートが 1 秒あたり 30 フレームの場合は 3000 として表されます。 |
戻り値
HRESULT 値を返します。
解説(Remarks)
再生中の実際のフレームレートは、オーサリング時のフレームレートより低くなる場合があります。実際のフレームレートとオーサリング時のフレームレートの詳細については、VIDEOINFOHEADER 構造体の「解説」セクションを参照してください。
get_Jitter メソッドは、ビデオレンダラーに送られる連続するフレーム間のジッター(時間のばらつき)を取得します。
| iJitter | INT* | out | フレーム間時間の標準偏差をミリ秒単位で受け取ります。 |
戻り値
HRESULT 値を返します。
get_AvgSyncOffset メソッドは、ビデオフレームが表示されるべきだった時刻と実際に表示された時刻との平均時間差を取得します。
| piAvg | INT* | out | 時間差へのポインター(ミリ秒単位)。 |
戻り値
HRESULT 値を返します。
get_DevSyncOffset メソッドは、ビデオフレームが表示されるべきだった時刻と実際に表示された時刻との平均時間差を取得します。
| piDev | INT* | out | 表示されるビデオフレームの精度を示す値へのポインター。 |
戻り値
HRESULT 値を返します。
解説(Remarks)
ネットワークからビデオを再生する場合、ネットワークの不具合によって再生が乱れることがよくあります。このため、ビデオフレームの精度を単純な平均で表すのは適切ではありません。標準偏差を見ることで、全体的な精度をより的確に把握できます。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IQualProp "{1BD0ECB0-F8E2-11CE-AAC6-0020AF0B99A3}" #usecom global IQualProp IID_IQualProp "{}" #comfunc global IQualProp_get_FramesDroppedInRenderer 3 var #comfunc global IQualProp_get_FramesDrawn 4 var #comfunc global IQualProp_get_AvgFrameRate 5 var #comfunc global IQualProp_get_Jitter 6 var #comfunc global IQualProp_get_AvgSyncOffset 7 var #comfunc global IQualProp_get_DevSyncOffset 8 var ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。#define global IID_IQualProp "{1BD0ECB0-F8E2-11CE-AAC6-0020AF0B99A3}" #usecom global IQualProp IID_IQualProp "{}" #comfunc global IQualProp_get_FramesDroppedInRenderer 3 sptr #comfunc global IQualProp_get_FramesDrawn 4 sptr #comfunc global IQualProp_get_AvgFrameRate 5 sptr #comfunc global IQualProp_get_Jitter 6 sptr #comfunc global IQualProp_get_AvgSyncOffset 7 sptr #comfunc global IQualProp_get_DevSyncOffset 8 sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。