# HG changeset patch # User lbarthelemy # Date 1206702959 0 # Node ID e977d4abea8a8586332561cfa2f9255ac2fe42e7 # Parent 60e84bb658bcb0ff1bd05ca1511090f86ec1e952 Sample code to record audio diff -r 60e84bb658bc -r e977d4abea8a sv/audioio/AudioRecording.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sv/audioio/AudioRecording.cpp Fri Mar 28 11:15:59 2008 +0000 @@ -0,0 +1,61 @@ + +#include "audioio/AudioRecording.h" + +#ifdef HAVE_PORTAUDIO + +#include +#include +#endif + +static int myCallback( void *inputBuffer, void *outputBuffer, unsigned long framesPerBuffer, PaTimestamp outTime, void *userData ) +{ + //float *in = (float *) inputBuffer; + SNDFILE* file = (SNDFILE*)userData; + + if( inputBuffer == NULL ) return 0; + + // + // sf_writef_float(file, (float*)inputBuffer, framesPerBuffer); + //else + sf_writef_short(file, (short*)inputBuffer, framesPerBuffer); + + + return 0; +} + + +void recordAudio() //QString& fileName) +{ + PortAudioStream *stream; + + Pa_Initialize(); + + SF_INFO fileInfo; + fileInfo.samplerate = 44100; + fileInfo.channels = 1; + fileInfo.format = SF_FORMAT_WAV | SF_FORMAT_PCM_16; //SF_FORMAT_FLOAT; + + + SNDFILE* file = sf_open("d:/sample.wav", SFM_WRITE, &fileInfo); + if (file != NULL) { + Pa_OpenDefaultStream(&stream,fileInfo.channels, 0, /* mon input, no output */ + paInt16/*paFloat32*/, fileInfo.samplerate, + 64, 0, /* 64 frames per buffer, let PA determine numBuffers */ + myCallback, (void*)file); + + Pa_StartStream( stream ); + Pa_Sleep( 5000 ); /* Sleep for 10 seconds while processing. */ + Pa_StopStream( stream ); + Pa_CloseStream( stream ); + + sf_close(file); + } + + + + Pa_Terminate(); + + + + +} \ No newline at end of file diff -r 60e84bb658bc -r e977d4abea8a sv/audioio/AudioRecording.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sv/audioio/AudioRecording.h Fri Mar 28 11:15:59 2008 +0000 @@ -0,0 +1,6 @@ + + + +// Record blabla... +void recordAudio(); //QString& fileName); +