En este artículo, se describe la conversión de tasa de muestreo, también conocida como remuestreo, en Android. Para ver la terminología relacionada con la conversión de tasa de muestreo, consulta Terminología.
La conversión de la tasa de muestreo es el proceso de cambiar una transmisión de muestras discretas de una tasa de muestreo a otra transmisión con una tasa de muestreo diferente. Un convertidor de tasa de muestreo, o remuestreador, es un módulo que implementa la conversión de tasa de muestreo. Con respecto al remuestreador, la transmisión original se denomina señal de origen y la transmisión remuestreada se denomina señal de destino.
Los remuestreadors se usan en varios lugares de Android. Por ejemplo, un archivo MP3 se puede codificar con una tasa de muestreo de 44.1 kHz, pero debe reproducirse en un dispositivo Android que admita audio de 48 kHz de forma interna. En ese caso, se usaría un resampler para aumentar la tasa de muestreo del audio de salida de MP3 de 44.1 kHz a una tasa de muestreo de sumidero de 48 kHz que se usa en el dispositivo Android.
Las características de un remuestreador se pueden expresar con métricas, como las siguientes:
- grado de preservación de la amplitud general de la señal
- grado de preservación del ancho de banda de frecuencia de la señal, sujeto a las limitaciones de la tasa de muestreo del receptor
- latencia general a través del remuestreador
- fase y retardo del grupo coherentes con respecto a la frecuencia
- complejidad computacional, expresada en ciclos de CPU o consumo de energía
- proporciones permitidas de tasas de muestreo de la fuente y el receptor
- capacidad para cambiar de forma dinámica las relaciones de tasa de muestreo
- qué formatos de muestras de audio digital son compatibles
El resampler ideal conservaría exactamente la amplitud y el ancho de banda de frecuencia del señal de origen (sujeto a las limitaciones de la tasa de muestreo del sink), tendría un retraso mínimo y uniforme, una mínima complejidad computacional, permitiría relaciones de conversión arbitrarias y dinámicas, y admitiría todos los formatos de muestra de audio digital comunes. En la práctica, no existen remuestreador ideales, ya que los remuestreador reales son un compromiso entre estas características. Por ejemplo, los objetivos de calidad ideal entran en conflicto con la demora breve y la baja complejidad.
Android incluye una variedad de remuestreador de audio para que se puedan realizar los ajustes adecuados según el caso de uso y la carga de la aplicación. Los remuestreadors disponibles se explican en Implementación de remuestreador.
Implementaciones de remuestreadores
Las implementaciones de remuestreo disponibles cambian con frecuencia y los OEMs pueden personalizarlas. Los remuestreadores predeterminados, en orden descendente de distorsión de la señal y en orden ascendente de complejidad computacional, incluyen los siguientes:
- lineal
- cúbico
- sinc con coeficientes originales
- sinc con coeficientes revisados
En general, los reproductores de muestras sinc son más adecuados para la reproducción de música de mayor calidad, y los otros reproductores de muestras deben reservarse para los casos en los que la calidad es menos importante (un ejemplo podría ser "clics de teclas" o algo similar).
La implementación específica del remuestreador que se selecciona depende del caso de uso, la carga y el valor de la propiedad del sistema af.resampler.quality
. Para obtener más información, consulta el código fuente del remuestreador de audio en AudioFlinger.