mirror of
https://github.com/alsa-project/alsa-lib.git
synced 2026-02-28 01:40:08 -05:00
Removed ptrs from status. Some cleaning for alsa-lib
This commit is contained in:
parent
841c8e2909
commit
b95bc05d81
5 changed files with 44 additions and 89 deletions
|
|
@ -86,60 +86,6 @@ size_t snd_pcm_mmap_hw_offset(snd_pcm_t *pcm)
|
|||
return pcm->mmap_status->hw_ptr % pcm->setup.buffer_size;
|
||||
}
|
||||
|
||||
int snd_pcm_mmap_state(snd_pcm_t *pcm)
|
||||
{
|
||||
assert(pcm);
|
||||
assert(pcm->mmap_status);
|
||||
return pcm->mmap_status->state;
|
||||
}
|
||||
|
||||
ssize_t snd_pcm_mmap_hw_ptr(snd_pcm_t *pcm)
|
||||
{
|
||||
assert(pcm);
|
||||
assert(pcm->mmap_status);
|
||||
return pcm->mmap_status->hw_ptr;
|
||||
}
|
||||
|
||||
ssize_t snd_pcm_mmap_appl_ptr(snd_pcm_t *pcm, off_t offset)
|
||||
{
|
||||
ssize_t appl_ptr;
|
||||
assert(pcm);
|
||||
assert(pcm->mmap_status && pcm->mmap_control);
|
||||
assert(offset == 0 || pcm->type == SND_PCM_TYPE_HW);
|
||||
appl_ptr = pcm->mmap_control->appl_ptr;
|
||||
if (offset == 0)
|
||||
return appl_ptr;
|
||||
switch (pcm->mmap_status->state) {
|
||||
case SND_PCM_STATE_RUNNING:
|
||||
if (pcm->setup.xrun_mode == SND_PCM_XRUN_ASAP)
|
||||
snd_pcm_avail_update(pcm);
|
||||
break;
|
||||
case SND_PCM_STATE_READY:
|
||||
case SND_PCM_STATE_NOTREADY:
|
||||
return -EBADFD;
|
||||
}
|
||||
if (offset < 0) {
|
||||
if (offset < -(ssize_t)pcm->setup.buffer_size)
|
||||
offset = -(ssize_t)pcm->setup.buffer_size;
|
||||
appl_ptr += offset;
|
||||
if (appl_ptr < 0)
|
||||
appl_ptr += pcm->setup.boundary;
|
||||
} else {
|
||||
size_t avail;
|
||||
if (pcm->stream == SND_PCM_STREAM_PLAYBACK)
|
||||
avail = snd_pcm_mmap_playback_avail(pcm);
|
||||
else
|
||||
avail = snd_pcm_mmap_capture_avail(pcm);
|
||||
if ((size_t)offset > avail)
|
||||
offset = avail;
|
||||
appl_ptr += offset;
|
||||
if ((size_t)appl_ptr >= pcm->setup.boundary)
|
||||
appl_ptr -= pcm->setup.boundary;
|
||||
}
|
||||
pcm->mmap_control->appl_ptr = appl_ptr;
|
||||
return appl_ptr;
|
||||
}
|
||||
|
||||
void snd_pcm_mmap_appl_backward(snd_pcm_t *pcm, size_t frames)
|
||||
{
|
||||
ssize_t appl_ptr = pcm->mmap_control->appl_ptr;
|
||||
|
|
@ -158,6 +104,15 @@ void snd_pcm_mmap_appl_forward(snd_pcm_t *pcm, size_t frames)
|
|||
pcm->mmap_control->appl_ptr = appl_ptr;
|
||||
}
|
||||
|
||||
void snd_pcm_mmap_hw_backward(snd_pcm_t *pcm, size_t frames)
|
||||
{
|
||||
ssize_t hw_ptr = pcm->mmap_status->hw_ptr;
|
||||
hw_ptr -= frames;
|
||||
if (hw_ptr < 0)
|
||||
hw_ptr += pcm->setup.boundary;
|
||||
pcm->mmap_status->hw_ptr = hw_ptr;
|
||||
}
|
||||
|
||||
void snd_pcm_mmap_hw_forward(snd_pcm_t *pcm, size_t frames)
|
||||
{
|
||||
size_t hw_ptr = pcm->mmap_status->hw_ptr;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue