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