La versión de Android 10 incluye las siguientes mejoras para el audio de alta resolución:
- Flotante: Los códecs y extractores de WAV y FLAC se actualizaron para admitir flotantes (más de 24 bits de precisión sin pérdida). Los efectos de reducción de mezcla y virtualizador se actualizaron a punto flotante. MediaPlayer (NuPlayer) permite la precisión actualizada.
- Alta frecuencia: Se actualizaron los códecs y extractores WAV y FLAC para admitir 192 kHz. Los efectos predeterminados que proporciona Android se prueban para la compatibilidad con 192 kHz en frecuencias estándar. Las frecuencias estándar permitidas son 88.2 kHz, 96 kHz, 176.4 kHz y 192 kHz.
- Multicanal: Los efectos de reproducción predeterminados de Android se prueban para la compatibilidad multicanal con hasta ocho canales.
- Sincronización: La información de sincronización se incluye en todo el framework de audio.
A partir de Android 9, las siguientes mejoras no requieren ninguna implementación por parte del socio:
- La cantidad de pistas de salida de cliente simultáneas aumenta de 14 a 40, ya que las instancias de cliente limitadas de
AudioTrack
han sido un problema para las apps en Android 8.x. - La memoria máxima del cliente y el servidor aumenta de 4 MB a 32 MB (según la memoria total del dispositivo) para permitir más pistas de audio de alta resolución simultáneas.
- La cantidad total de pistas mixtas aumenta de 32 a 256 para evitar la contención de recursos entre las apps y la IU del sistema.
Cambios en el efecto de salida
Consulta Efectos de audio para ver los cambios de la versión de Android 11.
Antes del lanzamiento de Android 9, el procesamiento de la cadena de efectos se implementaba en formato de muestra int16 estéreo. Esto tenía varias limitaciones:
- Todos los efectos de salida forzaban la conversión de datos de audio de punto flotante a int16, lo que provocaba una pérdida de precisión.
- Los efectos de salida se rechazaron de los receptores de salida con un recuento de canales superior a dos.
En la versión de Android 9, se actualizó la canalización de procesamiento de la cadena de efectos para admitir el formato de coma flotante multicanal. Puntos clave:
- Los efectos de software de Android ya se migraron a estéreo de coma flotante.
- Los efectos heredados se admiten con adaptadores de formato, que convierten float a int16 según sea necesario.
Implementa efectos de salida
Una implementación de referencia para los efectos de salida está disponible en frameworks/av/media/libeffects
.
Los socios que implementen sus propios efectos de salida personalizados deben hacer lo siguiente para el lanzamiento de Android 10:
- Actualiza los efectos de salida para admitir el formato de coma flotante multicanal:
- Ya no se requiere la compatibilidad con el procesamiento de Int16.
- Admite recuentos de canales de salida de 2 a 8 (para compatibilidad futura, considera recuentos de 1 a 30).
- Se admite que los recuentos de canales de entrada coincidan con los recuentos de canales de salida para los efectos de inserción. Los efectos auxiliares siguen viendo un recuento de canales de entrada de 1 (mono).
- Admite máscaras de posición de canal (canónicas) y máscaras de índice de canal de
(1 << n) - 1
.
- Si debes seguir admitiendo los efectos de salida del proveedor heredado y no puedes actualizarlos, verifica el código heredado de la siguiente manera:
- Los efectos de salida heredados (inserción) deben rechazar las configuraciones no admitidas en
EFFECT_CMD_SET_CONFIG
.- Verifica que el formato sea int16.
- Verifica que las máscaras de los canales de entrada y salida sean estéreo.
- Si falla alguna de las verificaciones, devuelve
-EINVAL
.
- AudioFlinger configura los efectos de salida heredados (auxiliares) con una máscara de canal de entrada mono y máscaras de canal de salida potencialmente multicanal, según si el receptor de salida es multicanal.
Deben rechazar las configuraciones no admitidas en
EFFECT_CMD_SET_CONFIG
.- Verifica que el formato sea int16.
- Comprueba que la máscara del canal de entrada sea mono y la máscara del canal de salida sea estéreo.
- Si falla alguna de las verificaciones, devuelve
-EINVAL
.
- Verifica el código heredado. No supongas que funciona.
- Los efectos de salida heredados (inserción) deben rechazar las configuraciones no admitidas en