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

IWMSyncReader

COM
IID9397f121-7705-4dc9-b049-98b698188414継承元IUnknown自前メソッド開始 vtbl3

メソッド 21

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

vtbl 3 HRESULT Open(LPWSTR pwszFilename)
pwszFilenameLPWSTRin開く対象ファイルのパスを指す広域文字列。
vtbl 4 HRESULT Close()
vtbl 5 HRESULT SetRange(ULONGLONG cnsStartTime, LONGLONG cnsDuration)
cnsStartTimeULONGLONGin読み取り範囲の開始時刻を100ナノ秒単位で指定する。
cnsDurationLONGLONGin読み取り範囲の継続時間を100ナノ秒単位で指定する。終端まではマイナス1。
vtbl 6 HRESULT SetRangeByFrame(WORD wStreamNum, ULONGLONG qwFrameNumber, LONGLONG cFramesToRead)
wStreamNumWORDin範囲を設定する対象ストリーム番号。
qwFrameNumberULONGLONGin読み取り開始フレーム番号(0起点)。
cFramesToReadLONGLONGin読み取るフレーム数を指定する。
vtbl 7 HRESULT GetNextSample(WORD wStreamNum, INSSBuffer** ppSample, ULONGLONG* pcnsSampleTime, ULONGLONG* pcnsDuration, DWORD* pdwFlags, DWORD* pdwOutputNum, WORD* pwStreamNum)
wStreamNumWORDin取得対象ストリーム番号。0で任意の次サンプルを取得する。
ppSampleINSSBuffer**out取得したサンプルのINSSBufferを受け取る出力先。要Release。
pcnsSampleTimeULONGLONG*outサンプルの提示時刻を100ナノ秒単位で受け取る出力先。
pcnsDurationULONGLONG*outサンプルの継続時間を100ナノ秒単位で受け取る出力先。
pdwFlagsDWORD*outサンプル属性フラグ(キーフレーム等WM_SF_*)を受け取る出力先。
pdwOutputNumDWORD*outサンプルが属する出力番号を受け取る出力先。
pwStreamNumWORD*outサンプルが属するストリーム番号を受け取る出力先。
vtbl 8 HRESULT SetStreamsSelected(WORD cStreamCount, WORD* pwStreamNumbers, WMT_STREAM_SELECTION* pSelections)
cStreamCountWORDin配列に含まれるストリーム数を指定する。
pwStreamNumbersWORD*in選択対象ストリーム番号の配列へのポインタ。
pSelectionsWMT_STREAM_SELECTION*in各ストリームの選択状態WMT_STREAM_SELECTION配列へのポインタ。
vtbl 9 HRESULT GetStreamSelected(WORD wStreamNum, WMT_STREAM_SELECTION* pSelection)
wStreamNumWORDin選択状態を取得する対象ストリーム番号。
pSelectionWMT_STREAM_SELECTION*outストリームの選択状態WMT_STREAM_SELECTIONを受け取る出力先。
vtbl 10 HRESULT SetReadStreamSamples(WORD wStreamNum, BOOL fCompressed)
wStreamNumWORDin設定対象のストリーム番号。
fCompressedBOOLin圧縮サンプルのまま読み取るか否か。TRUEで圧縮データを取得する。
vtbl 11 HRESULT GetReadStreamSamples(WORD wStreamNum, BOOL* pfCompressed)
wStreamNumWORDin設定状態を取得する対象ストリーム番号。
pfCompressedBOOL*out圧縮サンプル読み取り設定の有無を受け取る論理値ポインタ。
vtbl 12 HRESULT GetOutputSetting(DWORD dwOutputNum, LPWSTR pszName, WMT_ATTR_DATATYPE* pType, BYTE* pValue, WORD* pcbLength)
dwOutputNumDWORDin対象出力の0起点番号を指定する。
pszNameLPWSTRin取得する出力設定名を指す広域文字列。
pTypeWMT_ATTR_DATATYPE*out設定値のデータ型WMT_ATTR_DATATYPEを受け取る出力先。
pValueBYTE*out設定値を受け取るバイトバッファ。NULLでサイズ問い合わせ。
pcbLengthWORD*inout入力で確保バイト数、出力で実バイト数を示すWORDポインタ。
vtbl 13 HRESULT SetOutputSetting(DWORD dwOutputNum, LPWSTR pszName, WMT_ATTR_DATATYPE Type, BYTE* pValue, WORD cbLength)
dwOutputNumDWORDin対象出力の0起点番号を指定する。
pszNameLPWSTRin設定する出力設定名を指す広域文字列。
TypeWMT_ATTR_DATATYPEin設定値のデータ型を示すWMT_ATTR_DATATYPE列挙値。
pValueBYTE*in設定する値が格納されたバイトバッファへのポインタ。
cbLengthWORDin設定値のバイト長を指定する。
vtbl 14 HRESULT GetOutputCount(DWORD* pcOutputs)
pcOutputsDWORD*outリーダーの出力数を受け取る出力先。DWORDポインタ。
vtbl 15 HRESULT GetOutputProps(DWORD dwOutputNum, IWMOutputMediaProps** ppOutput)
dwOutputNumDWORDin対象出力の0起点番号を指定する。
ppOutputIWMOutputMediaProps**out出力メディアプロパティIWMOutputMediaPropsを受け取る出力先。要Release。
vtbl 16 HRESULT SetOutputProps(DWORD dwOutputNum, IWMOutputMediaProps* pOutput)
dwOutputNumDWORDin対象出力の0起点番号を指定する。
pOutputIWMOutputMediaProps*in設定する出力メディアプロパティへのポインタ。
vtbl 17 HRESULT GetOutputFormatCount(DWORD dwOutputNum, DWORD* pcFormats)
dwOutputNumDWORDin対象出力の0起点番号を指定する。
pcFormatsDWORD*outその出力で利用可能な形式数を受け取る出力先。DWORDポインタ。
vtbl 18 HRESULT GetOutputFormat(DWORD dwOutputNum, DWORD dwFormatNum, IWMOutputMediaProps** ppProps)
dwOutputNumDWORDin対象出力の0起点番号を指定する。
dwFormatNumDWORDin列挙する形式の0起点インデックス。
ppPropsIWMOutputMediaProps**out指定形式の出力メディアプロパティを受け取る出力先。要Release。
vtbl 19 HRESULT GetOutputNumberForStream(WORD wStreamNum, DWORD* pdwOutputNum)
wStreamNumWORDin対応出力を調べる対象ストリーム番号。
pdwOutputNumDWORD*outそのストリームに対応する出力番号を受け取る出力先。
vtbl 20 HRESULT GetStreamNumberForOutput(DWORD dwOutputNum, WORD* pwStreamNum)
dwOutputNumDWORDin対応ストリームを調べる対象出力番号。
pwStreamNumWORD*outその出力に対応するストリーム番号を受け取る出力先。
vtbl 21 HRESULT GetMaxOutputSampleSize(DWORD dwOutput, DWORD* pcbMax)
dwOutputDWORDin対象出力の0起点番号を指定する。
pcbMaxDWORD*outその出力が生成し得る最大サンプルバイト数を受け取る出力先。
vtbl 22 HRESULT GetMaxStreamSampleSize(WORD wStream, DWORD* pcbMax)
wStreamWORDin対象ストリーム番号を指定する。
pcbMaxDWORD*outそのストリームの最大サンプルバイト数を受け取る出力先。
vtbl 23 HRESULT OpenStream(IStream* pStream)
pStreamIStream*in読み取り元となるIStreamインターフェイスへのポインタ。

