2009-12-28 9 views
1

J'ai passé toute la nuit à essayer de comprendre celui-ci. Mon code est fondamentalement le même que l'exemple d'Apple here. Cependant, l'appareil ne joue que le premier tampon placé dans la file d'attente (j'entends le contenu du premier tampon lorsque l'application démarre). Après cela, aucun son ne sortira de l'appareil. La lecture est toujours en cours alors que AQS continue à déclencher ma fonction . De plus, chaque appel à AQS renvoie 0, donc rien n'échoue.Les services de file d'attente audio sur iPhone ne lisent que le premier tampon mis en file d'attente?

Maintenant, je peux obtenir des tampons suivants à jouer tant que j'appelle AudioQueueEnqueueBuffer de WITHIN ma fonction de rappel. Cela ne fonctionnera pas car je ne peux que remplir et mettre en file d'attente les tampons à partir de mon rappel AudioFileStream_PacketsProc comme les données cines de la socket et dans AudioFileStreamParseBytes.

Quelqu'un d'autre a ce problème? On dirait un bug dans AQS pour moi ...

Merci, Andrew

Répondre

0

figured it out au cas où quelqu'un d'autre a ce problème ...

Je ne savais pas l'AQ se déplace toujours vers l'avant à l'heure. Comme j'utilisais des données audio provenant d'un flux de données UDP, je tombais lentement derrière l'AQ à cause des paquets perdus.

Je n'ai pas été capable de comprendre comment dire à l'AQ de jouer un tampon "tout de suite". Ma solution consiste à simplement réinitialiser l'AQ lorsque je détecte un paquet abandonné. Ce n'est pas idéal mais ça marche pour le moment.

Andrew

+2

J'ai un problème similaire, pouvez-vous s'il vous plaît fournir un peu plus de perspicacité. – Amitg2k12