Google is committed to advancing racial equity for Black communities. See how.
本頁面由 Cloud Translation API 翻譯而成。
Switch to English

音頻實施

本頁說明如何實現音頻硬件抽象層(HAL),提供有關配置音頻策略(文件格式,代碼組織,預處理效果)的詳細信息,並說明如何配置共享庫(創建Android.mk文件)。

音頻HAL功能

Android 10版本包含以下針對音頻HAL的新功能:

  • AudioSource
    • VOICE_PERFORMANCE
    • ECHO_REFERENCE
  • AudioFormat
    • AAC_LATMLCHE V1V2
    • CELT
    • APTX_ADAPTIVE
    • LHDC
    • LHDC_LL
  • AudioChannelMask
    • OUT_HAPTIC_A
    • OUT_HAPTIC_B

audio_policy_configuration.xml聲明這些HAL功能,以便框架可以使用它們。

音頻HAL和子系統要求

Android 10版本包含以下對音頻HAL和子系統實現的要求:

  • 如果在audio_policy_configuration.xml中聲明了單獨的輸入流配置文件,則對於任何設備選​​擇,都必須能夠同時激活它們
  • 如果一個輸入配置文件支持捕獲聲音觸發(從熱字DSP緩衝區捕獲),則實現必須支持此配置文件上的多個活動流,這些流與聲音觸發HAL支持的並發會話數相對應。
  • 從AP進行DSP熱字檢測和捕獲的並發。
  • 語音呼叫TX和從AP捕獲的並發性。

實施音頻HAL

音頻HAL由以下接口組成:

  • hardware/libhardware/include/hardware/audio.h代表音頻設備的主要功能。
  • hardware/libhardware/include/hardware/audio_effect.h表示可以應用於音頻的效果,例如縮混,迴聲或噪聲抑制。

您必須實現所有接口。

與較低版本相比,Android 11在運行時對聲音觸發器HAL實現的實施更加嚴格。

這會影響//hardware/interfaces/soundtrigger/下指定的HIDL接口的實現。

這些HAL接口的規範並不特定於:

  • 當允許實現從操作返回錯誤代碼時
  • 實施的結果狀態如何?
  • 什麼是預期的錯誤恢復過程

此外,由於聲音觸發子系統的不透明特性,VTS測試無法為這些場景提供有意義的覆蓋範圍。

為了確保驅動程序實現之間可靠且一致的行為,在Android 11中,我們將從HAL返回的所有非成功錯誤代碼都視為編程錯誤,並嘗試通過重新啟動HAL進程(以及其他進程)從錯誤中恢復。這是最後的恢復策略,期望這些情況不會在正常工作的系統中發生。

我們強烈建議聲音觸發HAL的實現者盡快對可能導致返回錯誤代碼的場景進行嚴格的測試,並提供有關此方法的反饋。我們預計不會因此更改而導致任何與Treble / VTS相關的故障,但是可能會出現與系統相關的新故障,您需要儘早解決。從長遠來看,它可以確保跨平台的行為更加可靠和一致。

音頻頭文件

有關您可以定義的屬性的參考,請參考音頻頭文件:

  • 在Android 6.0及更高版本中,請參閱system/media/audio/include/system/audio.h
  • 在Android 5.1及更低版本中,請參閱system/core/include/system/audio.h

有關示例,請在device/samsung/tuna/audio參考Galaxy Nexus的實現。

下一步

除了實現音頻HAL之外,還必須創建描述音頻拓撲的音頻策略配置文件 ,並將HAL實現打包到共享庫中 。您還可以配置預處理效果,例如自動增益控制和噪聲抑制。