Bonsoir,
Je développe un logiciel qui utilise la lib PortAudio, développée majoritairement en C.
Pour fonctionner, cette lib a besoin d'une fonction callback qui est appelé a chaque flux entrant ou sortant.
Un pointeur sur cette fonction est envoyé a la fonction Pa_OpenDefaultStream()  qui s'occupe de l'ouverture du flux.
En C, c'est tres simple il suffit de spécifier le nom de la callback comme ca :
	
	Pa_OpenDefaultStream(&stream, 1, 2, paFloat32, SAMPLE_RATE, FRAMES_PER_BUFFER, callbackFunction, &data);
 Mais en C++, ma callbackFunction() est encapsulée dans ma classe Audio et lorsque je spécifie seulement le nom comme en C, le compilo me dit que le paramètre est incompatible avec le type PaStreamCallback*. Pourtant la callback est exactement la meme 
qu'en C !
Le typedef pour le pointeur de fonction venant de portaudio.h :
	
	typedef int PaStreamCallback(const void *input, void *output, unsigned long frameCount, const PaStreamCallbackTimeInfo* timeInfo, PaStreamCallbackFlags statusFlags, void *userData );
 Et le prototype de fonction de Pa_OpenDefaultStream venant aussi de portaudio.h :
	
	1 2 3 4 5 6 7 8
   | PaError Pa_OpenDefaultStream( PaStream** stream,
                              int numInputChannels,
                              int numOutputChannels,
                              PaSampleFormat sampleFormat,
                              double sampleRate,
                              unsigned long framesPerBuffer,
                              PaStreamCallback *streamCallback,
                              void *userData ); | 
 
Merci d'avance pour votre aide.
						
					
Partager