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

IWMWriterAdvanced

COM
IID96406be3-2b2b-11d3-b36b-00c04f6108ff継承元IUnknown自前メソッド開始 vtbl3

メソッド 11

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

vtbl 3 HRESULT GetSinkCount(DWORD* pcSinks)
pcSinksDWORD*out現在ライターに登録されているシンク(出力先)の総数を受け取る出力先ポインタである。
vtbl 4 HRESULT GetSink(DWORD dwSinkNum, IWMWriterSink** ppSink)
dwSinkNumDWORDin取得対象シンクの0始まりのインデックスである。GetSinkCountの値未満を指定する。
ppSinkIWMWriterSink**out指定インデックスのIWMWriterSinkインターフェイスを受け取る出力先である。
vtbl 5 HRESULT AddSink(IWMWriterSink* pSink)
pSinkIWMWriterSink*inライターに追加するIWMWriterSinkオブジェクトへのポインタである。
vtbl 6 HRESULT RemoveSink(IWMWriterSink* pSink)
pSinkIWMWriterSink*inライターから取り外すIWMWriterSinkオブジェクトへのポインタである。
vtbl 7 HRESULT WriteStreamSample(WORD wStreamNum, ULONGLONG cnsSampleTime, DWORD msSampleSendTime, ULONGLONG cnsSampleDuration, DWORD dwFlags, INSSBuffer* pSample)
wStreamNumWORDinサンプルを書き込む対象ストリームの番号(1始まり)である。
cnsSampleTimeULONGLONGinサンプルのプレゼンテーション時刻を100ナノ秒単位で指定する。
msSampleSendTimeDWORDinサンプルの送出時刻をミリ秒単位で指定する。
cnsSampleDurationULONGLONGinサンプルの再生継続時間を100ナノ秒単位で指定する。
dwFlagsDWORDinサンプルの属性を示すフラグである。キーフレームを示すWM_SF_CLEANPOINT等を指定する。
pSampleINSSBuffer*in書き込むサンプルデータを保持するINSSBufferバッファへのポインタである。
vtbl 8 HRESULT SetLiveSource(BOOL fIsLiveSource)
fIsLiveSourceBOOLin入力がライブソースかを指定する。TRUEでライブ取り込みとして扱う。
vtbl 9 HRESULT IsRealTime(BOOL* pfRealTime)
pfRealTimeBOOL*out書き込みがリアルタイム動作中かを受け取る出力先である。TRUEでリアルタイムを示す。
vtbl 10 HRESULT GetWriterTime(ULONGLONG* pcnsCurrentTime)
pcnsCurrentTimeULONGLONG*outライターの現在時刻を100ナノ秒単位で受け取る出力先である。
vtbl 11 HRESULT GetStatistics(WORD wStreamNum, WM_WRITER_STATISTICS* pStats)
wStreamNumWORDin統計を取得する対象ストリームの番号である。0で全ストリーム集計を示す。
pStatsWM_WRITER_STATISTICS*out書き込み統計情報を受け取るWM_WRITER_STATISTICS構造体へのポインタである。
vtbl 12 HRESULT SetSyncTolerance(DWORD msWindow)
msWindowDWORDinストリーム間同期のずれ許容ウィンドウをミリ秒単位で指定する。
vtbl 13 HRESULT GetSyncTolerance(DWORD* pmsWindow)
pmsWindowDWORD*out現在の同期許容ウィンドウをミリ秒単位で受け取る出力先である。

HSP用 COM定義

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

出力引数:
#define global IID_IWMWriterAdvanced "{96406BE3-2B2B-11D3-B36B-00C04F6108FF}"
#usecom global IWMWriterAdvanced IID_IWMWriterAdvanced "{}"
#comfunc global IWMWriterAdvanced_GetSinkCount       3 var
#comfunc global IWMWriterAdvanced_GetSink            4 int,sptr
#comfunc global IWMWriterAdvanced_AddSink            5 sptr
#comfunc global IWMWriterAdvanced_RemoveSink         6 sptr
#comfunc global IWMWriterAdvanced_WriteStreamSample  7 int,int64,int,int64,int,sptr
#comfunc global IWMWriterAdvanced_SetLiveSource      8 int
#comfunc global IWMWriterAdvanced_IsRealTime         9 var
#comfunc global IWMWriterAdvanced_GetWriterTime      10 var
#comfunc global IWMWriterAdvanced_GetStatistics      11 int,var
#comfunc global IWMWriterAdvanced_SetSyncTolerance   12 int
#comfunc global IWMWriterAdvanced_GetSyncTolerance   13 var
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。