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 :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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.