IAMStreamSelect
COM公式ドキュメント
IAMStreamSelect インターフェイスは、パーサーフィルターで利用可能なストリームの中から選択を行います。
解説(Remarks)
次のフィルターがこのインターフェイスを実装します。
- MPEG-1 Stream Splitter フィルター
- MPEG-2 Splitter フィルター
- SAMI (CC) Parser フィルター
メソッド 3
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
Count メソッドは、利用可能なストリームの数を取得します。
| pcStreams | DWORD* | out | ストリームの数を受け取ります。 |
戻り値
HRESULT 値を返します。取り得る値には次のものがあります。
| リターンコード | 説明 |
|---|---|
| 成功しました。 | |
| ピンが接続されていません。 |
Info メソッドは、指定したストリームに関する情報を取得します。
| lIndex | INT | in | ストリームの 0 から始まるインデックスです。 | ||||||||
| ppmt | AM_MEDIA_TYPE** | outoptional | ストリームのメディアタイプへのポインターを受け取る変数のアドレスです。このパラメーターは省略可能で、NULL を指定できます。NULL 以外の値の場合、このメソッドは AM_MEDIA_TYPE 構造体へのポインターを返します。呼び出し側は、フォーマットブロックを含めてこの構造体を削除する必要があります。(DirectShow 基本クラスライブラリの DeleteMediaType 関数を使用できます。) | ||||||||
| pdwFlags | DWORD* | outoptional | 次の値のいずれかを受け取る変数へのポインターです。
このパラメーターは省略可能で、NULL を指定できます。 | ||||||||
| plcid | DWORD* | outoptional | ロケールコンテキスト (LCID) 値を受け取る変数へのポインターです。ストリームが特定のロケールに関連付けられている場合、LCID がこの変数に返されます。それ以外の場合、この変数には値 0 が返されます。このパラメーターは省略可能で、NULL を指定できます。 | ||||||||
| pdwGroup | DWORD* | outoptional | ストリームが関連付けられている論理グループを受け取る変数へのポインターです。このパラメーターは省略可能で、NULL を指定できます。 | ||||||||
| ppszName | LPWSTR* | outoptional | ストリーム名へのポインターを受け取る変数のアドレスです。呼び出し側は、CoTaskMemFree 関数を呼び出して、返された文字列を解放する必要があります。このパラメーターは省略可能で、NULL を指定できます。 | ||||||||
| ppObject | IUnknown** | outoptional | IUnknown インターフェイスポインターを受け取る変数のアドレスです。このメソッドは、ストリームに関連付けられたピンまたはフィルターへのポインターを返す場合と、値 NULL を返す場合があります。このメソッドが NULL 以外の値を返した場合、呼び出し側は IUnknown ポインターを解放する必要があります。 IAMStreamSelect::Enable メソッドを呼び出すと、このメソッドが返したオブジェクトが無効になる場合があります。 このパラメーターは省略可能で、NULL を指定できます。 MPEG-1 Stream Splitter、MPEG-2 Splitter、SAMI (CC) Parser の各フィルターは、選択されたストリームに関連付けられたピンへのポインターを返します。 | ||||||||
| ppUnk | IUnknown** | outoptional | IUnknown インターフェイスポインターを受け取る変数のアドレスです。このメソッドは、ストリームに固有のインターフェイスへのポインターを返す場合と、値 NULL を返す場合があります。このメソッドが NULL 以外の値を返した場合、呼び出し側は IUnknown ポインターを解放する必要があります。このパラメーターは省略可能で、NULL を指定できます。 MPEG-1 Stream Splitter、MPEG-2 Splitter、SAMI (CC) Parser の各フィルターは、いずれも値 NULL を返します。サードパーティ製のフィルターは、カスタムフィルターインターフェイスへのポインターを返す場合があります。 |
戻り値
HRESULT 値を返します。取り得る値には次のものがあります。
| リターンコード | 説明 |
|---|---|
| 失敗しました。 | |
| メモリが不足しています。 | |
| インデックスが範囲外です。 | |
| 成功しました。 |
Enable メソッドは、指定したストリームを有効または無効にします。
| lIndex | INT | in | ストリームの 0 から始まるインデックスです。 | ||||||||
| dwFlags | DWORD | in | ストリームを有効にするか無効にするかを示すフラグです。次の値のいずれかを使用します。
|
戻り値
HRESULT 値を返します。取り得る値には次のものがあります。
| リターンコード | 説明 |
|---|---|
| 失敗しました。 | |
| ストリーム ID が無効です。 | |
| フィルターが指定されたフラグをサポートしていません。 | |
| 成功しました。 | |
| ピンが接続されていません。 |
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 指定が可能。#define global IID_IAMStreamSelect "{C1960960-17F5-11D1-ABE1-00A0C905F375}" #usecom global IAMStreamSelect IID_IAMStreamSelect "{}" #comfunc global IAMStreamSelect_Count 3 sptr #comfunc global IAMStreamSelect_Info 4 int,sptr,sptr,sptr,sptr,sptr,sptr,sptr #comfunc global IAMStreamSelect_Enable 5 int,int ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。