From: Takashi Iwai Date: Mon, 21 Jun 2021 12:21:26 +0000 (+0200) Subject: pcm: Move snd_pcm_channel_area_addr() and _step() to public header X-Git-Tag: v1.2.6~44 X-Git-Url: https://git.alsa-project.org/?a=commitdiff_plain;h=a5e11f9a810391777ea7750f04ba66f9c9e624de;p=alsa-lib.git pcm: Move snd_pcm_channel_area_addr() and _step() to public header Used in the rate plugins commonly. Signed-off-by: Takashi Iwai --- diff --git a/include/pcm.h b/include/pcm.h index e300b951..b5a514fa 100644 --- a/include/pcm.h +++ b/include/pcm.h @@ -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; +} + /** \} */ /** diff --git a/src/pcm/pcm_local.h b/src/pcm/pcm_local.h index a63f4be0..6f03365c 100644 --- a/src/pcm/pcm_local.h +++ b/src/pcm/pcm_local.h @@ -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 */