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

IMFSequencerSource

COM
IID197cd219-19cb-4de1-a64c-acf2edcbe59e継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

シーケンサーソースによって実装されます。

メソッド 5

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

vtbl 3 HRESULT AppendTopology(IMFTopology* pTopology, DWORD dwFlags, DWORD* pdwId)

キューの末尾にトポロジーを追加します。

pTopologyIMFTopology*inトポロジーの IMFTopology インターフェイスへのポインター。このポインターを NULL にすることはできません。アプリケーションが NULL を渡した場合、呼び出しは E_INVALIDARG エラーコードで失敗します。
dwFlagsDWORDinMFSequencerTopologyFlags 列挙体のフラグの組み合わせ。
pdwIdDWORD*outこのトポロジーに対するシーケンサー要素識別子を受け取ります。

戻り値

このメソッドは HRESULT を返します。取り得る値には、次の表に示すものが含まれますが、これらに限定されません。

戻り値 説明
S_OK
メソッドは成功しました。
MF_E_ATTRIBUTENOTFOUND
ソーストポロジーノードに、次のいずれかの属性がありません。

解説(Remarks)

シーケンサーは、キューに入れられた順序でトポロジーを再生します。プリロールするために必要な数だけトポロジーをキューに入れることができます。

アプリケーションは、Media Session に最後のトポロジーをキューに入れたことをシーケンサーに通知する必要があります。最後のトポロジーを指定するには、トポロジーを追加するときに dwFlags パラメーターに SequencerTopologyFlags_Last フラグを設定します。シーケンサーはこの情報を使用して、パイプラインとともに再生を終了します。それ以外の場合、シーケンサーは新しいトポロジーがキューに入れられるのを無期限に待機します。

vtbl 4 HRESULT DeleteTopology(DWORD dwId)

キューからトポロジーを削除します。

dwIdDWORDin削除するトポロジーのシーケンサー要素識別子。

戻り値

このメソッドは HRESULT を返します。取り得る値には、次の表に示すものが含まれますが、これらに限定されません。

戻り値 説明
S_OK
メソッドは成功しました。
vtbl 5 HRESULT GetPresentationContext(IMFPresentationDescriptor* pPD, DWORD* pId, IMFTopology** ppTopology)

プレゼンテーション記述子を、それに関連付けられたシーケンサー要素識別子およびそれが表すトポロジーにマッピングします。

pPDIMFPresentationDescriptor*inプレゼンテーション記述子の IMFPresentationDescriptor インターフェイスへのポインター。
pIdDWORD*outoptionalシーケンサー要素識別子を受け取ります。この値は、アプリケーションが IMFSequencerSource::AppendTopology を呼び出すときに、シーケンサーソースによって割り当てられます。このパラメーターは省略可能で、NULL にすることができます。
ppTopologyIMFTopology**outoptionalアプリケーションがシーケンサーソースに追加した元のトポロジーの IMFTopology インターフェイスへのポインターを受け取ります。呼び出し元はこのインターフェイスを解放する必要があります。シーケンサーソースが次のプレゼンテーションに切り替わっている場合、このパラメーターは NULL の値を受け取ることがあります。このパラメーターは省略可能で、NULL にすることができます。

戻り値

このメソッドは HRESULT を返します。取り得る値には、次の表に示すものが含まれますが、これらに限定されません。

戻り値 説明
S_OK
メソッドは成功しました。
E_INVALIDARG
プレゼンテーション記述子が無効です。
MF_S_SEQUENCER_CONTEXT_CANCELED
このセグメントはキャンセルされました。

解説(Remarks)

ppTopology で返されるトポロジーは、アプリケーションが AppendTopology で指定した元のトポロジーです。このトポロジー内のソースノードには、ネイティブソースへのポインターが含まれています。このトポロジーを Media Session にキューへ入れないでください。代わりに、IMFMediaSourceTopologyProvider::GetMediaSourceTopology を呼び出して、シーケンサーソースによって変更されたトポロジーを取得してください。変更されたトポロジー内のソースノードには、ネイティブソースではなくシーケンサーソースへのポインターが含まれています。

vtbl 6 HRESULT UpdateTopology(DWORD dwId, IMFTopology* pTopology)

キュー内のトポロジーを更新します。

dwIdDWORDin更新するトポロジーのシーケンサー要素識別子。
pTopologyIMFTopology*in更新後のトポロジーオブジェクトの IMFTopology インターフェイスへのポインター。

戻り値

このメソッドは HRESULT を返します。取り得る値には、次の表に示すものが含まれますが、これらに限定されません。

戻り値 説明
S_OK
メソッドは成功しました。
MF_E_SHUTDOWN
シーケンサーソースはシャットダウンされています。

解説(Remarks)

このメソッドは非同期です。操作が完了すると、シーケンサーソースは MESequencerSourceTopologyUpdated イベントを送信します。

vtbl 7 HRESULT UpdateTopologyFlags(DWORD dwId, DWORD dwFlags)

キュー内のトポロジーのフラグを更新します。

dwIdDWORDin更新するトポロジーのシーケンサー要素識別子。
dwFlagsDWORDinMFSequencerTopologyFlags 列挙体のフラグのビットごとの OR

戻り値

このメソッドは HRESULT を返します。取り得る値には、次の表に示すものが含まれますが、これらに限定されません。

戻り値 説明
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_IMFSequencerSource "{197CD219-19CB-4DE1-A64C-ACF2EDCBE59E}"
#usecom global IMFSequencerSource IID_IMFSequencerSource "{}"
#comfunc global IMFSequencerSource_AppendTopology          3 sptr,int,var
#comfunc global IMFSequencerSource_DeleteTopology          4 int
#comfunc global IMFSequencerSource_GetPresentationContext  5 sptr,var,sptr
#comfunc global IMFSequencerSource_UpdateTopology          6 int,sptr
#comfunc global IMFSequencerSource_UpdateTopologyFlags     7 int,int
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。