IMediaStreamFilter
COM公式ドキュメント
注意 このインターフェイスは非推奨です。新しいアプリケーションでは使用しないでください。IMediaStreamFilter インターフェイスは Media Stream フィルターによってサポートされており、マルチメディアストリームオブジェクトが内部的に使用します。アプリケーションはこのインターフェイスを使用しないでください。
メソッド 9
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
注意 このインターフェイスは非推奨です。新しいアプリケーションでは使用しないでください。AddMediaStream メソッドは、メディアストリームオブジェクトを基盤となるフィルターグラフに接続します。
| pAMMediaStream | IAMMediaStream* | in | メディアストリームオブジェクトの IAMMediaStream インターフェイスへのポインター。 |
戻り値
HRESULT 値を返します。指定できる値には次のものがあります。
| 戻り値 | 説明 |
|---|---|
| メモリ不足 | |
|
目的 ID が重複しています |
| 成功 |
注意 このインターフェイスは非推奨です。新しいアプリケーションでは使用しないでください。GetMediaStream メソッドは、目的 ID で指定されたメディアストリームを取得します。
| idPurpose | GUID* | in | 取得するストリームを指定する MSPID 値への参照。 |
| ppMediaStream | IMediaStream** | out | IMediaStream インターフェイスポインターを受け取る変数のアドレス。 |
戻り値
HRESULT 値を返します。指定できる値には次のものがあります。
| 戻り値 | 説明 |
|---|---|
| NULL ポインター引数です。 | |
|
一致するストリームが見つかりませんでした。 |
| 成功しました。 |
解説(Remarks)
メソッドが成功した場合、呼び出し側は IMediaStream インターフェイスを解放する必要があります。
注意 このインターフェイスは非推奨です。新しいアプリケーションでは使用しないでください。EnumMediaStreams メソッドは、インデックスで指定されたメディアストリームを取得します。
| Index | INT | in | 取得するメディアストリームのインデックス。 |
| ppMediaStream | IMediaStream** | out | IMediaStream インターフェイスポインターを受け取る変数のアドレス。 |
戻り値
解説(Remarks)
メソッドが成功した場合、呼び出し側は IMediaStream インターフェイスを解放する必要があります。
注意 このインターフェイスは非推奨です。新しいアプリケーションでは使用しないでください。SupportSeeking メソッドは、シークをサポートするためにフィルターを初期化します。このメソッドはマルチメディアストリームオブジェクトが呼び出します。
| bRenderer | BOOL | in | ストリームがレンダリングされているかどうかを指定するブール値。ストリーム型が STREAMTYPE_READ の場合は TRUE を、それ以外の場合は FALSE を使用します。 |
戻り値
HRESULT 値を返します。指定できる値には次のものがあります。
| 戻り値 | 説明 |
|---|---|
| グラフにシーク可能なストリームが含まれていません。 | |
| 成功しました。 |
注意 このインターフェイスは非推奨です。新しいアプリケーションでは使用しないでください。ReferenceTimeToStreamTime メソッドは、参照時間をストリーム時間に変換します。
| pTime | LONGLONG* | inout | 入力時には、変換する参照時間を指定します。出力時には、対応するストリーム時間が格納されます。 |
戻り値
解説(Remarks)
ストリーム時間は、現在の参照時間から、グラフが最後に実行を開始したときの参照時間を差し引いた値に等しくなります。
注意 このインターフェイスは非推奨です。新しいアプリケーションでは使用しないでください。GetCurrentStreamTime メソッドは、現在のストリーム時間を取得します。
| pCurrentStreamTime | LONGLONG* | out | ストリーム時間を 100 ナノ秒単位で受け取る変数へのポインター。 |
戻り値
HRESULT 値を返します。指定できる値には次のものがあります。
| 戻り値 | 説明 |
|---|---|
| NULL ポインター引数です。 | |
| グラフが実行されていないか、参照クロックがありません。 | |
| 成功しました。 |
解説(Remarks)
ストリーム時間は、グラフが実行中であり、かつ参照クロックを持っている場合にのみ定義されます。それ以外の場合、*pCurrentStreamTime はゼロに設定され、メソッドは S_FALSE を返します。
注意 このインターフェイスは非推奨です。新しいアプリケーションでは使用しないでください。WaitUntil メソッドは、指定されたストリーム時間までフィルターをブロックさせます。このメソッドはフィルターのピンが呼び出します。ピンはフィルターをフラッシュすることで待機を中断できます。
| WaitStreamTime | LONGLONG | in | ストリーム時間を 100 ナノ秒単位で指定します。 |
戻り値
解説(Remarks)
グラフに参照クロックがない場合、メソッドは E_FAIL を返します。
注意 このインターフェイスは非推奨です。新しいアプリケーションでは使用しないでください。Flush メソッドは、いずれかのピンがデータをフラッシュしたことをフィルターに通知します。このメソッドはフィルターの入力ピンが呼び出します。
| bCancelEOS | BOOL | in | ピンの以前のストリーム終端 (end-of-stream) 通知をキャンセルするかどうかを示すブール値。TRUE の場合、フィルターは内部のストリーム終端カウントをデクリメントします。 |
戻り値
成功した場合は S_OK を、それ以外の場合はエラーコードを返します。
注意 このインターフェイスは非推奨です。新しいアプリケーションでは使用しないでください。EndOfStream メソッドは、ストリームの終端を通知します。Media Stream フィルターの入力ピンが、フィルターに対してこのメソッドを呼び出します。
戻り値
成功した場合は S_OK を、それ以外の場合はエラーコードを返します。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IMediaStreamFilter "{BEBE595E-9A6F-11D0-8FDE-00C04FD9189D}" #usecom global IMediaStreamFilter IID_IMediaStreamFilter "{}" #comfunc global IMediaStreamFilter_AddMediaStream 15 sptr #comfunc global IMediaStreamFilter_GetMediaStream 16 var,sptr #comfunc global IMediaStreamFilter_EnumMediaStreams 17 int,sptr #comfunc global IMediaStreamFilter_SupportSeeking 18 int #comfunc global IMediaStreamFilter_ReferenceTimeToStreamTime 19 var #comfunc global IMediaStreamFilter_GetCurrentStreamTime 20 var #comfunc global IMediaStreamFilter_WaitUntil 21 int64 #comfunc global IMediaStreamFilter_Flush 22 int #comfunc global IMediaStreamFilter_EndOfStream 23 ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。#define global IID_IMediaStreamFilter "{BEBE595E-9A6F-11D0-8FDE-00C04FD9189D}" #usecom global IMediaStreamFilter IID_IMediaStreamFilter "{}" #comfunc global IMediaStreamFilter_AddMediaStream 15 sptr #comfunc global IMediaStreamFilter_GetMediaStream 16 sptr,sptr #comfunc global IMediaStreamFilter_EnumMediaStreams 17 int,sptr #comfunc global IMediaStreamFilter_SupportSeeking 18 int #comfunc global IMediaStreamFilter_ReferenceTimeToStreamTime 19 sptr #comfunc global IMediaStreamFilter_GetCurrentStreamTime 20 sptr #comfunc global IMediaStreamFilter_WaitUntil 21 int64 #comfunc global IMediaStreamFilter_Flush 22 int #comfunc global IMediaStreamFilter_EndOfStream 23 ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。