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

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

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

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

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

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

  • Speakers
  • マイク
  • 補助入力装置

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

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

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

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

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

アダプターは、システム バス (通常は PCI または PCI Express) またはプラグ アンド プレイ (PnP) をサポートする外部バス (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. そのマイクでオーディオ キャプチャ インターフェイスをアクティブにします。

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

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

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

プログラミング ガイド