Enrutamiento de audio multizona

El servicio de audio del automóvil usa la política de audio dinámico de Core Audio para facilitar el uso en automóviles.

  • La reproducción de audio separada para cada pasajero, también conocida como audio multizona, en el que cada zona permite la reproducción simultánea de sonido.

  • Configuración dinámica de zonas de audio.

  • Transmisión de audio de la zona principal del pasajero.

  • Duplicación de audio del pasajero.

En cada caso de uso, el servicio de audio del vehículo usa la política de audio dinámico para enrutar automáticamente el audio al dispositivo de salida designado.

Audio multizona

El audio multizona permite que varios usuarios interactúen simultáneamente con AAOS. R dispositivo de salida está asociado con una zona, y cada zona mantiene el audio enfoque y nivel de volumen. Los pasajeros pueden escuchar su audio mientras el conductor Escucha otra fuente en la zona principal (por lo general, la cabina principal).

Arquitectura de audio multizona

Arquitectura del servicio de audio del automóvil

Figura 1: Arquitectura del servicio de audio del automóvil

Las zonas de audio del vehículo son una abstracción de salidas de audio, foco de audio y otras configuración de audio, que se pueden administrar de forma independiente. Para fines de enrutamiento, cada zona se define como un conjunto de dispositivos de bus de salida de audio de la política de audio. Los dispositivos difieren para cada definición de zona de audio. En la Figura 1, los dispositivos de bus 1 a 5 pertenecen a la zona cero, los dispositivos bus 6 a 8 pertenecen a la zona uno y los dispositivos de bus 9 a 11 pertenecen a la zona dos.

Configuración del audio del auto

Por lo general, los dispositivos de salida se asignan a una zona de audio. Cada zona de audio definido en car_audio_configuration.xml. En el siguiente fragmento de código, se muestra un auto de audio en 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 es una definición de servicio de automóvil administrada por CarOccupantZoneManager Se usa en autos para definir una asignación para un usuario en el vehículo a una ubicación específica. CarOccupantZoneService también define mapeo de la zona de ocupación a las pantallas, otros periféricos y el usuario una vez que el usuario accede a una pantalla. Una zona de audio tiene lo siguiente:

  • Un ID de zona de audio y un ID de zona de ocupante.

    • Asigna la zona de audio a la zona de ocupación (asiento, pantallas y otros periféricos)
    • Asigna el ID de usuario que se asigna con una zona de audio cuando se accede
  • Una lista de parámetros de configuración de audio. Cada configuración de audio tiene un conjunto grupos de volúmenes. Cada grupo de volúmenes tiene un conjunto de dispositivos de bus de audio.

    • Cuando se cambia el volumen, todos los dispositivos de audio de un grupo se controlan en de la misma manera.

    • A cada dispositivo de audio se le asigna una lista de atributos de audio. Esta se usa información para crear la política de audio se mezcla con atributos de audio asignados.

Esta configuración permite enrutar diferentes usos de atributos de audio diferentes dispositivos de salida en cada zona. Según el caso de uso, se pueden usar los sonidos pueden reproducirse al mismo tiempo. Por ejemplo, puedes configurar el estado cabina (zona principal) para reproducir sonidos multimedia en todas las bocinas, excepto en los sonidos de navegación solo en las bocinas más cercanas al conductor. Con la reproducción simultánea de sonido, el la cabina principal continúa escuchando contenido multimedia mientras se entrega la navegación a la controlador.

Flujo de trabajo de acceso con audio multizona para pasajeros

El siguiente diagrama de secuencias muestra el flujo para habilitar el enrutamiento de audio cuando un registros de pasajeros en sus respectivas pantallas:

imagen

Figura 2:

En esta secuencia, el acceso del usuario se propaga al servicio de audio del vehículo a través del servicio de la zona de ocupantes.

  1. El servicio de audio del auto (para una zona de audio específica) usa La API de AudioPolicy#removeUserIdDeviceAffinity para quitar el dispositivo del usuario públicos afines. Esta API toma un ID de usuario. En este caso, el espacio de nombres usuario.

  2. La API de AudioPolicy#setUserIdDeviceAffinity asigna el usuario nuevo a un que recibe el ID del usuario y todos los dispositivos de una zona específica configuración.

Configuraciones de zonas dinámicas

En Android 14, las configuraciones de las zonas dinámicas son para permitir que los OEM configuren diferentes conjuntos de dispositivos para los pasajeros. El caso de uso permite que los pasajeros del asiento trasero cambien de un asiento trasero y un periférico para auriculares en el asiento trasero.

En este caso, se requieren dos configuraciones. Uno para el asiento trasero y el periférico de los auriculares. Se enruta el audio de un usuario específico solo a una configuración a la vez.

Configuración de zonas dinámicas
flujo de trabajo

Figura 3: Flujo de trabajo de configuración de zonas dinámicas.

En la figura 3, se ilustra la arquitectura para la configuración de zonas dinámicas en el flujo de trabajo. La zona de audio 1 contiene dos configuraciones, Config 0 y Config 1, asociados con la bocina y el reposacabezas del dispositivo de salida, respectivamente.

Después de acceder, al usuario se le asigna automáticamente la configuración predeterminada. Cuando el usuario elige cambiar la configuración, generalmente a través de una IU del sistema, la El servicio de audio para autos ejecuta el cambio entre las dos configuraciones. En este el dispositivo de salida se cambia entre la bocina Z1 y el reposacabezas Z1.

En el siguiente fragmento de código, se muestra la configuración de esta zona dinámica.

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

Para facilitar la administración de la configuración de audio, el administrador de audio del vehículo expone las APIs para administrar la configuración:

  • Configuraciones de consulta disponibles para una zona.
  • Consulta actualmente la configuración establecida para una zona.
  • Cambia a una configuración diferente.

Una app o servicio de IU del sistema puede usar estas API para administrar la configuración del de audio como se muestra en la figura 4. La API de consulta expone los dos al pasajero. El usuario puede seleccionar una configuración diferente presionando un comando para la la configuración deseada.

Configuración de zonas dinámicas
flujo de trabajo

Figura 4: Flujo de trabajo de configuración de zonas dinámicas.

Transmisión de audio de los pasajeros de la zona principal

La transmisión de audio de los pasajeros de la zona principal es una función que se introdujo en Android 14 para permitir que los pasajeros transmitan su audio multimedia en la zona principal. En este el audio multimedia del pasajero puede transmitirse a la cabina principal, mientras el el conductor siga teniendo el control total.

En la siguiente figura, se muestra una versión simplificada de la arquitectura para la instancia transmisión de audio multimedia de pasajeros de zona.

Configuración de zonas dinámicas
flujo de trabajo

Figura 5: Flujo de trabajo de configuración de zonas dinámicas.

En la imagen, se muestra que el dispositivo de salida multimedia del controlador se comparte con el pasajero, esto solo ocurre cuando el pasajero se transmite a la zona principal . La política de audio dinámico también se usa para administrar el enrutamiento de audio para el pero no se aplicarán cambios en los afinidades de dispositivos del controlador. Para al pasajero, la lista de dispositivos de salida se modifica de la siguiente manera:

  • Se quitó el dispositivo de salida multimedia del pasajero de la lista de dispositivos
  • Se agregó el dispositivo de salida multimedia del controlador a la lista de dispositivos
  • Los dispositivos de salida restantes para las zonas de audio de los pasajeros permanecen en la lista de dispositivos.

El pasajero asigna esta nueva lista de dispositivos al pasajero. API de AudioPolicy#setUserIdDeviceAffinity. Los parámetros que se pasan a la API son la lista de dispositivos y el ID de usuario pasajero. Cuando el audio del sistema de audio El servicio de políticas consulta qué combinación de audio se seleccionará para una pista de medios. asociado con el pasajero, la combinación de audio multimedia asociada con el zona seleccionada.

Un requisito clave para la transmisión de audio de la zona principal es que el contenido multimedia de la zona principal que el dispositivo de salida esté aislado de otros usos de atributos de audio. De lo contrario, durante construcción de las mezclas de audio, se agregan otros atributos de audio a la mezcla. Cuando el sistema de audio realiza la selección de mezcla, todos los sonidos adjuntos a el mix se seleccionará para su reproducción en la cabina principal.

Duplicación de audio de la zona de pasajeros

La función de duplicación de audio permite a los pasajeros compartir audio. La función de espejo duplica los datos de audio en cada zona de audio para que todos los pasajeros puedan escuchar el mismo audio. En este caso, el foco de audio se comparte con los pasajeros involucradas en la duplicación de audio.

Enrutamiento de duplicación de audio

Se necesita un mínimo de dos pasajeros para habilitar la duplicación de audio. Como como resultado, una configuración de audio con solo dos zonas de audio para pasajeros a un dispositivo de salida duplicado. Con la definición anterior, se pueden usar dos se pueden iniciar sesiones.

En la siguiente figura, se muestra un diagrama simplificado de la duplicación de audio multizona. entre dos pasajeros. El audio de ambos pasajeros se envía a una duplicación de audio. dispositivo, bus_1000. La HAL de audio duplica la señal en las zonas de origen.

Configuración de zonas dinámicas
flujo de trabajo

Figura 6: Flujo de trabajo de configuración de zonas dinámicas.

Esta ruta se habilita solo cuando los pasajeros están en modo de duplicación. Si no, los dispositivos correspondientes a la zona de audio se asignan a los pasajeros. Cuando se habilita la duplicación para un pasajero, La API de AudioPolicy#setUserIdDeviceAffinity modifica el enrutamiento:

  • Se quitó el dispositivo de salida multimedia del pasajero de la lista de dispositivos.
  • Se agregó el dispositivo de salida de duplicación a la lista de dispositivos.
  • Los dispositivos de salida restantes de la zona de audio para pasajeros permanecen en la lista de dispositivos.

Con la lista de dispositivos, se llama a la API con la lista actualizada de dispositivos y el ID de usuario del pasajero. En la siguiente imagen, se proporciona un diagrama de secuencia del de la duplicación de audio.

Flujo de trabajo de la duplicación de audio

Figura 7: Flujo de trabajo de duplicación de audio

En la figura 7, se muestran las APIs del administrador de audio del auto para administrar la duplicación de audio. llamado desde el servicio de sistema multimedia. Específicamente, la API para habilitar el audio de duplicación para el Usuario 1 y el Usuario 2, CarAudioManager#enableMirrorForAudioZones.

El servicio de audio del automóvil configura el enrutamiento de audio para los pasajeros del automóvil como descrita anteriormente. El servicio de audio del automóvil también envía una señal a la HAL de audio para configurar y duplicar el audio del dispositivo duplicado al correspondiente zonas diferentes.

En la imagen de arriba, el servicio de audio del auto envía mirroring_src=bus_1000;mirroring_dest=bus_10,bus_20

donde,

bus_1000 es el autobús de origen, y bus_10 y bus_20 son el destino. autobuses.

No se muestra en el diagrama de secuencia es la señal que se envía a través del API de AudioManager#setParameters, que llega a la HAL a través del audio servicio.

Cuando se inhabilita la duplicación de audio, se envía la siguiente señal: mirroring_src=bus_1000;mirroring=off La HAL puede usar esta señal para Inhabilita la duplicación de audio cuando la duplicación de audio no está habilitada. Cómo definir audio para duplicar dispositivos, el archivo de configuración de audio del auto contiene una sección mirroringDevices, como se muestra en el siguiente fragmento.

En este fragmento, se definen dos dispositivos de duplicación, bus_1000 y bus_2000, para que cuatro pasajeros puedan usar la duplicación de audio.

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