DeviceTopology API

Microsoft の高品質音声キャプチャ DMO サンプル」をご覧ください。

DeviceTopology API は、クライアント アプリケーションにオーディオ レンダリングの機能ハードウェア トポロジを走査し、デバイスをキャプチャする機能を提供します。 クライアントは、DeviceTopology API のインターフェイスとメソッドを通じて、オーディオ エンドポイント デバイスとの間のデータ パスに沿って機能サブユニット (ボリューム制御など) を検出できます。 クライアントは、オーディオ アダプター デバイスとオーディオ エンドポイント デバイスの両方の内部トポロジを走査し、1 つのデバイスを別のデバイスにリンクする接続をステップ実行できます。 詳細については、「デバイス トポロジ」を参照してください。

ヘッダー ファイル Devicetopology.h は、DeviceTopology API のインターフェイスを定義します。

DeviceTopology API インターフェイスにアクセスするため、クライアントはまず、次の手順に従ってオーディオ エンドポイント デバイスの IDeviceTopology インターフェイスへの参照を取得します。

  1. IMMDevice インターフェイス」で説明されているいずれかの手法を使用して、オーディオ エンドポイント デバイスの IMMDevice インターフェイスへの参照を取得します。
  2. パラメーター iidREFIID IID_IDeviceTopology に設定して IMMDevice::Activate メソッドを呼び出します。

クライアントは、IDeviceTopology インターフェイスでメソッドを呼び出すことにより、DeviceTopology API 内の他のインターフェイスへの参照を取得できます。

DeviceTopology API は、次のインターフェイスを実装します。

Interface 説明
IAudioAutoGainControl ハードウェア自動ゲイン制御 (AGC) へのアクセスを提供します。
IAudioBass ハードウェア ベース レベルのコントロールへのアクセスを提供します。
IAudioChannelConfig ハードウェア チャネル構成コントロールへのアクセスを提供します。
IAudioInputSelector ハードウェア マルチプレクサー コントロール (入力セレクター) へのアクセスを提供します。
IAudioLoudness "ラウドネス" 補正コントロールへのアクセスを提供します。
IAudioMidrange ハードウェア ミッドレンジ レベルのコントロールへのアクセスを提供します。
IAudioMute ハードウェア ミュート コントロールへのアクセスを提供します。
IAudioOutputSelector ハードウェア デマルチプレクサー コントロール (出力セレクター) へのアクセスを提供します。
IAudioPeakMeter ハードウェア ピークメーター制御へのアクセスを提供します。
IAudioTreble ハードウェア高音レベルのコントロールへのアクセスを提供します。
IAudioVolumeLevel ハードウェア ボリューム コントロールへのアクセスを提供します。
IConnector コンポーネント間の接続ポイントを表します。
IControlInterface パーツ (サブユニットまたはコネクタ) のコントロール インターフェイスを表します。
IDeviceSpecificProperty コネクタまたはサブユニットのデバイス固有のプロパティを表します。
IDeviceTopology オーディオ デバイスのトポロジへのアクセスを提供します。
IKsFormatSupport オーディオ デバイスとシステム メモリの間にあるソフトウェアによって構成された I/O 接続 (通常は DMA チャネル) でサポートされるオーディオ データ形式に関する情報を提供します。
IKsJackDescription オーディオ アダプター上のデバイスと外部または内部エンドポイント デバイス (マイクや CD プレーヤーなど) の間の物理的な接続を提供するジャックまたは内部コネクタに関する情報を提供します。
IPart デバイス トポロジのパーツ (コネクタまたはサブユニット) を表します。
IPartsList パーツ (コネクタとサブユニット) の一覧を表します。
IPerChannelDbLevel オーディオ ストリームまたはオーディオ ストリーム内の周波数帯域のボリューム レベル (デシベル単位) をチャネルごとに制御する汎用サブユニット制御インターフェイスを表します。
ISubunit クライアントとオーディオ エンドポイント デバイスの間のデータ パスにあるハードウェア サブユニット (ボリューム レベル コントロールなど) を表します。

 

コネクタとサブユニットのコントロール変更イベントの通知を必要とする DeviceTopology API クライアントは、次のインターフェイスを実装する必要があります。

Interface 説明
IControlChangeNotify パーツ (コネクタまたはサブユニット) の状態が変更されたときに通知を提供します。

 

デバイス トポロジ

プログラミング リファレンス