IConfigAviMux
COM公式ドキュメント
IConfigAviMux インターフェイスは、AVI Mux フィルターを構成します。
メソッド 4
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
SetMasterStream メソッドは、ファイル内の他のストリームを同期するために使用するストリームを指定します。
| iStream | INT | in | ストリームのインデックスを指定します。マスターストリームがないことを示す場合は –1 を指定します。AVI Mux は、接続された入力ピンごとに 1 つのストリームを書き込みます。ストリーム番号は 0 から始まります。 |
戻り値
HRESULT 値を返します。有効な値には次のものがあります。
| リターンコード | 説明 |
|---|---|
| 引数が無効です。 | |
| 成功しました。 |
解説(Remarks)
2 つの異なるソースから音声と映像をキャプチャする場合は、このメソッドを使用してストリームを同期します。別々のキャプチャソースから取得されるストリームは、わずかに異なるレートでキャプチャされることがあります。マスターストリームを指定すると、AVI Mux は発生する可能性のあるずれを補正するために、他のストリームの再生レートを調整します。
映像の再生レートのわずかな調整は音声の再生レートの変更よりも目立ちにくいため、音声ストリームをマスターストリームとして使用することをお勧めします。また、音声の再生レートを変更すると、音声ドライバーによって音声が再サンプリングされます。
このメソッドは、AVISTREAMHEADER 構造体の dwScale 値と dwRate 値を調整することで機能します。
GetMasterStream メソッドは、ファイル内の他のストリームを同期するために使用されるストリームを問い合わせます。
| pStream | INT* | out | マスターストリームのインデックスを受け取ります。マスターストリームが設定されていない場合は -1 を受け取ります。 |
戻り値
SetOutputCompatibilityIndex メソッドは、AVI インデックス形式を設定します。
| fOldIndex | BOOL | in | 次のいずれかの値を指定します:
|
戻り値
成功した場合は S_OK を返し、それ以外の場合はエラーコードを返します。
解説(Remarks)
AVI Mux フィルターは常に AVI 2.0 インデックス('indx' 形式)を作成します。fOldIndex に指定した値が TRUE の場合、AVI Mux は Video for Windows との下位互換性のために AVI 1.0 インデックス('idx1' 形式)も作成します。
AVI 2.0 インデックス形式では、より大きなファイル、ファイルの段階的な拡張、およびディスクシークの最小化が可能になります。
GetOutputCompatibilityIndex メソッドは、AVI インデックス形式の設定を取得します。
| pfOldIndex | BOOL* | out | 次のいずれかの値を受け取ります。
|
戻り値
解説(Remarks)
AVI Mux フィルターは常に AVI 2.0 インデックス('indx' 形式)を作成します。pfOldIndex で返される値が TRUE の場合、AVI Mux は Video for Windows との下位互換性のために AVI 1.0 インデックス('idx1' 形式)も作成します。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IConfigAviMux "{5ACD6AA0-F482-11CE-8B67-00AA00A3F1A6}" #usecom global IConfigAviMux IID_IConfigAviMux "{}" #comfunc global IConfigAviMux_SetMasterStream 3 int #comfunc global IConfigAviMux_GetMasterStream 4 var #comfunc global IConfigAviMux_SetOutputCompatibilityIndex 5 int #comfunc global IConfigAviMux_GetOutputCompatibilityIndex 6 var ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。#define global IID_IConfigAviMux "{5ACD6AA0-F482-11CE-8B67-00AA00A3F1A6}" #usecom global IConfigAviMux IID_IConfigAviMux "{}" #comfunc global IConfigAviMux_SetMasterStream 3 int #comfunc global IConfigAviMux_GetMasterStream 4 sptr #comfunc global IConfigAviMux_SetOutputCompatibilityIndex 5 int #comfunc global IConfigAviMux_GetOutputCompatibilityIndex 6 sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。