次の方法で共有


オーディオ エンドポイント デバイス

エンドポイント デバイス という用語は、アプリケーション プログラムで開始または終了するデータ パスの一方の端にあるハードウェア デバイスを指します。 オーディオ エンドポイント デバイスの例としては、スピーカー、ヘッドフォン、マイク、CD プレーヤーがあります。 データ パスに沿って移動するオーディオ データは、アプリケーションとエンドポイント デバイスの間の移動中に、多数のソフトウェアコンポーネントとハードウェア コンポーネントを走査する可能性があります。 これらのコンポーネントはエンドポイント デバイスの操作に不可欠ですが、ユーザーには見えない傾向があります。 ユーザーは、エンドポイント デバイスがこれらのアダプターとの間を流れるオーディオ ストリームを処理するソフトウェア コンポーネントに接続するオーディオ アダプター上のデバイスではなく、直接操作するエンドポイント デバイスの観点から考える可能性が高くなります。

エンドポイント デバイスとの混乱を避けるために、このドキュメントでは、オーディオ アダプター上のデバイスを アダプター デバイスと参照します。

次の図は、オーディオ エンドポイント デバイスとアダプター デバイスの違いを示しています。

オーディオ エンドポイント デバイスとアダプター デバイスの例を

前の図では、エンドポイント デバイスの例を次に示します。

  • スピーカー
  • マイク
  • 補助入力装置

アダプター デバイスの例を次に示します。

  • 波出力装置(デジタルからアナログへのコンバーターを含む)
  • 出力コントロール デバイス (音量コントロールとミュート コントロールを含む)
  • 波入力装置(アナログデジタルコンバータ内蔵)
  • 入力制御デバイス(ボリューム制御とマルチプレクサを含む)

通常、オーディオ アプリケーションのユーザー インターフェイスは、アダプター デバイスではなく、オーディオ エンドポイント デバイスを参照します。 Windows Vista は、エンドポイント デバイスの抽象化を直接サポートすることで、わかりやすいアプリケーションの設計を簡素化します。

一部のエンドポイント デバイスは、アダプター デバイスに永続的に接続する場合があります。 たとえば、コンピューターには、システム シャーシに統合された CD プレーヤー、マイク、スピーカーなどの内部デバイスが含まれている場合があります。 通常、ユーザーはこれらのエンドポイント デバイスを物理的に削除しません。

他のエンドポイント デバイスは、オーディオ ジャックを介してオーディオ アダプターに接続する場合があります。 ユーザーは、これらの外部デバイスをプラグインして取り外します。 たとえば、外部マイクやヘッドフォンなどのオーディオ エンドポイント デバイスは、他の端がアダプター デバイスのジャックに接続するケーブルの一方の端にあります。

アダプターは、プラグ アンド プレイ (PnP) をサポートするシステム バス (通常は PCI または PCI Express) または外部バス (USB または IEEE 1394) を介してシステム プロセッサと通信します。 デバイスの列挙中に、プラグ アンド プレイ マネージャーはオーディオ アダプター内のデバイスを識別し、それらのデバイスを登録して、オペレーティング システムとアプリケーションで使用できるようにします。

アダプターと USB や IEEE 1394 バスなどの外部バス間の接続とは異なり、エンドポイント デバイスとアダプター デバイス間の接続では PnP デバイスの検出はサポートされません。 ただし、一部のオーディオ アダプターでは、ジャックプレゼンス検出 サポートしています。プラグがジャックに挿入またはジャックから取り外されると、ハードウェアは割り込みを生成して、ハードウェア構成の変更をアダプター ドライバーに通知します。 Windows Vista のエンドポイント マネージャーは、このハードウェア機能を利用して、どのエンドポイント デバイスが存在するかをいつでもアプリケーションに通知できます。 このように、エンドポイント マネージャーの操作は、システムに存在するアダプター デバイスを追跡するプラグ アンド プレイ マネージャーの操作に似ています。

