DeviceTopology API

Microsoft の高品質音声キャプチャ DMO サンプル を参照してください。

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

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

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

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

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

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

インターフェイス 形容
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 クライアントは、次のインターフェイスを実装する必要があります。

インターフェイス 形容
IControlChangeNotifyの パーツ (コネクタまたはサブユニット) の状態が変更されたときに通知を提供します。

 

デバイス トポロジ

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