IMFStreamDescriptor
COM公式ドキュメント
メディアソース内の 1 つのストリームに関する情報を取得します。
解説(Remarks)
プレゼンテーション記述子には 1 つ以上のストリーム記述子が含まれます。プレゼンテーション記述子からストリーム記述子を取得するには、IMFPresentationDescriptor::GetStreamDescriptorByIndex を呼び出します。新しいストリーム記述子を作成するには、MFCreateStreamDescriptor を呼び出します。
このインターフェイスは、Windows Media Format 11 SDK の再頒布可能コンポーネントがインストールされている場合、次のプラットフォームで利用できます。
- Windows XP with Service Pack 2 (SP2) 以降。
- Windows XP Media Center Edition 2005 で、KB900325 (Windows XP Media Center Edition 2005) および KB925766 (October 2006 Update Rollup for Windows XP Media Center Edition) がインストールされている場合。
メソッド 2
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
ストリームの識別子を取得します。
| pdwStreamIdentifier | DWORD* | out | ストリーム識別子を受け取ります。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
ストリーム識別子は、プレゼンテーション内でストリームを一意に識別します。この識別子はストリームの存続期間中を通じて変化しません。たとえば、ソースの実行中にプレゼンテーションが変化した場合、ストリームのインデックス番号は変わることがありますが、ストリーム識別子は変わりません。
一般に、ストリーム識別子はストリームを識別するという以外に特定の意味を持ちません。一部のメディアソースは、パケット識別子などの意味のある値に基づいてストリーム識別子を割り当てることがありますが、これは実装に依存します。
このインターフェイスは、Windows Media Format 11 SDK の再頒布可能コンポーネントがインストールされている場合、次のプラットフォームで利用できます。
- Windows XP with Service Pack 2 (SP2) 以降。
- Windows XP Media Center Edition 2005 で、KB900325 (Windows XP Media Center Edition 2005) および KB925766 (October 2006 Update Rollup for Windows XP Media Center Edition) がインストールされている場合。
ストリームのメディアタイプハンドラーを取得します。メディアタイプハンドラーを使用すると、ストリームでサポートされているメディアタイプの列挙、現在のメディアタイプの取得、およびメディアタイプの設定を行えます。
| ppMediaTypeHandler | IMFMediaTypeHandler** | out | IMFMediaTypeHandler インターフェイスへのポインターを受け取ります。呼び出し元はこのインターフェイスを解放する必要があります。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
このインターフェイスは、Windows Media Format 11 SDK の再頒布可能コンポーネントがインストールされている場合、次のプラットフォームで利用できます。
- Windows XP with Service Pack 2 (SP2) 以降。
- Windows XP Media Center Edition 2005 で、KB900325 (Windows XP Media Center Edition 2005) および KB925766 (October 2006 Update Rollup for Windows XP Media Center Edition) がインストールされている場合。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IMFStreamDescriptor "{56C03D9C-9DBB-45F5-AB4B-D80F47C05938}" #usecom global IMFStreamDescriptor IID_IMFStreamDescriptor "{}" #comfunc global IMFStreamDescriptor_GetStreamIdentifier 33 var #comfunc global IMFStreamDescriptor_GetMediaTypeHandler 34 sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。#define global IID_IMFStreamDescriptor "{56C03D9C-9DBB-45F5-AB4B-D80F47C05938}" #usecom global IMFStreamDescriptor IID_IMFStreamDescriptor "{}" #comfunc global IMFStreamDescriptor_GetStreamIdentifier 33 sptr #comfunc global IMFStreamDescriptor_GetMediaTypeHandler 34 sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。