IAMAudioInputMixer
COM公式ドキュメント
IAMAudioInputMixer インターフェイスは、パン(定位)やラウドネスなどのオーディオキャプチャのプロパティを制御し、ライン入力やマイクなどの特定のオーディオ入力を有効または無効にします。Audio Capture フィルターは、このインターフェイスを各入力ピンおよびフィルター自体で公開します。Audio Capture Filter の入力ピンは物理的なハードウェア接続を表しており、他の DirectShow フィルターに接続されているわけではありません。ピン名は入力の種類を示します。たとえば "Line In" や "Microphone" などです。IAMAudioInputMixer インターフェイスは次のように使用します。特定の入力の設定を制御するには、ピン上のインターフェイスを使用します。複数の入力が有効な場合に全体的なプロパティを設定するには、フィルター上のインターフェイスを使用します。入力を有効または無効にするには、そのピンの IAMAudioInputMixer::put_Enable メソッドを呼び出します。このインターフェイスの一部のメソッドは、基盤となるハードウェアの機能によっては失敗することがあります。フィルター開発者向け: このインターフェイスをオーディオキャプチャフィルターの各入力ピンに実装してください。また、ミキシング後の全体的なオーディオ設定を制御するために、オーディオキャプチャフィルター自体にこのインターフェイスを実装することもできます。
メソッド 16
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
put_Enable メソッドは、入力を有効または無効にします。
| fEnable | BOOL | in | 入力を有効にするか無効にするかを指定します。次のいずれかの値を使用します。
|
戻り値
解説(Remarks)
入力が有効な場合、その入力は録音される信号にミキシングされます。
このメソッドは Audio Capture Filter の特定の入力ピンに適用されるため、フィルター自体は E_NOTIMPL を返します。
get_Enable メソッドは、入力が有効かどうかを取得します。
| pfEnable | BOOL* | out | 次のいずれかの値を受け取ります。
|
戻り値
HRESULT 値を返します。指定できる値には次のものがあります。
| リターンコード | 説明 |
|---|---|
| 成功しました。 | |
| 実装されていません。 | |
| NULL ポインター引数です。 |
解説(Remarks)
このメソッドは Audio Capture Filter の特定の入力ピンに適用されるため、フィルター自体は E_NOTIMPL を返します。
put_Mono メソッドは、すべてのチャンネルを 1 つのモノラル信号に結合します。
| fMono | BOOL | in | モノラルかマルチチャンネルかを指定します。次のいずれかの値を使用します。
|
戻り値
解説(Remarks)
モノラルモードでは、この入力をステレオ録音すると、両方のチャンネルに同じデータが記録されます。結果は左右の信号を混合したものになります。
get_Mono メソッドは、すべてのチャンネルが 1 つのモノラル信号に結合されているかどうかを問い合わせます。
| pfMono | BOOL* | out | 次のいずれかの値を受け取ります。
|
戻り値
メソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
put_MixLevel メソッドは、この入力の録音レベルを設定します。
| Level | DOUBLE | in | 録音レベルを指定します。指定できる値は次のとおりです。
|
戻り値
HRESULT 値を返します。指定できる値には次のものがあります。
| リターンコード | 説明 |
|---|---|
| 成功しました。 | |
| このフィルターは AMF_AUTOMATICGAIN フラグをサポートしていません。 | |
| 引数が無効です。 |
get_MixLevel メソッドは、録音レベルを取得します。
| pLevel | DOUBLE* | out | 録音レベルを受け取ります。指定できる値は次のとおりです。
|
戻り値
メソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
put_Pan メソッドは、パンレベルを設定します。
| Pan | DOUBLE | in | パンレベルを指定します。指定できる値は –1.0 から 1.0 の範囲で、次のとおりです。
|
戻り値
メソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
ステレオ録音では、パンレベルを -1.0 または 1.0 に設定すると、信号全体が一方のチャンネルに送られます。もう一方のチャンネルには無音が記録されます。モノラル録音ではパンの効果はありません。
get_Pan メソッドは、パンレベルを取得します。
| pPan | DOUBLE* | out | パンレベルを受け取ります。指定できる値は –1.0 から 1.0 の範囲で、次のとおりです。
|
戻り値
メソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
put_Loudness メソッドは、ラウドネスコントロールを有効または無効にします。
| fLoudness | BOOL | in | ラウドネスをオンにするかオフにするかを指定します。次のいずれかの値を使用します。
|
戻り値
メソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
ラウドネスは、低音量の信号を録音する前にその低音を強調します。これは、人間の耳が静かな低音を他の音ほどよく聞き取れないという特性を補うためです。
get_Loudness メソッドは、ラウドネスコントロールの設定を取得します。
| pfLoudness | BOOL* | out | 次のいずれかの値を受け取ります。
|
戻り値
メソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
put_Treble メソッドは、この入力の高音(トレブル)イコライゼーションを設定します。
| Treble | DOUBLE | in | ゲインをデシベル単位で指定します。負の値は減衰を指定します。 |
戻り値
HRESULT 値を返します。指定できる値は次のとおりです。
| リターンコード | 説明 |
|---|---|
| 成功しました。 | |
| 引数が無効です。IAMAudioInputMixer::get_TrebleRange で示される範囲内でなければなりません。 |
解説(Remarks)
このメソッドは、信号を録音する前に、指定されたデシベル数だけ信号の高音を強調または減衰させます。
get_Treble メソッドは、高音イコライゼーションを取得します。
| pTreble | DOUBLE* | out | 高音のゲインをデシベル単位で受け取ります。負の値は減衰を示します。 |
戻り値
メソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
get_TrebleRange メソッドは、この入力の高音の範囲を取得します。
| pRange | DOUBLE* | out | IAMAudioInputMixer::put_Treble に指定できる最大の有効値を受け取ります。たとえば 6.0 は、–6.0 から 6.0 までの任意の値が有効であることを意味します。 |
戻り値
メソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
put_Bass メソッドは、低音(バス)イコライゼーションを設定します。
| Bass | DOUBLE | in | ゲインをデシベル単位で指定します。負の値は減衰を指定します。 |
戻り値
HRESULT 値を返します。指定できる値には次のものがあります。
| リターンコード | 説明 |
|---|---|
| 成功しました。 | |
| 引数が無効です。IAMAudioInputMixer::get_BassRange で示される範囲内でなければなりません。 |
解説(Remarks)
このメソッドは、信号を録音する前に、Bass パラメーターで指定されたデシベル数だけ信号の低音を強調または減衰させます。
get_Bass メソッドは、低音イコライゼーションを取得します。
| pBass | DOUBLE* | out | 低音のゲインをデシベル単位で受け取ります。負の値は減衰を示します。 |
戻り値
メソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
get_BassRange メソッドは、低音の範囲を取得します。
| pRange | DOUBLE* | out | IAMAudioInputMixer::put_Bass メソッドに指定できる最大の有効値を受け取ります。たとえば 6.0 は、–6.0 から 6.0 までの任意の値が有効であることを意味します。 |
戻り値
メソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IAMAudioInputMixer "{54C39221-8380-11D0-B3F0-00AA003761C5}" #usecom global IAMAudioInputMixer IID_IAMAudioInputMixer "{}" #comfunc global IAMAudioInputMixer_put_Enable 3 int #comfunc global IAMAudioInputMixer_get_Enable 4 var #comfunc global IAMAudioInputMixer_put_Mono 5 int #comfunc global IAMAudioInputMixer_get_Mono 6 var #comfunc global IAMAudioInputMixer_put_MixLevel 7 double #comfunc global IAMAudioInputMixer_get_MixLevel 8 var #comfunc global IAMAudioInputMixer_put_Pan 9 double #comfunc global IAMAudioInputMixer_get_Pan 10 var #comfunc global IAMAudioInputMixer_put_Loudness 11 int #comfunc global IAMAudioInputMixer_get_Loudness 12 var #comfunc global IAMAudioInputMixer_put_Treble 13 double #comfunc global IAMAudioInputMixer_get_Treble 14 var #comfunc global IAMAudioInputMixer_get_TrebleRange 15 var #comfunc global IAMAudioInputMixer_put_Bass 16 double #comfunc global IAMAudioInputMixer_get_Bass 17 var #comfunc global IAMAudioInputMixer_get_BassRange 18 var ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。#define global IID_IAMAudioInputMixer "{54C39221-8380-11D0-B3F0-00AA003761C5}" #usecom global IAMAudioInputMixer IID_IAMAudioInputMixer "{}" #comfunc global IAMAudioInputMixer_put_Enable 3 int #comfunc global IAMAudioInputMixer_get_Enable 4 sptr #comfunc global IAMAudioInputMixer_put_Mono 5 int #comfunc global IAMAudioInputMixer_get_Mono 6 sptr #comfunc global IAMAudioInputMixer_put_MixLevel 7 double #comfunc global IAMAudioInputMixer_get_MixLevel 8 sptr #comfunc global IAMAudioInputMixer_put_Pan 9 double #comfunc global IAMAudioInputMixer_get_Pan 10 sptr #comfunc global IAMAudioInputMixer_put_Loudness 11 int #comfunc global IAMAudioInputMixer_get_Loudness 12 sptr #comfunc global IAMAudioInputMixer_put_Treble 13 double #comfunc global IAMAudioInputMixer_get_Treble 14 sptr #comfunc global IAMAudioInputMixer_get_TrebleRange 15 sptr #comfunc global IAMAudioInputMixer_put_Bass 16 double #comfunc global IAMAudioInputMixer_get_Bass 17 sptr #comfunc global IAMAudioInputMixer_get_BassRange 18 sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。