Routing audio multizona

Il servizio audio dell'auto usa le norme relative all'audio dinamico di Core Audio per facilitarne l'utilizzo in auto.

  • Riproduzione audio separata per ogni passeggero. Si parla di audio multizona, in cui ogni zona consente la riproduzione simultanea del suono.

  • Configurazione delle zone audio dinamiche.

  • Trasmissione audio della zona principale dei passeggeri.

  • Specchio audio del passeggero.

In ogni caso d'uso, il servizio audio dell'auto usa il criterio audio dinamico per per instradare automaticamente l'audio al dispositivo di output designato.

Audio multizona

L'audio multizona consente a più utenti di interagire simultaneamente con AAOS. R il gruppo di dispositivi di uscita è associato a una zona e ogni zona mantiene l'audio della messa a fuoco e del volume. I passeggeri possono ascoltare l'audio mentre il conducente ascolta un'altra sorgente nella zona principale (di solito, la cabina principale).

Architettura audio multizona

Architettura del servizio audio dell'auto

Figura 1. Architettura del servizio audio per automobili.

Le zone audio dell'auto sono un'astrazione di uscite audio, focus audio e altre impostazioni audio, che possono essere gestite in modo indipendente. Ai fini del routing, ciascuna zona è definita come un insieme di dispositivi bus di uscita audio disposti nel configurazione dei criteri audio. I dispositivi sono diversi per ogni definizione della zona audio. Nella figura 1, i dispositivi bus da 1 a 5 appartengono alla zona zero, i dispositivi bus da 6 a 5 8 appartengono alla zona 1, mentre i dispositivi di bus da 9 a 11 appartengono alla zona 2.

Configurazione dell'audio dell'auto

In genere, i dispositivi di uscita sono assegnati a una zona audio. Ogni zona audio viene definito in car_audio_configuration.xml. Il seguente snippet di codice mostra un'auto configurazione audio per la Figura 1:

<carAudioConfiguration version="3">
    <zones>
        <zone name="Zone0" audioZneId="0" occupantZoneId="0">
            <zoneConfigs>
                <zoneConfig name="config0" isDefault="true">
                   <volumeGoups>
                        <group>
                            <device address="bus_1">
                                <context context="music"/>
                            </device>
                        </group>
                        <group>
                            <device address="bus_2">
                                <context context="navigation"/>
                            </device>
                        </group>
                        ...
                    </volumeGroups>
                </zoneConfig>
            </zoneConfigs>
        </zone>
        <zone name="Zone1" audioZoneId="1" occupantZoneId="1">
            <zoneConfigs>
                <zoneConfig name="config0" isDefault="true">
                    <volumeGroups>
                        <group>
                            <device address="bus_6">
                                <context context="music"/>
                            </device>
                        </group>
                        <group>
                            <device address="bus_7">
                                <context context="navigation"/>
                           </device>
                       </group>
                       ...
                    </volumeGroups>
                </zoneConfig>
            </zoneConfigs>
        </zone>
        ...
    ...
   </zones>
</carAudioConfiguration>

occupantZoneId è una definizione di servizio auto gestito da CarOccupantZoneManager. Viene utilizzato nelle auto per definire una mappatura per un utente in raggiungere una posizione specifica del sedile. Anche CarOccupantZoneService definisce mappatura della zona degli occupanti ai display, ad altre periferiche e all'utente, l'utente accede a un display. Una zona audio ha:

  • Un ID zona audio e un ID zona degli occupanti.

    • Mappa la zona audio alla zona del passeggero (sedile, display e altre periferiche)
    • Mappa l'ID utente assegnato a una zona audio al momento dell'accesso
  • Un elenco delle configurazioni audio. Ogni configurazione audio ha un insieme e gruppi di volumi. Ogni gruppo di volume dispone di un insieme di dispositivi bus audio.

    • Quando il volume viene regolato, tutti i dispositivi audio di un gruppo vengono controllati in allo stesso modo.

    • A ogni dispositivo audio viene assegnato un elenco di attributi audio. Questo le informazioni vengono utilizzate per creare i mix dei criteri audio con gli attributi audio assegnati.

Questa configurazione consente di indirizzare diversi utilizzi degli attributi audio dispositivi di output diversi in ciascuna zona. A seconda del caso d'uso, possono essere riprodotti contemporaneamente. Ad esempio, puoi scegliere di configurare la configurazione principale nell'abitacolo (zona principale) per riprodurre suoni multimediali su tutti gli altoparlanti, tranne i suoni di navigazione solo sugli altoparlanti più vicini al conducente. Con la riproduzione simultanea di suoni, nell'abitacolo principale continua ad ascoltare contenuti multimediali mentre la navigazione viene consegnata conducente.

Flusso di lavoro dell'accesso passeggero audio multizona

