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

IPin

COM
IID56a86891-0ad4-11ce-b03a-0020af0ba770継承元IUnknown自前メソッド開始 vtbl3

メソッド 15

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

vtbl 3 HRESULT Connect(IPin* pReceivePin, AM_MEDIA_TYPE* pmt)
pReceivePinIPin*in接続先となる受信側ピンIPin。出力ピンから入力ピンへ接続する。
pmtAM_MEDIA_TYPE*inoptional接続に使用するメディア型AM_MEDIA_TYPE。NULL可で自動ネゴシエートする。
vtbl 4 HRESULT ReceiveConnection(IPin* pConnector, AM_MEDIA_TYPE* pmt)
pConnectorIPin*in接続要求元のピンIPin。上流側の出力ピンを示す。
pmtAM_MEDIA_TYPE*in接続に使用するメディア型AM_MEDIA_TYPE。提案された形式を示す。
vtbl 5 HRESULT Disconnect()
vtbl 6 HRESULT ConnectedTo(IPin** pPin)
pPinIPin**out現在接続されている相手ピンIPinを受け取る出力。未接続ならエラーを返す。
vtbl 7 HRESULT ConnectionMediaType(AM_MEDIA_TYPE* pmt)
pmtAM_MEDIA_TYPE*out現在の接続で合意されたメディア型を受け取るAM_MEDIA_TYPEの出力。
vtbl 8 HRESULT QueryPinInfo(PIN_INFO* pInfo)
pInfoPIN_INFO*outピンの情報(所属フィルタ・方向・名前)を受け取るPIN_INFO構造体の出力。
vtbl 9 HRESULT QueryDirection(PIN_DIRECTION* pPinDir)
pPinDirPIN_DIRECTION*outピンの方向(入力/出力)を受け取るPIN_DIRECTION列挙値の出力。
vtbl 10 HRESULT QueryId(LPWSTR* Id)
IdLPWSTR*outピンを一意に識別するID文字列を受け取る出力。COMメモリで割り当てられる。
vtbl 11 HRESULT QueryAccept(AM_MEDIA_TYPE* pmt)
pmtAM_MEDIA_TYPE*in受け入れ可否を問い合わせるメディア型AM_MEDIA_TYPE。対応可ならS_OK。
vtbl 12 HRESULT EnumMediaTypes(IEnumMediaTypes** ppEnum)
ppEnumIEnumMediaTypes**outこのピンが対応するメディア型の列挙子IEnumMediaTypesを受け取る出力。
vtbl 13 HRESULT QueryInternalConnections(IPin** apPin, DWORD* nPin)
apPinIPin**outoptional内部で接続されたピン配列を受け取る出力。NULL可で個数取得のみ行える。
nPinDWORD*inout配列容量を入力し、実際の内部接続ピン数を返す入出力。
vtbl 14 HRESULT EndOfStream()
vtbl 15 HRESULT BeginFlush()
vtbl 16 HRESULT EndFlush()
vtbl 17 HRESULT NewSegment(LONGLONG tStart, LONGLONG tStop, DOUBLE dRate)
tStartLONGLONGin新しいセグメントの開始時刻を100ナノ秒単位で指定する。
tStopLONGLONGin新しいセグメントの終了時刻を100ナノ秒単位で指定する。
dRateDOUBLEinセグメントの再生レートを倍率(DOUBLE)で指定する。1.0が等倍。

HSP用 COM定義

#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"

出力引数:
#define global IID_IPin "{56A86891-0AD4-11CE-B03A-0020AF0BA770}"
#usecom global IPin IID_IPin "{}"
#comfunc global IPin_Connect                   3 sptr,var
#comfunc global IPin_ReceiveConnection         4 sptr,var
#comfunc global IPin_Disconnect                5
#comfunc global IPin_ConnectedTo               6 sptr
#comfunc global IPin_ConnectionMediaType       7 var
#comfunc global IPin_QueryPinInfo              8 var
#comfunc global IPin_QueryDirection            9 var
#comfunc global IPin_QueryId                   10 var
#comfunc global IPin_QueryAccept               11 var
#comfunc global IPin_EnumMediaTypes            12 sptr
#comfunc global IPin_QueryInternalConnections  13 sptr,var
#comfunc global IPin_EndOfStream               14
#comfunc global IPin_BeginFlush                15
#comfunc global IPin_EndFlush                  16
#comfunc global IPin_NewSegment                17 int64,int64,double
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。