Routage audio multizone

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

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

  • Configuration dynamique des zones audio.

  • Diffusion audio dans la zone principale des passagers

  • Dupliquer le son 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 d'appareils de sortie est associé à une zone, et chaque zone maintient la mise au point audio et le niveau de volume. Les passagers peuvent écouter leur contenu audio pendant que le conducteur écoute une autre source dans la zone principale (généralement, la cabine principale).

Architecture audio multizone

Architecture du service audio pour voiture

Figure 1 : Architecture du service audio pour voitures.

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

Configuration audio de la voiture

En règle générale, les appareils 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 pour 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 de voiture gérée par CarOccupantZoneManager. Il est utilisé dans les voitures pour définir une mise en correspondance d'un utilisateur dans la voiture avec un siège spécifique. CarOccupantZoneService définit également la mise en correspondance de la zone d'occupant avec les écrans, les autres périphériques et l'utilisateur une fois que l'utilisateur se connecte à un écran. Une zone audio comporte:

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

    • Mappage de la zone audio sur la zone des occupants (siège, écrans et autres périphériques)
    • Associer un ID utilisateur à une zone audio lors de la connexion
  • Liste des configurations audio. Chaque configuration audio comporte un ensemble de groupes de volume. Chaque groupe de volumes comporte un ensemble d'appareils de bus audio.

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

    • Une liste d'attributs audio est attribuée à chaque appareil audio. Ces informations permettent de créer les combinaisons de règles audio avec des attributs audio attribués différemment.

Cette configuration permet de router différents usages d'attributs audio vers différents périphériques 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 la cabine principale (zone principale) pour diffuser 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, la cabine principale continue d'écouter des contenus multimédias pendant que la navigation est transmise au conducteur.

Workflow de connexion des passagers à 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 respectif:

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 de l'appareil 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 du siège arrière de basculer entre un haut-parleur d'appui-tête arrière et un périphérique de casque arrière.

Dans ce cas, deux configurations sont requises. Un pour l'appui-tête de la banquette arrière et un pour le périphérique de casque. L'audio d'un utilisateur spécifique n'est acheminé qu' vers une seule configuration à la fois.

Workflow de configuration de zone dynamique

Figure 3. Workflow de configuration de zones dynamiques.

La figure 3 illustre l'architecture du workflow de configuration des zones dynamiques. La zone audio 1 contient deux configurations, Config 0 et Config 1, associées respectivement à l'enceinte de l'appareil de sortie et à l'appui-tête.

Lors de la connexion, la configuration par défaut est automatiquement attribuée à l'utilisateur. Lorsque l'utilisateur choisit de modifier les configurations, généralement via une UI système, le service audio de la voiture effectue le basculement entre les deux configurations. Le périphérique de sortie bascule ainsi entre le haut-parleur Z1 et l'appui-tête Z1.

L'extrait de code ci-dessous montre la configuration de cette configuration de 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 pour 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 peut utiliser ces API pour gérer la configuration de la zone audio, comme illustré dans la figure 4. L'API Query les expose au passager. L'utilisateur peut sélectionner une autre configuration en appuyant sur une commande pour la configuration souhaitée.

Workflow de configuration de zone dynamique

Figure 4. Workflow de configuration de zones dynamiques.

Diffusion audio pour les passagers de la zone principale

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

La figure ci-dessous montre une version simplifiée de l'architecture de la diffusion audio multimédia pour les passagers de la zone principale.

Workflow de configuration de zone dynamique

Figure 5. Workflow de configuration de zones dynamiques.

L'image montre que l'appareil de sortie multimédia du conducteur est partagé avec le passager. Cela ne se produit que lorsque le passager est en mode diffusion vers la zone principale. La stratégie audio dynamique permet également de 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 du pilote est ajouté à la liste des appareils
  • Les autres périphériques de sortie des zones audio pour les 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 stratégie audio du système audio interroge le mix audio à sélectionner pour un titre multimédia associé au passager, le mix audio multimédia associé à la zone principale est sélectionné.

Une exigence clé pour la diffusion audio de la zone principale est que l'appareil de sortie multimédia de la zone principale soit isolé des autres utilisations de l'attribut audio. Sinon, lors de la création des mixages audio, d'autres attributs audio sont ajoutés au mixage. 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 la lecture dans la cabine principale.

Dupliquer le son 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, le focus audio est partagé avec les passagers impliqués dans le mirroring audio.

Routage de la duplication audio

Au moins deux passagers sont nécessaires pour activer la duplication audio. Par conséquent, une configuration audio ne comportant que deux zones audio pour les passagers nécessiterait un seul périphérique de sortie miroir. Avec la définition ci-dessus, deux sessions de mise en miroir simultanées peuvent être lancé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. Le HAL audio duplique le signal vers les zones sources.

Workflow de configuration de zone dynamique

Figure 6. Workflow de configuration de 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 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.
  • Appareil de sortie du miroir ajouté à la liste des appareils.
  • Les autres périphériques de sortie de la zone audio des passagers restent dans la liste des périphériques.

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 le mirroring audio sont appelées à partir du service système multimédia. Plus précisément, l'API permettant d'activer le mirroring 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 au HAL audio pour configurer et dupliquer l'audio de l'appareil 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.

 :

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

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

Lorsque vous désactivez le miroir audio, le signal suivant est envoyé : mirroring_src=bus_1000;mirroring=off. Ce signal peut être utilisé par le HAL pour désactiver la duplication audio lorsque la duplication 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>