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

IMpeg2Demultiplexer

COM
IID436eee9c-264f-4242-90e1-4e330c107512継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

このインターフェイスは MPEG-2 Demultiplexer フィルター (Demux) に実装されており、プログラムストリームモードとトランスポートストリームモードの両方で使用されます。

メソッド 3

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

vtbl 3 HRESULT CreateOutputPin(AM_MEDIA_TYPE* pMediaType, LPWSTR pszPinName, IPin** ppIPin)

CreateOutputPin メソッドは、Demux 上に新しい出力ピンを作成します。

pMediaTypeAM_MEDIA_TYPE*in新しいピンのメディアタイプ情報を指定する AM_MEDIA_TYPE 構造体へのポインター。
pszPinNameLPWSTRin新しいピンの名前を指定するワイド文字列へのポインター。最大長は NULL 終端文字を含めて 128 文字です。
ppIPinIPin**outピンの IPin インターフェイスへのポインターを受け取る変数のアドレス。

戻り値

HRESULT 値を返します。返される可能性のある値には次のものがあります。

戻り値 説明
E_INVALIDARG
無効な引数です。
S_OK
成功しました。
VFW_E_DUPLICATE_NAME
ピン名が重複しています。

解説(Remarks)

ピン名の重複は許可されません。ピンを構成するには、返された IPin インターフェイスに対して、(プログラムストリームの場合は) IMPEG2StreamIdMap インターフェイスを、(トランスポートストリームの場合は) IMPEG2PIDMap インターフェイスをクエリします。最初の出力ピンでどちらのインターフェイスがクエリされたかに応じて、Demux はトランスポートストリームモードまたはプログラムストリームモードのいずれかに自身を構成します。Demux が構成されると、もう一方のインターフェイスを取得するための QueryInterface の呼び出しはすべて失敗します。

vtbl 4 HRESULT SetOutputPinMediaType(LPWSTR pszPinName, AM_MEDIA_TYPE* pMediaType)

SetOutputPinMediaType メソッドは、指定された出力ピンのメディアタイプを更新します。(DirectX 9.0 以降。)

pszPinNameLPWSTRinCreateOutputPin の呼び出しでピンが作成されたときに指定された、ピンのフレンドリ名。
pMediaTypeAM_MEDIA_TYPE*inピンの新しいメディアタイプ情報を指定する AM_MEDIA_TYPE 構造体へのポインター。

戻り値

成功した場合は S_OK を返します。メソッドが失敗した場合は HRESULT エラーコードを返します。

解説(Remarks)

ピンは新しいメディアタイプでいつでも再構成できます。接続が存在しない場合は、メディアタイプが更新されるだけです。ピンが接続されている場合、呼び出しの成否は、下流の入力ピンが指定されたメディアタイプを受け入れるか拒否するかによって決まります。

メディアタイプは Demultiplexer フィルターによって解釈されることは一切ありません。出力ピンによる接続ネゴシエーションの間にのみ使用されます。メディアサンプルの内容には影響しません。メディアサンプルの内容は、IMPEG2PIDMap::MapPID メソッドの MEDIA_SAMPLE_CONTENT パラメーターを介して、または IMPEG2StreamIdMap::MapStreamId の呼び出しで定義された値を介して PID がマッピングされるときに定義されます。

vtbl 5 HRESULT DeleteOutputPin(LPWSTR pszPinName)

DeleteOutputPin メソッドは、指定された出力ピンを削除します。

pszPinNameLPWSTRinCreateOutputPin の呼び出しでピンが作成されたときに指定された、ピンのフレンドリ名。

戻り値

成功した場合は S_OK を返します。メソッドが失敗した場合は HRESULT エラーコードを返します。

解説(Remarks)

このメソッドは、フィルターを存続させたままピンを削除する必要がある場合にのみ呼び出してください。フィルターが解放されると、出力ピンに対して必要なクリーンアップがすべて実行されます。

出典・ライセンス: 上記「公式ドキュメント」の内容は 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_IMpeg2Demultiplexer "{436EEE9C-264F-4242-90E1-4E330C107512}"
#usecom global IMpeg2Demultiplexer IID_IMpeg2Demultiplexer "{}"
#comfunc global IMpeg2Demultiplexer_CreateOutputPin        3 var,wstr,sptr
#comfunc global IMpeg2Demultiplexer_SetOutputPinMediaType  4 wstr,var
#comfunc global IMpeg2Demultiplexer_DeleteOutputPin        5 wstr
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。