Pergunta

Eu gostaria de usar a biblioteca Portaudio para reproduzir dados de áudio. Esses dados de áudio são provenientes do UDP Paquets.

Vi que é a função pa_opendefaultStream () (e pa_openstream () que é bastante semelhante) para abrir um fluxo:

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

Acho que tenho que usá -lo para tocar meus pais, mas não sei como usá -lo:

  • Qual é o primeiro parâmetro?
  • Por que tenho que definir uma função de devolução?

Aqui está um link para a documentação de Portaudio: http://www.portaudio.com/trac/

Qualquer ajuda seria muito apreciada :)

Obrigado.

Foi útil?

Solução

O primeiro parâmetro é um ponteiro para um fluxo de entrada/saída, do tipo pastream. Os dados de áudio serão lidos em / escritos para este fluxo.

Você precisa escrever uma função de retorno de chamada que a biblioteca Portaudio ligará quando precisar ler ou escrever áudio de / para o seu PC. Qualquer outro processamento de áudio que você deseja fazer (por exemplo, DSP) também será feito aqui. Uma função simples de retorno de chamada apenas copia a entrada para a saída, para a E/S de streaming. Se você estiver com problemas para usar retornos de chamada, use a API de bloqueio, pode ser mais fácil de entender.

Compilar e executar os exemplos para obter detalhes (por exemplo, patest_read_record.c), há muitas informações lá.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top