2009-08-25 17 views
0

Ich versuche Pulseaudio zu verwenden, um den Wettbewerb eines Vorbis-Stream zu spielen, aber Probleme zu treffen. Ich bin im Grunde gesagt, dass:C++ und Pulseaudio "nicht in diesem Bereich deklariert"

‘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 

Einige Code sind unten dargestellt:

#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; 
} 

Es ist wahrscheinlich einige einfache Fehler, aber wenn jemand zeigen könnte Ich in die richtige Richtung, das wäre großartig!

Antwort

5

Diese Dinge sind alle definiert in simple.h, so fügen Sie eine neue #include zum Anfang der Datei:

#include <pulse/simple.h> 
+0

Danke Ihnen so sehr; dachte, dass alle Dateien in pulseaudio.h enthalten sind, nachdem ich sie angeschaut habe, aber ich muss es verpasst haben. Danke Kumpel! –