HSP用 COM定義

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

出力引数:
#define global IID_IWMSyncReader "{9397F121-7705-4DC9-B049-98B698188414}"
#usecom global IWMSyncReader IID_IWMSyncReader "{}"
#comfunc global IWMSyncReader_Open                      3 wstr
#comfunc global IWMSyncReader_Close                     4
#comfunc global IWMSyncReader_SetRange                  5 int64,int64
#comfunc global IWMSyncReader_SetRangeByFrame           6 int,int64,int64
#comfunc global IWMSyncReader_GetNextSample             7 int,sptr,var,var,var,var,var
#comfunc global IWMSyncReader_SetStreamsSelected        8 int,var,var
#comfunc global IWMSyncReader_GetStreamSelected         9 int,var
#comfunc global IWMSyncReader_SetReadStreamSamples      10 int,int
#comfunc global IWMSyncReader_GetReadStreamSamples      11 int,var
#comfunc global IWMSyncReader_GetOutputSetting          12 int,wstr,var,var,var
#comfunc global IWMSyncReader_SetOutputSetting          13 int,wstr,int,var,int
#comfunc global IWMSyncReader_GetOutputCount            14 var
#comfunc global IWMSyncReader_GetOutputProps            15 int,sptr
#comfunc global IWMSyncReader_SetOutputProps            16 int,sptr
#comfunc global IWMSyncReader_GetOutputFormatCount      17 int,var
#comfunc global IWMSyncReader_GetOutputFormat           18 int,int,sptr
#comfunc global IWMSyncReader_GetOutputNumberForStream  19 int,var
#comfunc global IWMSyncReader_GetStreamNumberForOutput  20 int,var
#comfunc global IWMSyncReader_GetMaxOutputSampleSize    21 int,var
#comfunc global IWMSyncReader_GetMaxStreamSampleSize    22 int,var
#comfunc global IWMSyncReader_OpenStream                23 sptr
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。