123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203 |
- /**
- * \file include/pcm_plugin.h
- * \brief Common PCM plugin code
- * \author Abramo Bagnara <abramo@alsa-project.org>
- * \author Jaroslav Kysela <perex@perex.cz>
- * \date 2000-2001
- *
- * Application interface library for the ALSA driver.
- * See the \ref pcm_plugins page for more details.
- *
- * \warning Using of contents of this header file might be dangerous
- * in the sense of compatibility reasons. The contents might be
- * freely changed in future.
- */
- /*
- * 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_PLUGIN_H
- /**
- * \defgroup PCM_Plugins PCM Plugins
- * \ingroup PCM
- * See the \ref pcm_plugins page for more details.
- * \{
- */
-
- #define SND_PCM_PLUGIN_RATE_MIN 4000 /**< minimal rate for the rate plugin */
- #define SND_PCM_PLUGIN_RATE_MAX 192000 /**< maximal rate for the rate plugin */
- /* ROUTE_FLOAT should be set to 0 for machines without FP unit - like iPAQ */
- #ifdef HAVE_SOFT_FLOAT
- #define SND_PCM_PLUGIN_ROUTE_FLOAT 0 /**< use integers for route plugin */
- #else
- #define SND_PCM_PLUGIN_ROUTE_FLOAT 1 /**< use floats for route plugin */
- #endif
- #define SND_PCM_PLUGIN_ROUTE_RESOLUTION 16 /**< integer resolution for route plugin */
- #if SND_PCM_PLUGIN_ROUTE_FLOAT
- /** route ttable entry type */
- typedef float snd_pcm_route_ttable_entry_t;
- #define SND_PCM_PLUGIN_ROUTE_HALF 0.5 /**< half value */
- #define SND_PCM_PLUGIN_ROUTE_FULL 1.0 /**< full value */
- #else
- /** route ttable entry type */
- typedef int snd_pcm_route_ttable_entry_t;
- #define SND_PCM_PLUGIN_ROUTE_HALF (SND_PCM_PLUGIN_ROUTE_RESOLUTION / 2) /**< half value */
- #define SND_PCM_PLUGIN_ROUTE_FULL SND_PCM_PLUGIN_ROUTE_RESOLUTION /**< full value */
- #endif
- /*
- * Hardware plugin
- */
- int snd_pcm_hw_open(snd_pcm_t **pcmp, const char *name,
- int card, int device, int subdevice,
- snd_pcm_stream_t stream, int mode,
- int mmap_emulation, int sync_ptr_ioctl);
- int _snd_pcm_hw_open(snd_pcm_t **pcmp, const char *name,
- snd_config_t *root ATTRIBUTE_UNUSED, snd_config_t *conf,
- snd_pcm_stream_t stream, int mode);
- /*
- * Copy plugin
- */
- int snd_pcm_copy_open(snd_pcm_t **pcmp, const char *name,
- snd_pcm_t *slave, int close_slave);
- int _snd_pcm_copy_open(snd_pcm_t **pcmp, const char *name,
- snd_config_t *root, snd_config_t *conf,
- snd_pcm_stream_t stream, int mode);
-
- /*
- * Linear conversion plugin
- */
- int snd_pcm_linear_open(snd_pcm_t **pcmp, const char *name,
- snd_pcm_format_t sformat, snd_pcm_t *slave,
- int close_slave);
- int _snd_pcm_linear_open(snd_pcm_t **pcmp, const char *name,
- snd_config_t *root, snd_config_t *conf,
- snd_pcm_stream_t stream, int mode);
- /*
- * Linear<->Float conversion plugin
- */
- int snd_pcm_lfloat_open(snd_pcm_t **pcmp, const char *name,
- snd_pcm_format_t sformat, snd_pcm_t *slave,
- int close_slave);
- int _snd_pcm_lfloat_open(snd_pcm_t **pcmp, const char *name,
- snd_config_t *root, snd_config_t *conf,
- snd_pcm_stream_t stream, int mode);
- /*
- * Linear<->mu-Law conversion plugin
- */
- int snd_pcm_mulaw_open(snd_pcm_t **pcmp, const char *name,
- snd_pcm_format_t sformat, snd_pcm_t *slave,
- int close_slave);
- int _snd_pcm_mulaw_open(snd_pcm_t **pcmp, const char *name,
- snd_config_t *root, snd_config_t *conf,
- snd_pcm_stream_t stream, int mode);
- /*
- * Linear<->a-Law conversion plugin
- */
- int snd_pcm_alaw_open(snd_pcm_t **pcmp, const char *name,
- snd_pcm_format_t sformat, snd_pcm_t *slave,
- int close_slave);
- int _snd_pcm_alaw_open(snd_pcm_t **pcmp, const char *name,
- snd_config_t *root, snd_config_t *conf,
- snd_pcm_stream_t stream, int mode);
- /*
- * Linear<->Ima-ADPCM conversion plugin
- */
- int snd_pcm_adpcm_open(snd_pcm_t **pcmp, const char *name,
- snd_pcm_format_t sformat, snd_pcm_t *slave,
- int close_slave);
- int _snd_pcm_adpcm_open(snd_pcm_t **pcmp, const char *name,
- snd_config_t *root, snd_config_t *conf,
- snd_pcm_stream_t stream, int mode);
- /*
- * Route plugin for linear formats
- */
- int snd_pcm_route_load_ttable(snd_config_t *tt, snd_pcm_route_ttable_entry_t *ttable,
- unsigned int tt_csize, unsigned int tt_ssize,
- unsigned int *tt_cused, unsigned int *tt_sused,
- int schannels);
- int snd_pcm_route_determine_ttable(snd_config_t *tt,
- unsigned int *tt_csize,
- unsigned int *tt_ssize);
- int snd_pcm_route_open(snd_pcm_t **pcmp, const char *name,
- snd_pcm_format_t sformat, int schannels,
- snd_pcm_route_ttable_entry_t *ttable,
- unsigned int tt_ssize,
- unsigned int tt_cused, unsigned int tt_sused,
- snd_pcm_t *slave, int close_slave);
- int _snd_pcm_route_open(snd_pcm_t **pcmp, const char *name,
- snd_config_t *root, snd_config_t *conf,
- snd_pcm_stream_t stream, int mode);
- /*
- * Rate plugin for linear formats
- */
- int snd_pcm_rate_open(snd_pcm_t **pcmp, const char *name,
- snd_pcm_format_t sformat, unsigned int srate,
- const snd_config_t *converter,
- snd_pcm_t *slave, int close_slave);
- int _snd_pcm_rate_open(snd_pcm_t **pcmp, const char *name,
- snd_config_t *root, snd_config_t *conf,
- snd_pcm_stream_t stream, int mode);
- /*
- * Hooks plugin
- */
- int snd_pcm_hooks_open(snd_pcm_t **pcmp, const char *name,
- snd_pcm_t *slave, int close_slave);
- int _snd_pcm_hooks_open(snd_pcm_t **pcmp, const char *name,
- snd_config_t *root, snd_config_t *conf,
- snd_pcm_stream_t stream, int mode);
- /*
- * LADSPA plugin
- */
- int snd_pcm_ladspa_open(snd_pcm_t **pcmp, const char *name,
- const char *ladspa_path,
- unsigned int channels,
- snd_config_t *ladspa_pplugins,
- snd_config_t *ladspa_cplugins,
- snd_pcm_t *slave, int close_slave);
- int _snd_pcm_ladspa_open(snd_pcm_t **pcmp, const char *name,
- snd_config_t *root, snd_config_t *conf,
- snd_pcm_stream_t stream, int mode);
- /*
- * Jack plugin
- */
- int snd_pcm_jack_open(snd_pcm_t **pcmp, const char *name,
- snd_config_t *playback_conf,
- snd_config_t *capture_conf,
- snd_pcm_stream_t stream, int mode);
- int _snd_pcm_jack_open(snd_pcm_t **pcmp, const char *name,
- snd_config_t *root, snd_config_t *conf,
- snd_pcm_stream_t stream, int mode);
- /** \} */
- #endif /* __ALSA_PCM_PLUGIN_H */
|