2010-05-19 5 views
3

Y at-il un moyen de synchroniser la capture et la lecture de données audio dans Android?Comment synchroniser AudioRecord et AudioTrack

Je dois effectuer un traitement de signal (annulation d'écho, etc.) nécessitant une synchronisation au niveau de l'échantillon.

à savoir Chaque fois que le matériel capture un cadre audio, j'ai besoin de l'image correspondante qui a été jouée à travers le haut-parleur avec une grande précision.

Toute aide ou indice est vraiment apprécié. Merci d'avance.

-flesym

Répondre

1

Je suis en mesure d'obtenir l'annulation d'écho à travailler sur mon processeur Arm5 (WM8650). Voici les étapes de mon travail:

  1. J'enveloppées Speex avec JNI et appelé routines de traitement d'écho avant d'envoyer des trames PCM à l'encodeur. Aucun écho n'a été annulé, peu importe les réglages Speex que j'ai essayés. Comme Speex est très sensible au délai entre la lecture et les trames d'écho, j'ai implémenté une file d'attente et mis en file d'attente tous les paquets envoyés à AudioTrack. La taille de la file d'attente doit être approximativement égale à la taille du tampon AudioTrack interne. De cette façon, les paquets ont été envoyés à echo_playback à peu près au moment où AudioTrack envoie des paquets à la carte son à partir de son tampon interne. Le délai a été supprimé avec cette approche mais l'écho n'était toujours pas annulé

  2. J'ai enveloppé la partie d'annulation d'écho WebRtc avec JNI et appelé ses méthodes avant d'envoyer des paquets au codeur. L'écho était toujours présent mais la bibliothèque essayait évidemment de l'annuler. J'ai appliqué la technique du tampon décrite en P2 et elle a finalement commencé à fonctionner. Le délai doit cependant être ajusté pour chaque périphérique. Notez également que WebRtc dispose d'une version mobile et complète de l'annulation d'écho. La version complète ralentit considérablement le processeur et devrait probablement être exécutée sur ARM7 seulement. La version mobile fonctionne mais avec une qualité inférieure

J'espère que cela aidera quelqu'un.

Questions connexes