Conversion de fréquence d'échantillonnage

Cet article décrit la conversion de la fréquence d'échantillonnage, également appelée rééchantillonnage , dans Android. Pour la terminologie relative à la conversion de la fréquence d'échantillonnage, voir Terminologie .

La conversion de fréquence d'échantillonnage est le processus de changement d'un flux d'échantillons discrets d'une fréquence d'échantillonnage à un autre flux à une fréquence d'échantillonnage différente. Un convertisseur de fréquence d'échantillonnage, ou rééchantillonneur, est un module qui implémente la conversion de fréquence d'échantillonnage. En ce qui concerne le rééchantillonneur, le flux d'origine est appelé le signal source et le flux rééchantillonné est appelé le signal récepteur.

Les rééchantillonneurs sont utilisés à plusieurs endroits sous Android. Par exemple, un fichier MP3 peut être encodé à une fréquence d'échantillonnage de 44,1 kHz, mais doit être lu sur un appareil Android prenant en charge l'audio de 48 kHz en interne. Dans ce cas, un rééchantillonneur serait utilisé pour suréchantillonner l'audio de sortie MP3 de la fréquence d'échantillonnage de la source de 44,1 kHz à une fréquence d'échantillonnage de chute de 48 kHz utilisée dans l'appareil Android.

Les caractéristiques d'un rééchantillonneur peuvent être exprimées à l'aide de métriques, notamment:

  • degré de conservation de l'amplitude globale du signal
  • degré de préservation de la bande passante de fréquence du signal, sous réserve des limitations de la fréquence d'échantillonnage du puits
  • latence globale via le rééchantillonneur
  • retard de phase et de groupe cohérent par rapport à la fréquence
  • complexité de calcul, exprimée en cycles CPU ou en consommation d'énergie
  • ratios autorisés des fréquences d'échantillonnage de la source et du puits
  • possibilité de modifier dynamiquement les taux de fréquence d'échantillonnage
  • quels formats d'échantillons audio numériques sont pris en charge

Le rééchantillonneur idéal préserverait exactement l'amplitude et la bande passante de fréquence du signal source (sous réserve des limitations de la fréquence d'échantillonnage du puits), aurait un délai minimal et constant, une complexité de calcul minimale, permettrait des taux de conversion arbitraires et dynamiques et prendrait en charge tous les formats d'échantillons audio numériques courants. . En pratique, les ré-échantillonneurs idéaux n'existent pas car les ré-échantillonneurs réels sont un compromis entre ces caractéristiques. Par exemple, les objectifs de qualité idéale sont en conflit avec un délai court et une faible complexité.

Android comprend une variété de ré-échantillonneurs audio, de sorte que les compromis appropriés peuvent être faits en fonction du cas d'utilisation et de la charge de l'application. Les rééchantillonneurs disponibles sont expliqués dans la section Implémentation du rééchantillonneur .

Implémentations de rééchantillonneur

Les implémentations de rééchantillonneur disponibles changent fréquemment et peuvent être personnalisées par les OEM. Les rééchantillonneurs par défaut, par ordre décroissant de distorsion du signal et par ordre croissant de complexité de calcul, comprennent:

  • linéaire
  • cubique
  • sinc avec les coefficients originaux
  • sinc avec coefficients révisés

En général, les ré-échantillonneurs sinc sont plus appropriés pour la lecture de musique de meilleure qualité, et les autres ré-échantillonneurs doivent être réservés aux cas où la qualité est moins importante (un exemple pourrait être des «clics de touche» ou similaire).

L'implémentation spécifique du rééchantillonneur sélectionnée dépend du cas d'utilisation, de la charge et de la valeur de la propriété système af.resampler.quality . Pour plus de détails, consultez le code source du rééchantillonneur audio dans AudioFlinger .