Conversión de frecuencia de muestreo

Este artículo describe la conversión de frecuencia de muestreo, también conocida como remuestreo , dentro de Android. Para obtener terminología relacionada con la conversión de frecuencia de muestreo, consulte Terminología .

La conversión de frecuencia de muestreo es el proceso de cambiar un flujo de muestras discretas de una frecuencia de muestreo a otro flujo con una frecuencia de muestreo diferente. Un convertidor de frecuencia de muestreo, o remuestreador, es un módulo que implementa la conversión de frecuencia de muestreo. Con respecto al remuestreador, el flujo original se denomina señal fuente y el flujo remuestreado se denomina señal sumidero.

Los resamplers se utilizan en varios lugares de Android. Por ejemplo, un archivo MP3 puede codificarse a una frecuencia de muestreo de 44,1 kHz, pero debe reproducirse en un dispositivo Android que admita audio de 48 kHz internamente. En ese caso, se utilizaría un remuestreador para aumentar la muestra del audio de salida MP3 desde una frecuencia de muestreo de fuente de 44,1 kHz a una frecuencia de muestreo de sumidero de 48 kHz utilizada en el dispositivo Android.

Las características de un remuestreador se pueden expresar mediante métricas, que incluyen:

  • 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 frecuencia de muestreo del sumidero
  • Latencia general a través del remuestreador.
  • Retraso constante de fase y grupo con respecto a la frecuencia.
  • Complejidad computacional, expresada en ciclos de CPU o consumo de energía.
  • proporciones permitidas de frecuencias de muestreo de fuente y sumidero
  • capacidad de cambiar dinámicamente las relaciones de frecuencia de muestreo
  • qué formatos de muestras de audio digital son compatibles

El remuestreador ideal preservaría exactamente la amplitud y el ancho de banda de frecuencia de la señal fuente (sujeto a las limitaciones de la frecuencia de muestreo del sumidero), tendría un retraso mínimo y constante, tendría una complejidad computacional mínima, 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, los remuestreadores ideales no existen ya que los remuestreadores reales son un compromiso entre estas características. Por ejemplo, los objetivos de calidad ideal entran en conflicto con un retraso breve y una complejidad baja.

Android incluye una variedad de remuestreadores de audio, de modo que se pueden hacer los compromisos adecuados según el caso de uso y la carga de la aplicación. Los resamplers disponibles se explican en Implementación de Resampler.

Implementaciones de remuestreador

Las implementaciones de resampler disponibles cambian con frecuencia y los OEM pueden personalizarlas. Los remuestreadores predeterminados, en orden descendente de distorsión de señal y orden ascendente de complejidad computacional, incluyen:

  • lineal
  • cúbico
  • sinc con coeficientes originales
  • sinc con coeficientes revisados

En general, los resamplers sinc son más apropiados para la reproducción de música de mayor calidad, y los otros resamplers deben reservarse para casos donde la calidad es menos importante (un ejemplo podría ser "clics de teclas" o similares).

La implementación específica del resampler seleccionada depende del caso de uso, la carga y el valor de la propiedad del sistema af.resampler.quality . Para obtener más detalles, consulte el código fuente del resampler de audio en AudioFlinger .