音訊端點裝置

端點裝置一詞是指位於應用程式程式所產生或終止數據路徑一端的硬體裝置。 音訊端點裝置的範例包括喇叭、耳機、麥克風和CD播放機。 沿著數據路徑移動的音訊數據可能會在應用程式與端點裝置之間的旅程期間周游許多軟體和硬體元件。 雖然這些元件對於端點裝置的作業而言很重要,但使用者通常會看不見這些元件。 使用者更可能從直接操作的端點裝置上思考,而不是從端點裝置插入的音訊適配卡上的裝置,或處理流向這些適配卡的音訊串流的軟體元件而言。

為了避免與端點裝置混淆,本檔將音訊適配卡 上的裝置稱為配接器裝置

下圖顯示音訊端點裝置與配接器裝置有何不同。

examples of audio endpoint devices and adapter devices

在上圖中,以下是端點裝置的範例:

  • 演講者
  • 麥克風
  • 輔助輸入設備

以下是配接器裝置的範例:

  • 波輸出裝置(包含數位對模擬轉換器)
  • 輸出控制裝置(包含音量和靜音控制件)
  • 波浪輸入裝置(包含模擬數位轉換器)
  • 輸入控制裝置(包含音量控制和多工作器)

音訊應用程式的使用者介面通常是指音訊端點裝置,而不是適配卡裝置。 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. 在該麥克風上啟動音訊擷取介面。

操作系統會執行識別及啟用端點裝置所需的所有工作。 例如,如果麥克風的數據路徑包含多任務器,系統會自動選取多任務器的麥克風輸入。

音訊子系統的行為更可靠且具決定性,如果應用程式,而不是實作自己的端點識別演算法,可以將識別端點裝置的工作降級至操作系統。 軟體廠商不再需要確認其端點識別演算法可正確使用所有可用的音訊硬體裝置和組態,而只需依賴操作系統進行端點識別。 同樣地,硬體廠商不再需要確認每個相關的用戶端應用程式都能輕鬆地識別任何連線到其音訊適配卡的端點裝置,他們只需要確認操作系統可以識別連線到其音訊適配卡的端點裝置。

下列主題提供音訊端點裝置的其他資訊:

程式設計指南