Il diagramma di sequenza seguente mostra il flusso per abilitare il routing audio quando log passeggeri nel rispettivo display:

immagine

Figura 2.

In questa sequenza, l'accesso dell'utente viene propagato al servizio car audio attraverso la per la zona degli occupanti.

  1. Il servizio car audio (per una zona audio specifica) utilizza la funzione API AudioPolicy#removeUserIdDeviceAffinity per rimuovere il dispositivo dell'utente affinità. Questa API richiede un ID utente. In questo caso, il valore della zona precedente utente.

  2. L'API AudioPolicy#setUserIdDeviceAffinity assegna il nuovo utente a un che prende l'ID utente e tutti i dispositivi di una zona specifica configurazione.

Configurazioni di zone dinamiche

In Android 14, le configurazioni delle zone dinamiche per consentire agli OEM di configurare diversi insiemi di dispositivi per i passeggeri. Il caso d'uso consente ai passeggeri sul sedile posteriore di passare da un sedile posteriore all'altro altoparlante per poggiatesta e periferica per le cuffie sul sedile posteriore.

In questo caso, sono necessarie due configurazioni. Uno per il sedile posteriore poggiatesta e periferica per cuffie. L'audio di un utente specifico viene indirizzato solo a una configurazione alla volta.

Configurazione di zone dinamiche
flusso di lavoro

Figura 3. Flusso di lavoro per la configurazione di zone dinamiche.

La Figura 3 illustra l'architettura per la configurazione della zona dinamica nel tuo flusso di lavoro. La zona audio 1 contiene due configurazioni, Config 0 e Config 1, che sono associati rispettivamente all'altoparlante e al poggiatesta del dispositivo di output.

All'accesso, all'utente viene assegnata automaticamente la configurazione predefinita. Quando l'utente sceglie di modificare le configurazioni, solitamente tramite un'interfaccia utente di sistema, car audio service esegue il passaggio tra le due configurazioni. In questo il dispositivo di uscita viene commutato tra l'altoparlante Z1 e il poggiatesta Z1.

Lo snippet di codice riportato di seguito mostra la configurazione di questa zona dinamica.

<carAudioConfiguration version="3">
    <zones>
        <zone name="Zone1" audioZoneId="1" occupantZoneId="1">
            <zoneConfigs>
                <zoneConfig name="Zone 1 Config 0" isDefault="true">
                    <volumeGroups>
                        <group>
                            <device address="bus_100">
                                <context context="music"/>
                                    ***
                            </device>
                        </group>
                    </volumeGroups>
                </zoneConfig>
                <zoneConfig name="Zone 1 Config 1">
                    <volumeGroups>
                        <group>
                            <device address="bus_101">
                                <context context="music"/>
                                    ***
                            </device>
                        </group>
                    </volumeGroups>
                </zoneConfig>
            </zoneConfigs>
        </zone>
    </zones>

Per facilitare la gestione delle configurazioni audio, Gestione audio dell'auto espone le API per gestire le configurazioni:

  • Configurazioni di query disponibili per una zona.
  • Configurazione della query attualmente impostata per una zona.
  • Passa a un'altra configurazione.

Un'app o un servizio di interfaccia utente di sistema può utilizzare queste API per gestire la configurazione del come mostrato nella Figura 4. L'API Query li espone al passeggero. L'utente può selezionare una configurazione diversa toccando un comando per il parametro alla configurazione desiderata.

Configurazione di zone dinamiche
flusso di lavoro

Figura 4. Flusso di lavoro per la configurazione di zone dinamiche.

Trasmissione audio passeggero principale zona

La trasmissione audio principale dei passeggeri della zona è una funzionalità introdotta in Android 14 per consente ai passeggeri di trasmettere l'audio multimediale nella zona principale. In questo il modo in cui l'audio multimediale del passeggero può essere trasmesso nell'abitacolo principale mentre il controllo del conducente.

La figura seguente mostra una versione semplificata dell'architettura per l'ambiente trasmissione audio multimediale dei passeggeri della zona.

Configurazione di zone dinamiche
flusso di lavoro

Figura 5. Flusso di lavoro per la configurazione di zone dinamiche.

L'immagine mostra che il dispositivo di output dei contenuti multimediali per il driver è condiviso con passeggero, questo accade solo quando il passeggero si trova nella zona principale . Il criterio audio dinamico viene utilizzato anche per gestire il routing audio per ma non vengono applicate modifiche alle affinità dei dispositivi per il conducente. Per al passeggero l'elenco dei dispositivi di output viene modificato nel seguente modo:

  • Il dispositivo di output dei contenuti multimediali per il passeggero è stato rimosso dall'elenco dei dispositivi
  • Il dispositivo di output dei contenuti multimediali per il driver è stato aggiunto all'elenco dei dispositivi
  • I dispositivi di output rimanenti per le zone audio dei passeggeri rimangono nell'elenco dei dispositivi

