Bonnes feuilles : Développer pour l'Iphone et l'Ipad Streaming

Pour écrire une application de type radio sur Internet, il est nécessaire de passer par un flux audio. Dans un tel cas, quand on accède au flux, on obtient des données qui peuvent ne pas être utilisables immédiatement (par exemple des méta-data ou des données incomplètes). Il faut aussi bufferiser suffisamment de données avant de commencer à jouer. Il peut aussi y avoir des interruptions dans le flux, ou une perte partielle de données. L'API Audio File Stream Services prend en charge toutes ces
difficultés.

Pour cela, il faut que l'application fournisse des fonctions de callback qui seront appelées par le service audio.

Considérons l'exemple classique suivant :

 l'utilisateur déclenche la lecture du flux et l'application utilise un proxy représentant ce flux ;

 le service audio commence à analyser les données ;

 quand le service a analysé suffisamment de données, il modifie la propriété kAudioFileStreamProperty_ReadyToProducePackets du (proxy  le service invoque ensuite la fonction de callback qui lui a été fournie du) flux et la met à true ;pour les modifications de propriétés en lui passant la valeur kAudioFileStreamProperty_ReadyToProducePackets ;

 la fonction lance la lecture effective via une queue audio.

La deuxième fonction de callback est appelée lorsque suffisamment de données ont été reçues. Typiquement, cette fonction passe les données à la queue audio.

Autres API


Les queues de son (Audio Queues) sont décrites dans le guide :
[12-3] Audio Queue Services Programming Guide


Les queues permettent l'enregistrement et l'écoute de sons multiples. L'exemple SpeakHere montre ces utilisations. Une queue de sons peut jouer plusieurs sons simultanément mais un seul au maximum peut être en format compressé sur un iPhone car celui-ci utilise un circuit électronique dédié. L'exemple SpeakHere utilise une queue pour enregistrer un son et une queue pour relire ce son.

L'API AudioFileStream permet de convertir les paquets obtenus en lecture de réseau en paquets audio qui peuvent être fournis ensuite à une queue audio.

L'architecture OpenAL a pour ambition de fournir au son une bibliothèque
comparable à OpenGL pour le graphisme. Dans OpenAL on positionne l'auditeur et des sources sonores. L'architecture OpenAL, comme son nom le laisse supposer, est une architecture ouverture et le lecteur pourra trouver plus d'information sur le site : [12-4] http://www.openal.org/