Cet article décrit la conversion de taux d'échantillonnage, également appelée resampling, dans Android. Pour connaître la terminologie liée à la conversion de taux d'échantillonnage, consultez la section Terminologie.
La conversion de taux d'échantillonnage consiste à modifier un flux d'échantillons discrets d'un taux d'échantillonnage à un autre. Un convertisseur de fréquence d'échantillonnage, ou reéchantillonneur, est un module qui implémente la conversion de fréquence d'échantillonnage. En ce qui concerne le reéchantillonneur, le flux d'origine est appelé signal source, et le flux reéchantillonné est appelé signal de destination.
Les reéchantillonneurs sont utilisés à plusieurs endroits dans Android. Par exemple, un fichier MP3 peut être encodé à un taux d'échantillonnage de 44,1 kHz, mais doit être lu sur un appareil Android compatible avec l'audio 48 kHz en interne. Dans ce cas, un rééchantillonneur est utilisé pour convertir l'audio de sortie MP3 du taux d'échantillonnage source de 44,1 kHz en un taux d'échantillonnage de 48 kHz utilisé sur l'appareil Android.
Les caractéristiques d'un échantillonneur peuvent être exprimées à l'aide de métriques, y compris les suivantes:
- degré de préservation de l'amplitude globale du signal
- degré de préservation de la bande passante de fréquence du signal, en fonction des limites du taux d'échantillonnage du puits
- latence globale via le reéchantillonneur ;
- phase et délai de groupe cohérents par rapport à la fréquence
- complexité de calcul, exprimée en cycles de processeur ou en consommation d'énergie
- les ratios autorisés pour les taux d'échantillonnage de la source et du récepteur ;
- possibilité de modifier dynamiquement les ratios de taux d'échantillonnage
- les formats d'échantillonnage audio numérique compatibles ;
L'échantillonneur idéal préserverait exactement l'amplitude et la bande de fréquences du signal source (sous réserve des limites du taux d'échantillonnage du récepteur), présenterait un délai minimal et cohérent, présenterait une complexité de calcul minimale, autoriserait des ratios de conversion arbitraires et dynamiques, et serait compatible avec tous les formats d'échantillonnage audio numérique courants. En pratique, les reéchantillonneurs idéaux n'existent pas, car les reé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 inclut différents reéchantillonneurs audio afin que des compromis appropriés puissent être faits en fonction du cas d'utilisation et de la charge de l'application. Les reéchantillonneurs disponibles sont expliqués dans la section Implémentation du reéchantillonneur.
Implémentations de resampling
Les implémentations de resampling disponibles changent fréquemment et peuvent être personnalisées par les OEM. Les reéchantillonneurs par défaut, par ordre décroissant de distorsion du signal et par ordre croissant de complexité de calcul, sont les suivants:
- 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 adaptés à 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 (par exemple, "clics de touches" ou similaires).
L'implémentation de resampling spécifique 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 en savoir plus, consultez le code source du reéchantillonneur audio dans AudioFlinger.