Routage audio multizone

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

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

  • Configuration dynamique de la zone audio.

  • Diffusion audio de la zone principale du passager.

  • Mise en miroir audio du passager.

Dans chaque cas d'utilisation, le service audio de voiture utilise la règle audio dynamique pour acheminer automatiquement l'audio vers l'appareil 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 conserve le focus 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 l'habitacle principal).

Architecture audio multizone

Architecture du service audio pour voiture

Figure 1. Architecture du service audio de 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. À des fins de routage, chaque zone est définie comme un ensemble d'appareils de bus de sortie audio, comme indiqué dans la configuration de la règle audio. Les appareils diffèrent pour chaque définition de zone audio. Sur la figure 1, les appareils de bus 1 à 5 appartiennent à la zone zéro, les appareils de bus 6 à 8 appartiennent à la zone un, et les appareils de bus 9 à 11 appartiennent à la zone deux.

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 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 de voiture gérée par CarOccupantZoneManager. Il est utilisé dans les voitures pour définir un mappage d'un utilisateur dans la voiture à un emplacement de siège spécifique. CarOccupantZoneService définit également le mappage de la zone d'occupant aux écrans, à d'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.

    • Mappe la zone audio à la zone d'occupant (siège, écrans et autres périphériques)
    • Mappe l'ID utilisateur attribué à une zone audio lors de la connexion
  • Une liste de configurations audio. Chaque configuration audio comporte un ensemble de groupes de volume. Chaque groupe de volume comporte un ensemble d'appareils 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 sont utilisées pour créer les mixages de règles audio avec des attributs audio attribués différemment.

Cette configuration permet d'acheminer 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 tous les haut-parleurs, mais les sons de navigation uniquement sur les haut-parleurs les plus proches du conducteur. Avec la lecture simultanée du son, l'habitacle principal continue d'écouter le contenu multimédia pendant que la navigation est fournie au conducteur.

Workflow de connexion des passagers audio multizone

Le diagramme de séquence ci-dessous montre le flux permettant d'activer le 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 voiture via le service de zone d'occupant.

  1. Le service audio de voiture (pour une zone audio spécifique) utilise l'API AudioPolicy#removeUserIdDeviceAffinity pour supprimer les affinités d'appareil de l'utilisateur. Cette API prend 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 l'ID utilisateur et tous les appareils pour une configuration de zone spécifique.

Configurations de zone dynamiques

Dans Android 14, des configurations de zone 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 de siège arrière et un périphérique de casque de siège arrière.

Dans ce cas, deux configurations sont requises. Une pour l'appui-tête du siège arrière et l'autre pour le périphérique du casque. L'audio d'un utilisateur spécifique est acheminé uniquement vers une configuration à la fois.

Workflow de configuration des zones dynamiques

Figure 3. Workflow de configuration de zone dynamique.

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 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 interface utilisateur système, le service audio de voiture effectue le basculement entre les deux configurations. De cette manière, l'appareil de sortie bascule 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 voiture expose des API permettant de gérer les configurations :

  • Interroger les configurations disponibles pour une zone.
  • Interroger la configuration actuellement définie pour une zone.
  • Passer à une autre configuration.

Une application ou un service d'interface utilisateur système peut utiliser ces API pour gérer la configuration de la zone audio, comme illustré à la figure 4. L'API de requête 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 de zone dynamique.

Diffusion audio de la zone principale du passager

La diffusion audio de la zone principale du passager 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 l'habitacle principal, tandis que le conducteur conserve le contrôle total.

La figure ci-dessous présente une version simplifiée de l'architecture de la diffusion audio multimédia du passager de la zone principale.

Workflow de configuration des zones dynamiques

Figure 5. Workflow de configuration de zone dynamique.

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 de diffusion vers la zone principale. La règle audio dynamique est également utilisée pour gérer le routage audio du conducteur, mais aucune modification n'est appliquée aux affinités d'appareil du conducteur. Pour le passager, la liste des appareils de sortie est modifiée comme suit :

  • L'appareil de sortie multimédia du passager est supprimé de la liste des appareils.
  • L'appareil de sortie multimédia du conducteur est ajouté à la liste des appareils.
  • Les autres appareils de sortie des 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 interroge le mixage audio à sélectionner pour une piste multimédia associée au passager, le mixage 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 d'attributs audio. Sinon, lors de la création des mixages audio, d'autres attributs audio sont ajoutés au mixage. Lorsque la sélection du mixage est effectuée par le système audio, tous les sons associés au mixage sont sélectionnés pour être lus dans l'habitacle principal.

Mise en miroir audio de la zone passager

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

Routage de la mise en miroir audio

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

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

Workflow de configuration des zones dynamiques

Figure 6. Workflow de configuration de zone dynamique.

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

  • L'appareil de sortie multimédia du passager est supprimé de la liste des appareils.
  • L'appareil de sortie de mise en miroir est ajouté à la liste des appareils.
  • Les autres appareils de sortie de 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 mise en miroir audio.

Workflow de duplication audio

Figure 7. Workflow de mise en miroir audio.

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

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

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

où :

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 l'interface HAL via le service audio.

Lorsque la mise en miroir audio est désactivée, le signal suivant est envoyé : mirroring_src=bus_1000;mirroring=off. Ce signal peut être utilisé par l'interface HAL pour désactiver la duplication audio lorsque la mise en miroir audio n'est pas activée. Pour définir les appareils de mise en miroir 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 mise en miroir sont définis, bus_1000 et bus_2000, afin que quatre passagers puissent utiliser la mise en miroir audio.

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