Microsoft DirectX 8.0 |
アプリケーションは、IBasicAudio インターフェイスを使用してオーディオのボリュームを制御する。IBasicAudio インターフェイス ハンドラが KSProxy に対して提供されている。デコーダが KSProxy からのボリューム コマンドを処理するには、そのセットアップ スクリプトにいくつかのレジストリ キーを追加する必要がある。また、KSPROPSETID_Wave プロパティ セットをサポートしていなければならない。
ドライバに対していくつかの新しいレジストリ キーを作成する:
HKLM\SYSTEM\ CurrentControlSet\Control DeviceClasses (decoder guid, eg 2721AE....) (Pnp id, eg ##?#VDGENDEV#...) #GLOBAL Device Parameters CLSID REG_SZ {17CCA...} FriendlyName REG_SZ WDM DVD Driver Interfaces <--- このキーを作成する {b9f8ac3e-0f71-11d2-b72c-00c04fb6bd3d} <-- このキーも作成する。これは値ではない) MediaInterfaces {b9f8ac3e-0f71-11d2-b72c-00c04fb6bd3d} <-- このキーを作成する (default) REG_SZ 'KsProxy IBasicAudio handler' <-- この値を設定する IID REG_SZ 56 a8 68 b3 0a d4 11 ce b0 3a 00 20 af 0b a7 70 <-- この文字列値を設定する
ボリューム制御を実現するために、ドライバは KsProperty.Id = KSPROPERTY_WAVE_VOLUME と共に KSPROPSETID_Wave もサポートする必要がある。このプロパティは、IKsPropertySet::Get および IKsPropertySet::Set メソッドを通してドライバに渡される。LeftAttenuation および RightAttentuation フィールドは、それぞれ左側と右側のスピーカのボリュームを 0x0000 〜 0xffff のリニア値として指定する。