Windows Vista では、オーディオ システムはエンドポイント デバイスとアダプター デバイスの両方を追跡します。 エンドポイント マネージャーはエンドポイント デバイスを登録し、プラグ アンド プレイ マネージャーはアダプター デバイスを登録します。 エンドポイント デバイスを登録すると、ユーザーフレンドリなアプリケーションで、ユーザーがコンピューター シャーシ内に隠れている可能性があるアダプター デバイスを参照する代わりに、ユーザーが直接操作するエンドポイント デバイスを参照しやすくなります。 オペレーティング システムによって報告されるエンドポイント デバイスは、ジャック プレゼンス検出を備えたオーディオ ハードウェアの構成の動的な変更を忠実に追跡します。 エンドポイント デバイスは接続されたままですが、システムはそのデバイスを列挙します。 ユーザーがエンドポイント デバイスを取り外すと、システムはそれを列挙しなくなります。

以前のバージョンの Windows (Windows 98、Windows Me、Windows 2000、Windows XP など) では、システムは PnP デバイスのみをアプリケーションに明示的に表示します。 したがって、アプリケーションはエンドポイント デバイスの存在を推測する必要があります。 エンドポイント デバイスを明示的にサポートしていないオペレーティング システムでは、クライアント アプリケーションは、より多くの作業を実行するように強制されます。 たとえば、オーディオ キャプチャ アプリケーションでは、外部マイクからのキャプチャを有効にするには、次の手順を実行する必要があります。

  1. PnP マネージャーによって以前に登録されたすべてのオーディオ キャプチャ デバイス (これらはアダプター デバイス) を列挙します。
  2. キャプチャ デバイスを選択した後、waveInOpen 関数を呼び出すか、DirectSoundCapture または DirectShow API を使用して、デバイスでキャプチャ ストリームを開きます。
  3. mixerOpen 関数を呼び出し、他の mixerXxx 関数を使用して、手順 2 で開いたキャプチャ デバイスに対応するMIXERLINE_COMPONENTTYPE_SRC_MICROPHONE行を検索します。 これは教育を受けた推測です。
  4. マイクからデータ パスのブロックを解除します。 データ パスにミュート ノードが含まれている場合、クライアントはマイクからの信号のミュートを無効にする必要があります。 キャプチャ デバイスに複数の入力の中から選択するためのマルチプレクサーが含まれている場合、クライアントはマイク入力を選択する必要があります。

このプロセスはエラーが発生しやすいため、これらの操作を実行するソフトウェアは、デザイナーが予期していなかったハードウェア構成、またはテストされていないハードウェア構成に遭遇した場合に失敗する可能性があるためです。

エンドポイント デバイスをサポートする Windows Vista では、同じエンドポイント デバイスに接続するプロセスがはるかに簡単です。

  1. エンドポイント デバイスのコレクションからマイクを選択します。
  2. そのマイクでオーディオ キャプチャ インターフェイスをアクティブにします。

オペレーティング システムは、エンドポイント デバイスを識別して有効にするために必要なすべての作業を行います。 たとえば、マイクからのデータ パスにマルチプレクサが含まれている場合、システムは自動的にマルチプレクサへのマイク入力を選択します。

オーディオ サブシステムの動作は、アプリケーションが独自のエンドポイント識別アルゴリズムを実装する代わりに、エンドポイント デバイスを識別するタスクをオペレーティング システムに再任できる場合、より信頼性が高く決定論的です。 ソフトウェア ベンダーは、エンドポイント識別アルゴリズムが使用可能なすべてのオーディオ ハードウェア デバイスと構成で正しく動作することを確認する必要がなくなりました。エンドポイント識別のためにオペレーティング システムに依存できます。 同様に、ハードウェア ベンダーは、関連するすべてのクライアント アプリケーションがオーディオ アダプターに接続されているエンドポイント デバイスを容易に識別できることを確認する必要がなくなりました。オペレーティング システムがオーディオ アダプターに接続されているエンドポイント デバイスを識別できることを確認する必要があります。

次のトピックでは、オーディオ エンドポイント デバイスに関する追加情報を提供します。

プログラミング ガイド