Comment ouvrir un flux de paquets UPD?
Question
Je voudrais utiliser la bibliothèque PortAudio pour lire les données audio. Ces données audio provient de UDP paquets.
J'ai vu il y a la fonction Pa_OpenDefaultStream () (et Pa_OpenStream () qui est assez similaire) pour ouvrir un flux:
PaStream *stream;
PaError err;
/* Open an audio I/O stream. */
err = Pa_OpenDefaultStream( &stream,
0, /* no input channels */
2, /* stereo output */
paFloat32, /* 32 bit floating point output */
SAMPLE_RATE,
256, /* frames per buffer, i.e. the number
of sample frames that PortAudio will
request from the callback. Many apps
may want to use
paFramesPerBufferUnspecified, which
tells PortAudio to pick the best,
possibly changing, buffer size.*/
patestCallback, /* this is your callback function */
&data ); /*This is a pointer that will be passed to
your callback*/
Je suppose que je dois l'utiliser pour jouer mes mais je ne paquets sais pas comment l'utiliser:
- Quel est le premier paramètre?
- Pourquoi dois-je définir une fonction de rappel?
Voici un lien vers la documentation PortAudio: http://www.portaudio.com/trac/
Toute aide serait grandement appréciée:)
Merci.
La solution
Le premier paramètre est un pointeur vers un flux d'entrée / sortie, de type PaStream. Les données audio seront lues / écrites à ce flux.
Vous devez écrire une fonction de rappel que la bibliothèque PortAudio appellera quand il a besoin de lire ou audio en écriture / de votre PC. Tout autre traitement audio que vous voulez faire (par exemple DSP) se fera ici aussi. Une fonction de rappel simple serait tout simplement copier l'entrée à la sortie, pour le streaming d'E / S. Si vous éprouvez des difficultés à utiliser les callbacks, utilisez l'API de blocage à la place, il peut être plus facile à comprendre.
compiler et exécuter les exemples pour plus de détails (par exemple patest_read_record.c), theres beaucoup d'informations là-bas.