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

IAMAudioInputMixer

COM
IID54c39221-8380-11d0-b3f0-00aa003761c5継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

IAMAudioInputMixer インターフェイスは、パン(定位)やラウドネスなどのオーディオキャプチャのプロパティを制御し、ライン入力やマイクなどの特定のオーディオ入力を有効または無効にします。Audio Capture フィルターは、このインターフェイスを各入力ピンおよびフィルター自体で公開します。Audio Capture Filter の入力ピンは物理的なハードウェア接続を表しており、他の DirectShow フィルターに接続されているわけではありません。ピン名は入力の種類を示します。たとえば "Line In" や "Microphone" などです。IAMAudioInputMixer インターフェイスは次のように使用します。特定の入力の設定を制御するには、ピン上のインターフェイスを使用します。複数の入力が有効な場合に全体的なプロパティを設定するには、フィルター上のインターフェイスを使用します。入力を有効または無効にするには、そのピンの IAMAudioInputMixer::put_Enable メソッドを呼び出します。このインターフェイスの一部のメソッドは、基盤となるハードウェアの機能によっては失敗することがあります。フィルター開発者向け: このインターフェイスをオーディオキャプチャフィルターの各入力ピンに実装してください。また、ミキシング後の全体的なオーディオ設定を制御するために、オーディオキャプチャフィルター自体にこのインターフェイスを実装することもできます。

メソッド 16

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

vtbl 3 HRESULT put_Enable(BOOL fEnable)

put_Enable メソッドは、入力を有効または無効にします。

fEnableBOOLin

入力を有効にするか無効にするかを指定します。次のいずれかの値を使用します。

説明
TRUE 入力を有効にします。
FALSE 入力を無効にします。

戻り値

HRESULT 値を返します。指定できる値には次のものがあります。

リターンコード 説明
S_OK
成功しました。
E_NOTIMPL
実装されていません。

解説(Remarks)

入力が有効な場合、その入力は録音される信号にミキシングされます。

このメソッドは Audio Capture Filter の特定の入力ピンに適用されるため、フィルター自体は E_NOTIMPL を返します。

vtbl 4 HRESULT get_Enable(BOOL* pfEnable)

get_Enable メソッドは、入力が有効かどうかを取得します。

pfEnableBOOL*out

次のいずれかの値を受け取ります。

説明
TRUE 入力は有効です。
FALSE 入力は無効です。

戻り値

HRESULT 値を返します。指定できる値には次のものがあります。

リターンコード 説明
S_OK
成功しました。
E_NOTIMPL
実装されていません。
E_POINTER
NULL ポインター引数です。

解説(Remarks)

このメソッドは Audio Capture Filter の特定の入力ピンに適用されるため、フィルター自体は E_NOTIMPL を返します。

vtbl 5 HRESULT put_Mono(BOOL fMono)

put_Mono メソッドは、すべてのチャンネルを 1 つのモノラル信号に結合します。

fMonoBOOLin

モノラルかマルチチャンネルかを指定します。次のいずれかの値を使用します。

説明
TRUE モノラル
FALSE マルチチャンネル

戻り値

HRESULT 値を返します。指定できる値には次のものがあります。

リターンコード 説明
E_FAIL
モノラルコントロールの設定でエラーが発生しました。
S_OK
成功しました。

解説(Remarks)

モノラルモードでは、この入力をステレオ録音すると、両方のチャンネルに同じデータが記録されます。結果は左右の信号を混合したものになります。

vtbl 6 HRESULT get_Mono(BOOL* pfMono)

get_Mono メソッドは、すべてのチャンネルが 1 つのモノラル信号に結合されているかどうかを問い合わせます。

pfMonoBOOL*out

次のいずれかの値を受け取ります。

説明
TRUE モノラル
FALSE マルチチャンネル

戻り値

メソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

vtbl 7 HRESULT put_MixLevel(DOUBLE Level)

put_MixLevel メソッドは、この入力の録音レベルを設定します。

LevelDOUBLEin

録音レベルを指定します。指定できる値は次のとおりです。

説明
0.0 to 1.0 0 は録音レベルがオフであることを示し、1.0 は録音レベルが最大音量であることを示します。中間の値も指定できます。
AMF_AUTOMATICGAIN 録音レベルの自動調整を有効にします。

戻り値

HRESULT 値を返します。指定できる値には次のものがあります。

リターンコード 説明
S_OK
成功しました。
E_NOTIMPL
このフィルターは AMF_AUTOMATICGAIN フラグをサポートしていません。
E_INVALIDARG
引数が無効です。
vtbl 8 HRESULT get_MixLevel(DOUBLE* pLevel)

get_MixLevel メソッドは、録音レベルを取得します。

pLevelDOUBLE*out

録音レベルを受け取ります。指定できる値は次のとおりです。

説明
0.0 to 1.0 0 は録音レベルがオフであることを示し、1.0 は録音レベルが最大音量であることを示します。中間の値も指定できます。
AMF_AUTOMATICGAIN 録音レベルの自動調整が有効になっています。

戻り値

メソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

vtbl 9 HRESULT put_Pan(DOUBLE Pan)

put_Pan メソッドは、パンレベルを設定します。

PanDOUBLEin

パンレベルを指定します。指定できる値は –1.0 から 1.0 の範囲で、次のとおりです。

説明
-1 完全に左
0 中央
1 完全に右

戻り値

メソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

解説(Remarks)

ステレオ録音では、パンレベルを -1.0 または 1.0 に設定すると、信号全体が一方のチャンネルに送られます。もう一方のチャンネルには無音が記録されます。モノラル録音ではパンの効果はありません。

vtbl 10 HRESULT get_Pan(DOUBLE* pPan)

get_Pan メソッドは、パンレベルを取得します。

pPanDOUBLE*out

パンレベルを受け取ります。指定できる値は –1.0 から 1.0 の範囲で、次のとおりです。

説明
-1 完全に左
0 中央
1 完全に右

戻り値

メソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

vtbl 11 HRESULT put_Loudness(BOOL fLoudness)

put_Loudness メソッドは、ラウドネスコントロールを有効または無効にします。

fLoudnessBOOLin

ラウドネスをオンにするかオフにするかを指定します。次のいずれかの値を使用します。

説明
TRUE ラウドネスをオンにします。
FALSE ラウドネスをオフにします。

戻り値

メソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

解説(Remarks)

ラウドネスは、低音量の信号を録音する前にその低音を強調します。これは、人間の耳が静かな低音を他の音ほどよく聞き取れないという特性を補うためです。

vtbl 12 HRESULT get_Loudness(BOOL* pfLoudness)

get_Loudness メソッドは、ラウドネスコントロールの設定を取得します。

pfLoudnessBOOL*out

次のいずれかの値を受け取ります。

説明
TRUE ラウドネスはオンです。
FALSE ラウドネスはオフです。

戻り値

メソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

vtbl 13 HRESULT put_Treble(DOUBLE Treble)

put_Treble メソッドは、この入力の高音(トレブル)イコライゼーションを設定します。

TrebleDOUBLEinゲインをデシベル単位で指定します。負の値は減衰を指定します。

戻り値

HRESULT 値を返します。指定できる値は次のとおりです。

リターンコード 説明
S_OK
成功しました。
E_INVALIDARG
引数が無効です。IAMAudioInputMixer::get_TrebleRange で示される範囲内でなければなりません。

解説(Remarks)

このメソッドは、信号を録音する前に、指定されたデシベル数だけ信号の高音を強調または減衰させます。

vtbl 14 HRESULT get_Treble(DOUBLE* pTreble)

get_Treble メソッドは、高音イコライゼーションを取得します。

pTrebleDOUBLE*out高音のゲインをデシベル単位で受け取ります。負の値は減衰を示します。

戻り値

メソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

vtbl 15 HRESULT get_TrebleRange(DOUBLE* pRange)

get_TrebleRange メソッドは、この入力の高音の範囲を取得します。

pRangeDOUBLE*outIAMAudioInputMixer::put_Treble に指定できる最大の有効値を受け取ります。たとえば 6.0 は、–6.0 から 6.0 までの任意の値が有効であることを意味します。

戻り値

メソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

vtbl 16 HRESULT put_Bass(DOUBLE Bass)

put_Bass メソッドは、低音(バス)イコライゼーションを設定します。

BassDOUBLEinゲインをデシベル単位で指定します。負の値は減衰を指定します。

戻り値

HRESULT 値を返します。指定できる値には次のものがあります。

リターンコード 説明
S_OK
成功しました。
E_INVALIDARG
引数が無効です。IAMAudioInputMixer::get_BassRange で示される範囲内でなければなりません。

解説(Remarks)

このメソッドは、信号を録音する前に、Bass パラメーターで指定されたデシベル数だけ信号の低音を強調または減衰させます。

vtbl 17 HRESULT get_Bass(DOUBLE* pBass)

get_Bass メソッドは、低音イコライゼーションを取得します。

pBassDOUBLE*out低音のゲインをデシベル単位で受け取ります。負の値は減衰を示します。

戻り値

メソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

vtbl 18 HRESULT get_BassRange(DOUBLE* pRange)

get_BassRange メソッドは、低音の範囲を取得します。

pRangeDOUBLE*outIAMAudioInputMixer::put_Bass メソッドに指定できる最大の有効値を受け取ります。たとえば 6.0 は、–6.0 から 6.0 までの任意の値が有効であることを意味します。

戻り値

メソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
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 方式にも切替可。