Questo nuovo elenco di dispositivi viene assegnato al passeggero tramite API AudioPolicy#setUserIdDeviceAffinity. I parametri trasmessi all'API vengono l'elenco dei dispositivi e l'ID utente del passeggero. Quando l'audio del sistema audio query sul servizio per le norme su quale mix audio deve essere selezionato per una traccia multimediale associato al passeggero, il mix audio multimediale associato all'elemento selezionata.

Un requisito chiave per la trasmissione audio della zona principale è che i contenuti multimediali dispositivo di output può essere isolato dagli altri utilizzi degli attributi audio. Altrimenti, durante struttura dei mix audio, vengono aggiunti altri attributi audio al mix. Quando il mix selezionato viene eseguito dal sistema audio, tutti i suoni collegati il mix viene selezionato per la riproduzione nell'abitacolo principale.

Mirroring audio zona passeggeri

La funzionalità di mirroring audio consente ai passeggeri di condividere l'audio. La funzionalità di mirroring duplica i dati audio in ogni zona audio in modo che tutti i passeggeri possano ascoltare. lo stesso audio. In questo caso, il focus audio viene condiviso con i passeggeri coinvolti nel mirroring audio.

Routing del mirroring audio

Per attivare il mirroring audio è necessario un minimo di due passeggeri. Come risultato, una configurazione audio con solo due zone audio per i passeggeri richiederebbe un dispositivo di output del mirroring. Secondo la definizione precedente, due mirroring simultanei avviare sessioni.

La figura seguente mostra un diagramma semplificato per il mirroring audio multizona tra due passeggeri. L'audio di entrambi i passeggeri viene indirizzato a uno specchio audio dispositivo bus_1000. L'HAL audio duplica il segnale nelle zone di origine.

Configurazione di zone dinamiche
flusso di lavoro

Figura 6. Flusso di lavoro per la configurazione di zone dinamiche.

Questo percorso è attivato solo quando i passeggeri sono in modalità mirroring. Se i dispositivi corrispondenti alla zona audio vengono assegnati ai passeggeri. Quando il mirroring viene attivato per la prima volta per un passeggero, il L'API AudioPolicy#setUserIdDeviceAffinity modifica il routing:

  • Il dispositivo di output multimediale per il passeggero è stato rimosso dall'elenco dei dispositivi.
  • Mirroring dispositivo di output aggiunto all'elenco di dispositivi.
  • I dispositivi di uscita rimanenti per la zona audio passeggeri rimangono nell'elenco dei dispositivi.

Con l'elenco dei dispositivi, l'API viene chiamata con l'elenco aggiornato dei dispositivi e l'ID utente del passeggero. L'immagine seguente fornisce un diagramma di sequenza il flusso di lavoro del mirroring audio.

Flusso di lavoro del mirroring audio

Figura 7. Flusso di lavoro del mirroring audio.

Nella Figura 7, le API di gestione dell'audio dell'auto per la gestione del mirroring audio sono chiamato dal Media System Service. Nello specifico, l'API per abilitare l'audio mirroring per Utente 1 e Utente 2, CarAudioManager#enableMirrorForAudioZones.

Il servizio car audio configura il routing dell'audio per i passeggeri degli utenti descritti sopra. Il servizio audio dell'auto invia anche un segnale all'HAL audio a configurare e duplicare l'audio dal dispositivo di mirroring al diverse.

Nell'immagine qui sopra, il servizio audio dell'auto invia mirroring_src=bus_1000;mirroring_dest=bus_10,bus_20

dove,

bus_1000 è il bus di origine e bus_10 e bus_20 sono la destinazione sugli autobus.

Nel diagramma di sequenza non è mostrato il segnale inviato tramite API AudioManager#setParameters, che raggiunge l'HAL tramite l'audio completamente gestito di Google Cloud.

Dopo aver disattivato il mirroring audio, viene inviato il seguente segnale: mirroring_src=bus_1000;mirroring=off. Questo segnale può essere utilizzato dall'HAL per disattiva la duplicazione audio quando il mirroring audio non è abilitato. Per definire l'audio sui dispositivi di mirroring, il file di configurazione dell'audio dell'auto contiene una sezione denominata mirroringDevices, come mostrato nello snippet di seguito.

In questo snippet sono definiti due dispositivi di mirroring, bus_1000 e bus_2000, per consentire a quattro passeggeri di utilizzare il mirroring audio.

<carAudioConfiguration version="3">
   <mirroringDevices>
       <mirroringDevice address="bus_1000"/>
       <mirroringDevice address="bus_2000"/>
   </mirroringDevices>
  <zones>
    ....
  </zones>
</carAudioConfiguration>