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.

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top