mirror of
https://github.com/alsa-project/alsa-lib.git
synced 2025-10-29 05:40:25 -04:00
Fixed mmap emulation
This commit is contained in:
parent
81245f78d4
commit
7088f19233
3 changed files with 28 additions and 8 deletions
|
|
@ -219,7 +219,7 @@ ssize_t snd_pcm_writei(snd_pcm_t *pcm, const void *buffer, size_t size)
|
|||
assert(pcm->valid_setup);
|
||||
assert(pcm->setup.xfer_mode == SND_PCM_XFER_INTERLEAVED);
|
||||
assert(!pcm->mmap_data);
|
||||
return pcm->fast_ops->writei(pcm->fast_op_arg, buffer, size);
|
||||
return _snd_pcm_writei(pcm, buffer, size);
|
||||
}
|
||||
|
||||
ssize_t snd_pcm_writen(snd_pcm_t *pcm, void **bufs, size_t size)
|
||||
|
|
@ -229,7 +229,7 @@ ssize_t snd_pcm_writen(snd_pcm_t *pcm, void **bufs, size_t size)
|
|||
assert(pcm->valid_setup);
|
||||
assert(pcm->setup.xfer_mode == SND_PCM_XFER_NONINTERLEAVED);
|
||||
assert(!pcm->mmap_data);
|
||||
return pcm->fast_ops->writen(pcm->fast_op_arg, bufs, size);
|
||||
return _snd_pcm_writen(pcm, bufs, size);
|
||||
}
|
||||
|
||||
ssize_t snd_pcm_readi(snd_pcm_t *pcm, void *buffer, size_t size)
|
||||
|
|
@ -239,7 +239,7 @@ ssize_t snd_pcm_readi(snd_pcm_t *pcm, void *buffer, size_t size)
|
|||
assert(pcm->valid_setup);
|
||||
assert(pcm->setup.xfer_mode == SND_PCM_XFER_INTERLEAVED);
|
||||
assert(!pcm->mmap_data);
|
||||
return pcm->fast_ops->readi(pcm->fast_op_arg, buffer, size);
|
||||
return _snd_pcm_readi(pcm, buffer, size);
|
||||
}
|
||||
|
||||
ssize_t snd_pcm_readn(snd_pcm_t *pcm, void **bufs, size_t size)
|
||||
|
|
@ -249,7 +249,7 @@ ssize_t snd_pcm_readn(snd_pcm_t *pcm, void **bufs, size_t size)
|
|||
assert(pcm->valid_setup);
|
||||
assert(pcm->setup.xfer_mode == SND_PCM_XFER_NONINTERLEAVED);
|
||||
assert(!pcm->mmap_data);
|
||||
return pcm->fast_ops->readn(pcm->fast_op_arg, bufs, size);
|
||||
return _snd_pcm_readn(pcm, bufs, size);
|
||||
}
|
||||
|
||||
ssize_t snd_pcm_writev(snd_pcm_t *pcm, const struct iovec *vector, int count)
|
||||
|
|
|
|||
|
|
@ -149,3 +149,23 @@ static inline size_t snd_pcm_channel_area_step(snd_pcm_channel_area_t *area)
|
|||
return area->step / 8;
|
||||
}
|
||||
|
||||
static inline ssize_t _snd_pcm_writei(snd_pcm_t *pcm, const void *buffer, size_t size)
|
||||
{
|
||||
return pcm->fast_ops->writei(pcm->fast_op_arg, buffer, size);
|
||||
}
|
||||
|
||||
static inline ssize_t _snd_pcm_writen(snd_pcm_t *pcm, void **bufs, size_t size)
|
||||
{
|
||||
return pcm->fast_ops->writen(pcm->fast_op_arg, bufs, size);
|
||||
}
|
||||
|
||||
static inline ssize_t _snd_pcm_readi(snd_pcm_t *pcm, void *buffer, size_t size)
|
||||
{
|
||||
return pcm->fast_ops->readi(pcm->fast_op_arg, buffer, size);
|
||||
}
|
||||
|
||||
static inline ssize_t _snd_pcm_readn(snd_pcm_t *pcm, void **bufs, size_t size)
|
||||
{
|
||||
return pcm->fast_ops->readn(pcm->fast_op_arg, bufs, size);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -436,7 +436,7 @@ ssize_t snd_pcm_write_mmap(snd_pcm_t *pcm, size_t size)
|
|||
snd_pcm_channel_area_t *a = pcm->mmap_areas;
|
||||
char *buf = snd_pcm_channel_area_addr(a, offset);
|
||||
assert(pcm->setup.mmap_shape == SND_PCM_MMAP_INTERLEAVED);
|
||||
err = snd_pcm_writei(pcm, buf, frames);
|
||||
err = _snd_pcm_writei(pcm, buf, size);
|
||||
} else {
|
||||
size_t channels = pcm->setup.format.channels;
|
||||
unsigned int c;
|
||||
|
|
@ -446,7 +446,7 @@ ssize_t snd_pcm_write_mmap(snd_pcm_t *pcm, size_t size)
|
|||
snd_pcm_channel_area_t *a = &pcm->mmap_areas[c];
|
||||
bufs[c] = snd_pcm_channel_area_addr(a, offset);
|
||||
}
|
||||
err = snd_pcm_writen(pcm, bufs, frames);
|
||||
err = _snd_pcm_writen(pcm, bufs, size);
|
||||
}
|
||||
if (err < 0)
|
||||
break;
|
||||
|
|
@ -472,7 +472,7 @@ ssize_t snd_pcm_read_mmap(snd_pcm_t *pcm, size_t size)
|
|||
snd_pcm_channel_area_t *a = pcm->mmap_areas;
|
||||
char *buf = snd_pcm_channel_area_addr(a, offset);
|
||||
assert(pcm->setup.mmap_shape == SND_PCM_MMAP_INTERLEAVED);
|
||||
err = snd_pcm_readi(pcm, buf, frames);
|
||||
err = _snd_pcm_readi(pcm, buf, size);
|
||||
} else {
|
||||
size_t channels = pcm->setup.format.channels;
|
||||
unsigned int c;
|
||||
|
|
@ -482,7 +482,7 @@ ssize_t snd_pcm_read_mmap(snd_pcm_t *pcm, size_t size)
|
|||
snd_pcm_channel_area_t *a = &pcm->mmap_areas[c];
|
||||
bufs[c] = snd_pcm_channel_area_addr(a, offset);
|
||||
}
|
||||
err = snd_pcm_readn(pcm, bufs, frames);
|
||||
err = _snd_pcm_readn(pcm->fast_op_arg, bufs, size);
|
||||
}
|
||||
if (err < 0)
|
||||
break;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue