Enrutamiento de audio multizona

El servicio de audio para automóviles utiliza la política de audio dinámico de Core Audio para facilitar los casos de uso en automóviles.

  • Reproducción de audio separada para cada pasajero, denominada audio multizona, en el que cada zona permite la reproducción simultánea de sonido.

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

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

  • Espejo audio del pasajero.

En cada caso de uso, el servicio de audio para automóvil utiliza 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. Un conjunto de dispositivos de salida está asociado con una zona y cada zona mantiene el enfoque de audio y el nivel de volumen. Los pasajeros pueden escuchar su audio mientras el conductor escucha otra fuente en la zona primaria (normalmente, la cabina principal).

Arquitectura de audio multizona

Arquitectura del servicio de audio para el automóvil

Figura 1. Arquitectura del servicio de audio para automóviles.

Las zonas de audio del automóvil son una abstracción de las salidas de audio, el enfoque de audio y otras configuraciones de audio, todas las cuales 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 según lo dispuesto en la configuración 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 de bus 6 a 8 pertenecen a la zona uno y los dispositivos de bus 9 a 11 pertenecen a la zona dos.

Configuración de audio del coche

Normalmente, los dispositivos de salida se asignan a una zona de audio. Cada zona de audio se define en car_audio_configuration.xml . El siguiente fragmento de código muestra una configuración de audio de automóvil para la Figura 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 es una definición de servicio de automóvil administrada por CarOccupantZoneManager . Se utiliza en automóviles para definir una asignación para un usuario en el automóvil a una ubicación de asiento específica. CarOccupantZoneService también define el mapeo desde la zona de ocupantes hasta las pantallas, otros periféricos y el usuario una vez que el usuario inicia sesión en una pantalla. Una zona de audio tiene:

  • Una identificación de zona de audio y una identificación de zona de ocupante.

    • Asigna la zona de audio a la zona de los ocupantes (asiento, pantallas y otros periféricos)
    • Mapee a qué ID de usuario se le asigna una zona de audio al iniciar sesión
  • Una lista de configuraciones de audio. Cada configuración de audio tiene un conjunto de 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 de la misma manera.

    • A cada dispositivo de audio se le asigna una lista de atributos de audio. Esta información se utiliza para construir las mezclas de políticas de audio con atributos de audio asignados de manera diferente.

Esta configuración permite enrutar diferentes usos de atributos de audio a diferentes dispositivos de salida en cada zona. Dependiendo del caso de uso, se pueden reproducir diferentes sonidos al mismo tiempo. Por ejemplo, puede optar por configurar la cabina principal (zona principal) para reproducir sonidos multimedia en todos los parlantes, pero sonidos de navegación solo en los parlantes más cercanos al conductor. Con la reproducción simultánea de sonido, la cabina principal continúa escuchando los medios mientras la navegación se entrega al conductor.

Flujo de trabajo de inicio de sesión de pasajeros con audio multizona

El siguiente diagrama de secuencia muestra el flujo para habilitar el enrutamiento de audio cuando un pasajero inicia sesión en su pantalla respectiva:

imagen

Figura 2.

En esta secuencia, el inicio de sesión del usuario se propaga al servicio de audio del automóvil a través del servicio de zona de ocupantes.

  1. El servicio de audio para automóvil (para una zona de audio específica) utiliza la API AudioPolicy#removeUserIdDeviceAffinity para eliminar las afinidades del dispositivo del usuario. Esta API requiere una identificación de usuario. En este caso, el usuario de la zona anterior.

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

Configuraciones de zona dinámica

En Android 14, se introducen configuraciones de zonas dinámicas para permitir a los OEM configurar diferentes conjuntos de dispositivos para los pasajeros. El caso de uso permite a los pasajeros del asiento trasero cambiar entre un altavoz del reposacabezas del asiento trasero y un periférico de auriculares del asiento trasero.

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

Flujo de trabajo de configuración de zona dinámica

Figura 3. Flujo de trabajo de configuración de zona dinámica.

La Figura 3 ilustra la arquitectura del flujo de trabajo de configuración de zona dinámica. La zona de audio 1 contiene dos configuraciones, Config 0 y Config 1 , que están asociadas con el altavoz del dispositivo de salida y el reposacabezas, respectivamente.

Al iniciar sesión, al usuario se le asigna automáticamente la configuración predeterminada. Cuando el usuario elige cambiar las configuraciones, generalmente a través de una interfaz de usuario del sistema, el servicio de audio del automóvil ejecuta el cambio entre las dos configuraciones. De esta forma, el dispositivo de salida se conmuta entre el altavoz Z1 y el reposacabezas Z1.

El siguiente fragmento de código 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 gestión de las configuraciones de audio, el administrador de audio del automóvil expone API para gestionar las configuraciones:

  • Consultar configuraciones disponibles para una zona.
  • Consultar la configuración actualmente establecida para una zona.
  • Cambie a una configuración diferente.

