Routage audio multizone

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

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

  • Configuration de zones audio dynamiques.

  • Diffusion audio de la zone principale des passagers.

  • Rétroviseur audio passager.

Dans chaque cas d'utilisation, le service audio de voiture utilise la politique 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 maintient la concentration audio et le niveau de volume. Les passagers peuvent écouter leur audio pendant que le conducteur écoute une autre source dans la zone principale (généralement la cabine principale).

Architecture audio multizone

Architecture des services audio de voiture

Figure 1. Architecture du service audio de voiture.

Les zones audio de voiture sont une abstraction de sorties audio, de focus 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 de périphériques de bus de sortie audio disposés dans la configuration de la politique audio. Les appareils diffèrent pour chaque définition de zone audio. Dans la figure 1, les périphériques de bus 1 à 5 appartiennent à la zone zéro, les périphériques de bus 6 à 8 appartiennent à la zone un et les périphériques de bus 9 à 11 appartiennent à la zone deux.

Configuration audio de la voiture

En règle générale, les périphériques de sortie sont affecté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" occupantZoneI="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 pour un utilisateur dans la voiture vers un emplacement de siège spécifique. CarOccupantZoneService définit également le mappage de la zone des occupants vers les écrans, d'autres périphériques et l'utilisateur une fois que l'utilisateur se connecte à un écran. Une zone audio possède :

  • Un identifiant de zone audio et un identifiant de zone occupant.

    • Mappe la zone audio à la zone des occupants (siège, écrans et autres périphériques)
    • Cartographier l'ID utilisateur auquel une zone audio est attribuée lors de la connexion
  • Une liste de configurations audio. Chaque configuration audio dispose d'un ensemble de groupes de volumes. Chaque groupe de volumes 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 périphérique audio se voit attribuer une liste d'attributs audio. Ces informations sont utilisées pour construire les mixages de politique audio avec des attributs audio attribués différemment.

Cette configuration permet d'acheminer différentes utilisations d'attributs audio vers différents périphériques de sortie dans chaque zone. Selon le cas d'utilisation, différents sons peuvent être joués 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 les médias pendant que la navigation est transmise au conducteur.

Flux de travail de connexion audio multizone des passagers

Le diagramme de séquence ci-dessous montre le flux permettant d'activer le 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 voiture (pour une zone audio spécifique) utilise l'API AudioPolicy#removeUserIdDeviceAffinity pour supprimer les affinités utilisateur-machine. Cette API prend un identifiant 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 constructeurs 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. Un pour l'appui-tête du siège arrière et un pour le périphérique casque. L'audio d'un utilisateur spécifique est acheminé uniquement vers une configuration à la fois.

Flux de travail de configuration de zone dynamique

Figure 3. Flux de travail de configuration de zone dynamique.

La figure 3 illustre l'architecture du flux de travail 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'appui-tête du périphérique de sortie.

Lors de la connexion, l'utilisateur se voit automatiquement attribuer la configuration par défaut. Lorsque l'utilisateur choisit de modifier les configurations, généralement via une interface utilisateur du système, le service audio de la voiture exécute le basculement entre les deux configurations. De cette façon, le périphérique de sortie est commuté 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ête disponibles pour une zone.
  • Interrogez la configuration actuellement définie pour une zone.
  • Passez à une configuration différente.

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

Flux de travail de configuration de zone dynamique

Figure 4. Flux de travail de configuration de zone dynamique.

Diffusion audio des passagers de la zone principale

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

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

Flux de travail de configuration de zone dynamique

Figure 5. Flux de travail de configuration de zone dynamique.

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 de diffusion en zone principale. La politique audio dynamique est également utilisée pour gérer le routage audio du pilote, mais aucune modification n'est appliquée aux affinités de périphérique pour le pilote. Pour le passager, la liste des périphériques de sortie est modifiée comme suit :

  • Le périphérique de sortie multimédia pour le passager est supprimé de la liste des appareils
  • Le périphérique de sortie multimédia pour le pilote est ajouté à la liste des périphériques
  • Les périphériques de sortie restants pour les zones audio des passagers restent sur la liste des périphériques

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 politique audio du système audio demande quel mixage audio doit être sélectionné 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 le périphérique de sortie multimédia de la zone principale soit isolé des autres utilisations d'attributs audio. Sinon, lors de la construction 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 attachés au mixage sont sélectionnés pour être lus dans la cabine principale.

Rétroviseur audio zone passagers

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

Routage du miroir audio

Un minimum de deux passagers est nécessaire pour activer la mise en miroir audio. Par conséquent, une configuration audio avec seulement 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 démarrées.

La figure ci-dessous montre un schéma simplifié pour la mise en miroir audio multizone entre deux passagers. L'audio des deux passagers est acheminé vers un dispositif de miroir audio, bus_1000 . L'Audio HAL duplique le signal vers les zones sources.

Flux de travail de configuration de zone dynamique

Figure 6. Flux de travail de configuration de zone dynamique.

Ce routage est activé uniquement lorsque les passagers sont en mode miroir. Dans le cas contraire, les dispositifs 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 :

  • Le périphérique de sortie multimédia pour le passager est supprimé de la liste des périphériques.
  • Périphérique de sortie miroir ajouté à la liste des périphériques.
  • Les périphériques de sortie restants pour la zone audio des passagers restent sur la liste des périphériques.

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

Flux de travail de mise en miroir audio

Figure 7. Flux de travail de mise en miroir audio.

Dans la figure 7, les API du gestionnaire audio de la voiture pour gérer la mise en miroir audio sont appelées depuis le service Media System. 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 des utilisateurs comme décrit ci-dessus. Le service audio de voiture envoie également un signal au HAL audio pour configurer et dupliquer l'audio du dispositif miroir vers 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

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

Lors de la désactivation du miroir audio, le signal suivant est envoyé, mirroring_src=bus_1000;mirroring=off . Ce signal peut être utilisé par HAL pour désactiver la duplication audio lorsque la mise en miroir audio n'est pas activée. Pour définir les périphériques 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 dispositifs 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>