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

IMediaStreamFilter

COM
IIDbebe595e-9a6f-11d0-8fde-00c04fd9189d継承元IBaseFilter自前メソッド開始 vtbl15

公式ドキュメント

注意 このインターフェイスは非推奨です。新しいアプリケーションでは使用しないでください。IMediaStreamFilter インターフェイスは Media Stream フィルターによってサポートされており、マルチメディアストリームオブジェクトが内部的に使用します。アプリケーションはこのインターフェイスを使用しないでください。

メソッド 9

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

vtbl 15 HRESULT AddMediaStream(IAMMediaStream* pAMMediaStream)

注意 このインターフェイスは非推奨です。新しいアプリケーションでは使用しないでください。AddMediaStream メソッドは、メディアストリームオブジェクトを基盤となるフィルターグラフに接続します。

pAMMediaStreamIAMMediaStream*inメディアストリームオブジェクトの IAMMediaStream インターフェイスへのポインター。

戻り値

HRESULT 値を返します。指定できる値には次のものがあります。

戻り値 説明
E_OUTOFMEMORY
メモリ不足
MS_E_PURPOSEID
目的 ID が重複しています
S_OK
成功
vtbl 16 HRESULT GetMediaStream(GUID* idPurpose, IMediaStream** ppMediaStream)

注意 このインターフェイスは非推奨です。新しいアプリケーションでは使用しないでください。GetMediaStream メソッドは、目的 ID で指定されたメディアストリームを取得します。

idPurposeGUID*in取得するストリームを指定する MSPID 値への参照。
ppMediaStreamIMediaStream**outIMediaStream インターフェイスポインターを受け取る変数のアドレス。

戻り値

HRESULT 値を返します。指定できる値には次のものがあります。

戻り値 説明
E_POINTER
NULL ポインター引数です。
MS_E_NOSTREAM
一致するストリームが見つかりませんでした。
S_OK
成功しました。

解説(Remarks)

メソッドが成功した場合、呼び出し側は IMediaStream インターフェイスを解放する必要があります。

vtbl 17 HRESULT EnumMediaStreams(INT Index, IMediaStream** ppMediaStream)

注意 このインターフェイスは非推奨です。新しいアプリケーションでは使用しないでください。EnumMediaStreams メソッドは、インデックスで指定されたメディアストリームを取得します。

IndexINTin取得するメディアストリームのインデックス。
ppMediaStreamIMediaStream**outIMediaStream インターフェイスポインターを受け取る変数のアドレス。

戻り値

HRESULT 値を返します。指定できる値には次のものがあります。

戻り値 説明
S_FALSE
インデックスが範囲外です。
S_OK
成功しました。

解説(Remarks)

メソッドが成功した場合、呼び出し側は IMediaStream インターフェイスを解放する必要があります。

vtbl 18 HRESULT SupportSeeking(BOOL bRenderer)

注意 このインターフェイスは非推奨です。新しいアプリケーションでは使用しないでください。SupportSeeking メソッドは、シークをサポートするためにフィルターを初期化します。このメソッドはマルチメディアストリームオブジェクトが呼び出します。

bRendererBOOLinストリームがレンダリングされているかどうかを指定するブール値。ストリーム型が STREAMTYPE_READ の場合は TRUE を、それ以外の場合は FALSE を使用します。

戻り値

HRESULT 値を返します。指定できる値には次のものがあります。

戻り値 説明
E_NOINTERFACE
グラフにシーク可能なストリームが含まれていません。
S_OK
成功しました。
vtbl 19 HRESULT ReferenceTimeToStreamTime(LONGLONG* pTime)

注意 このインターフェイスは非推奨です。新しいアプリケーションでは使用しないでください。ReferenceTimeToStreamTime メソッドは、参照時間をストリーム時間に変換します。

pTimeLONGLONG*inout入力時には、変換する参照時間を指定します。出力時には、対応するストリーム時間が格納されます。

戻り値

HRESULT 値を返します。指定できる値には次のものがあります。

戻り値 説明
S_FALSE
グラフに参照クロックがありません。
S_OK
成功しました。

解説(Remarks)

ストリーム時間は、現在の参照時間から、グラフが最後に実行を開始したときの参照時間を差し引いた値に等しくなります。

vtbl 20 HRESULT GetCurrentStreamTime(LONGLONG* pCurrentStreamTime)

注意 このインターフェイスは非推奨です。新しいアプリケーションでは使用しないでください。GetCurrentStreamTime メソッドは、現在のストリーム時間を取得します。

pCurrentStreamTimeLONGLONG*outストリーム時間を 100 ナノ秒単位で受け取る変数へのポインター。

戻り値

HRESULT 値を返します。指定できる値には次のものがあります。

戻り値 説明
E_POINTER
NULL ポインター引数です。
S_FALSE
グラフが実行されていないか、参照クロックがありません。
S_OK
成功しました。

解説(Remarks)

ストリーム時間は、グラフが実行中であり、かつ参照クロックを持っている場合にのみ定義されます。それ以外の場合、*pCurrentStreamTime はゼロに設定され、メソッドは S_FALSE を返します。

vtbl 21 HRESULT WaitUntil(LONGLONG WaitStreamTime)

注意 このインターフェイスは非推奨です。新しいアプリケーションでは使用しないでください。WaitUntil メソッドは、指定されたストリーム時間までフィルターをブロックさせます。このメソッドはフィルターのピンが呼び出します。ピンはフィルターをフラッシュすることで待機を中断できます。

WaitStreamTimeLONGLONGinストリーム時間を 100 ナノ秒単位で指定します。

戻り値

HRESULT 値を返します。指定できる値には次のものがあります。

戻り値 説明
E_FAIL
失敗しました。
S_FALSE
待機が中断されました。
S_OK
成功しました。

解説(Remarks)

グラフに参照クロックがない場合、メソッドは E_FAIL を返します。

vtbl 22 HRESULT Flush(BOOL bCancelEOS)

注意 このインターフェイスは非推奨です。新しいアプリケーションでは使用しないでください。Flush メソッドは、いずれかのピンがデータをフラッシュしたことをフィルターに通知します。このメソッドはフィルターの入力ピンが呼び出します。

bCancelEOSBOOLinピンの以前のストリーム終端 (end-of-stream) 通知をキャンセルするかどうかを示すブール値。TRUE の場合、フィルターは内部のストリーム終端カウントをデクリメントします。

戻り値

成功した場合は S_OK を、それ以外の場合はエラーコードを返します。

vtbl 23 HRESULT EndOfStream()

注意 このインターフェイスは非推奨です。新しいアプリケーションでは使用しないでください。EndOfStream メソッドは、ストリームの終端を通知します。Media Stream フィルターの入力ピンが、フィルターに対してこのメソッドを呼び出します。

戻り値

成功した場合は 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_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 指定が可能。