Passer un pointeur de fonction callback encapsulée en paramètre d'une fonction
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:
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:
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:
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.