音訊驅動程式架構

在 Fuchsia 中,您可以依照 包括使用的驅動程式數量、溝通方式及職責。音訊 駕駛人負責的介面由驅動程式庫接觸到的介面決定 用戶端、用戶端可能是其他驅動程式或應用程式使用者 相關成本。

定義

字詞 定義
硬體轉碼器 編碼/解碼 從數位/類比轉向/來自類比/數位 包括所有組合,例如數位到數位。 轉碼器範例包括 DAC-Amplifier 組合和 ADC 轉換者。
控制器或引擎 系統的硬體部分,管理音訊 信號,例如 SOC 的音訊子系統。
動態廣告插播 (DAI) 數位音訊介面。音訊間的介面 可以建立與 TDM 或 PDM 連結 控制器和轉碼器
環形緩衝區 共用記憶體區域的抽像管理 (位於 主要記憶體) 來移轉資料;此共用項目 記憶體區域是由 VMO 物件提供

音訊介面

音訊驅動程式的應用程式/用戶端使用者所使用的 API 音訊複合介面。這個 API 可讓應用程式 存取驅動程式所提供的音訊硬體功能。駕駛人能 公開各種硬體的功能 (包括硬體轉碼器) 搭配一或多個 DAI 使用,以及 環形緩衝區和 DAI 以及 允許任意組合處理元素 音訊訊號處理 API。

音訊硬體的常見分割方式,就是使用音訊引擎來設定 DAI 與音訊硬體轉碼器通訊。在這個分組中 分別用於音訊引擎和轉碼器。兩個駕駛人 透過音訊複合介面使用相關功能。 轉碼器驅動程式庫會公開一或多個 DAI 互連網路介面, 音訊引擎驅動程式庫會設定音訊引擎硬體 (包括 DAI) 連結到轉碼器驅動程式庫或驅動程式的 DAI。

這些驅動程式的用戶端應設定所有驅動程式。範例 這種架構的應用情況,在實際具有兩個不同轉碼器的系統中 已連結至引擎,例如來擷取 SoC 的音訊子系統

                           +-----------------+
                +----------+     Client      +----------+
                |          +-----------------+          |
                |                   |                   |
          Composite API       Composite API      Composite API
                |                   |                   |
       +-----------------+ +-----------------+ +-----------------+
       | audio subsystem | |     Codec 1     | |     Codec 2     |
       +-----------------+ +-----------------+ +-----------------+

已淘汰的介面

已淘汰的介麵包括:

  1. StreamConfig: 用於擷取或算繪音訊 audio_coreaudio-驅動程式庫-ctl。前者是 音訊系統核心的第 1 版 (提供軟體混音、轉送 後者則是用來測試及啟動新平台的公用程式。

如要實作先前會使用 StreamConfig API 的驅動程式,請使用 音訊複合,搭配一個環形緩衝區。

  1. 轉碼器:用於抽象 加入一個 DAI 程式碼原本會使用 Codec API 的驅動程式 實作方式 音訊複合,其中包含一個 DAI 且沒有環形緩衝區。

  2. DAI:用於抽象 SoC 搭配一個 Ring Buffer 和一個 DAI 使用先前會使用 如要導入 DAI API,可以使用 音訊複合,搭配一個 DAI 和一個環形緩衝區。