?? asound.h
字號:
unsigned int subdevices_avail; union sndrv_pcm_sync_id sync; /* hardware synchronization ID */ unsigned char reserved[64]; /* reserved for future... */};enum sndrv_pcm_hw_param { SNDRV_PCM_HW_PARAM_ACCESS = 0, /* Access type */ SNDRV_PCM_HW_PARAM_FIRST_MASK = SNDRV_PCM_HW_PARAM_ACCESS, SNDRV_PCM_HW_PARAM_FORMAT, /* Format */ SNDRV_PCM_HW_PARAM_SUBFORMAT, /* Subformat */ SNDRV_PCM_HW_PARAM_LAST_MASK = SNDRV_PCM_HW_PARAM_SUBFORMAT, SNDRV_PCM_HW_PARAM_SAMPLE_BITS = 8, /* Bits per sample */ SNDRV_PCM_HW_PARAM_FIRST_INTERVAL = SNDRV_PCM_HW_PARAM_SAMPLE_BITS, SNDRV_PCM_HW_PARAM_FRAME_BITS, /* Bits per frame */ SNDRV_PCM_HW_PARAM_CHANNELS, /* Channels */ SNDRV_PCM_HW_PARAM_RATE, /* Approx rate */ SNDRV_PCM_HW_PARAM_PERIOD_TIME, /* Approx distance between interrupts in us */ SNDRV_PCM_HW_PARAM_PERIOD_SIZE, /* Approx frames between interrupts */ SNDRV_PCM_HW_PARAM_PERIOD_BYTES, /* Approx bytes between interrupts */ SNDRV_PCM_HW_PARAM_PERIODS, /* Approx interrupts per buffer */ SNDRV_PCM_HW_PARAM_BUFFER_TIME, /* Approx duration of buffer in us */ SNDRV_PCM_HW_PARAM_BUFFER_SIZE, /* Size of buffer in frames */ SNDRV_PCM_HW_PARAM_BUFFER_BYTES, /* Size of buffer in bytes */ SNDRV_PCM_HW_PARAM_TICK_TIME, /* Approx tick duration in us */ SNDRV_PCM_HW_PARAM_LAST_INTERVAL = SNDRV_PCM_HW_PARAM_TICK_TIME};#define SNDRV_PCM_HW_PARAMS_NORESAMPLE (1<<0) /* avoid rate resampling */#define SNDRV_PCM_HW_PARAMS_EXPORT_BUFFER (1<<1) /* export buffer */struct sndrv_interval { unsigned int min, max; unsigned int openmin:1, openmax:1, integer:1, empty:1;};#define SNDRV_MASK_MAX 256struct sndrv_mask { u_int32_t bits[(SNDRV_MASK_MAX+31)/32];};struct sndrv_pcm_hw_params { unsigned int flags; struct sndrv_mask masks[SNDRV_PCM_HW_PARAM_LAST_MASK - SNDRV_PCM_HW_PARAM_FIRST_MASK + 1]; struct sndrv_mask mres[5]; /* reserved masks */ struct sndrv_interval intervals[SNDRV_PCM_HW_PARAM_LAST_INTERVAL - SNDRV_PCM_HW_PARAM_FIRST_INTERVAL + 1]; struct sndrv_interval ires[9]; /* reserved intervals */ unsigned int rmask; /* W: requested masks */ unsigned int cmask; /* R: changed masks */ unsigned int info; /* R: Info flags for returned setup */ unsigned int msbits; /* R: used most significant bits */ unsigned int rate_num; /* R: rate numerator */ unsigned int rate_den; /* R: rate denominator */ sndrv_pcm_uframes_t fifo_size; /* R: chip FIFO size in frames */ unsigned char reserved[64]; /* reserved for future */};enum sndrv_pcm_tstamp { SNDRV_PCM_TSTAMP_NONE = 0, SNDRV_PCM_TSTAMP_MMAP, SNDRV_PCM_TSTAMP_LAST = SNDRV_PCM_TSTAMP_MMAP,};struct sndrv_pcm_sw_params { int tstamp_mode; /* timestamp mode */ unsigned int period_step; unsigned int sleep_min; /* min ticks to sleep */ sndrv_pcm_uframes_t avail_min; /* min avail frames for wakeup */ sndrv_pcm_uframes_t xfer_align; /* xfer size need to be a multiple */ sndrv_pcm_uframes_t start_threshold; /* min hw_avail frames for automatic start */ sndrv_pcm_uframes_t stop_threshold; /* min avail frames for automatic stop */ sndrv_pcm_uframes_t silence_threshold; /* min distance from noise for silence filling */ sndrv_pcm_uframes_t silence_size; /* silence block size */ sndrv_pcm_uframes_t boundary; /* pointers wrap point */ unsigned char reserved[64]; /* reserved for future */};struct sndrv_pcm_channel_info { unsigned int channel; off_t offset; /* mmap offset */ unsigned int first; /* offset to first sample in bits */ unsigned int step; /* samples distance in bits */};struct sndrv_pcm_status { int state; /* stream state */ struct timespec trigger_tstamp; /* time when stream was started/stopped/paused */ struct timespec tstamp; /* reference timestamp */ sndrv_pcm_uframes_t appl_ptr; /* appl ptr */ sndrv_pcm_uframes_t hw_ptr; /* hw ptr */ sndrv_pcm_sframes_t delay; /* current delay in frames */ sndrv_pcm_uframes_t avail; /* number of frames available */ sndrv_pcm_uframes_t avail_max; /* max frames available on hw since last status */ sndrv_pcm_uframes_t overrange; /* count of ADC (capture) overrange detections from last status */ int suspended_state; /* suspended stream state */ unsigned char reserved[60]; /* must be filled with zero */};struct sndrv_pcm_mmap_status { int state; /* RO: state - SNDRV_PCM_STATE_XXXX */ int pad1; /* Needed for 64 bit alignment */ sndrv_pcm_uframes_t hw_ptr; /* RO: hw ptr (0...boundary-1) */ struct timespec tstamp; /* Timestamp */ int suspended_state; /* RO: suspended stream state */};struct sndrv_pcm_mmap_control { sndrv_pcm_uframes_t appl_ptr; /* RW: appl ptr (0...boundary-1) */ sndrv_pcm_uframes_t avail_min; /* RW: min available frames for wakeup */};#define SNDRV_PCM_SYNC_PTR_HWSYNC (1<<0) /* execute hwsync */#define SNDRV_PCM_SYNC_PTR_APPL (1<<1) /* get appl_ptr from driver (r/w op) */#define SNDRV_PCM_SYNC_PTR_AVAIL_MIN (1<<2) /* get avail_min from driver */struct sndrv_pcm_sync_ptr { unsigned int flags; union { struct sndrv_pcm_mmap_status status; unsigned char reserved[64]; } s; union { struct sndrv_pcm_mmap_control control; unsigned char reserved[64]; } c;};struct sndrv_xferi { sndrv_pcm_sframes_t result; void *buf; sndrv_pcm_uframes_t frames;};struct sndrv_xfern { sndrv_pcm_sframes_t result; void **bufs; sndrv_pcm_uframes_t frames;};enum { SNDRV_PCM_IOCTL_PVERSION = _IOR('A', 0x00, int), SNDRV_PCM_IOCTL_INFO = _IOR('A', 0x01, struct sndrv_pcm_info), SNDRV_PCM_IOCTL_TSTAMP = _IOW('A', 0x02, int), SNDRV_PCM_IOCTL_HW_REFINE = _IOWR('A', 0x10, struct sndrv_pcm_hw_params), SNDRV_PCM_IOCTL_HW_PARAMS = _IOWR('A', 0x11, struct sndrv_pcm_hw_params), SNDRV_PCM_IOCTL_HW_FREE = _IO('A', 0x12), SNDRV_PCM_IOCTL_SW_PARAMS = _IOWR('A', 0x13, struct sndrv_pcm_sw_params), SNDRV_PCM_IOCTL_STATUS = _IOR('A', 0x20, struct sndrv_pcm_status), SNDRV_PCM_IOCTL_DELAY = _IOR('A', 0x21, sndrv_pcm_sframes_t), SNDRV_PCM_IOCTL_HWSYNC = _IO('A', 0x22), SNDRV_PCM_IOCTL_SYNC_PTR = _IOWR('A', 0x23, struct sndrv_pcm_sync_ptr), SNDRV_PCM_IOCTL_CHANNEL_INFO = _IOR('A', 0x32, struct sndrv_pcm_channel_info), SNDRV_PCM_IOCTL_PREPARE = _IO('A', 0x40), SNDRV_PCM_IOCTL_RESET = _IO('A', 0x41), SNDRV_PCM_IOCTL_START = _IO('A', 0x42), SNDRV_PCM_IOCTL_DROP = _IO('A', 0x43), SNDRV_PCM_IOCTL_DRAIN = _IO('A', 0x44), SNDRV_PCM_IOCTL_PAUSE = _IOW('A', 0x45, int), SNDRV_PCM_IOCTL_REWIND = _IOW('A', 0x46, sndrv_pcm_uframes_t), SNDRV_PCM_IOCTL_RESUME = _IO('A', 0x47), SNDRV_PCM_IOCTL_XRUN = _IO('A', 0x48), SNDRV_PCM_IOCTL_FORWARD = _IOW('A', 0x49, sndrv_pcm_uframes_t), SNDRV_PCM_IOCTL_WRITEI_FRAMES = _IOW('A', 0x50, struct sndrv_xferi), SNDRV_PCM_IOCTL_READI_FRAMES = _IOR('A', 0x51, struct sndrv_xferi), SNDRV_PCM_IOCTL_WRITEN_FRAMES = _IOW('A', 0x52, struct sndrv_xfern), SNDRV_PCM_IOCTL_READN_FRAMES = _IOR('A', 0x53, struct sndrv_xfern), SNDRV_PCM_IOCTL_LINK = _IOW('A', 0x60, int), SNDRV_PCM_IOCTL_UNLINK = _IO('A', 0x61),};/* Trick to make alsa-lib/acinclude.m4 happy */#define SNDRV_PCM_IOCTL_REWIND SNDRV_PCM_IOCTL_REWIND/***************************************************************************** * * * MIDI v1.0 interface * * * *****************************************************************************//* * Raw MIDI section - /dev/snd/midi?? */#define SNDRV_RAWMIDI_VERSION SNDRV_PROTOCOL_VERSION(2, 0, 0)enum sndrv_rawmidi_stream { SNDRV_RAWMIDI_STREAM_OUTPUT = 0, SNDRV_RAWMIDI_STREAM_INPUT, SNDRV_RAWMIDI_STREAM_LAST = SNDRV_RAWMIDI_STREAM_INPUT,};#define SNDRV_RAWMIDI_INFO_OUTPUT 0x00000001#define SNDRV_RAWMIDI_INFO_INPUT 0x00000002#define SNDRV_RAWMIDI_INFO_DUPLEX 0x00000004struct sndrv_rawmidi_info { unsigned int device; /* RO/WR (control): device number */ unsigned int subdevice; /* RO/WR (control): subdevice number */ int stream; /* WR: stream */ int card; /* R: card number */ unsigned int flags; /* SNDRV_RAWMIDI_INFO_XXXX */ unsigned char id[64]; /* ID (user selectable) */ unsigned char name[80]; /* name of device */ unsigned char subname[32]; /* name of active or selected subdevice */ unsigned int subdevices_count; unsigned int subdevices_avail; unsigned char reserved[64]; /* reserved for future use */};struct sndrv_rawmidi_params { int stream; size_t buffer_size; /* queue size in bytes */ size_t avail_min; /* minimum avail bytes for wakeup */ unsigned int no_active_sensing: 1; /* do not send active sensing byte in close() */ unsigned char reserved[16]; /* reserved for future use */};struct sndrv_rawmidi_status { int stream; struct timespec tstamp; /* Timestamp */ size_t avail; /* available bytes */ size_t xruns; /* count of overruns since last status (in bytes) */ unsigned char reserved[16]; /* reserved for future use */};enum { SNDRV_RAWMIDI_IOCTL_PVERSION = _IOR('W', 0x00, int), SNDRV_RAWMIDI_IOCTL_INFO = _IOR('W', 0x01, struct sndrv_rawmidi_info), SNDRV_RAWMIDI_IOCTL_PARAMS = _IOWR('W', 0x10, struct sndrv_rawmidi_params), SNDRV_RAWMIDI_IOCTL_STATUS = _IOWR('W', 0x20, struct sndrv_rawmidi_status), SNDRV_RAWMIDI_IOCTL_DROP = _IOW('W', 0x30, int), SNDRV_RAWMIDI_IOCTL_DRAIN = _IOW('W', 0x31, int),};/* * Timer section - /dev/snd/timer */#define SNDRV_TIMER_VERSION SNDRV_PROTOCOL_VERSION(2, 0, 5)enum sndrv_timer_class { SNDRV_TIMER_CLASS_NONE = -1, SNDRV_TIMER_CLASS_SLAVE = 0, SNDRV_TIMER_CLASS_GLOBAL, SNDRV_TIMER_CLASS_CARD, SNDRV_TIMER_CLASS_PCM, SNDRV_TIMER_CLASS_LAST = SNDRV_TIMER_CLASS_PCM,};/* slave timer classes */enum sndrv_timer_slave_class { SNDRV_TIMER_SCLASS_NONE = 0, SNDRV_TIMER_SCLASS_APPLICATION, SNDRV_TIMER_SCLASS_SEQUENCER, /* alias */ SNDRV_TIMER_SCLASS_OSS_SEQUENCER, /* alias */ SNDRV_TIMER_SCLASS_LAST = SNDRV_TIMER_SCLASS_OSS_SEQUENCER,};/* global timers (device member) */#define SNDRV_TIMER_GLOBAL_SYSTEM 0#define SNDRV_TIMER_GLOBAL_RTC 1#define SNDRV_TIMER_GLOBAL_HPET 2/* info flags */#define SNDRV_TIMER_FLG_SLAVE (1<<0) /* cannot be controlled */struct sndrv_timer_id { int dev_class; int dev_sclass; int card; int device; int subdevice;};struct sndrv_timer_ginfo { struct sndrv_timer_id tid; /* requested timer ID */ unsigned int flags; /* timer flags - SNDRV_TIMER_FLG_* */ int card; /* card number */ unsigned char id[64]; /* timer identification */ unsigned char name[80]; /* timer name */ unsigned long reserved0; /* reserved for future use */ unsigned long resolution; /* average period resolution in ns */ unsigned long resolution_min; /* minimal period resolution in ns */ unsigned long resolution_max; /* maximal period resolution in ns */ unsigned int clients; /* active timer clients */ unsigned char reserved[32];};struct sndrv_timer_gparams { struct sndrv_timer_id tid; /* requested timer ID */ unsigned long period_num; /* requested precise period duration (in seconds) - numerator */ unsigned long period_den; /* requested precise period duration (in seconds) - denominator */ unsigned char reserved[32];};struct sndrv_timer_gstatus { struct sndrv_timer_id tid; /* requested timer ID */ unsigned long resolution; /* current period resolution in ns */ unsigned long resolution_num; /* precise current period resolution (in seconds) - numerator */ unsigned long resolution_den; /* precise current period resolution (in seconds) - denominator */ unsigned char reserved[32];};struct sndrv_timer_select { struct sndrv_timer_id id; /* bind to timer ID */ unsigned char reserved[32]; /* reserved */};struct sndrv_timer_info {
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -