[pulseaudio-discuss] Trouble with Recording App

Jim Duda jim at duda.tzo.com
Sun Jun 21 10:45:57 PDT 2009


I'm using pulseaudio version 0.9.15 in system mode.

I have one recording application which refuses to work properly with pulseaudio.
This same application has worked with previous versions of pulseaudio.

If I connect the app directly to alsa, or, use pasuspender, the application
works just how I expect it to.

I suspect there is something wrong with my main read loop in the application.
I must be doing something which pulseaudio doesn't like.

Can anyone please review my main read loop?  Do you see any isssues?

FWIW, I never see any "snd_pcm_readi failed messages in stderr.

int32 ad_read(ad_rec_t * handle, int16 * buf, int32 max)
{
    int32 length;

    snd_pcm_prepare(handle->dspH);

    for (;;) {
           length = snd_pcm_readi(handle->dspH, buf, max);
           // read success
           if (length >= 0) {
               break;
           }
           // no data available
           if (length == -EAGAIN) {
               length = 0;
               break;
           }
           fprintf(stderr, "snd_pcm_readi failed! %d %d %s\n", length, EAGAIN, snd_strerror(length));
           /* Failure, try to recover */
           if ((length = snd_pcm_recover( handle->dspH, length, 1)) < 0) {
               fprintf(stderr, "snd_pcm_recover failed! %s\n", snd_strerror(length));
               length = AD_ERR_GEN;
               break;
           } 
           /* Recovered, let's try another read */
    }

    return length;
}

What else can I look for?

Thanks,

Jim




More information about the pulseaudio-discuss mailing list