Routage audio multizone

Le service audio de la voiture utilise la règle audio dynamique Core Audio pour faciliter les cas d'utilisation dans les voitures.

  • La lecture audio distincte pour chaque passager, appelée audio multizone, dans laquelle chaque zone permet la lecture simultanée du son.

  • Configuration dynamique des zones audio.

  • Diffusion audio de la zone principale des passagers.

  • Mise en miroir audio du passager.

Dans chaque cas d'utilisation, le service audio de la voiture utilise la stratégie audio dynamique pour acheminer automatiquement l'audio vers le périphérique de sortie désigné.

Audio multizone

L'audio multizone permet à plusieurs utilisateurs d'interagir simultanément avec AAOS. Un ensemble de périphériques de sortie est associé à une zone, et chaque zone conserve la priorité audio et le niveau de volume. Les passagers peuvent écouter leur contenu audio tandis que le conducteur écoute une autre source dans la zone principale (généralement, l'habitacle principal).

Architecture audio multizone

Architecture du service audio pour voiture

Figure 1 : Architecture du service audio de la voiture.

Les zones audio de voiture sont une abstraction des sorties audio, de la priorité audio et d'autres paramètres audio, qui peuvent tous être gérés indépendamment. Pour le routage, chaque zone est définie comme un ensemble de périphériques de bus de sortie audio, tels qu'ils sont organisés dans la configuration de la stratégie audio. Les appareils varient pour chaque définition de zone audio. Dans la figure 1, les périphériques de bus 1 à 5 appartiennent à la zone 0, les périphériques de bus 6 à 8 appartiennent à la zone 1 et les périphériques de bus 9 à 11 appartiennent à la zone 2.

Configuration audio de la voiture

En règle générale, les périphériques de sortie sont attribués à une zone audio. Chaque zone audio est définie dans car_audio_configuration.xml. L'extrait de code suivant montre une configuration audio de voiture pour la figure 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 est une définition de service automobile gérée par CarOccupantZoneManager. Il est utilisé dans les voitures pour définir une association entre un utilisateur dans la voiture et un emplacement de siège spécifique. CarOccupantZoneService définit également le mappage entre la zone d'occupant et les écrans, les autres périphériques et l'utilisateur une fois qu'il s'est connecté à un écran. Une zone audio comporte les éléments suivants :

  • Un ID de zone audio et un ID de zone d'occupant.

    • Associe la zone audio à la zone d'occupation (siège, écrans et autres périphériques)
    • Mappez l'ID utilisateur attribué à une zone audio lors de la connexion.
  • Liste des configurations audio. Chaque configuration audio comporte un ensemble de groupes de volume. Chaque groupe de volume possède un ensemble de périphériques de bus audio.

    • Lorsque le volume est modifié, tous les appareils audio d'un groupe sont contrôlés de la même manière.

    • Chaque appareil audio se voit attribuer une liste d'attributs audio. Ces informations permettent de créer des combinaisons de règles audio avec des attributs audio différents.

Cette configuration permet de router différentes utilisations d'attributs audio vers différents appareils de sortie dans chaque zone. Selon le cas d'utilisation, différents sons peuvent être lus simultanément. Par exemple, vous pouvez choisir de configurer l'habitacle principal (zone principale) pour qu'il diffuse les sons multimédias sur toutes les enceintes, mais les sons de navigation uniquement sur les enceintes les plus proches du conducteur. Avec la lecture simultanée du son, les passagers continuent d'écouter des contenus multimédias tandis que la navigation est diffusée au conducteur.

Workflow de connexion des passagers pour l'audio multizone

Le diagramme de séquence ci-dessous illustre le flux d'activation du routage audio lorsqu'un passager se connecte à son écran :

image

Figure 2.

Dans cette séquence, la connexion de l'utilisateur est propagée au service audio de la voiture via le service de zone d'occupant.

  1. Le service audio de la voiture (pour une zone audio spécifique) utilise l'API AudioPolicy#removeUserIdDeviceAffinity pour supprimer les affinités avec les appareils de l'utilisateur. Cette API accepte un ID utilisateur. Dans ce cas, l'utilisateur de la zone précédente.

  2. L'API AudioPolicy#setUserIdDeviceAffinity attribue le nouvel utilisateur à une zone, qui prend en compte l'ID utilisateur et tous les appareils pour une configuration de zone spécifique.

Configurations de zones dynamiques

Dans Android 14, des configurations de zones dynamiques sont introduites pour permettre aux OEM de configurer différents ensembles d'appareils pour les passagers. Le cas d'utilisation permet aux passagers assis à l'arrière de basculer entre un haut-parleur d'appui-tête arrière et un casque périphérique arrière.

Dans ce cas, deux configurations sont requises. Un pour l'appuie-tête du siège arrière et un pour le casque. L'audio d'un utilisateur spécifique n'est acheminé que vers une seule configuration à la fois.

Workflow de configuration des zones dynamiques

Figure 3. Workflow de configuration des zones dynamiques.

La figure 3 illustre l'architecture du workflow de configuration de zone dynamique. La zone audio 1 contient deux configurations, Config 0 et Config 1, qui sont associées respectivement au haut-parleur et à l'appuie-tête de l'appareil de sortie.

Lorsqu'il se connecte, l'utilisateur se voit automatiquement attribuer la configuration par défaut. Lorsque l'utilisateur choisit de modifier les configurations, généralement via une UI système, le service audio de la voiture effectue le changement entre les deux configurations. De cette manière, le périphérique de sortie est commuté entre le haut-parleur et l'appuie-tête de la Z1.

L'extrait de code ci-dessous montre la configuration de cette zone dynamique.

<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>

Pour faciliter la gestion des configurations audio, le gestionnaire audio de la voiture expose des API permettant de gérer les configurations :

  • Configurations de requêtes disponibles pour une zone.
  • Interrogez la configuration actuellement définie pour une zone.
  • Passez à une autre configuration.

Une application ou un service d'UI système peuvent utiliser ces API pour gérer la configuration de la zone audio, comme illustré à la figure 4. L'API Query expose les deux au passager. L'utilisateur peut sélectionner une autre configuration en appuyant sur une commande pour la configuration souhaitée.

Workflow de configuration des zones dynamiques

Figure 4. Workflow de configuration des zones dynamiques.

Caster l'audio des passagers de la zone principale

La diffusion audio pour les passagers de la zone principale est une fonctionnalité introduite dans Android 14 pour permettre aux passagers de diffuser le contenu audio de leurs contenus multimédias dans la zone principale. De cette manière, l'audio du contenu multimédia du passager peut être diffusé dans l'habitacle principal, tandis que le conducteur conserve le contrôle total.

La figure ci-dessous illustre une version simplifiée de l'architecture pour la diffusion audio des contenus multimédias des passagers dans la zone principale.

Workflow de configuration des zones dynamiques

Figure 5. Workflow de configuration des zones dynamiques.

L'image montre que le périphérique de sortie multimédia du conducteur est partagé avec le passager. Cela ne se produit que lorsque le passager est en mode "Caster vers la zone principale". La stratégie audio dynamique est également utilisée pour gérer le routage audio du pilote, mais aucune modification n'est appliquée aux affinités d'appareil du pilote. Pour le passager, la liste des périphériques de sortie est modifiée comme suit :

  • L'appareil de sortie multimédia pour le passager est supprimé de la liste des appareils
  • L'appareil de sortie multimédia pour le conducteur est ajouté à la liste des appareils.
  • Les appareils de sortie restants pour les zones audio des passagers restent dans la liste des appareils.

Cette nouvelle liste d'appareils est attribuée au passager par l'API AudioPolicy#setUserIdDeviceAffinity. Les paramètres transmis à l'API sont la liste des appareils et l'ID utilisateur du passager. Lorsque le service de règles audio du système audio demande quel mix audio doit être sélectionné pour une piste multimédia associée au passager, le mix audio multimédia associé à la zone principale est sélectionné.

Une exigence clé pour la diffusion audio dans la zone principale est que le périphérique de sortie multimédia de la zone principale soit isolé des autres utilisations des attributs audio. Sinon, d'autres attributs audio sont ajoutés au mix lors de sa création. Lorsque la sélection du mix est effectuée par le système audio, tous les sons associés au mix sont sélectionnés pour être lus dans l'habitacle principal.

Mise en miroir de l'audio de la zone passager

La fonctionnalité de duplication audio permet aux passagers de partager du contenu audio. La fonctionnalité de duplication du son duplique les données audio dans chaque zone audio afin que tous les passagers puissent écouter le même son. Dans ce cas, la priorité audio est partagée avec les passagers impliqués dans la duplication audio.

Routage de la duplication audio

Au moins deux passagers sont nécessaires pour activer la duplication audio. Par conséquent, une configuration audio avec seulement deux zones audio pour les passagers nécessiterait un périphérique de sortie miroir. Avec la définition ci-dessus, deux sessions de mirroring simultanées peuvent être démarrées.

La figure ci-dessous présente un schéma simplifié de la duplication audio multizone entre deux passagers. L'audio des deux passagers est acheminé vers un appareil de duplication audio, bus_1000. L'Audio HAL duplique le signal vers les zones sources.

Workflow de configuration des zones dynamiques

Figure 6. Workflow de configuration des zones dynamiques.

Ce routage n'est activé que lorsque les passagers sont en mode miroir. Sinon, les appareils correspondants à la zone audio sont attribués aux passagers. Lorsque la duplication d'écran est activée pour la première fois pour un passager, l'API AudioPolicy#setUserIdDeviceAffinity modifie le routage :

  • L'appareil de sortie multimédia pour le passager est supprimé de la liste des appareils.
  • L'appareil de sortie dupliqué a été ajouté à la liste des appareils.
  • Les périphériques de sortie restants pour la zone audio du passager restent dans la liste des appareils.

Avec la liste des appareils, l'API est appelée avec la liste mise à jour des appareils et l'ID utilisateur du passager. L'image suivante fournit un diagramme de séquence du workflow de duplication audio.

Workflow de duplication audio

Figure 7. Flux de travail de duplication audio.

Dans la figure 7, les API du gestionnaire audio de la voiture pour gérer la duplication audio sont appelées à partir du service système multimédia. Plus précisément, l'API permettant d'activer la duplication audio pour l'utilisateur 1 et l'utilisateur 2, CarAudioManager#enableMirrorForAudioZones.

Le service audio de la voiture configure le routage audio pour les passagers comme décrit ci-dessus. Le service audio de la voiture envoie également un signal à l'HAL audio pour configurer et dupliquer l'audio de l'appareil en miroir dans les zones correspondantes.

Dans l'image ci-dessus, le service audio de la voiture envoie mirroring_src=bus_1000;mirroring_dest=bus_10,bus_20

where,

bus_1000 est le bus source, et bus_10 et bus_20 sont les bus de destination.

Le diagramme de séquence ne montre pas le signal envoyé via l'API AudioManager#setParameters, qui atteint le HAL via le service audio.

Lorsque la duplication audio est désactivée, le signal suivant est envoyé : mirroring_src=bus_1000;mirroring=off. Ce signal peut être utilisé par la HAL pour désactiver la duplication audio lorsque la mise en miroir audio n'est pas activée. Pour définir des appareils de duplication audio, le fichier de configuration audio de la voiture contient une section nommée mirroringDevices, comme indiqué dans l'extrait ci-dessous.

Dans cet extrait, deux appareils de duplication sont définis, bus_1000 et bus_2000, afin que quatre passagers puissent utiliser la duplication audio.

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