{
snd_pcm_hw_t *hw = pcm->private_data;
char *name = "Unknown";
- snd_card_get_name(hw->card, &name);
+ int err = snd_card_get_name(hw->card, &name);
+ assert(err >= 0);
snd_output_printf(out, "Hardware PCM card %d '%s' device %d subdevice %d\n",
- hw->card, name, hw->device, hw->subdevice);
+ hw->card, name, hw->device, hw->subdevice);
free(name);
if (pcm->setup) {
snd_output_printf(out, "\nIts setup is:\n");
{
snd_pcm_sframes_t avail;
avail = *pcm->hw_ptr + pcm->buffer_size - *pcm->appl_ptr;
- if (avail < 0)
+ if (avail >= pcm->boundary)
+ avail -= pcm->boundary;
+ else if (avail < 0)
avail += pcm->boundary;
return avail;
}
{
snd_pcm_sframes_t avail;
avail = *pcm->hw_ptr - *pcm->appl_ptr;
- if (pcm->stream == SND_PCM_STREAM_PLAYBACK)
+ if (pcm->stream == SND_PCM_STREAM_PLAYBACK) {
avail += pcm->buffer_size;
+ if (avail >= pcm->boundary)
+ avail -= pcm->boundary;
+ }
if (avail < 0)
avail += pcm->boundary;
return avail;