A partire da Android 14, l'interfaccia Audio HAL è definita utilizzando Stable AIDL . I partner e i fornitori di SoC sono incoraggiati a reimplementare il proprio HAL audio per fornire un'interfaccia AIDL.
L'estensione della libreria libaudiohal
aggiunge il supporto del framework per AIDL HAL. Con l'implementazione AIDL, la specifica di configurazione della politica audio viene spostata nell'HAL AIDL. Con questa modifica, Audio Policy Manager (APM) ottiene la configurazione dall'HAL invece di consumarla dal file XML fornito dal fornitore.
API HAL AIDL audio
Questa sezione descrive le API HAL core, effetti e comuni per AIDL.
Utilizzare l'implementazione predefinita dell'API AIDL in /hardware/interfaces/audio/aidl/default/
come riferimento quando si implementano nuove versioni di HAL audio che interagiscono con i driver del kernel.
Consultare il file README Audio HAL per la struttura della directory Audio HAL per AIDL.
HAL principale
Alcune delle interfacce chiave di Core HAL , utilizzando AIDL, sono le seguenti:
-
IModule.aidl
è il punto di ingresso nell'API. - I flussi sono unidirezionali e vengono utilizzati da AudioFlinger per inviare o ricevere audio da e verso l'HAL tramite
IStreamOut.aidl
eIStreamIn.aidl
. -
ITelephony.aidl
fornisce controlli specifici per le funzioni di telefonia. -
IBluetooth.aidl
fornisce i controlli BT SCO e HFP presenti suIPrimaryModule
nell'API HIDL. -
IConfig.aidl
fornisce parametri di configurazione a livello di sistema. -
ISoundDose.aidl
fornisce supporto per la dose sonora. Vedi Dose sonora per ulteriori informazioni. - L'ultima versione dell'API Core HAL in sviluppo si trova in
/hardware/interfaces/audio/aidl/android/hardware/audio/core/
. - L'ultima versione rilasciata dell'API Core HAL si trova in
/hardware/interfaces/audio/aidl/aidl_api/android.hardware.audio.core/
.
Effetti HAL
Alcune delle interfacce chiave di Effects HAL, utilizzando AIDL, sono le seguenti:
-
IFactory.aidl
è il punto di ingresso nell'API. -
Descriptor.aidl
contiene tutte le informazioni come capacità e attributi per l'implementazione di un effetto. -
Capability.aidl
definisce le capacità degli effetti che non cambiano in fase di esecuzione. -
Parameter.aidl
definisce tutti i parametri supportati dall'istanza dell'effetto. -
IEffect.aidl
viene utilizzato per configurare e controllare particolari istanze di effetti. Elementi parcellabili specifici dell'effetto che prendono il nome dall'effetto.
L'ultima versione dell'API HAL degli effetti in fase di sviluppo si trova in
/hardware/interfaces/audio/aidl/android/hardware/audio/effect/
.L'ultima versione rilasciata dell'API HAL degli effetti si trova in
/hardware/interfaces/audio/aidl/aidl_api/android.hardware.audio.effect
.
Per ulteriori informazioni, vedere gli Effetti audio .
HAL comune
Le strutture dati e le interfacce condivise tra vari HAL come BT HAL, core ed effetti HAL audio si trovano nell'HAL comune.
L'ultima versione di Common AIDL HAL in fase di sviluppo si trova in
/hardware/interfaces/audio/aidl/android/hardware/audio/common/
.L'ultima versione rilasciata dell'API Common HAL si trova in
/hardware/interfaces/audio/aidl/aidl_api/android.hardware.audio.common/current/android/hardware/audio/common/
.
Tipi di dati stabili comuni
Le definizioni di strutture dati stabili vengono utilizzate sia dagli HAL che dal framework.
L'ultima versione dei tipi di dati stabili in sviluppo si trova in
/system/hardware/interfaces/media/aidl/android/media/audio/common/
.L'ultima versione rilasciata dei tipi di dati stabili si trova in
/system/hardware/interfaces/media/aidl_api/android.media.audio.common.types/
.
Test dell'API HAL Audio AIDL
Sono forniti nuovi test VTS per l'interfaccia AIDL.
Nella nuova versione dell'HAL non sono presenti modifiche che possano influire sulla sicurezza.