mirror of
https://github.com/alsa-project/alsa-lib.git
synced 2025-10-29 05:40:25 -04:00
Add snd_pcm_ioplug_set_state() function
Added an exported function snd_pcm_ioplug_set_state() to change the PCM state of ioplug from the plugin side (e.g. from another thread).
This commit is contained in:
parent
86456d21e0
commit
ce64f433a6
2 changed files with 21 additions and 0 deletions
|
|
@ -208,6 +208,9 @@ void snd_pcm_ioplug_params_reset(snd_pcm_ioplug_t *io);
|
|||
int snd_pcm_ioplug_set_param_minmax(snd_pcm_ioplug_t *io, int type, unsigned int min, unsigned int max);
|
||||
int snd_pcm_ioplug_set_param_list(snd_pcm_ioplug_t *io, int type, unsigned int num_list, const unsigned int *list);
|
||||
|
||||
/* change PCM status */
|
||||
int snd_pcm_ioplug_set_state(snd_pcm_ioplug_t *ioplug, snd_pcm_state_t state);
|
||||
|
||||
/** \} */
|
||||
|
||||
#endif /* __ALSA_PCM_IOPLUG_H */
|
||||
|
|
|
|||
|
|
@ -614,6 +614,8 @@ static snd_pcm_sframes_t snd_pcm_ioplug_avail_update(snd_pcm_t *pcm)
|
|||
snd_pcm_uframes_t avail;
|
||||
|
||||
snd_pcm_ioplug_hw_ptr_update(pcm);
|
||||
if (io->data->state == SNDRV_PCM_STATE_XRUN)
|
||||
return -EPIPE;
|
||||
if (pcm->stream == SND_PCM_STREAM_CAPTURE &&
|
||||
pcm->access != SND_PCM_ACCESS_RW_INTERLEAVED &&
|
||||
pcm->access != SND_PCM_ACCESS_RW_NONINTERLEAVED) {
|
||||
|
|
@ -1037,3 +1039,19 @@ const snd_pcm_channel_area_t *snd_pcm_ioplug_mmap_areas(snd_pcm_ioplug_t *ioplug
|
|||
return snd_pcm_mmap_areas(ioplug->pcm);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Change the ioplug PCM status
|
||||
* \param ioplug the ioplug handle
|
||||
* \param state the PCM status
|
||||
* \return zero if successful or a negative error code
|
||||
*
|
||||
* Changes the PCM status of the ioplug to the given value.
|
||||
* This function can be used for external plugins to notify the status
|
||||
* change, e.g. XRUN.
|
||||
*/
|
||||
int snd_pcm_ioplug_set_state(snd_pcm_ioplug_t *ioplug, snd_pcm_state_t state)
|
||||
{
|
||||
ioplug->state = state;
|
||||
return 0;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue