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

IBasicAudio

COMIDispatch (デュアル)
IDispatch を実装(デュアルインターフェース)。HSP では comobj 経由でメソッド名による遅延バインド呼び出しができます(vtableインデックス不要)。
IID56a868b3-0ad4-11ce-b03a-0020af0ba770継承元IDispatch呼び出し名前(IDispatch) または vtbl自前メソッド開始 vtbl7

公式ドキュメント

IBasicAudio インターフェースは、オーディオストリームの音量とバランスを制御します。このインターフェースは Audio Renderer (WaveOut) フィルターおよび DirectSound Renderer フィルターに実装されていますが、アプリケーションには Filter Graph Manager を通じて公開されます。

メソッド 4

vtbl = vtable インデックス(0始まり)。IDispatch 実装のため HSP ではメソッド名でも呼べます(上記)。低レベルの index 呼び出し用に vtbl も掲載。0〜2 は IUnknown。

vtbl 7 HRESULT put_Volume(INT lVolume)

put_Volume メソッドは、オーディオ信号の音量(振幅)を設定します。

lVolumeINTin音量を指定します。–10,000 から 0 までの数値(両端を含む)で指定します。最大音量は 0 で、–10,000 は無音です。目的のデシベル値を 100 倍してください。たとえば、–10,000 = –100 dB です。

戻り値

HRESULT 値を返します。取り得る値には次のものがあります。

Return code Description
E_FAIL
基盤となるオーディオデバイスがエラーを返しました。
E_INVALIDARG
lVolume の値が無効です。
E_NOTIMPL
フィルターグラフにオーディオレンダラーフィルターが含まれていません。(ソースにオーディオストリームが含まれていない可能性があります。)
S_OK
成功しました。
vtbl 8 HRESULT get_Volume(INT* plVolume)

get_Volume メソッドは、オーディオ信号の音量(振幅)を取得します。

plVolumeINT*out音量を受け取る変数へのポインター。100 で除算すると、対応するデシベル値が得られます。たとえば、–10,000 は –100 dB です。

戻り値

HRESULT 値を返します。取り得る値には次のものがあります。

Return code Description
E_NOTIMPL
フィルターグラフにオーディオレンダラーフィルターが含まれていません。(ソースにオーディオストリームが含まれていない可能性があります。)
E_POINTER
NULL ポインター引数です。
S_OK
成功しました。
vtbl 9 HRESULT put_Balance(INT lBalance)

put_Balance メソッドは、オーディオ信号のバランスを設定します。

lBalanceINTinバランスを指定します。値の範囲は -10,000 から 10,000 です。値 -10,000 は右チャンネルが 100 dB 減衰され、実質的に無音になることを意味します。値 10,000 は左チャンネルが無音になることを意味します。中立値は 0 で、両方のチャンネルが最大音量になることを意味します。一方のチャンネルが減衰されると、もう一方は最大音量のままになります。

戻り値

HRESULT 値を返します。取り得る値には次のものがあります。

Return code Description
E_FAIL
基盤となるオーディオデバイスがエラーを返しました。
E_INVALIDARG
lBalance の値が無効です。
E_NOTIMPL
フィルターグラフにオーディオレンダラーフィルターが含まれていません。(ソースにオーディオストリームが含まれていない可能性があります。)
S_OK
成功しました。
vtbl 10 HRESULT get_Balance(INT* plBalance)

get_Balance メソッドは、オーディオ信号のバランスを取得します。

plBalanceINT*outバランスを受け取る変数へのポインター。

戻り値

HRESULT 値を返します。取り得る値には次のものがあります。

Return code Description
E_NOTIMPL
フィルターグラフにオーディオレンダラーフィルターが含まれていません。(ソースにオーディオストリームが含まれていない可能性があります。)
E_POINTER
NULL ポインター引数です。
S_OK
成功しました。

解説(Remarks)

バランスの範囲は -10,000 から 10,000 です。値 -10,000 は右チャンネルが 100 dB 減衰され、実質的に無音になることを意味します。値 10,000 は左チャンネルが無音になることを意味します。中立値は 0 で、両方のチャンネルが最大音量になることを意味します。一方のチャンネルが減衰されると、もう一方は最大音量のままになります。

出典・ライセンス: 上記「公式ドキュメント」の内容は 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_IBasicAudio "{56A868B3-0AD4-11CE-B03A-0020AF0BA770}"
#usecom global IBasicAudio IID_IBasicAudio "{}"
#comfunc global IBasicAudio_put_Volume   7 int
#comfunc global IBasicAudio_get_Volume   8 var
#comfunc global IBasicAudio_put_Balance  9 int
#comfunc global IBasicAudio_get_Balance  10 var
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※IDispatch 実装。HSP では comobj 経由でメソッド名による呼び出しも可能(vtbl 不要)。