mirror of
https://github.com/alsa-project/alsa-lib.git
synced 2026-02-15 22:05:18 -05:00
pcm: ioplug: Use boundary for wrap around
if requested by the IO plugin Without this changes an IO plugin is not able to report that buffer_size frames were read from the buffer. When the buffer was full this is a valid action and has not to be handled as an under run. For example when the hw_ptr will be updated with hw_ptr += buffer_size and it is using the buffer_size as wrap around hw_ptr %= buffer_size would result in the same value as before the add operation. Signed-off-by: Timo Wischer <twischer@de.adit-jv.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
parent
af531606b7
commit
543a9eac5d
2 changed files with 16 additions and 6 deletions
|
|
@ -65,6 +65,8 @@ typedef snd_pcm_ioplug_callback snd_pcm_ioplug_callback_t;
|
|||
*/
|
||||
#define SND_PCM_IOPLUG_FLAG_LISTED (1<<0) /**< list up this PCM */
|
||||
#define SND_PCM_IOPLUG_FLAG_MONOTONIC (1<<1) /**< monotonic timestamps */
|
||||
/** hw pointer wrap around at boundary instead of buffer_size */
|
||||
#define SND_PCM_IOPLUG_FLAG_BOUNDARY_WA (1<<2)
|
||||
|
||||
/*
|
||||
* Protocol version
|
||||
|
|
@ -133,6 +135,9 @@ struct snd_pcm_ioplug_callback {
|
|||
int (*stop)(snd_pcm_ioplug_t *io);
|
||||
/**
|
||||
* get the current DMA position; required, called inside mutex lock
|
||||
* \return buffer position up to buffer_size or
|
||||
* when #SND_PCM_IOPLUG_FLAG_BOUNDARY_WA flag is set up to boundary or
|
||||
* a negative error code for Xrun
|
||||
*/
|
||||
snd_pcm_sframes_t (*pointer)(snd_pcm_ioplug_t *io);
|
||||
/**
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue