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 のリニア値として指定する。