📄 asound.h
字号:
#define SND_PCM_SFMT_GSM 24#define SND_PCM_SFMT_SPECIAL 31#ifdef SND_LITTLE_ENDIAN#define SND_PCM_SFMT_S16 SND_PCM_SFMT_S16_LE#define SND_PCM_SFMT_U16 SND_PCM_SFMT_U16_LE#define SND_PCM_SFMT_S24 SND_PCM_SFMT_S24_LE#define SND_PCM_SFMT_U24 SND_PCM_SFMT_U24_LE#define SND_PCM_SFMT_S32 SND_PCM_SFMT_S32_LE#define SND_PCM_SFMT_U32 SND_PCM_SFMT_U32_LE#define SND_PCM_SFMT_FLOAT SND_PCM_SFMT_FLOAT_LE#define SND_PCM_SFMT_FLOAT64 SND_PCM_SFMT_FLOAT64_LE#define SND_PCM_SFMT_IEC958_SUBFRAME SND_PCM_SFMT_IEC958_SUBFRAME_LE#endif#ifdef SND_BIG_ENDIAN#define SND_PCM_SFMT_S16 SND_PCM_SFMT_S16_BE#define SND_PCM_SFMT_U16 SND_PCM_SFMT_U16_BE#define SND_PCM_SFMT_S24 SND_PCM_SFMT_S24_BE#define SND_PCM_SFMT_U24 SND_PCM_SFMT_U24_BE#define SND_PCM_SFMT_S32 SND_PCM_SFMT_S32_BE#define SND_PCM_SFMT_U32 SND_PCM_SFMT_U32_BE#define SND_PCM_SFMT_FLOAT SND_PCM_SFMT_FLOAT_BE#define SND_PCM_SFMT_FLOAT64 SND_PCM_SFMT_FLOAT64_BE#define SND_PCM_SFMT_IEC958_SUBFRAME SND_PCM_SFMT_IEC958_SUBFRAME_BE#endif#define SND_PCM_FMT_S8 (1 << SND_PCM_SFMT_S8)#define SND_PCM_FMT_U8 (1 << SND_PCM_SFMT_U8)#define SND_PCM_FMT_S16_LE (1 << SND_PCM_SFMT_S16_LE)#define SND_PCM_FMT_S16_BE (1 << SND_PCM_SFMT_S16_BE)#define SND_PCM_FMT_U16_LE (1 << SND_PCM_SFMT_U16_LE)#define SND_PCM_FMT_U16_BE (1 << SND_PCM_SFMT_U16_BE)#define SND_PCM_FMT_S24_LE (1 << SND_PCM_SFMT_S24_LE)#define SND_PCM_FMT_S24_BE (1 << SND_PCM_SFMT_S24_BE)#define SND_PCM_FMT_U24_LE (1 << SND_PCM_SFMT_U24_LE)#define SND_PCM_FMT_U24_BE (1 << SND_PCM_SFMT_U24_BE)#define SND_PCM_FMT_S32_LE (1 << SND_PCM_SFMT_S32_LE)#define SND_PCM_FMT_S32_BE (1 << SND_PCM_SFMT_S32_BE)#define SND_PCM_FMT_U32_LE (1 << SND_PCM_SFMT_U32_LE)#define SND_PCM_FMT_U32_BE (1 << SND_PCM_SFMT_U32_BE)#define SND_PCM_FMT_FLOAT_LE (1 << SND_PCM_SFMT_FLOAT_LE)#define SND_PCM_FMT_FLOAT_BE (1 << SND_PCM_SFMT_FLOAT_BE)#define SND_PCM_FMT_FLOAT64_LE (1 << SND_PCM_SFMT_FLOAT64_LE)#define SND_PCM_FMT_FLOAT64_BE (1 << SND_PCM_SFMT_FLOAT64_BE)#define SND_PCM_FMT_IEC958_SUBFRAME_LE (1 << SND_PCM_SFMT_IEC958_SUBFRAME_LE)#define SND_PCM_FMT_IEC958_SUBFRAME_BE (1 << SND_PCM_SFMT_IEC958_SUBFRAME_BE)#define SND_PCM_FMT_MU_LAW (1 << SND_PCM_SFMT_MU_LAW)#define SND_PCM_FMT_A_LAW (1 << SND_PCM_SFMT_A_LAW)#define SND_PCM_FMT_IMA_ADPCM (1 << SND_PCM_SFMT_IMA_ADPCM)#define SND_PCM_FMT_MPEG (1 << SND_PCM_SFMT_MPEG)#define SND_PCM_FMT_GSM (1 << SND_PCM_SFMT_GSM)#define SND_PCM_FMT_SPECIAL (1 << SND_PCM_SFMT_SPECIAL)#ifdef SND_LITTLE_ENDIAN#define SND_PCM_FMT_S16 SND_PCM_FMT_S16_LE#define SND_PCM_FMT_U16 SND_PCM_FMT_U16_LE#define SND_PCM_FMT_S24 SND_PCM_FMT_S24_LE#define SND_PCM_FMT_U24 SND_PCM_FMT_U24_LE#define SND_PCM_FMT_S32 SND_PCM_FMT_S32_LE#define SND_PCM_FMT_U32 SND_PCM_FMT_U32_LE#define SND_PCM_FMT_FLOAT SND_PCM_FMT_FLOAT_LE#define SND_PCM_FMT_FLOAT64 SND_PCM_FMT_FLOAT64_LE#define SND_PCM_FMT_IEC958_SUBFRAME SND_PCM_FMT_IEC958_SUBFRAME_LE#endif#ifdef SND_BIG_ENDIAN#define SND_PCM_FMT_S16 SND_PCM_FMT_S16_BE#define SND_PCM_FMT_U16 SND_PCM_FMT_U16_BE#define SND_PCM_FMT_S24 SND_PCM_FMT_S24_BE#define SND_PCM_FMT_U24 SND_PCM_FMT_U24_BE#define SND_PCM_FMT_S32 SND_PCM_FMT_S32_BE#define SND_PCM_FMT_U32 SND_PCM_FMT_U32_BE#define SND_PCM_FMT_FLOAT SND_PCM_FMT_FLOAT_BE#define SND_PCM_FMT_FLOAT64 SND_PCM_FMT_FLOAT64_BE#define SND_PCM_FMT_IEC958_SUBFRAME SND_PCM_FMT_IEC958_SUBFRAME_BE#endif#define SND_PCM_RATE_CONTINUOUS (1<<0) /* continuous range */#define SND_PCM_RATE_KNOT (1<<1) /* supports more non-continuos rates */#define SND_PCM_RATE_8000 (1<<2) /* 8000Hz */#define SND_PCM_RATE_11025 (1<<3) /* 11025Hz */#define SND_PCM_RATE_16000 (1<<4) /* 16000Hz */#define SND_PCM_RATE_22050 (1<<5) /* 22050Hz */#define SND_PCM_RATE_32000 (1<<6) /* 32000Hz */#define SND_PCM_RATE_44100 (1<<7) /* 44100Hz */#define SND_PCM_RATE_48000 (1<<8) /* 48000Hz */#define SND_PCM_RATE_88200 (1<<9) /* 88200Hz */#define SND_PCM_RATE_96000 (1<<10) /* 96000Hz */#define SND_PCM_RATE_176400 (1<<11) /* 176400Hz */#define SND_PCM_RATE_192000 (1<<12) /* 192000Hz */#define SND_PCM_RATE_8000_44100 (SND_PCM_RATE_8000|SND_PCM_RATE_11025|\ SND_PCM_RATE_16000|SND_PCM_RATE_22050|\ SND_PCM_RATE_32000|SND_PCM_RATE_44100)#define SND_PCM_RATE_8000_48000 (SND_PCM_RATE_8000_44100|SND_PCM_RATE_48000)#define SND_PCM_RATE_8000_96000 (SND_PCM_RATE_8000_48000|SND_PCM_RATE_88200|\ SND_PCM_RATE_96000)#define SND_PCM_INFO_PLAYBACK 0x00000001#define SND_PCM_INFO_CAPTURE 0x00000002#define SND_PCM_INFO_DUPLEX 0x00000100#define SND_PCM_INFO_DUPLEX_RATE 0x00000200 /* rate for playback & capture channels must be same!!! */#define SND_PCM_INFO_DUPLEX_MONO 0x00000400 /* in duplex mode - only mono (one channel) is supported */#define SND_PCM_CHNINFO_MMAP 0x00000001 /* hardware supports mmap */#define SND_PCM_CHNINFO_STREAM 0x00000002 /* hardware supports streaming */#define SND_PCM_CHNINFO_BLOCK 0x00000004 /* hardware supports block mode */#define SND_PCM_CHNINFO_BATCH 0x00000010 /* double buffering */#define SND_PCM_CHNINFO_INTERLEAVE 0x00000100 /* voices are interleaved */#define SND_PCM_CHNINFO_NONINTERLEAVE 0x00000200 /* voices are not interleaved */#define SND_PCM_CHNINFO_BLOCK_TRANSFER 0x00010000 /* hardware transfer block of samples */#define SND_PCM_CHNINFO_OVERRANGE 0x00020000 /* hardware supports ADC (capture) overrange detection */#define SND_PCM_CHNINFO_MMAP_VALID 0x00040000 /* fragment data are valid during transfer */#define SND_PCM_CHNINFO_PAUSE 0x00080000 /* pause ioctl is supported */#define SND_PCM_CHNINFO_GLOBAL_PARAMS 0x00100000 /* parameters can be set via switches only */#define SND_PCM_START_DATA 0 /* start when some data are written (playback) or requested (capture) */#define SND_PCM_START_FULL 1 /* start when whole queue is filled (playback) */#define SND_PCM_START_GO 2 /* start on the go command */#define SND_PCM_STOP_STOP 0 /* stop when underrun/overrun */#define SND_PCM_STOP_STOP_ERASE 1 /* stop & erase when overrun (capture) */#define SND_PCM_STOP_ROLLOVER 2 /* rollover when overrun/underrun */#define SND_PCM_FILL_NONE 0 /* don't fill the buffer with silent samples */#define SND_PCM_FILL_SILENCE_WHOLE 1 /* fill the whole buffer with silence */#define SND_PCM_FILL_SILENCE 2 /* fill the partial buffer with silence */#define SND_PCM_STATUS_NOTREADY 0 /* channel is not ready */#define SND_PCM_STATUS_READY 1 /* channel is ready for prepare call */#define SND_PCM_STATUS_PREPARED 2 /* channel is ready to go */#define SND_PCM_STATUS_RUNNING 3 /* channel is running */#define SND_PCM_STATUS_UNDERRUN 4 /* channel reached an underrun and it is not ready */#define SND_PCM_STATUS_OVERRUN 5 /* channel reached an overrun and it is not ready */#define SND_PCM_STATUS_PAUSED 6 /* channel is paused */#define SND_PCM_BOUNDARY 0xf0000000#define SND_PCM_MMAP_OFFSET_CONTROL 0x00000000#define SND_PCM_MMAP_OFFSET_DATA 0x80000000#define SND_PCM_SW_RATE "Sample Rate"#define SND_PCM_SW_FORMAT "Format"#define SND_PCM_SW_VOICES "Voices"#define SND_PCM_SW_FRAGMENT_SIZE "Fragment Size"#define SND_PCM_DIG0_PROFESSIONAL (1<<0) /* 0 = consumer, 1 = professional */#define SND_PCM_DIG0_NONAUDIO (1<<1) /* 0 = audio, 1 = non-audio */#define SND_PCM_DIG0_PRO_EMPHASIS (7<<2) /* mask - emphasis */#define SND_PCM_DIG0_PRO_EMPHASIS_NOTID (0<<2) /* emphasis not indicated */#define SND_PCM_DIG0_PRO_EMPHASIS_NONE (1<<2) /* none emphasis */#define SND_PCM_DIG0_PRO_EMPHASIS_5015 (3<<2) /* 50/15us emphasis */#define SND_PCM_DIG0_PRO_EMPHASIS_CCITT (7<<2) /* CCITT J.17 emphasis */#define SND_PCM_DIG0_PRO_FREQ_UNLOCKED (1<<5) /* source sample frequency: 0 = locked, 1 = unlocked */#define SND_PCM_DIG0_PRO_FS (3<<6) /* mask - sample frequency */#define SND_PCM_DIG0_PRO_FS_NOTID (0<<6) /* fs not indicated */#define SND_PCM_DIG0_PRO_FS_44100 (1<<6) /* 44.1kHz */#define SND_PCM_DIG0_PRO_FS_48000 (2<<6) /* 48kHz */#define SND_PCM_DIG0_PRO_FS_32000 (3<<6) /* 32kHz */#define SND_PCM_DIG0_CON_NOT_COPYRIGHT (1<<2) /* 0 = copyright, 1 = not copyright */#define SND_PCM_DIG0_CON_EMPHASIS (7<<3) /* mask - emphasis */#define SND_PCM_DIG0_CON_EMPHASIS_NONE (0<<3) /* none emphasis */#define SND_PCM_DIG0_CON_EMPHASIS_5015 (1<<3) /* 50/15us emphasis */#define SND_PCM_DIG0_CON_MODE (3<<6) /* mask - mode */#define SND_PCM_DIG1_PRO_MODE (15<<0) /* mask - channel mode */#define SND_PCM_DIG1_PRO_MODE_NOTID (0<<0) /* not indicated */#define SND_PCM_DIG1_PRO_MODE_STEREOPHONIC (2<<0) /* stereophonic - ch A is left */#define SND_PCM_DIG1_PRO_MODE_SINGLE (4<<0) /* single channel */#define SND_PCM_DIG1_PRO_MODE_TWO (8<<0) /* two channels */#define SND_PCM_DIG1_PRO_MODE_PRIMARY (12<<0) /* primary/secondary */#define SND_PCM_DIG1_PRO_MODE_BYTE3 (15<<0) /* vector to byte 3 */#define SND_PCM_DIG1_PRO_USERBITS (15<<4) /* mask - user bits */#define SND_PCM_DIG1_PRO_USERBITS_NOTID (0<<4) /* not indicated */#define SND_PCM_DIG1_PRO_USERBITS_192 (8<<4) /* 192-bit structure */#define SND_PCM_DIG1_PRO_USERBITS_UDEF (12<<4) /* user defined application */#define SND_PCM_DIG1_CON_CATEGORY 0x7f#define SND_PCM_DIG1_CON_GENERAL 0x00#define SND_PCM_DIG1_CON_EXPERIMENTAL 0x40#define SND_PCM_DIG1_CON_SOLIDMEM_MASK 0x0f#define SND_PCM_DIG1_CON_SOLIDMEM_ID 0x08#define SND_PCM_DIG1_CON_BROADCAST1_MASK 0x07#define SND_PCM_DIG1_CON_BROADCAST1_ID 0x04#define SND_PCM_DIG1_CON_DIGDIGCONV_MASK 0x07#define SND_PCM_DIG1_CON_DIGDIGCONV_ID 0x02#define SND_PCM_DIG1_CON_ADC_COPYRIGHT_MASK 0x1f#define SND_PCM_DIG1_CON_ADC_COPYRIGHT_ID 0x06#define SND_PCM_DIG1_CON_ADC_MASK 0x1f#define SND_PCM_DIG1_CON_ADC_ID 0x16#define SND_PCM_DIG1_CON_BROADCAST2_MASK 0x0f#define SND_PCM_DIG1_CON_BROADCAST2_ID 0x0e#define SND_PCM_DIG1_CON_LASEROPT_MASK 0x07#define SND_PCM_DIG1_CON_LASEROPT_ID 0x01#define SND_PCM_DIG1_CON_MUSICAL_MASK 0x07#define SND_PCM_DIG1_CON_MUSICAL_ID 0x05#define SND_PCM_DIG1_CON_MAGNETIC_MASK 0x07#define SND_PCM_DIG1_CON_MAGNETIC_ID 0x03#define SND_PCM_DIG1_CON_IEC908_CD (SND_PCM_DIG1_CON_LASEROPT_ID|0x00)#define SND_PCM_DIG1_CON_NON_IEC908_CD (SND_PCM_DIG1_CON_LASEROPT_ID|0x08)#define SND_PCM_DIG1_CON_PCM_CODER (SND_PCM_DIG1_CON_DIGDIGCONV_ID|0x00)#define SND_PCM_DIG1_CON_SAMPLER (SND_PCM_DIG1_CON_DIGDIGCONV_ID|0x20)#define SND_PCM_DIG1_CON_MIXER (SND_PCM_DIG1_CON_DIGDIGCONV_ID|0x10)#define SND_PCM_DIG1_CON_RATE_CONVERTER (SND_PCM_DIG1_CON_DIGDIGCONV_ID|0x18)#define SND_PCM_DIG1_CON_SYNTHESIZER (SND_PCM_DIG1_CON_MUSICAL_ID|0x00)#define SND_PCM_DIG1_CON_MICROPHONE (SND_PCM_DIG1_CON_MUSICAL_ID|0x08)#define SND_PCM_DIG1_CON_DAT (SND_PCM_DIG1_CON_MAGNETIC_ID|0x00)#define SND_PCM_DIG1_CON_VCR (SND_PCM_DIG1_CON_MAGNETIC_ID|0x08)#define SND_PCM_DIG1_CON_ORIGINAL (1<<7) /* this bits depends on the category code */#define SND_PCM_DIG2_PRO_SBITS (7<<0) /* mask - sample bits */#define SND_PCM_DIG2_PRO_SBITS_20 (2<<0) /* 20-bit - coordination */#define SND_PCM_DIG2_PRO_SBITS_24 (4<<0) /* 24-bit - main audio */#define SND_PCM_DIG2_PRO_SBITS_UDEF (6<<0) /* user defined application */#define SND_PCM_DIG2_PRO_WORDLEN (7<<3) /* mask - source word length */#define SND_PCM_DIG2_PRO_WORDLEN_NOTID (0<<3) /* not indicated */#define SND_PCM_DIG2_PRO_WORDLEN_22_18 (2<<3) /* 22-bit or 18-bit */#define SND_PCM_DIG2_PRO_WORDLEN_23_19 (4<<3) /* 23-bit or 19-bit */#define SND_PCM_DIG2_PRO_WORDLEN_24_20 (5<<3) /* 24-bit or 20-bit */#define SND_PCM_DIG2_PRO_WORDLEN_20_16 (6<<3) /* 20-bit or 16-bit */#define SND_PCM_DIG2_CON_SOURCE (15<<0) /* mask - source number */#define SND_PCM_DIG2_CON_SOURCE_UNSPEC (0<<0) /* unspecified */#define SND_PCM_DIG2_CON_CHANNEL (15<<4) /* mask - channel number */#define SND_PCM_DIG2_CON_CHANNEL_UNSPEC (0<<4) /* unspecified */#define SND_PCM_DIG3_CON_FS (15<<0) /* mask - sample frequency */#define SND_PCM_DIG3_CON_FS_44100 (0<<0) /* 44.1kHz */#define SND_PCM_DIG3_CON_FS_48000 (2<<0) /* 48kHz */#define SND_PCM_DIG3_CON_FS_32000 (3<<0) /* 32kHz */#define SND_PCM_DIG3_CON_CLOCK (3<<4) /* mask - clock accuracy */#define SND_PCM_DIG3_CON_CLOCK_1000PPM (0<<4) /* 1000 ppm */#define SND_PCM_DIG3_CON_CLOCK_50PPM (1<<4) /* 50 ppm */#define SND_PCM_DIG3_CON_CLOCK_VARIABLE (2<<4) /* variable pitch */typedef union snd_pcm_sync { char id[16]; short id16[8]; int id32[4];} snd_pcm_sync_t;typedef struct snd_pcm_digital { unsigned char dig_status[24]; /* AES/EBU/IEC958 channel status bits */ unsigned char dig_subcode[147]; /* AES/EBU/IEC958 subcode bits */ unsigned char dig_valid: 1; /* must be non-zero to accept these values */ unsigned char dig_subframe[4]; /* AES/EBU/IEC958 subframe bits */ char reserved[16]; /* must be filled with zero */} snd_pcm_digital_t;typedef struct snd_pcm_info { unsigned int type; /* soundcard type */ unsigned int flags; /* see to SND_PCM_INFO_XXXX */ unsigned char id[64]; /* ID of this PCM device (user selectable) */ unsigned char name[80]; /* name of this device */ int playback; /* playback subdevices - 1 */ int capture; /* capture subdevices - 1 */ char reserved[64]; /* reserved for future... */} snd_pcm_info_t;typedef struct snd_pcm_channel_info { int subdevice; /* subdevice number */ char subname[32]; /* subdevice name */ int channel; /* channel information */ int mode; /* transfer mode */ snd_pcm_sync_t sync; /* hardware synchronization ID */ unsigned int flags; /* see to SND_PCM_CHNINFO_XXXX */ unsigned int formats; /* supported formats */ unsigned int rates; /* hardware rates */ int min_rate; /* min rate (in Hz) */ int max_rate; /* max rate (in Hz) */ int min_voices; /* min voices */ int max_voices; /* max voices */ int buffer_size; /* max buffer size in bytes */ int min_fragment_size; /* min fragment size in bytes */ int max_fragment_size; /* max fragment size in bytes */ int fragment_align; /* align fragment value */ int fifo_size; /* stream FIFO size in bytes */ int transfer_block_size; /* bus transfer block size in bytes */ snd_pcm_digital_t dig_mask; /* AES/EBU/IEC958 supported bits, zero = no AES/EBU/IEC958 */ long mmap_size; /* mmap data size */ int mixer_device; /* mixer device */ snd_mixer_eid_t mixer_eid; /* mixer element identification */ char reserved[64]; /* reserved for future... */} snd_pcm_channel_info_t;typedef struct snd_pcm_format { int interleave: 1; /* data are interleaved */ int format; /* SND_PCM_SFMT_XXXX */ int rate; /* rate in Hz */ int voices; /* voices */ int special; /* special (custom) description of format */ char reserved[16]; /* must be filled with zero */} snd_pcm_format_t;typedef struct snd_pcm_channel_params { int channel; /* channel information (IGNORED in kernel space) */ int mode; /* transfer mode */ snd_pcm_format_t format; /* playback format */ snd_pcm_digital_t digital; /* digital setup */ int start_mode; /* start mode - SND_PCM_START_XXXX */ int stop_mode; /* stop mode - SND_PCM_STOP_XXXX */ int time: 1, /* timestamp (gettimeofday) switch */ ust_time: 1; /* UST time switch */ snd_pcm_sync_t sync; /* sync group */ union { struct { int queue_size; /* queue size in bytes */ int fill; /* fill mode - SND_PCM_FILL_XXXX */ int max_fill; /* maximum silence fill in bytes */ } stream; struct { int frag_size; /* requested size of fragment in bytes */ int frags_min; /* capture: minimum of filled fragments for wakeup */ /* playback: minimum number of fragments writeable for wakeup */ int frags_max; /* playback: maximum number of fragments in queue for wakeup */ } block; } buf; /* buffer parameters */ char reserved[64]; /* must be filled with zero */} snd_pcm_channel_params_t;typedef struct snd_pcm_channel_setup { int channel; /* channel information */ int mode; /* transfer mode */ snd_pcm_format_t format; /* real used format */ snd_pcm_digital_t digital; /* digital setup */ union { struct { int queue_size; /* real queue size in bytes */ } stream; struct { int frag_size; /* current fragment size in bytes */ int frags; /* allocated fragments */ int frags_min; /* capture: minimum of filled fragments for wakeup */ /* playback: minimum number of fragments writeable for wakeup */ int frags_max; /* playback: maximum number of fragments in queue for wakeup */ } block; } buf; short msbits_per_sample; /* used most significant bits per sample */ short pad1; /* reserved - must be filled with zero */ char reserved[60]; /* must be filled with zero */} snd_pcm_channel_setup_t;typedef struct snd_pcm_channel_status { int channel; /* channel information */ int mode; /* transfer mode */ int status; /* channel status - SND_PCM_STATUS_XXXX */ unsigned int scount; /* number of bytes processed from playback/capture start */ struct timeval stime; /* time when playback/capture was started */ long long ust_stime; /* UST time when playback/capture was started */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -