DeviceTopology API
「Microsoft の高品質音声キャプチャ DMO サンプル」をご覧ください。
DeviceTopology API は、クライアント アプリケーションにオーディオ レンダリングの機能ハードウェア トポロジを走査し、デバイスをキャプチャする機能を提供します。 クライアントは、DeviceTopology API のインターフェイスとメソッドを通じて、オーディオ エンドポイント デバイスとの間のデータ パスに沿って機能サブユニット (ボリューム制御など) を検出できます。 クライアントは、オーディオ アダプター デバイスとオーディオ エンドポイント デバイスの両方の内部トポロジを走査し、1 つのデバイスを別のデバイスにリンクする接続をステップ実行できます。 詳細については、「デバイス トポロジ」を参照してください。
ヘッダー ファイル Devicetopology.h は、DeviceTopology API のインターフェイスを定義します。
DeviceTopology API インターフェイスにアクセスするため、クライアントはまず、次の手順に従ってオーディオ エンドポイント デバイスの IDeviceTopology インターフェイスへの参照を取得します。
- 「IMMDevice インターフェイス」で説明されているいずれかの手法を使用して、オーディオ エンドポイント デバイスの IMMDevice インターフェイスへの参照を取得します。
- パラメーター iid を REFIID 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 | パーツ (コネクタまたはサブユニット) の状態が変更されたときに通知を提供します。 |
関連トピック