Pregunta

Me gustaría usar la biblioteca PortAudio para reproducir datos de audio. Estos datos de audio viene de paquets UDP.

vi existe Pa_OpenDefaultStream () (y Pa_OpenStream () que es bastante similar) función para abrir una secuencia:

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*/

Me supongo que tengo que usarlo para jugar mis paquets pero no sé cómo usarlo:

  • ¿Cuál es el primer parámetro?
  • ¿Por qué tengo que definir una función de devolución de llamada?

Aquí hay un enlace a la documentación PortAudio: http://www.portaudio.com/trac/

Cualquier ayuda sería muy apreciada:)

Gracias.

¿Fue útil?

Solución

El primer parámetro es un puntero a un flujo de entrada / salida, de tipo PaStream. Los datos de audio se leerán desde / por escrito a esta corriente.

Usted tiene que escribir una función de devolución de llamada que la biblioteca PortAudio llamará cuando se van a leer o escribir de audio a / desde su PC. Cualquier otro procesamiento de audio que quiere hacer (por ejemplo DSP) se llevará a cabo aquí también. Una función de devolución de llamada sencilla sería simplemente copiar la entrada a la salida, para la transmisión de E / S. Si tiene problemas para usar las devoluciones de llamada, utilizar la API de bloqueo en su lugar, puede ser más fácil de entender.

Compilar y ejecutar los ejemplos para detalles (por ejemplo patest_read_record.c), theres un montón de información allí.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top