puzzled: snd_pcm_readi blocks when it seems like it shouldn't

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



I have spent most of the past couple of days trying to understand why a
program is failing to obtain data from a device.

I have stripped away the code down to this very simple (and silly) sample:

--------

    cout << "avail +5s = " << snd_pcm_avail(_handle) << endl;
    cout << "calling snd_pcm_readi" << endl;

    char sdata [10000];
    const snd_pcm_sframes_t r = snd_pcm_readi(_handle, &sdata, 10);

    cout << "value returned by _readi_func = " << r << endl;

--------

The output produced is:

avail +5s = 3999
calling snd_pcm_readi

The call to snd_pcm_readi() never returns, and I have no idea why, as avail()
says that there are plenty of data waiting to be read.

For what it's worth, snd_pcm_dump() says:

--------

ACCESS:  RW_INTERLEAVED
FORMAT:  S16_LE
SUBFORMAT:  STD
SAMPLE_BITS: 16
FRAME_BITS: 32
CHANNELS: 2
RATE: 8000
PERIOD_TIME: 125000
PERIOD_SIZE: 1000
PERIOD_BYTES: 4000
PERIODS: 4
BUFFER_TIME: 500000
BUFFER_SIZE: 4000
BUFFER_BYTES: 16000
TICK_TIME: 0

--------

This behaviour is 100% consistent, and I am at a loss as to what I might be
doing wrong.

Any insights very gratefully received. Obviously, more information is
available if needed.

  Doc

-- 
Web:  http://enginehousebooks.com/drevans

Attachment: signature.asc
Description: OpenPGP digital signature

_______________________________________________
Alsa-user mailing list
Alsa-user@xxxxxxxxxxxxxxxxxxxxx
https://lists.sourceforge.net/lists/listinfo/alsa-user

[Index of Archives]     [ALSA Devel]     [Linux Audio Users]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [Yosemite Photos]     [KDE Users]     [Fedora Tools]

  Powered by Linux