Question

I'm trying to use pulseaudio to play the contest of a vorbis-stream but are hitting problems. Basicly I'm told that:

‘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

Some code are shown below:

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

It's probably some simple error, but if anyone could point me into the right direction, that would be great!

Was it helpful?

Solution

Those things are all defined in simple.h, so add a new #include to the top of your file:

#include <pulse/simple.h>
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top