Conversion du taux d'échantillonnage

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

La conversion de la fréquence d'échantillonnage est le processus de modification d'un flux d'échantillons discrets d'une fréquence d'échantillonnage à une autre à 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 de puits.

Les rééchantillonneurs sont utilisés à plusieurs endroits dans 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 à 48 kHz en interne. Dans ce cas, un rééchantillonneur serait utilisé pour suréchantillonner la sortie audio MP3 d'une fréquence d'échantillonnage source de 44,1 kHz à une fréquence d'échantillonnage de récepteur 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 préservation de l'amplitude globale du signal
  • degré de préservation de la largeur de bande 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 constant par rapport à la fréquence
  • complexité de calcul, exprimée en cycles CPU ou consommation d'énergie
  • rapports autorisés des taux d'échantillonnage de la source et du puits
  • possibilité de modifier dynamiquement les taux 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 récepteur), aurait un retard minimal et cohérent, aurait 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 entrent en conflit avec un court délai et une faible complexité.

Android inclut une variété de rééchantillonneurs audio, de sorte que des 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 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, incluent :

  • linéaire
  • cubique
  • sinc avec les coefficients d'origine
  • sinc avec coefficients révisés

En général, les rééchantillonneurs sinc sont plus appropriés pour une 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 les "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 .