#include <iostream>
#include <portaudio.h>
#define SAMPLE_RATE 44100
#define FRAMES_PER_BUFFER 256
// Callback para procesar el audio
static int audioCallback(const void *inputBuffer, void *outputBuffer,
unsigned long framesPerBuffer,
const PaStreamCallbackTimeInfo *timeInfo,
PaStreamCallbackFlags statusFlags,
void *userData) { // Aquà puedes procesar el audio entrante
const float *in = (const float *)inputBuffer;
// Procesa el buffer de entrada (in) según sea necesario
return paContinue;
}
int main() { PaError err;
err = Pa_Initialize();
if (err != paNoError) { std::cerr << "Error al inicializar PortAudio: " << Pa_GetErrorText(err) << std::endl;
return -1;
}
PaStream *stream;
err = Pa_OpenStream(&stream,
paFloat32, // Tipo de dato de entrada
NULL, // Salida (NULL para no usar)
SAMPLE_RATE,
FRAMES_PER_BUFFER,
paClipOff, // Sin clipping
audioCallback,
NULL); // Sin datos adicionales
if (err != paNoError) { std::cerr << "Error al abrir el stream: " << Pa_GetErrorText(err) << std::endl;
return -1;
}
err = Pa_StartStream(stream);
if (err != paNoError) { std::cerr << "Error al iniciar el stream: " << Pa_GetErrorText(err) << std::endl;
return -1;
}
std::cout << "Presiona Enter para detener..." << std::endl;
std::cin.get();
err = Pa_StopStream(stream);
err = Pa_CloseStream(stream);
Pa_Terminate();
return 0;
}