diff options
Diffstat (limited to 'debian/include-alsa/alsa/pcm_ordinary.h')
-rw-r--r-- | debian/include-alsa/alsa/pcm_ordinary.h | 145 |
1 files changed, 145 insertions, 0 deletions
diff --git a/debian/include-alsa/alsa/pcm_ordinary.h b/debian/include-alsa/alsa/pcm_ordinary.h new file mode 100644 index 0000000..cc60040 --- /dev/null +++ b/debian/include-alsa/alsa/pcm_ordinary.h @@ -0,0 +1,145 @@ +/** + * \file <alsa/pcm_ordinary.h> + * \brief Application interface library for the ALSA driver + * \author Jaroslav Kysela <perex@suse.cz> + * \date 2003 + * + * Application interface library for the ALSA driver. + * See the \ref pcm_ordinary page for more details. + * + * + * This library is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ + +#ifndef __ALSA_PCM_ORDINARY_H +#define __ALSA_PCM_ORDINARY_H + +#include <alsa/asoundlib.h> + +/** Ordinary PCM latency type */ +enum sndo_pcm_latency_type { + /** normal latency - for standard playback or capture + (estimated latency in one direction 350ms) (default) */ + SNDO_PCM_LATENCY_NORMAL = 0, + /** medium latency - software phones etc. + (estimated latency in one direction maximally 50ms) */ + SNDO_PCM_LATENCY_MEDIUM, + /** realtime latency - realtime applications (effect processors etc.) + (estimated latency in one direction 5ms) */ + SNDO_PCM_LATENCY_REALTIME +}; + +/** Ordinary PCM access type */ +enum sndo_pcm_access_type { + /** interleaved access - channels are interleaved without any gaps among samples (default) */ + SNDO_PCM_ACCESS_INTERLEAVED = 0, + /** noninterleaved access - channels are separate without any gaps among samples */ + SNDO_PCM_ACCESS_NONINTERLEAVED +}; + +/** Ordinary PCM xrun type */ +enum sndo_pcm_xrun_type { + /** driver / library will ignore all xruns, the stream runs forever (default) */ + SNDO_PCM_XRUN_IGNORE = 0, + /** driver / library stops the stream when an xrun occurs */ + SNDO_PCM_XRUN_STOP +}; + +typedef struct sndo_pcm sndo_pcm_t; + +typedef int (sndo_pcm_engine_callback_t)(sndo_pcm_t *pcm); + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \defgroup PCM_ordinary PCM Ordinary Interface + * See the \ref pcm_ordinary page for more details. + * \{ + */ + +int sndo_pcm_open(sndo_pcm_t **pcm, const char *playback_name, const char *capture_name, struct alisp_cfg *lconf); +int sndo_pcm_close(sndo_pcm_t *pcm); +int sndo_pcm_poll_descriptors_count(sndo_pcm_t *pcm); +int sndo_pcm_poll_descriptors(sndo_pcm_t *pcm, struct pollfd *pfds, unsigned int space); +int sndo_pcm_start(sndo_pcm_t *pcm); +int sndo_pcm_drop(sndo_pcm_t *pcm); +int sndo_pcm_drain(sndo_pcm_t *pcm); +int sndo_pcm_delay(sndo_pcm_t *pcm, snd_pcm_sframes_t *delayp); +int sndo_pcm_transfer_block(sndo_pcm_t *pcm, snd_pcm_uframes_t *tblock); +int sndo_pcm_resume(sndo_pcm_t *pcm); +int sndo_pcm_wait(sndo_pcm_t *pcm, int timeout); +snd_pcm_t *sndo_pcm_raw_playback(sndo_pcm_t *pcm); +snd_pcm_t *sndo_pcm_raw_capture(sndo_pcm_t *pcm); + +/** + * \defgroup PCM_ordinary_params Parameters Functions + * \ingroup PCM_ordinary + * See the \ref pcm_ordinary page for more details. + * \{ + */ + +int sndo_pcm_param_reset(sndo_pcm_t *pcm); +int sndo_pcm_param_access(sndo_pcm_t *pcm, enum sndo_pcm_access_type access); +int sndo_pcm_param_rate(sndo_pcm_t *pcm, unsigned int rate, unsigned int *used_rate); +int sndo_pcm_param_channels(sndo_pcm_t *pcm, unsigned int channels); +int sndo_pcm_param_format(sndo_pcm_t *pcm, snd_pcm_format_t format, snd_pcm_subformat_t subformat); +int sndo_pcm_param_latency(sndo_pcm_t *pcm, enum sndo_pcm_latency_type latency, snd_pcm_uframes_t *used_latency); +int sndo_pcm_param_xrun(sndo_pcm_t *pcm, enum sndo_pcm_xrun_type xrun); + +/** \} */ + +/** + * \defgroup PCM_ordinary_access Ring Buffer I/O Functions + * \ingroup PCM_ordinary + * See the \ref pcm_ordinary page for more details. + * \{ + */ + +/* playback */ +int sndo_pcm_pio_ibegin(sndo_pcm_t *pcm, void **ring_buffer, snd_pcm_uframes_t *frames); +snd_pcm_sframes_t sndo_pcm_pio_iend(sndo_pcm_t *pcm, snd_pcm_uframes_t frames); +int sndo_pcm_pio_nbegin(sndo_pcm_t *pcm, void ***ring_buffer, snd_pcm_uframes_t *frames); +snd_pcm_sframes_t sndo_pcm_pio_nend(sndo_pcm_t *pcm, snd_pcm_uframes_t frames); +/* capture */ +int sndo_pcm_cio_ibegin(sndo_pcm_t *pcm, void **ring_buffer, snd_pcm_uframes_t *frames); +snd_pcm_sframes_t sndo_pcm_cio_iend(sndo_pcm_t *pcm, snd_pcm_uframes_t frames); +int sndo_pcm_cio_nbegin(sndo_pcm_t *pcm, void ***ring_buffer, snd_pcm_uframes_t *frames); +snd_pcm_sframes_t sndo_pcm_cio_nend(sndo_pcm_t *pcm, snd_pcm_uframes_t frames); + +/** \} */ + +/** + * \defgroup PCM_ordinary_engine Callback like engine + * \ingroup PCM_ordinary + * See the \ref pcm_ordinary page for more details. + * \{ + */ + +int sndo_pcm_set_private_data(sndo_pcm_t *pcm, void *private_data); +int sndo_pcm_get_private_data(sndo_pcm_t *pcm, void **private_data); +int sndo_pcm_engine(sndo_pcm_t *pcm, + sndo_pcm_engine_callback_t *playback, + sndo_pcm_engine_callback_t *capture); + +/** \} */ + +#ifdef __cplusplus +} +#endif + +#endif /* __ALSA_PCM_ORDINARY_H */ |