Una aplicación o servicio de interfaz de usuario del sistema puede usar estas API para administrar la configuración de la zona de audio, como se muestra en la Figura 4. La API de consulta expone ambas al pasajero. El usuario puede seleccionar una configuración diferente tocando un comando para la configuración deseada.

Flujo de trabajo de configuración de zona dinámica

Figura 4. Flujo de trabajo de configuración de zona dinámica.

Transmisión de audio del pasajero de la zona principal

La transmisión de audio del pasajero de la zona principal es una función introducida en Android 14 para permitir que los pasajeros transmitan su audio multimedia en la zona principal. De esta manera, el audio multimedia del pasajero se puede transmitir a la cabina principal mientras el conductor mantiene el control total.

La siguiente figura muestra una versión simplificada de la arquitectura para la transmisión de audio multimedia de pasajeros de la zona principal.

Flujo de trabajo de configuración de zona dinámica

Figura 5. Flujo de trabajo de configuración de zona dinámica.

La imagen muestra que el dispositivo de salida de medios para el conductor se comparte con el pasajero; esto solo sucede mientras el pasajero está en modo de transmisión al modo de zona primaria. La política de audio dinámico también se utiliza para administrar el enrutamiento de audio para el conductor, pero no se aplican cambios a las afinidades del dispositivo para el conductor. Para el pasajero, la lista de dispositivos de salida se modifica de la siguiente manera:

  • El dispositivo de salida de medios para el pasajero se elimina de la lista de dispositivos
  • El dispositivo de salida de medios para el controlador se agrega a la lista de dispositivos
  • Los dispositivos de salida restantes para las zonas de audio de los pasajeros permanecen en la lista de dispositivos

Esta nueva lista de dispositivos se asigna al pasajero mediante la API AudioPolicy#setUserIdDeviceAffinity . Los parámetros pasados ​​a la API son la lista de dispositivos y el ID de usuario del pasajero. Cuando el servicio de política de audio del sistema de audio consulta qué mezcla de audio se debe seleccionar para una pista multimedia asociada con el pasajero, se selecciona la mezcla de audio multimedia asociada con la zona primaria.

Un requisito clave para la transmisión de audio de la zona principal es que el dispositivo de salida de medios de la zona principal esté aislado de otros usos de atributos de audio. De lo contrario, durante la 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 la mezcla, todos los sonidos adjuntos a la mezcla se seleccionan para su reproducción en la cabina principal.

Espejo audio de la zona del pasajero

La función de espejo 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 involucrados en la duplicación de audio.

Enrutamiento de espejo de audio

Se necesita un mínimo de dos pasajeros para permitir la duplicación de audio. Como resultado, una configuración de audio con sólo dos zonas de audio para pasajeros requeriría un dispositivo de salida de espejo. Con la definición anterior, se pueden iniciar dos sesiones de duplicación simultáneas.

La siguiente figura muestra un diagrama simplificado para la duplicación de audio multizona entre dos pasajeros. El audio de ambos pasajeros se dirige a un dispositivo de espejo de audio, bus_1000 . El Audio HAL duplica la señal a las zonas de origen.

Flujo de trabajo de configuración de zona dinámica

Figura 6. Flujo de trabajo de configuración de zona dinámica.

Esta ruta está habilitada solo cuando los pasajeros están en modo espejo. En caso contrario, se asignan a los pasajeros los dispositivos correspondientes para la zona de audio. Cuando la duplicación se habilita por primera vez para un pasajero, la API AudioPolicy#setUserIdDeviceAffinity modifica la ruta:

  • El dispositivo de salida de medios para el pasajero se elimina de la lista de dispositivos.
  • Dispositivo de salida espejo agregado a la lista de dispositivos.
  • Los dispositivos de salida restantes para la zona de audio del pasajero 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. La siguiente imagen proporciona un diagrama de secuencia del flujo de trabajo de duplicación de audio.

Flujo de trabajo de espejo de audio

Figura 7. Flujo de trabajo de espejo de audio.

En la Figura 7, las API del administrador de audio del automóvil para administrar la duplicación de audio se llaman desde el servicio del sistema multimedia. Específicamente, la API para habilitar la duplicación de audio para el Usuario 1 y el Usuario 2, CarAudioManager#enableMirrorForAudioZones .

El servicio de audio para automóvil configura el enrutamiento de audio para los pasajeros usuarios como se describe anteriormente. El servicio de audio para automóvil también envía una señal al audio HAL para configurar y duplicar el audio desde el dispositivo espejo a las zonas correspondientes.

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

dónde,

bus_1000 es el bus de origen y bus_10 y bus_20 son los buses de destino.

En el diagrama de secuencia no se muestra la señal enviada a través de la API AudioManager#setParameters , que llega al HAL a través del servicio de audio.

Al desactivar el espejo de audio, se envía la siguiente señal, mirroring_src=bus_1000;mirroring=off . HAL puede utilizar esta señal para desactivar la duplicación de audio cuando la duplicación de audio no está habilitada. Para definir dispositivos de duplicación de audio, el archivo de configuración de audio del automóvil contiene una sección denominada mirroringDevices , como se muestra en el siguiente fragmento.

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

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