2009-08-25 11 views
0

J'essaie d'utiliser pulseaudio pour jouer le concours d'un vorbis-stream mais je suis en train de rencontrer des problèmes. Basiquement On me dit que:C++ et pulseaudio "non déclaré dans cette portée"

‘pa_simple’ was not declared in this scope 
‘pa_simple_new’ was not declared in this scope 
‘pa_simple_write’ was not declared in this scope 

Certains codes sont indiqués ci-dessous:

#include <pulse/pulseaudio.h> 

pa_simple *s; 
pa_sample_spec ss; 

ss.format = PA_SAMPLE_S16NE; 
ss.channels = 2; 
ss.rate = 44100; 

s = pa_simple_new(
    NULL,    // Use the default server. 
    "Fooapp",   // Our application's name. 
    PA_STREAM_PLAYBACK, // Playback 
    NULL,    // Use the default device. 
    "Music",   // Description of our stream. 
    &ss,    // Our sample format. 
    NULL,    // Use default channel map 
    NULL,    // Use default buffering attributes. 
    NULL,    // Ignore error code. 
); 

while((samples=vorbis_synthesis_pcmout(&vd,&pcm))>0){ 
    int j; 
    int bout=(samples<convsize?samples:convsize); 
    cout << "D" << endl; 
    for(i=0;i<vi.channels;i++){ 
     ogg_int16_t *ptr=convbuffer+i; 
     float *mono=pcm[i]; 
     for(j=0;j<bout;j++){ 
      int val=floor(mono[j]*32767.f+.5f); 
      *ptr=val; 
      ptr+=vi.channels; 
     } 
    } 
    cout << "E" << endl; 
    #ifdef PulseAudio 
    pa_simple_write(s,convbuffer,2*vi.channels,NULL); 
    #else 
    fwrite(convbuffer,2*vi.channels,bout,output); 
    #endif 
    vorbis_synthesis_read(&vd,bout); 
    cout << "F" << endl; 
} 

Il est probablement une simple erreur, mais si quelqu'un pouvait pointer moi dans la bonne direction, ce serait génial!

Répondre

5

Ces choses sont toutes définies dans simple.h, donc ajouter une nouvelle #include en haut de votre fichier:

#include <pulse/simple.h> 
+0

Merci vous tant; pensé tous les fichiers inclus dans pulseaudio.h après y avoir jeté un coup d'oeil mais je dois l'avoir raté. Merci mon pote! –

Questions connexes