pcm: Move snd_pcm_channel_area_addr() and _step() to public header

Used in the rate plugins commonly.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
Takashi Iwai 2021-06-21 14:21:26 +02:00
parent dd609ef968
commit a5e11f9a81
2 changed files with 23 additions and 13 deletions

View file

@ -1173,6 +1173,29 @@ int snd_pcm_areas_copy_wrap(const snd_pcm_channel_area_t *dst_channels,
snd_pcm_uframes_t frames,
const snd_pcm_format_t format);
/**
* \brief get the address of the given PCM channel area
* \param area PCM channel area
* \param offset Offset in frames
*
* Returns the pointer corresponding to the given offset on the channel area.
*/
static inline void *snd_pcm_channel_area_addr(const snd_pcm_channel_area_t *area, snd_pcm_uframes_t offset)
{
return (char *)area->addr + (area->first + area->step * offset) / 8;
}
/**
* \brief get the step size of the given PCM channel area in bytes
* \param area PCM channel area
*
* Returns the step size in bytes from the given channel area.
*/
static inline unsigned int snd_pcm_channel_area_step(const snd_pcm_channel_area_t *area)
{
return area->step / 8;
}
/** \} */
/**

View file

@ -632,19 +632,6 @@ static inline snd_pcm_sframes_t snd_pcm_mmap_delay(snd_pcm_t *pcm)
return snd_pcm_mmap_capture_delay(pcm);
}
static inline void *snd_pcm_channel_area_addr(const snd_pcm_channel_area_t *area, snd_pcm_uframes_t offset)
{
unsigned int bitofs = area->first + area->step * offset;
assert(bitofs % 8 == 0);
return (char *) area->addr + bitofs / 8;
}
static inline unsigned int snd_pcm_channel_area_step(const snd_pcm_channel_area_t *area)
{
assert(area->step % 8 == 0);
return area->step / 8;
}
static inline snd_pcm_sframes_t _snd_pcm_writei(snd_pcm_t *pcm, const void *buffer, snd_pcm_uframes_t size)
{
/* lock handled in the callback */