• Main Page
  • Related Pages
  • Modules
  • Data Structures
  • Files
  • Examples

/alsa-lib-1.0.23/include/pcm.h

Go to the documentation of this file.
00001 
00012 /*
00013  *   This library is free software; you can redistribute it and/or modify
00014  *   it under the terms of the GNU Lesser General Public License as
00015  *   published by the Free Software Foundation; either version 2.1 of
00016  *   the License, or (at your option) any later version.
00017  *
00018  *   This program is distributed in the hope that it will be useful,
00019  *   but WITHOUT ANY WARRANTY; without even the implied warranty of
00020  *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00021  *   GNU Lesser General Public License for more details.
00022  *
00023  *   You should have received a copy of the GNU Lesser General Public
00024  *   License along with this library; if not, write to the Free Software
00025  *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
00026  *
00027  */
00028 
00029 #ifndef __ALSA_PCM_H
00030 #define __ALSA_PCM_H
00031 
00032 #ifdef __cplusplus
00033 extern "C" {
00034 #endif
00035 
00043 #define SND_PCM_DLSYM_VERSION           _dlsym_pcm_001
00044 
00046 typedef struct _snd_pcm_info snd_pcm_info_t;
00048 typedef struct _snd_pcm_hw_params snd_pcm_hw_params_t;
00050 typedef struct _snd_pcm_sw_params snd_pcm_sw_params_t;
00052  typedef struct _snd_pcm_status snd_pcm_status_t;
00054 typedef struct _snd_pcm_access_mask snd_pcm_access_mask_t;
00056 typedef struct _snd_pcm_format_mask snd_pcm_format_mask_t;
00058 typedef struct _snd_pcm_subformat_mask snd_pcm_subformat_mask_t;
00059 
00061 typedef enum _snd_pcm_class {
00064         SND_PCM_CLASS_GENERIC = 0,
00066         SND_PCM_CLASS_MULTI,
00068         SND_PCM_CLASS_MODEM,
00070         SND_PCM_CLASS_DIGITIZER,
00071         SND_PCM_CLASS_LAST = SND_PCM_CLASS_DIGITIZER
00072 } snd_pcm_class_t;
00073 
00075 typedef enum _snd_pcm_subclass {
00077         SND_PCM_SUBCLASS_GENERIC_MIX = 0,
00079         SND_PCM_SUBCLASS_MULTI_MIX,
00080         SND_PCM_SUBCLASS_LAST = SND_PCM_SUBCLASS_MULTI_MIX
00081 } snd_pcm_subclass_t;
00082 
00084 typedef enum _snd_pcm_stream {
00086         SND_PCM_STREAM_PLAYBACK = 0,
00088         SND_PCM_STREAM_CAPTURE,
00089         SND_PCM_STREAM_LAST = SND_PCM_STREAM_CAPTURE
00090 } snd_pcm_stream_t;
00091 
00093 typedef enum _snd_pcm_access {
00095         SND_PCM_ACCESS_MMAP_INTERLEAVED = 0,
00097         SND_PCM_ACCESS_MMAP_NONINTERLEAVED,
00099         SND_PCM_ACCESS_MMAP_COMPLEX,
00101         SND_PCM_ACCESS_RW_INTERLEAVED,
00103         SND_PCM_ACCESS_RW_NONINTERLEAVED,
00104         SND_PCM_ACCESS_LAST = SND_PCM_ACCESS_RW_NONINTERLEAVED
00105 } snd_pcm_access_t;
00106 
00108 typedef enum _snd_pcm_format {
00110         SND_PCM_FORMAT_UNKNOWN = -1,
00112         SND_PCM_FORMAT_S8 = 0,
00114         SND_PCM_FORMAT_U8,
00116         SND_PCM_FORMAT_S16_LE,
00118         SND_PCM_FORMAT_S16_BE,
00120         SND_PCM_FORMAT_U16_LE,
00122         SND_PCM_FORMAT_U16_BE,
00124         SND_PCM_FORMAT_S24_LE,
00126         SND_PCM_FORMAT_S24_BE,
00128         SND_PCM_FORMAT_U24_LE,
00130         SND_PCM_FORMAT_U24_BE,
00132         SND_PCM_FORMAT_S32_LE,
00134         SND_PCM_FORMAT_S32_BE,
00136         SND_PCM_FORMAT_U32_LE,
00138         SND_PCM_FORMAT_U32_BE,
00140         SND_PCM_FORMAT_FLOAT_LE,
00142         SND_PCM_FORMAT_FLOAT_BE,
00144         SND_PCM_FORMAT_FLOAT64_LE,
00146         SND_PCM_FORMAT_FLOAT64_BE,
00148         SND_PCM_FORMAT_IEC958_SUBFRAME_LE,
00150         SND_PCM_FORMAT_IEC958_SUBFRAME_BE,
00152         SND_PCM_FORMAT_MU_LAW,
00154         SND_PCM_FORMAT_A_LAW,
00156         SND_PCM_FORMAT_IMA_ADPCM,
00158         SND_PCM_FORMAT_MPEG,
00160         SND_PCM_FORMAT_GSM,
00162         SND_PCM_FORMAT_SPECIAL = 31,
00164         SND_PCM_FORMAT_S24_3LE = 32,
00166         SND_PCM_FORMAT_S24_3BE,
00168         SND_PCM_FORMAT_U24_3LE,
00170         SND_PCM_FORMAT_U24_3BE,
00172         SND_PCM_FORMAT_S20_3LE,
00174         SND_PCM_FORMAT_S20_3BE,
00176         SND_PCM_FORMAT_U20_3LE,
00178         SND_PCM_FORMAT_U20_3BE,
00180         SND_PCM_FORMAT_S18_3LE,
00182         SND_PCM_FORMAT_S18_3BE,
00184         SND_PCM_FORMAT_U18_3LE,
00186         SND_PCM_FORMAT_U18_3BE,
00187         SND_PCM_FORMAT_LAST = SND_PCM_FORMAT_U18_3BE,
00188 
00189 #if __BYTE_ORDER == __LITTLE_ENDIAN
00190 
00191         SND_PCM_FORMAT_S16 = SND_PCM_FORMAT_S16_LE,
00193         SND_PCM_FORMAT_U16 = SND_PCM_FORMAT_U16_LE,
00195         SND_PCM_FORMAT_S24 = SND_PCM_FORMAT_S24_LE,
00197         SND_PCM_FORMAT_U24 = SND_PCM_FORMAT_U24_LE,
00199         SND_PCM_FORMAT_S32 = SND_PCM_FORMAT_S32_LE,
00201         SND_PCM_FORMAT_U32 = SND_PCM_FORMAT_U32_LE,
00203         SND_PCM_FORMAT_FLOAT = SND_PCM_FORMAT_FLOAT_LE,
00205         SND_PCM_FORMAT_FLOAT64 = SND_PCM_FORMAT_FLOAT64_LE,
00207         SND_PCM_FORMAT_IEC958_SUBFRAME = SND_PCM_FORMAT_IEC958_SUBFRAME_LE
00208 #elif __BYTE_ORDER == __BIG_ENDIAN
00209 
00210         SND_PCM_FORMAT_S16 = SND_PCM_FORMAT_S16_BE,
00212         SND_PCM_FORMAT_U16 = SND_PCM_FORMAT_U16_BE,
00214         SND_PCM_FORMAT_S24 = SND_PCM_FORMAT_S24_BE,
00216         SND_PCM_FORMAT_U24 = SND_PCM_FORMAT_U24_BE,
00218         SND_PCM_FORMAT_S32 = SND_PCM_FORMAT_S32_BE,
00220         SND_PCM_FORMAT_U32 = SND_PCM_FORMAT_U32_BE,
00222         SND_PCM_FORMAT_FLOAT = SND_PCM_FORMAT_FLOAT_BE,
00224         SND_PCM_FORMAT_FLOAT64 = SND_PCM_FORMAT_FLOAT64_BE,
00226         SND_PCM_FORMAT_IEC958_SUBFRAME = SND_PCM_FORMAT_IEC958_SUBFRAME_BE
00227 #else
00228 #error "Unknown endian"
00229 #endif
00230 } snd_pcm_format_t;
00231 
00233 typedef enum _snd_pcm_subformat {
00235         SND_PCM_SUBFORMAT_STD = 0,
00236         SND_PCM_SUBFORMAT_LAST = SND_PCM_SUBFORMAT_STD
00237 } snd_pcm_subformat_t;
00238 
00240 typedef enum _snd_pcm_state {
00242         SND_PCM_STATE_OPEN = 0,
00244         SND_PCM_STATE_SETUP,
00246         SND_PCM_STATE_PREPARED,
00248         SND_PCM_STATE_RUNNING,
00250         SND_PCM_STATE_XRUN,
00252         SND_PCM_STATE_DRAINING,
00254         SND_PCM_STATE_PAUSED,
00256         SND_PCM_STATE_SUSPENDED,
00258         SND_PCM_STATE_DISCONNECTED,
00259         SND_PCM_STATE_LAST = SND_PCM_STATE_DISCONNECTED
00260 } snd_pcm_state_t;
00261 
00263 typedef enum _snd_pcm_start {
00265         SND_PCM_START_DATA = 0,
00267         SND_PCM_START_EXPLICIT,
00268         SND_PCM_START_LAST = SND_PCM_START_EXPLICIT
00269 } snd_pcm_start_t;
00270 
00272 typedef enum _snd_pcm_xrun {
00274         SND_PCM_XRUN_NONE = 0,
00276         SND_PCM_XRUN_STOP,
00277         SND_PCM_XRUN_LAST = SND_PCM_XRUN_STOP
00278 } snd_pcm_xrun_t;
00279 
00281 typedef enum _snd_pcm_tstamp {
00283         SND_PCM_TSTAMP_NONE = 0,
00285         SND_PCM_TSTAMP_ENABLE,
00289         SND_PCM_TSTAMP_MMAP = SND_PCM_TSTAMP_ENABLE,
00290         SND_PCM_TSTAMP_LAST = SND_PCM_TSTAMP_ENABLE
00291 } snd_pcm_tstamp_t;
00292 
00294 typedef unsigned long snd_pcm_uframes_t;
00296 typedef long snd_pcm_sframes_t;
00297 
00299 #define SND_PCM_NONBLOCK                0x00000001
00300 
00301 #define SND_PCM_ASYNC                   0x00000002
00302 
00303 #define SND_PCM_NO_AUTO_RESAMPLE        0x00010000
00304 
00305 #define SND_PCM_NO_AUTO_CHANNELS        0x00020000
00306 
00307 #define SND_PCM_NO_AUTO_FORMAT          0x00040000
00308 
00309 #define SND_PCM_NO_SOFTVOL              0x00080000
00310 
00312 typedef struct _snd_pcm snd_pcm_t;
00313 
00315 enum _snd_pcm_type {
00317         SND_PCM_TYPE_HW = 0,
00319         SND_PCM_TYPE_HOOKS,
00322         SND_PCM_TYPE_MULTI,
00324         SND_PCM_TYPE_FILE,
00326         SND_PCM_TYPE_NULL,
00328         SND_PCM_TYPE_SHM,
00330         SND_PCM_TYPE_INET,
00332         SND_PCM_TYPE_COPY,
00334         SND_PCM_TYPE_LINEAR,
00336         SND_PCM_TYPE_ALAW,
00338         SND_PCM_TYPE_MULAW,
00340         SND_PCM_TYPE_ADPCM,
00342         SND_PCM_TYPE_RATE,
00344         SND_PCM_TYPE_ROUTE,
00346         SND_PCM_TYPE_PLUG,
00348         SND_PCM_TYPE_SHARE,
00350         SND_PCM_TYPE_METER,
00352         SND_PCM_TYPE_MIX,
00354         SND_PCM_TYPE_DROUTE,
00356         SND_PCM_TYPE_LBSERVER,
00358         SND_PCM_TYPE_LINEAR_FLOAT,
00360         SND_PCM_TYPE_LADSPA,
00362         SND_PCM_TYPE_DMIX,
00364         SND_PCM_TYPE_JACK,
00366         SND_PCM_TYPE_DSNOOP,
00368         SND_PCM_TYPE_DSHARE,
00370         SND_PCM_TYPE_IEC958,
00372         SND_PCM_TYPE_SOFTVOL,
00374         SND_PCM_TYPE_IOPLUG,
00376         SND_PCM_TYPE_EXTPLUG,
00378         SND_PCM_TYPE_MMAP_EMUL,
00379         SND_PCM_TYPE_LAST = SND_PCM_TYPE_MMAP_EMUL
00380 };
00381 
00383 typedef enum _snd_pcm_type snd_pcm_type_t;
00384 
00386 typedef struct _snd_pcm_channel_area {
00388         void *addr;
00390         unsigned int first;
00392         unsigned int step;
00393 } snd_pcm_channel_area_t;
00394 
00396 typedef union _snd_pcm_sync_id {
00398         unsigned char id[16];
00400         unsigned short id16[8];
00402         unsigned int id32[4];
00403 } snd_pcm_sync_id_t;
00404 
00406 typedef struct _snd_pcm_scope snd_pcm_scope_t;
00407 
00408 int snd_pcm_open(snd_pcm_t **pcm, const char *name, 
00409                  snd_pcm_stream_t stream, int mode);
00410 int snd_pcm_open_lconf(snd_pcm_t **pcm, const char *name, 
00411                        snd_pcm_stream_t stream, int mode,
00412                        snd_config_t *lconf);
00413 
00414 int snd_pcm_close(snd_pcm_t *pcm);
00415 const char *snd_pcm_name(snd_pcm_t *pcm);
00416 snd_pcm_type_t snd_pcm_type(snd_pcm_t *pcm);
00417 snd_pcm_stream_t snd_pcm_stream(snd_pcm_t *pcm);
00418 int snd_pcm_poll_descriptors_count(snd_pcm_t *pcm);
00419 int snd_pcm_poll_descriptors(snd_pcm_t *pcm, struct pollfd *pfds, unsigned int space);
00420 int snd_pcm_poll_descriptors_revents(snd_pcm_t *pcm, struct pollfd *pfds, unsigned int nfds, unsigned short *revents);
00421 int snd_pcm_nonblock(snd_pcm_t *pcm, int nonblock);
00422 int snd_async_add_pcm_handler(snd_async_handler_t **handler, snd_pcm_t *pcm, 
00423                               snd_async_callback_t callback, void *private_data);
00424 snd_pcm_t *snd_async_handler_get_pcm(snd_async_handler_t *handler);
00425 int snd_pcm_info(snd_pcm_t *pcm, snd_pcm_info_t *info);
00426 int snd_pcm_hw_params_current(snd_pcm_t *pcm, snd_pcm_hw_params_t *params);
00427 int snd_pcm_hw_params(snd_pcm_t *pcm, snd_pcm_hw_params_t *params);
00428 int snd_pcm_hw_free(snd_pcm_t *pcm);
00429 int snd_pcm_sw_params_current(snd_pcm_t *pcm, snd_pcm_sw_params_t *params);
00430 int snd_pcm_sw_params(snd_pcm_t *pcm, snd_pcm_sw_params_t *params);
00431 int snd_pcm_prepare(snd_pcm_t *pcm);
00432 int snd_pcm_reset(snd_pcm_t *pcm);
00433 int snd_pcm_status(snd_pcm_t *pcm, snd_pcm_status_t *status);
00434 int snd_pcm_start(snd_pcm_t *pcm);
00435 int snd_pcm_drop(snd_pcm_t *pcm);
00436 int snd_pcm_drain(snd_pcm_t *pcm);
00437 int snd_pcm_pause(snd_pcm_t *pcm, int enable);
00438 snd_pcm_state_t snd_pcm_state(snd_pcm_t *pcm);
00439 int snd_pcm_hwsync(snd_pcm_t *pcm);
00440 int snd_pcm_delay(snd_pcm_t *pcm, snd_pcm_sframes_t *delayp);
00441 int snd_pcm_resume(snd_pcm_t *pcm);
00442 int snd_pcm_htimestamp(snd_pcm_t *pcm, snd_pcm_uframes_t *avail, snd_htimestamp_t *tstamp);
00443 snd_pcm_sframes_t snd_pcm_avail(snd_pcm_t *pcm);
00444 snd_pcm_sframes_t snd_pcm_avail_update(snd_pcm_t *pcm);
00445 int snd_pcm_avail_delay(snd_pcm_t *pcm, snd_pcm_sframes_t *availp, snd_pcm_sframes_t *delayp);
00446 snd_pcm_sframes_t snd_pcm_rewindable(snd_pcm_t *pcm);
00447 snd_pcm_sframes_t snd_pcm_rewind(snd_pcm_t *pcm, snd_pcm_uframes_t frames);
00448 snd_pcm_sframes_t snd_pcm_forwardable(snd_pcm_t *pcm);
00449 snd_pcm_sframes_t snd_pcm_forward(snd_pcm_t *pcm, snd_pcm_uframes_t frames);
00450 snd_pcm_sframes_t snd_pcm_writei(snd_pcm_t *pcm, const void *buffer, snd_pcm_uframes_t size);
00451 snd_pcm_sframes_t snd_pcm_readi(snd_pcm_t *pcm, void *buffer, snd_pcm_uframes_t size);
00452 snd_pcm_sframes_t snd_pcm_writen(snd_pcm_t *pcm, void **bufs, snd_pcm_uframes_t size);
00453 snd_pcm_sframes_t snd_pcm_readn(snd_pcm_t *pcm, void **bufs, snd_pcm_uframes_t size);
00454 int snd_pcm_wait(snd_pcm_t *pcm, int timeout);
00455 
00456 int snd_pcm_link(snd_pcm_t *pcm1, snd_pcm_t *pcm2);
00457 int snd_pcm_unlink(snd_pcm_t *pcm);
00458 
00459 //int snd_pcm_mixer_element(snd_pcm_t *pcm, snd_mixer_t *mixer, snd_mixer_elem_t **elem);
00460 
00461 /*
00462  * application helpers - these functions are implemented on top
00463  * of the basic API
00464  */
00465 
00466 int snd_pcm_recover(snd_pcm_t *pcm, int err, int silent);
00467 int snd_pcm_set_params(snd_pcm_t *pcm,
00468                        snd_pcm_format_t format,
00469                        snd_pcm_access_t access,
00470                        unsigned int channels,
00471                        unsigned int rate,
00472                        int soft_resample,
00473                        unsigned int latency);
00474 int snd_pcm_get_params(snd_pcm_t *pcm,
00475                        snd_pcm_uframes_t *buffer_size,
00476                        snd_pcm_uframes_t *period_size);
00477 
00487 size_t snd_pcm_info_sizeof(void);
00492 #define snd_pcm_info_alloca(ptr) __snd_alloca(ptr, snd_pcm_info)
00493 int snd_pcm_info_malloc(snd_pcm_info_t **ptr);
00494 void snd_pcm_info_free(snd_pcm_info_t *obj);
00495 void snd_pcm_info_copy(snd_pcm_info_t *dst, const snd_pcm_info_t *src);
00496 unsigned int snd_pcm_info_get_device(const snd_pcm_info_t *obj);
00497 unsigned int snd_pcm_info_get_subdevice(const snd_pcm_info_t *obj);
00498 snd_pcm_stream_t snd_pcm_info_get_stream(const snd_pcm_info_t *obj);
00499 int snd_pcm_info_get_card(const snd_pcm_info_t *obj);
00500 const char *snd_pcm_info_get_id(const snd_pcm_info_t *obj);
00501 const char *snd_pcm_info_get_name(const snd_pcm_info_t *obj);
00502 const char *snd_pcm_info_get_subdevice_name(const snd_pcm_info_t *obj);
00503 snd_pcm_class_t snd_pcm_info_get_class(const snd_pcm_info_t *obj);
00504 snd_pcm_subclass_t snd_pcm_info_get_subclass(const snd_pcm_info_t *obj);
00505 unsigned int snd_pcm_info_get_subdevices_count(const snd_pcm_info_t *obj);
00506 unsigned int snd_pcm_info_get_subdevices_avail(const snd_pcm_info_t *obj);
00507 snd_pcm_sync_id_t snd_pcm_info_get_sync(const snd_pcm_info_t *obj);
00508 void snd_pcm_info_set_device(snd_pcm_info_t *obj, unsigned int val);
00509 void snd_pcm_info_set_subdevice(snd_pcm_info_t *obj, unsigned int val);
00510 void snd_pcm_info_set_stream(snd_pcm_info_t *obj, snd_pcm_stream_t val);
00511 
00521 int snd_pcm_hw_params_any(snd_pcm_t *pcm, snd_pcm_hw_params_t *params);
00522 
00523 int snd_pcm_hw_params_can_mmap_sample_resolution(const snd_pcm_hw_params_t *params);
00524 int snd_pcm_hw_params_is_double(const snd_pcm_hw_params_t *params);
00525 int snd_pcm_hw_params_is_batch(const snd_pcm_hw_params_t *params);
00526 int snd_pcm_hw_params_is_block_transfer(const snd_pcm_hw_params_t *params);
00527 int snd_pcm_hw_params_is_monotonic(const snd_pcm_hw_params_t *params);
00528 int snd_pcm_hw_params_can_overrange(const snd_pcm_hw_params_t *params);
00529 int snd_pcm_hw_params_can_pause(const snd_pcm_hw_params_t *params);
00530 int snd_pcm_hw_params_can_resume(const snd_pcm_hw_params_t *params);
00531 int snd_pcm_hw_params_is_half_duplex(const snd_pcm_hw_params_t *params);
00532 int snd_pcm_hw_params_is_joint_duplex(const snd_pcm_hw_params_t *params);
00533 int snd_pcm_hw_params_can_sync_start(const snd_pcm_hw_params_t *params);
00534 int snd_pcm_hw_params_get_rate_numden(const snd_pcm_hw_params_t *params,
00535                                       unsigned int *rate_num,
00536                                       unsigned int *rate_den);
00537 int snd_pcm_hw_params_get_sbits(const snd_pcm_hw_params_t *params);
00538 int snd_pcm_hw_params_get_fifo_size(const snd_pcm_hw_params_t *params);
00539 
00540 #if 0
00541 typedef struct _snd_pcm_hw_strategy snd_pcm_hw_strategy_t;
00542 
00543 /* choices need to be sorted on ascending badness */
00544 typedef struct _snd_pcm_hw_strategy_simple_choices_list {
00545         unsigned int value;
00546         unsigned int badness;
00547 } snd_pcm_hw_strategy_simple_choices_list_t;
00548 
00549 int snd_pcm_hw_params_strategy(snd_pcm_t *pcm, snd_pcm_hw_params_t *params,
00550                                const snd_pcm_hw_strategy_t *strategy,
00551                                unsigned int badness_min,
00552                                unsigned int badness_max);
00553 
00554 void snd_pcm_hw_strategy_free(snd_pcm_hw_strategy_t *strategy);
00555 int snd_pcm_hw_strategy_simple(snd_pcm_hw_strategy_t **strategyp,
00556                                unsigned int badness_min,
00557                                unsigned int badness_max);
00558 int snd_pcm_hw_params_try_explain_failure(snd_pcm_t *pcm,
00559                                           snd_pcm_hw_params_t *fail,
00560                                           snd_pcm_hw_params_t *success,
00561                                           unsigned int depth,
00562                                           snd_output_t *out);
00563 
00564 #endif
00565 
00566 size_t snd_pcm_hw_params_sizeof(void);
00571 #define snd_pcm_hw_params_alloca(ptr) __snd_alloca(ptr, snd_pcm_hw_params)
00572 int snd_pcm_hw_params_malloc(snd_pcm_hw_params_t **ptr);
00573 void snd_pcm_hw_params_free(snd_pcm_hw_params_t *obj);
00574 void snd_pcm_hw_params_copy(snd_pcm_hw_params_t *dst, const snd_pcm_hw_params_t *src);
00575 
00576 #if !defined(ALSA_LIBRARY_BUILD) && !defined(ALSA_PCM_OLD_HW_PARAMS_API)
00577 
00578 int snd_pcm_hw_params_get_access(const snd_pcm_hw_params_t *params, snd_pcm_access_t *_access);
00579 int snd_pcm_hw_params_test_access(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, snd_pcm_access_t _access);
00580 int snd_pcm_hw_params_set_access(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, snd_pcm_access_t _access);
00581 int snd_pcm_hw_params_set_access_first(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, snd_pcm_access_t *_access);
00582 int snd_pcm_hw_params_set_access_last(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, snd_pcm_access_t *_access);
00583 int snd_pcm_hw_params_set_access_mask(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, snd_pcm_access_mask_t *mask);
00584 int snd_pcm_hw_params_get_access_mask(snd_pcm_hw_params_t *params, snd_pcm_access_mask_t *mask);
00585 
00586 int snd_pcm_hw_params_get_format(const snd_pcm_hw_params_t *params, snd_pcm_format_t *val);
00587 int snd_pcm_hw_params_test_format(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, snd_pcm_format_t val);
00588 int snd_pcm_hw_params_set_format(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, snd_pcm_format_t val);
00589 int snd_pcm_hw_params_set_format_first(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, snd_pcm_format_t *format);
00590 int snd_pcm_hw_params_set_format_last(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, snd_pcm_format_t *format);
00591 int snd_pcm_hw_params_set_format_mask(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, snd_pcm_format_mask_t *mask);
00592 void snd_pcm_hw_params_get_format_mask(snd_pcm_hw_params_t *params, snd_pcm_format_mask_t *mask);
00593 
00594 int snd_pcm_hw_params_get_subformat(const snd_pcm_hw_params_t *params, snd_pcm_subformat_t *subformat);
00595 int snd_pcm_hw_params_test_subformat(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, snd_pcm_subformat_t subformat);
00596 int snd_pcm_hw_params_set_subformat(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, snd_pcm_subformat_t subformat);
00597 int snd_pcm_hw_params_set_subformat_first(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, snd_pcm_subformat_t *subformat);
00598 int snd_pcm_hw_params_set_subformat_last(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, snd_pcm_subformat_t *subformat);
00599 int snd_pcm_hw_params_set_subformat_mask(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, snd_pcm_subformat_mask_t *mask);
00600 void snd_pcm_hw_params_get_subformat_mask(snd_pcm_hw_params_t *params, snd_pcm_subformat_mask_t *mask);
00601 
00602 int snd_pcm_hw_params_get_channels(const snd_pcm_hw_params_t *params, unsigned int *val);
00603 int snd_pcm_hw_params_get_channels_min(const snd_pcm_hw_params_t *params, unsigned int *val);
00604 int snd_pcm_hw_params_get_channels_max(const snd_pcm_hw_params_t *params, unsigned int *val);
00605 int snd_pcm_hw_params_test_channels(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, unsigned int val);
00606 int snd_pcm_hw_params_set_channels(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, unsigned int val);
00607 int snd_pcm_hw_params_set_channels_min(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, unsigned int *val);
00608 int snd_pcm_hw_params_set_channels_max(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, unsigned int *val);
00609 int snd_pcm_hw_params_set_channels_minmax(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, unsigned int *min, unsigned int *max);
00610 int snd_pcm_hw_params_set_channels_near(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, unsigned int *val);
00611 int snd_pcm_hw_params_set_channels_first(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, unsigned int *val);
00612 int snd_pcm_hw_params_set_channels_last(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, unsigned int *val);
00613 
00614 int snd_pcm_hw_params_get_rate(const snd_pcm_hw_params_t *params, unsigned int *val, int *dir);
00615 int snd_pcm_hw_params_get_rate_min(const snd_pcm_hw_params_t *params, unsigned int *val, int *dir);
00616 int snd_pcm_hw_params_get_rate_max(const snd_pcm_hw_params_t *params, unsigned int *val, int *dir);
00617 int snd_pcm_hw_params_test_rate(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, unsigned int val, int dir);
00618 int snd_pcm_hw_params_set_rate(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, unsigned int val, int dir);
00619 int snd_pcm_hw_params_set_rate_min(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, unsigned int *val, int *dir);
00620 int snd_pcm_hw_params_set_rate_max(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, unsigned int *val, int *dir);
00621 int snd_pcm_hw_params_set_rate_minmax(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, unsigned int *min, int *mindir, unsigned int *max, int *maxdir);
00622 int snd_pcm_hw_params_set_rate_near(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, unsigned int *val, int *dir);
00623 int snd_pcm_hw_params_set_rate_first(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, unsigned int *val, int *dir);
00624 int snd_pcm_hw_params_set_rate_last(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, unsigned int *val, int *dir);
00625 int snd_pcm_hw_params_set_rate_resample(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, unsigned int val);
00626 int snd_pcm_hw_params_get_rate_resample(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, unsigned int *val);
00627 int snd_pcm_hw_params_set_export_buffer(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, unsigned int val);
00628 int snd_pcm_hw_params_get_export_buffer(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, unsigned int *val);
00629 
00630 int snd_pcm_hw_params_get_period_time(const snd_pcm_hw_params_t *params, unsigned int *val, int *dir);
00631 int snd_pcm_hw_params_get_period_time_min(const snd_pcm_hw_params_t *params, unsigned int *val, int *dir);
00632 int snd_pcm_hw_params_get_period_time_max(const snd_pcm_hw_params_t *params, unsigned int *val, int *dir);
00633 int snd_pcm_hw_params_test_period_time(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, unsigned int val, int dir);
00634 int snd_pcm_hw_params_set_period_time(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, unsigned int val, int dir);
00635 int snd_pcm_hw_params_set_period_time_min(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, unsigned int *val, int *dir);
00636 int snd_pcm_hw_params_set_period_time_max(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, unsigned int *val, int *dir);
00637 int snd_pcm_hw_params_set_period_time_minmax(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, unsigned int *min, int *mindir, unsigned int *max, int *maxdir);
00638 int snd_pcm_hw_params_set_period_time_near(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, unsigned int *val, int *dir);
00639 int snd_pcm_hw_params_set_period_time_first(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, unsigned int *val, int *dir);
00640 int snd_pcm_hw_params_set_period_time_last(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, unsigned int *val, int *dir);
00641 
00642 int snd_pcm_hw_params_get_period_size(const snd_pcm_hw_params_t *params, snd_pcm_uframes_t *frames, int *dir);
00643 int snd_pcm_hw_params_get_period_size_min(const snd_pcm_hw_params_t *params, snd_pcm_uframes_t *frames, int *dir);
00644 int snd_pcm_hw_params_get_period_size_max(const snd_pcm_hw_params_t *params, snd_pcm_uframes_t *frames, int *dir);
00645 int snd_pcm_hw_params_test_period_size(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, snd_pcm_uframes_t val, int dir);
00646 int snd_pcm_hw_params_set_period_size(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, snd_pcm_uframes_t val, int dir);
00647 int snd_pcm_hw_params_set_period_size_min(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, snd_pcm_uframes_t *val, int *dir);
00648 int snd_pcm_hw_params_set_period_size_max(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, snd_pcm_uframes_t *val, int *dir);
00649 int snd_pcm_hw_params_set_period_size_minmax(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, snd_pcm_uframes_t *min, int *mindir, snd_pcm_uframes_t *max, int *maxdir);
00650 int snd_pcm_hw_params_set_period_size_near(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, snd_pcm_uframes_t *val, int *dir);
00651 int snd_pcm_hw_params_set_period_size_first(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, snd_pcm_uframes_t *val, int *dir);
00652 int snd_pcm_hw_params_set_period_size_last(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, snd_pcm_uframes_t *val, int *dir);
00653 int snd_pcm_hw_params_set_period_size_integer(snd_pcm_t *pcm, snd_pcm_hw_params_t *params);
00654 
00655 int snd_pcm_hw_params_get_periods(const snd_pcm_hw_params_t *params, unsigned int *val, int *dir);
00656 int snd_pcm_hw_params_get_periods_min(const snd_pcm_hw_params_t *params, unsigned int *val, int *dir);
00657 int snd_pcm_hw_params_get_periods_max(const snd_pcm_hw_params_t *params, unsigned int *val, int *dir);
00658 int snd_pcm_hw_params_test_periods(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, unsigned int val, int dir);
00659 int snd_pcm_hw_params_set_periods(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, unsigned int val, int dir);
00660 int snd_pcm_hw_params_set_periods_min(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, unsigned int *val, int *dir);
00661 int snd_pcm_hw_params_set_periods_max(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, unsigned int *val, int *dir);
00662 int snd_pcm_hw_params_set_periods_minmax(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, unsigned int *min, int *mindir, unsigned int *max, int *maxdir);
00663 int snd_pcm_hw_params_set_periods_near(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, unsigned int *val, int *dir);
00664 int snd_pcm_hw_params_set_periods_first(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, unsigned int *val, int *dir);
00665 int snd_pcm_hw_params_set_periods_last(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, unsigned int *val, int *dir);
00666 int snd_pcm_hw_params_set_periods_integer(snd_pcm_t *pcm, snd_pcm_hw_params_t *params);
00667 
00668 int snd_pcm_hw_params_get_buffer_time(const snd_pcm_hw_params_t *params, unsigned int *val, int *dir);
00669 int snd_pcm_hw_params_get_buffer_time_min(const snd_pcm_hw_params_t *params, unsigned int *val, int *dir);
00670 int snd_pcm_hw_params_get_buffer_time_max(const snd_pcm_hw_params_t *params, unsigned int *val, int *dir);
00671 int snd_pcm_hw_params_test_buffer_time(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, unsigned int val, int dir);
00672 int snd_pcm_hw_params_set_buffer_time(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, unsigned int val, int dir);
00673 int snd_pcm_hw_params_set_buffer_time_min(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, unsigned int *val, int *dir);
00674 int snd_pcm_hw_params_set_buffer_time_max(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, unsigned int *val, int *dir);
00675 int snd_pcm_hw_params_set_buffer_time_minmax(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, unsigned int *min, int *mindir, unsigned int *max, int *maxdir);
00676 int snd_pcm_hw_params_set_buffer_time_near(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, unsigned int *val, int *dir);
00677 int snd_pcm_hw_params_set_buffer_time_first(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, unsigned int *val, int *dir);
00678 int snd_pcm_hw_params_set_buffer_time_last(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, unsigned int *val, int *dir);
00679 
00680 int snd_pcm_hw_params_get_buffer_size(const snd_pcm_hw_params_t *params, snd_pcm_uframes_t *val);
00681 int snd_pcm_hw_params_get_buffer_size_min(const snd_pcm_hw_params_t *params, snd_pcm_uframes_t *val);
00682 int snd_pcm_hw_params_get_buffer_size_max(const snd_pcm_hw_params_t *params, snd_pcm_uframes_t *val);
00683 int snd_pcm_hw_params_test_buffer_size(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, snd_pcm_uframes_t val);
00684 int snd_pcm_hw_params_set_buffer_size(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, snd_pcm_uframes_t val);
00685 int snd_pcm_hw_params_set_buffer_size_min(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, snd_pcm_uframes_t *val);
00686 int snd_pcm_hw_params_set_buffer_size_max(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, snd_pcm_uframes_t *val);
00687 int snd_pcm_hw_params_set_buffer_size_minmax(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, snd_pcm_uframes_t *min, snd_pcm_uframes_t *max);
00688 int snd_pcm_hw_params_set_buffer_size_near(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, snd_pcm_uframes_t *val);
00689 int snd_pcm_hw_params_set_buffer_size_first(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, snd_pcm_uframes_t *val);
00690 int snd_pcm_hw_params_set_buffer_size_last(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, snd_pcm_uframes_t *val);
00691 
00692 #endif /* !ALSA_LIBRARY_BUILD && !ALSA_PCM_OLD_HW_PARAMS_API */
00693 
00694 int snd_pcm_hw_params_get_min_align(const snd_pcm_hw_params_t *params, snd_pcm_uframes_t *val);
00695 
00705 size_t snd_pcm_sw_params_sizeof(void);
00710 #define snd_pcm_sw_params_alloca(ptr) __snd_alloca(ptr, snd_pcm_sw_params)
00711 int snd_pcm_sw_params_malloc(snd_pcm_sw_params_t **ptr);
00712 void snd_pcm_sw_params_free(snd_pcm_sw_params_t *obj);
00713 void snd_pcm_sw_params_copy(snd_pcm_sw_params_t *dst, const snd_pcm_sw_params_t *src);
00714 int snd_pcm_sw_params_get_boundary(const snd_pcm_sw_params_t *params, snd_pcm_uframes_t *val);
00715 
00716 #if !defined(ALSA_LIBRARY_BUILD) && !defined(ALSA_PCM_OLD_SW_PARAMS_API)
00717 
00718 int snd_pcm_sw_params_set_tstamp_mode(snd_pcm_t *pcm, snd_pcm_sw_params_t *params, snd_pcm_tstamp_t val);
00719 int snd_pcm_sw_params_get_tstamp_mode(const snd_pcm_sw_params_t *params, snd_pcm_tstamp_t *val);
00720 int snd_pcm_sw_params_set_avail_min(snd_pcm_t *pcm, snd_pcm_sw_params_t *params, snd_pcm_uframes_t val);
00721 int snd_pcm_sw_params_get_avail_min(const snd_pcm_sw_params_t *params, snd_pcm_uframes_t *val);
00722 int snd_pcm_sw_params_set_period_event(snd_pcm_t *pcm, snd_pcm_sw_params_t *params, int val);
00723 int snd_pcm_sw_params_get_period_event(const snd_pcm_sw_params_t *params, int *val);
00724 int snd_pcm_sw_params_set_start_threshold(snd_pcm_t *pcm, snd_pcm_sw_params_t *params, snd_pcm_uframes_t val);
00725 int snd_pcm_sw_params_get_start_threshold(const snd_pcm_sw_params_t *paramsm, snd_pcm_uframes_t *val);
00726 int snd_pcm_sw_params_set_stop_threshold(snd_pcm_t *pcm, snd_pcm_sw_params_t *params, snd_pcm_uframes_t val);
00727 int snd_pcm_sw_params_get_stop_threshold(const snd_pcm_sw_params_t *params, snd_pcm_uframes_t *val);
00728 int snd_pcm_sw_params_set_silence_threshold(snd_pcm_t *pcm, snd_pcm_sw_params_t *params, snd_pcm_uframes_t val);
00729 int snd_pcm_sw_params_get_silence_threshold(const snd_pcm_sw_params_t *params, snd_pcm_uframes_t *val);
00730 int snd_pcm_sw_params_set_silence_size(snd_pcm_t *pcm, snd_pcm_sw_params_t *params, snd_pcm_uframes_t val);
00731 int snd_pcm_sw_params_get_silence_size(const snd_pcm_sw_params_t *params, snd_pcm_uframes_t *val);
00732 
00733 #endif /* !ALSA_LIBRARY_BUILD && !ALSA_PCM_OLD_SW_PARAMS_API */
00734 
00737 /* include old API */
00738 #ifndef ALSA_LIBRARY_BUILD
00739 #if defined(ALSA_PCM_OLD_HW_PARAMS_API) || defined(ALSA_PCM_OLD_SW_PARAMS_API)
00740 #include "pcm_old.h"
00741 #endif
00742 #endif
00743 
00751 size_t snd_pcm_access_mask_sizeof(void);
00756 #define snd_pcm_access_mask_alloca(ptr) __snd_alloca(ptr, snd_pcm_access_mask)
00757 int snd_pcm_access_mask_malloc(snd_pcm_access_mask_t **ptr);
00758 void snd_pcm_access_mask_free(snd_pcm_access_mask_t *obj);
00759 void snd_pcm_access_mask_copy(snd_pcm_access_mask_t *dst, const snd_pcm_access_mask_t *src);
00760 void snd_pcm_access_mask_none(snd_pcm_access_mask_t *mask);
00761 void snd_pcm_access_mask_any(snd_pcm_access_mask_t *mask);
00762 int snd_pcm_access_mask_test(const snd_pcm_access_mask_t *mask, snd_pcm_access_t val);
00763 int snd_pcm_access_mask_empty(const snd_pcm_access_mask_t *mask);
00764 void snd_pcm_access_mask_set(snd_pcm_access_mask_t *mask, snd_pcm_access_t val);
00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void 00765 void