mirror of
https://github.com/alsa-project/alsa-lib.git
synced 2025-10-29 05:40:25 -04:00
pcm: ioplug: Provide avail helper function for plugins
This function can be called without calling snd_pcm_avail_update(). The call to snd_pcm_avail_update() can take some time. Therefore some developers would not like to call it from a real-time context (e.g. from JACK client context). Signed-off-by: Timo Wischer <twischer@de.adit-jv.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
parent
9bb985c382
commit
2972f2f966
2 changed files with 21 additions and 2 deletions
|
|
@ -235,6 +235,9 @@ int snd_pcm_ioplug_set_param_list(snd_pcm_ioplug_t *io, int type, unsigned int n
|
|||
int snd_pcm_ioplug_set_state(snd_pcm_ioplug_t *ioplug, snd_pcm_state_t state);
|
||||
|
||||
/* calucalte the available frames */
|
||||
snd_pcm_uframes_t snd_pcm_ioplug_avail(const snd_pcm_ioplug_t * const ioplug,
|
||||
const snd_pcm_uframes_t hw_ptr,
|
||||
const snd_pcm_uframes_t appl_ptr);
|
||||
snd_pcm_uframes_t snd_pcm_ioplug_hw_avail(const snd_pcm_ioplug_t * const ioplug,
|
||||
const snd_pcm_uframes_t hw_ptr,
|
||||
const snd_pcm_uframes_t appl_ptr);
|
||||
|
|
|
|||
|
|
@ -1215,6 +1215,21 @@ int snd_pcm_ioplug_set_state(snd_pcm_ioplug_t *ioplug, snd_pcm_state_t state)
|
|||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Get the available frames. This function can be used to calculate the
|
||||
* the available frames before calling #snd_pcm_avail_update()
|
||||
* \param ioplug the ioplug handle
|
||||
* \param hw_ptr hardware pointer in frames
|
||||
* \param appl_ptr application pointer in frames
|
||||
* \return available frames for the application
|
||||
*/
|
||||
snd_pcm_uframes_t snd_pcm_ioplug_avail(const snd_pcm_ioplug_t * const ioplug,
|
||||
const snd_pcm_uframes_t hw_ptr,
|
||||
const snd_pcm_uframes_t appl_ptr)
|
||||
{
|
||||
return __snd_pcm_avail(ioplug->pcm, hw_ptr, appl_ptr);
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Get the available frames. This function can be used to calculate the
|
||||
* the available frames before calling #snd_pcm_avail_update()
|
||||
|
|
@ -1230,8 +1245,9 @@ snd_pcm_uframes_t snd_pcm_ioplug_hw_avail(const snd_pcm_ioplug_t * const ioplug,
|
|||
/* available data/space which can be transferred by the user
|
||||
* application
|
||||
*/
|
||||
const snd_pcm_uframes_t user_avail = __snd_pcm_avail(ioplug->pcm,
|
||||
hw_ptr, appl_ptr);
|
||||
const snd_pcm_uframes_t user_avail = snd_pcm_ioplug_avail(ioplug,
|
||||
hw_ptr,
|
||||
appl_ptr);
|
||||
|
||||
if (user_avail > ioplug->pcm->buffer_size) {
|
||||
/* there was an Xrun */
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue