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

IAMStreamSelect

COM
IIDc1960960-17f5-11d1-abe1-00a0c905f375継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

IAMStreamSelect インターフェイスは、パーサーフィルターで利用可能なストリームの中から選択を行います。

解説(Remarks)

次のフィルターがこのインターフェイスを実装します。

メソッド 3

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

vtbl 3 HRESULT Count(DWORD* pcStreams)

Count メソッドは、利用可能なストリームの数を取得します。

pcStreamsDWORD*outストリームの数を受け取ります。

戻り値

HRESULT 値を返します。取り得る値には次のものがあります。

リターンコード 説明
S_OK
成功しました。
VFW_E_NOT_CONNECTED
ピンが接続されていません。
vtbl 4 HRESULT Info(INT lIndex, AM_MEDIA_TYPE** ppmt, DWORD* pdwFlags, DWORD* plcid, DWORD* pdwGroup, LPWSTR* ppszName, IUnknown** ppObject, IUnknown** ppUnk)

Info メソッドは、指定したストリームに関する情報を取得します。

lIndexINTinストリームの 0 から始まるインデックスです。
ppmtAM_MEDIA_TYPE**outoptionalストリームのメディアタイプへのポインターを受け取る変数のアドレスです。このパラメーターは省略可能で、NULL を指定できます。NULL 以外の値の場合、このメソッドは AM_MEDIA_TYPE 構造体へのポインターを返します。呼び出し側は、フォーマットブロックを含めてこの構造体を削除する必要があります。(DirectShow 基本クラスライブラリの DeleteMediaType 関数を使用できます。)
pdwFlagsDWORD*outoptional

次の値のいずれかを受け取る変数へのポインターです。

説明
0 このストリームは無効です。
AMSTREAMSELECTINFO_ENABLED このストリームは有効であり、同じグループ内の他のストリームも有効になっている場合があります。
AMSTREAMSELECTINFO_EXCLUSIVE このストリームは、グループ内で有効になっている唯一のストリームです。

このパラメーターは省略可能で、NULL を指定できます。

plcidDWORD*outoptionalロケールコンテキスト (LCID) 値を受け取る変数へのポインターです。ストリームが特定のロケールに関連付けられている場合、LCID がこの変数に返されます。それ以外の場合、この変数には値 0 が返されます。このパラメーターは省略可能で、NULL を指定できます。
pdwGroupDWORD*outoptionalストリームが関連付けられている論理グループを受け取る変数へのポインターです。このパラメーターは省略可能で、NULL を指定できます。
ppszNameLPWSTR*outoptionalストリーム名へのポインターを受け取る変数のアドレスです。呼び出し側は、CoTaskMemFree 関数を呼び出して、返された文字列を解放する必要があります。このパラメーターは省略可能で、NULL を指定できます。
ppObjectIUnknown**outoptional

IUnknown インターフェイスポインターを受け取る変数のアドレスです。このメソッドは、ストリームに関連付けられたピンまたはフィルターへのポインターを返す場合と、値 NULL を返す場合があります。このメソッドが NULL 以外の値を返した場合、呼び出し側は IUnknown ポインターを解放する必要があります。

IAMStreamSelect::Enable メソッドを呼び出すと、このメソッドが返したオブジェクトが無効になる場合があります。

このパラメーターは省略可能で、NULL を指定できます。

MPEG-1 Stream SplitterMPEG-2 SplitterSAMI (CC) Parser の各フィルターは、選択されたストリームに関連付けられたピンへのポインターを返します。

ppUnkIUnknown**outoptional

IUnknown インターフェイスポインターを受け取る変数のアドレスです。このメソッドは、ストリームに固有のインターフェイスへのポインターを返す場合と、値 NULL を返す場合があります。このメソッドが NULL 以外の値を返した場合、呼び出し側は IUnknown ポインターを解放する必要があります。このパラメーターは省略可能で、NULL を指定できます。

MPEG-1 Stream Splitter、MPEG-2 Splitter、SAMI (CC) Parser の各フィルターは、いずれも値 NULL を返します。サードパーティ製のフィルターは、カスタムフィルターインターフェイスへのポインターを返す場合があります。

戻り値

HRESULT 値を返します。取り得る値には次のものがあります。

リターンコード 説明
E_FAIL
失敗しました。
E_OUTOFMEMORY
メモリが不足しています。
S_FALSE
インデックスが範囲外です。
S_OK
成功しました。
vtbl 5 HRESULT Enable(INT lIndex, DWORD dwFlags)

Enable メソッドは、指定したストリームを有効または無効にします。

lIndexINTinストリームの 0 から始まるインデックスです。
dwFlagsDWORDin

ストリームを有効にするか無効にするかを示すフラグです。次の値のいずれかを使用します。

説明
0 このストリームを含むグループ内のすべてのストリームを無効にします。
AMSTREAMSELECTENABLE_ENABLE 指定したグループ内でこのストリームのみを有効にし、他のすべてを無効にします。
AMSTREAMSELECTENABLE_ENABLEALL このストリームを含むグループ内のすべてのストリームを有効にします。

戻り値

HRESULT 値を返します。取り得る値には次のものがあります。

リターンコード 説明
E_FAIL
失敗しました。
E_INVALIDARG
ストリーム ID が無効です。
E_NOTIMPL
フィルターが指定されたフラグをサポートしていません。
S_OK
成功しました。
VFW_E_NOT_CONNECTED
ピンが接続されていません。
出典・ライセンス: 上記「公式ドキュメント」の内容は 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_IAMStreamSelect "{C1960960-17F5-11D1-ABE1-00A0C905F375}"
#usecom global IAMStreamSelect IID_IAMStreamSelect "{}"
#comfunc global IAMStreamSelect_Count   3 var
#comfunc global IAMStreamSelect_Info    4 int,var,var,var,var,var,sptr,sptr
#comfunc global IAMStreamSelect_Enable  5 int,int
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。