Cela peut poser une question stupide, mais écoutez-moi: le taux de sortie est-il vraiment important?
Envisagez ce scénario: vous disposez d'un périphérique d'entrée audio. Vous échantillonnez une entrée de forme d'onde analogique à 48Khz. Cette forme d'onde peut être générée à tout moment, depuis la mesure continue du niveau de pression d'un microphone jusqu'à un codec vocal 8Khz, ou moins. Le fait que vous sachiez que cette sortie particulière est également à 48Khz n'a aucune incidence sur ce que vous faites. S'il y avait une transmission parfaite entre le périphérique de sortie et votre entrée, lorsque vous comparez la forme d'onde numérique originale à ce que vous lisez, vous verrez parfois que vous avez dupliqué un échantillon (si votre horloge est plus rapide) ou manquée (si vous êtes plus lent). Mais cela se fera automatiquement, sans aucune compensation de votre part. Cela sera facilement aussi précis que n'importe quelle tentative par vous pour déterminer quand «dupliquer ou jeter l'échantillon occasionnel».
En pratique, vous n'obtiendrez probablement pas une copie exacte de toute façon, entre les effets de filtrage et le bruit dans le DAC et ADC. Sauf si vous parlez d'un format audio numérique encodé - dans ce cas, ignorez tout ce que j'ai dit.
EDIT - Ok, donc c'est de l'audio numérique - S/PDIF?
Le signal doit contenir suffisamment d'informations pour implémenter un verrouillage de phase. Idéalement en matériel - les fronts montants du signal définissent la fréquence d'horloge - vous pouvez utiliser le matériel PLL pour verrouiller votre horloge A/D sur l'entrée. Ou sur-échantillonner pendant un certain temps et compter les fronts montants pour déterminer le taux. Ou au niveau du logiciel, mesurez le taux d'erreurs de cadrage dans les quatre premiers intervalles de temps et ajustez votre horloge pour compenser.
Il est audio numérique. Ma préoccupation ne concerne pas tant la fidélité. Je suis plus préoccupé par le débordement/sous-dépassement de la mémoire tampon et le fait de devoir jeter ou maquiller un gros bloc de données en cas de condition xxxxflow. – JeffV