Path: blob/master/thirdparty/linuxbsd_headers/alsa/rawmidi.h
9898 views
/**1* \file include/rawmidi.h2* \brief Application interface library for the ALSA driver3* \author Jaroslav Kysela <[email protected]>4* \author Abramo Bagnara <[email protected]>5* \author Takashi Iwai <[email protected]>6* \date 1998-20017*8* Application interface library for the ALSA driver9*/10/*11* This library is free software; you can redistribute it and/or modify12* it under the terms of the GNU Lesser General Public License as13* published by the Free Software Foundation; either version 2.1 of14* the License, or (at your option) any later version.15*16* This program is distributed in the hope that it will be useful,17* but WITHOUT ANY WARRANTY; without even the implied warranty of18* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the19* GNU Lesser General Public License for more details.20*21* You should have received a copy of the GNU Lesser General Public22* License along with this library; if not, write to the Free Software23* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA24*25*/2627#ifndef __ALSA_RAWMIDI_H28#define __ALSA_RAWMIDI_H2930#ifdef __cplusplus31extern "C" {32#endif3334/**35* \defgroup RawMidi RawMidi Interface36* The RawMidi Interface. See \ref rawmidi page for more details.37* \{38*/3940/** dlsym version for interface entry callback */41#define SND_RAWMIDI_DLSYM_VERSION _dlsym_rawmidi_0014243/** RawMidi information container */44typedef struct _snd_rawmidi_info snd_rawmidi_info_t;45/** RawMidi settings container */46typedef struct _snd_rawmidi_params snd_rawmidi_params_t;47/** RawMidi status container */48typedef struct _snd_rawmidi_status snd_rawmidi_status_t;4950/** RawMidi stream (direction) */51typedef enum _snd_rawmidi_stream {52/** Output stream */53SND_RAWMIDI_STREAM_OUTPUT = 0,54/** Input stream */55SND_RAWMIDI_STREAM_INPUT,56SND_RAWMIDI_STREAM_LAST = SND_RAWMIDI_STREAM_INPUT57} snd_rawmidi_stream_t;5859/** Append (flag to open mode) \hideinitializer */60#define SND_RAWMIDI_APPEND 0x000161/** Non blocking mode (flag to open mode) \hideinitializer */62#define SND_RAWMIDI_NONBLOCK 0x000263/** Write sync mode (Flag to open mode) \hideinitializer */64#define SND_RAWMIDI_SYNC 0x00046566/** RawMidi handle */67typedef struct _snd_rawmidi snd_rawmidi_t;6869/** RawMidi type */70typedef enum _snd_rawmidi_type {71/** Kernel level RawMidi */72SND_RAWMIDI_TYPE_HW,73/** Shared memory client RawMidi (not yet implemented) */74SND_RAWMIDI_TYPE_SHM,75/** INET client RawMidi (not yet implemented) */76SND_RAWMIDI_TYPE_INET,77/** Virtual (sequencer) RawMidi */78SND_RAWMIDI_TYPE_VIRTUAL79} snd_rawmidi_type_t;8081int snd_rawmidi_open(snd_rawmidi_t **in_rmidi, snd_rawmidi_t **out_rmidi,82const char *name, int mode);83int snd_rawmidi_open_lconf(snd_rawmidi_t **in_rmidi, snd_rawmidi_t **out_rmidi,84const char *name, int mode, snd_config_t *lconf);85int snd_rawmidi_close(snd_rawmidi_t *rmidi);86int snd_rawmidi_poll_descriptors_count(snd_rawmidi_t *rmidi);87int snd_rawmidi_poll_descriptors(snd_rawmidi_t *rmidi, struct pollfd *pfds, unsigned int space);88int snd_rawmidi_poll_descriptors_revents(snd_rawmidi_t *rawmidi, struct pollfd *pfds, unsigned int nfds, unsigned short *revent);89int snd_rawmidi_nonblock(snd_rawmidi_t *rmidi, int nonblock);90size_t snd_rawmidi_info_sizeof(void);91/** \hideinitializer92* \brief allocate an invalid #snd_rawmidi_info_t using standard alloca93* \param ptr returned pointer94*/95#define snd_rawmidi_info_alloca(ptr) __snd_alloca(ptr, snd_rawmidi_info)96int snd_rawmidi_info_malloc(snd_rawmidi_info_t **ptr);97void snd_rawmidi_info_free(snd_rawmidi_info_t *obj);98void snd_rawmidi_info_copy(snd_rawmidi_info_t *dst, const snd_rawmidi_info_t *src);99unsigned int snd_rawmidi_info_get_device(const snd_rawmidi_info_t *obj);100unsigned int snd_rawmidi_info_get_subdevice(const snd_rawmidi_info_t *obj);101snd_rawmidi_stream_t snd_rawmidi_info_get_stream(const snd_rawmidi_info_t *obj);102int snd_rawmidi_info_get_card(const snd_rawmidi_info_t *obj);103unsigned int snd_rawmidi_info_get_flags(const snd_rawmidi_info_t *obj);104const char *snd_rawmidi_info_get_id(const snd_rawmidi_info_t *obj);105const char *snd_rawmidi_info_get_name(const snd_rawmidi_info_t *obj);106const char *snd_rawmidi_info_get_subdevice_name(const snd_rawmidi_info_t *obj);107unsigned int snd_rawmidi_info_get_subdevices_count(const snd_rawmidi_info_t *obj);108unsigned int snd_rawmidi_info_get_subdevices_avail(const snd_rawmidi_info_t *obj);109void snd_rawmidi_info_set_device(snd_rawmidi_info_t *obj, unsigned int val);110void snd_rawmidi_info_set_subdevice(snd_rawmidi_info_t *obj, unsigned int val);111void snd_rawmidi_info_set_stream(snd_rawmidi_info_t *obj, snd_rawmidi_stream_t val);112int snd_rawmidi_info(snd_rawmidi_t *rmidi, snd_rawmidi_info_t * info);113size_t snd_rawmidi_params_sizeof(void);114/** \hideinitializer115* \brief allocate an invalid #snd_rawmidi_params_t using standard alloca116* \param ptr returned pointer117*/118#define snd_rawmidi_params_alloca(ptr) __snd_alloca(ptr, snd_rawmidi_params)119int snd_rawmidi_params_malloc(snd_rawmidi_params_t **ptr);120void snd_rawmidi_params_free(snd_rawmidi_params_t *obj);121void snd_rawmidi_params_copy(snd_rawmidi_params_t *dst, const snd_rawmidi_params_t *src);122int snd_rawmidi_params_set_buffer_size(snd_rawmidi_t *rmidi, snd_rawmidi_params_t *params, size_t val);123size_t snd_rawmidi_params_get_buffer_size(const snd_rawmidi_params_t *params);124int snd_rawmidi_params_set_avail_min(snd_rawmidi_t *rmidi, snd_rawmidi_params_t *params, size_t val);125size_t snd_rawmidi_params_get_avail_min(const snd_rawmidi_params_t *params);126int snd_rawmidi_params_set_no_active_sensing(snd_rawmidi_t *rmidi, snd_rawmidi_params_t *params, int val);127int snd_rawmidi_params_get_no_active_sensing(const snd_rawmidi_params_t *params);128int snd_rawmidi_params(snd_rawmidi_t *rmidi, snd_rawmidi_params_t * params);129int snd_rawmidi_params_current(snd_rawmidi_t *rmidi, snd_rawmidi_params_t *params);130size_t snd_rawmidi_status_sizeof(void);131/** \hideinitializer132* \brief allocate an invalid #snd_rawmidi_status_t using standard alloca133* \param ptr returned pointer134*/135#define snd_rawmidi_status_alloca(ptr) __snd_alloca(ptr, snd_rawmidi_status)136int snd_rawmidi_status_malloc(snd_rawmidi_status_t **ptr);137void snd_rawmidi_status_free(snd_rawmidi_status_t *obj);138void snd_rawmidi_status_copy(snd_rawmidi_status_t *dst, const snd_rawmidi_status_t *src);139void snd_rawmidi_status_get_tstamp(const snd_rawmidi_status_t *obj, snd_htimestamp_t *ptr);140size_t snd_rawmidi_status_get_avail(const snd_rawmidi_status_t *obj);141size_t snd_rawmidi_status_get_xruns(const snd_rawmidi_status_t *obj);142int snd_rawmidi_status(snd_rawmidi_t *rmidi, snd_rawmidi_status_t * status);143int snd_rawmidi_drain(snd_rawmidi_t *rmidi);144int snd_rawmidi_drop(snd_rawmidi_t *rmidi);145ssize_t snd_rawmidi_write(snd_rawmidi_t *rmidi, const void *buffer, size_t size);146ssize_t snd_rawmidi_read(snd_rawmidi_t *rmidi, void *buffer, size_t size);147const char *snd_rawmidi_name(snd_rawmidi_t *rmidi);148snd_rawmidi_type_t snd_rawmidi_type(snd_rawmidi_t *rmidi);149snd_rawmidi_stream_t snd_rawmidi_stream(snd_rawmidi_t *rawmidi);150151/** \} */152153#ifdef __cplusplus154}155#endif156157#endif /* __RAWMIDI_H */158159160161