IMFQualityManager
COM公式ドキュメント
再生品質を調整します。このインターフェイスは品質マネージャーによって公開されます。
解説(Remarks)
Media Foundation は、再生用に調整された既定の品質マネージャーを提供します。アプリケーションは、Media Session の作成時に MF_SESSION_QUALITY_MANAGER 属性を設定することで、カスタム品質マネージャーを Media Session に提供できます。
メソッド 6
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
Media Session が新しいトポロジの再生を開始しようとするときに呼び出されます。
| pTopology | IMFTopology* | in | 新しいトポロジの IMFTopology インターフェイスへのポインター。このパラメーターが NULL の場合、品質マネージャーは以前のトポロジへの参照をすべて解放する必要があります。 |
戻り値
このメソッドは HRESULT を返します。取り得る値には次の表に示すものが含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 |
解説(Remarks)
一般的な品質マネージャーでは、このメソッドは次の処理を行います。
- トポロジ内のノードを列挙します。
- IMFTopologyNode::GetObject を呼び出して、ノードの基になるオブジェクトを取得します。
- IMFQualityAdvise インターフェイスをクエリします。
Media Session がプレゼンテーション クロックを選択したときに呼び出されます。
| pClock | IMFPresentationClock* | in | プレゼンテーション クロックの IMFPresentationClock インターフェイスへのポインター。このパラメーターが NULL の場合、品質マネージャーはプレゼンテーション クロックへの参照をすべて解放する必要があります。 |
戻り値
このメソッドは HRESULT を返します。取り得る値には次の表に示すものが含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 |
メディア プロセッサーが入力サンプルをパイプライン コンポーネントに配信しようとするときに呼び出されます。
| pNode | IMFTopologyNode* | in | パイプライン コンポーネントを表すトポロジ ノードの IMFTopologyNode インターフェイスへのポインター。 |
| lInputIndex | INT | in | トポロジ ノード上の入力ストリームのインデックス。 |
| pSample | IMFSample* | in | 入力サンプルの IMFSample インターフェイスへのポインター。 |
戻り値
このメソッドは HRESULT を返します。取り得る値には次の表に示すものが含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 |
解説(Remarks)
このメソッドは、各パイプライン コンポーネントを通過するすべてのサンプルに対して呼び出されます。そのため、パイプラインに過度の遅延をもたらさないよう、メソッドは速やかに戻る必要があります。
メディア プロセッサーがパイプライン コンポーネントから出力サンプルを取得した後に呼び出されます。
| pNode | IMFTopologyNode* | in | パイプライン コンポーネントを表すトポロジ ノードの IMFTopologyNode インターフェイスへのポインター。 |
| lOutputIndex | INT | in | トポロジ ノード上の出力ストリームのインデックス。 |
| pSample | IMFSample* | in | 出力サンプルの IMFSample インターフェイスへのポインター。 |
戻り値
このメソッドは HRESULT を返します。取り得る値には次の表に示すものが含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 |
解説(Remarks)
このメソッドは、各パイプライン コンポーネントを通過するすべてのサンプルに対して呼び出されます。そのため、パイプラインに過度の遅延をもたらさないよう、メソッドは速やかに戻る必要があります。
パイプライン コンポーネントが MEQualityNotify イベントを送信したときに呼び出されます。
| pObject | IUnknown* | in | イベントを送信したオブジェクトの IUnknown インターフェイスへのポインター。このオブジェクトは、Media Foundation 変換 (MFT) またはストリーム シンクのいずれかです。 |
| pEvent | IMFMediaEvent* | in | イベントの IMFMediaEvent インターフェイスへのポインター。 |
戻り値
このメソッドは HRESULT を返します。取り得る値には次の表に示すものが含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 |
Media Session がシャットダウンするときに呼び出されます。
戻り値
このメソッドは HRESULT を返します。取り得る値には次の表に示すものが含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 |
解説(Remarks)
このメソッドが呼び出されたとき、品質マネージャーは Media Session へのすべての参照を解放する必要があります。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IMFQualityManager "{8D009D86-5B9F-4115-B1FC-9F80D52AB8AB}"
#usecom global IMFQualityManager IID_IMFQualityManager "{}"
#comfunc global IMFQualityManager_NotifyTopology 3 sptr
#comfunc global IMFQualityManager_NotifyPresentationClock 4 sptr
#comfunc global IMFQualityManager_NotifyProcessInput 5 sptr,int,sptr
#comfunc global IMFQualityManager_NotifyProcessOutput 6 sptr,int,sptr
#comfunc global IMFQualityManager_NotifyQualityEvent 7 sptr,sptr
#comfunc global IMFQualityManager_Shutdown 8
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。