⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 asound.h

📁 alsa-driver-1.0.14编译声卡所需要的库
💻 H
📖 第 1 页 / 共 3 页
字号:
/* *  Advanced Linux Sound Architecture - ALSA - Driver *  Copyright (c) 1994-2003 by Jaroslav Kysela <perex@suse.cz>, *                             Abramo Bagnara <abramo@alsa-project.org> * * *   This program is free software; you can redistribute it and/or modify *   it under the terms of the GNU General Public License as published by *   the Free Software Foundation; either version 2 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 General Public License for more details. * *   You should have received a copy of the GNU General Public License *   along with this program; if not, write to the Free Software *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA * */#ifndef __SOUND_ASOUND_H#define __SOUND_ASOUND_H#if defined(LINUX) || defined(__LINUX__) || defined(__linux__)#include <linux/ioctl.h>#ifdef __KERNEL__#include <linux/types.h>#include <linux/time.h>#include <asm/byteorder.h>#if  __LITTLE_ENDIAN == 1234#define SNDRV_LITTLE_ENDIAN#elif __BIG_ENDIAN == 4321#define SNDRV_BIG_ENDIAN#else#error "Unsupported endian..."#endif#else /* !__KERNEL__ */#include <endian.h>#if __BYTE_ORDER == __LITTLE_ENDIAN#define SNDRV_LITTLE_ENDIAN#elif __BYTE_ORDER == __BIG_ENDIAN#define SNDRV_BIG_ENDIAN#else#error "Unsupported endian..."#endif#endif /* __KERNEL **/#endif /* LINUX */#ifndef __KERNEL__#include <sys/time.h>#include <sys/types.h>#endif/* *  protocol version */#define SNDRV_PROTOCOL_VERSION(major, minor, subminor) (((major)<<16)|((minor)<<8)|(subminor))#define SNDRV_PROTOCOL_MAJOR(version) (((version)>>16)&0xffff)#define SNDRV_PROTOCOL_MINOR(version) (((version)>>8)&0xff)#define SNDRV_PROTOCOL_MICRO(version) ((version)&0xff)#define SNDRV_PROTOCOL_INCOMPATIBLE(kversion, uversion) \	(SNDRV_PROTOCOL_MAJOR(kversion) != SNDRV_PROTOCOL_MAJOR(uversion) || \	 (SNDRV_PROTOCOL_MAJOR(kversion) == SNDRV_PROTOCOL_MAJOR(uversion) && \	   SNDRV_PROTOCOL_MINOR(kversion) != SNDRV_PROTOCOL_MINOR(uversion)))/**************************************************************************** *                                                                          * *        Digital audio interface					    * *                                                                          * ****************************************************************************/struct sndrv_aes_iec958 {	unsigned char status[24];	/* AES/IEC958 channel status bits */	unsigned char subcode[147];	/* AES/IEC958 subcode bits */	unsigned char pad;		/* nothing */	unsigned char dig_subframe[4];	/* AES/IEC958 subframe bits */};/**************************************************************************** *                                                                          * *      Section for driver hardware dependent interface - /dev/snd/hw?      * *                                                                          * ****************************************************************************/#define SNDRV_HWDEP_VERSION		SNDRV_PROTOCOL_VERSION(1, 0, 1)enum sndrv_hwdep_iface {	SNDRV_HWDEP_IFACE_OPL2 = 0,	SNDRV_HWDEP_IFACE_OPL3,	SNDRV_HWDEP_IFACE_OPL4,	SNDRV_HWDEP_IFACE_SB16CSP,	/* Creative Signal Processor */	SNDRV_HWDEP_IFACE_EMU10K1,	/* FX8010 processor in EMU10K1 chip */	SNDRV_HWDEP_IFACE_YSS225,	/* Yamaha FX processor */	SNDRV_HWDEP_IFACE_ICS2115,	/* Wavetable synth */	SNDRV_HWDEP_IFACE_SSCAPE,	/* Ensoniq SoundScape ISA card (MC68EC000) */	SNDRV_HWDEP_IFACE_VX,		/* Digigram VX cards */	SNDRV_HWDEP_IFACE_MIXART,	/* Digigram miXart cards */	SNDRV_HWDEP_IFACE_USX2Y,	/* Tascam US122, US224 & US428 usb */	SNDRV_HWDEP_IFACE_EMUX_WAVETABLE, /* EmuX wavetable */		SNDRV_HWDEP_IFACE_BLUETOOTH,	/* Bluetooth audio */	SNDRV_HWDEP_IFACE_USX2Y_PCM,	/* Tascam US122, US224 & US428 rawusb pcm */	SNDRV_HWDEP_IFACE_PCXHR,	/* Digigram PCXHR */	SNDRV_HWDEP_IFACE_SB_RC,	/* SB Extigy/Audigy2NX remote control */	/* Don't forget to change the following: */	SNDRV_HWDEP_IFACE_LAST = SNDRV_HWDEP_IFACE_SB_RC};struct sndrv_hwdep_info {	unsigned int device;		/* WR: device number */	int card;			/* R: card number */	unsigned char id[64];		/* ID (user selectable) */	unsigned char name[80];		/* hwdep name */	int iface;			/* hwdep interface */	unsigned char reserved[64];	/* reserved for future */};/* generic DSP loader */struct sndrv_hwdep_dsp_status {	unsigned int version;		/* R: driver-specific version */	unsigned char id[32];		/* R: driver-specific ID string */	unsigned int num_dsps;		/* R: number of DSP images to transfer */	unsigned int dsp_loaded;	/* R: bit flags indicating the loaded DSPs */	unsigned int chip_ready;	/* R: 1 = initialization finished */	unsigned char reserved[16];	/* reserved for future use */};struct sndrv_hwdep_dsp_image {	unsigned int index;		/* W: DSP index */	unsigned char name[64];		/* W: ID (e.g. file name) */	unsigned char *image;		/* W: binary image */	size_t length;			/* W: size of image in bytes */	unsigned long driver_data;	/* W: driver-specific data */};enum {	SNDRV_HWDEP_IOCTL_PVERSION = _IOR ('H', 0x00, int),	SNDRV_HWDEP_IOCTL_INFO = _IOR ('H', 0x01, struct sndrv_hwdep_info),	SNDRV_HWDEP_IOCTL_DSP_STATUS = _IOR('H', 0x02, struct sndrv_hwdep_dsp_status),	SNDRV_HWDEP_IOCTL_DSP_LOAD   = _IOW('H', 0x03, struct sndrv_hwdep_dsp_image)};/***************************************************************************** *                                                                           * *             Digital Audio (PCM) interface - /dev/snd/pcm??                * *                                                                           * *****************************************************************************/#define SNDRV_PCM_VERSION		SNDRV_PROTOCOL_VERSION(2, 0, 7)typedef unsigned long sndrv_pcm_uframes_t;typedef long sndrv_pcm_sframes_t;enum sndrv_pcm_class {	SNDRV_PCM_CLASS_GENERIC = 0,	/* standard mono or stereo device */	SNDRV_PCM_CLASS_MULTI,		/* multichannel device */	SNDRV_PCM_CLASS_MODEM,		/* software modem class */	SNDRV_PCM_CLASS_DIGITIZER,	/* digitizer class */	/* Don't forget to change the following: */	SNDRV_PCM_CLASS_LAST = SNDRV_PCM_CLASS_DIGITIZER,};enum sndrv_pcm_subclass {	SNDRV_PCM_SUBCLASS_GENERIC_MIX = 0, /* mono or stereo subdevices are mixed together */	SNDRV_PCM_SUBCLASS_MULTI_MIX,	/* multichannel subdevices are mixed together */	/* Don't forget to change the following: */	SNDRV_PCM_SUBCLASS_LAST = SNDRV_PCM_SUBCLASS_MULTI_MIX,};enum sndrv_pcm_stream {	SNDRV_PCM_STREAM_PLAYBACK = 0,	SNDRV_PCM_STREAM_CAPTURE,	SNDRV_PCM_STREAM_LAST = SNDRV_PCM_STREAM_CAPTURE,};enum sndrv_pcm_access {	SNDRV_PCM_ACCESS_MMAP_INTERLEAVED = 0,	/* interleaved mmap */	SNDRV_PCM_ACCESS_MMAP_NONINTERLEAVED, 	/* noninterleaved mmap */	SNDRV_PCM_ACCESS_MMAP_COMPLEX,		/* complex mmap */	SNDRV_PCM_ACCESS_RW_INTERLEAVED,	/* readi/writei */	SNDRV_PCM_ACCESS_RW_NONINTERLEAVED,	/* readn/writen */	SNDRV_PCM_ACCESS_LAST = SNDRV_PCM_ACCESS_RW_NONINTERLEAVED,};enum sndrv_pcm_format {	SNDRV_PCM_FORMAT_S8 = 0,	SNDRV_PCM_FORMAT_U8,	SNDRV_PCM_FORMAT_S16_LE,	SNDRV_PCM_FORMAT_S16_BE,	SNDRV_PCM_FORMAT_U16_LE,	SNDRV_PCM_FORMAT_U16_BE,	SNDRV_PCM_FORMAT_S24_LE,	/* low three bytes */	SNDRV_PCM_FORMAT_S24_BE,	/* low three bytes */	SNDRV_PCM_FORMAT_U24_LE,	/* low three bytes */	SNDRV_PCM_FORMAT_U24_BE,	/* low three bytes */	SNDRV_PCM_FORMAT_S32_LE,	SNDRV_PCM_FORMAT_S32_BE,	SNDRV_PCM_FORMAT_U32_LE,	SNDRV_PCM_FORMAT_U32_BE,	SNDRV_PCM_FORMAT_FLOAT_LE,	/* 4-byte float, IEEE-754 32-bit, range -1.0 to 1.0 */	SNDRV_PCM_FORMAT_FLOAT_BE,	/* 4-byte float, IEEE-754 32-bit, range -1.0 to 1.0 */	SNDRV_PCM_FORMAT_FLOAT64_LE,	/* 8-byte float, IEEE-754 64-bit, range -1.0 to 1.0 */	SNDRV_PCM_FORMAT_FLOAT64_BE,	/* 8-byte float, IEEE-754 64-bit, range -1.0 to 1.0 */	SNDRV_PCM_FORMAT_IEC958_SUBFRAME_LE,	/* IEC-958 subframe, Little Endian */	SNDRV_PCM_FORMAT_IEC958_SUBFRAME_BE,	/* IEC-958 subframe, Big Endian */	SNDRV_PCM_FORMAT_MU_LAW,	SNDRV_PCM_FORMAT_A_LAW,	SNDRV_PCM_FORMAT_IMA_ADPCM,	SNDRV_PCM_FORMAT_MPEG,	SNDRV_PCM_FORMAT_GSM,	SNDRV_PCM_FORMAT_SPECIAL = 31,	SNDRV_PCM_FORMAT_S24_3LE = 32,	/* in three bytes */	SNDRV_PCM_FORMAT_S24_3BE,	/* in three bytes */	SNDRV_PCM_FORMAT_U24_3LE,	/* in three bytes */	SNDRV_PCM_FORMAT_U24_3BE,	/* in three bytes */	SNDRV_PCM_FORMAT_S20_3LE,	/* in three bytes */	SNDRV_PCM_FORMAT_S20_3BE,	/* in three bytes */	SNDRV_PCM_FORMAT_U20_3LE,	/* in three bytes */	SNDRV_PCM_FORMAT_U20_3BE,	/* in three bytes */	SNDRV_PCM_FORMAT_S18_3LE,	/* in three bytes */	SNDRV_PCM_FORMAT_S18_3BE,	/* in three bytes */	SNDRV_PCM_FORMAT_U18_3LE,	/* in three bytes */	SNDRV_PCM_FORMAT_U18_3BE,	/* in three bytes */	SNDRV_PCM_FORMAT_LAST = SNDRV_PCM_FORMAT_U18_3BE,#ifdef SNDRV_LITTLE_ENDIAN	SNDRV_PCM_FORMAT_S16 = SNDRV_PCM_FORMAT_S16_LE,	SNDRV_PCM_FORMAT_U16 = SNDRV_PCM_FORMAT_U16_LE,	SNDRV_PCM_FORMAT_S24 = SNDRV_PCM_FORMAT_S24_LE,	SNDRV_PCM_FORMAT_U24 = SNDRV_PCM_FORMAT_U24_LE,	SNDRV_PCM_FORMAT_S32 = SNDRV_PCM_FORMAT_S32_LE,	SNDRV_PCM_FORMAT_U32 = SNDRV_PCM_FORMAT_U32_LE,	SNDRV_PCM_FORMAT_FLOAT = SNDRV_PCM_FORMAT_FLOAT_LE,	SNDRV_PCM_FORMAT_FLOAT64 = SNDRV_PCM_FORMAT_FLOAT64_LE,	SNDRV_PCM_FORMAT_IEC958_SUBFRAME = SNDRV_PCM_FORMAT_IEC958_SUBFRAME_LE,#endif#ifdef SNDRV_BIG_ENDIAN	SNDRV_PCM_FORMAT_S16 = SNDRV_PCM_FORMAT_S16_BE,	SNDRV_PCM_FORMAT_U16 = SNDRV_PCM_FORMAT_U16_BE,	SNDRV_PCM_FORMAT_S24 = SNDRV_PCM_FORMAT_S24_BE,	SNDRV_PCM_FORMAT_U24 = SNDRV_PCM_FORMAT_U24_BE,	SNDRV_PCM_FORMAT_S32 = SNDRV_PCM_FORMAT_S32_BE,	SNDRV_PCM_FORMAT_U32 = SNDRV_PCM_FORMAT_U32_BE,	SNDRV_PCM_FORMAT_FLOAT = SNDRV_PCM_FORMAT_FLOAT_BE,	SNDRV_PCM_FORMAT_FLOAT64 = SNDRV_PCM_FORMAT_FLOAT64_BE,	SNDRV_PCM_FORMAT_IEC958_SUBFRAME = SNDRV_PCM_FORMAT_IEC958_SUBFRAME_BE,#endif};enum sndrv_pcm_subformat {	SNDRV_PCM_SUBFORMAT_STD = 0,	SNDRV_PCM_SUBFORMAT_LAST = SNDRV_PCM_SUBFORMAT_STD,};#define SNDRV_PCM_INFO_MMAP		0x00000001	/* hardware supports mmap */#define SNDRV_PCM_INFO_MMAP_VALID	0x00000002	/* period data are valid during transfer */#define SNDRV_PCM_INFO_DOUBLE		0x00000004	/* Double buffering needed for PCM start/stop */#define SNDRV_PCM_INFO_BATCH		0x00000010	/* double buffering */#define SNDRV_PCM_INFO_INTERLEAVED	0x00000100	/* channels are interleaved */#define SNDRV_PCM_INFO_NONINTERLEAVED	0x00000200	/* channels are not interleaved */#define SNDRV_PCM_INFO_COMPLEX		0x00000400	/* complex frame organization (mmap only) */#define SNDRV_PCM_INFO_BLOCK_TRANSFER	0x00010000	/* hardware transfer block of samples */#define SNDRV_PCM_INFO_OVERRANGE	0x00020000	/* hardware supports ADC (capture) overrange detection */#define SNDRV_PCM_INFO_RESUME		0x00040000	/* hardware supports stream resume after suspend */#define SNDRV_PCM_INFO_PAUSE		0x00080000	/* pause ioctl is supported */#define SNDRV_PCM_INFO_HALF_DUPLEX	0x00100000	/* only half duplex */#define SNDRV_PCM_INFO_JOINT_DUPLEX	0x00200000	/* playback and capture stream are somewhat correlated */#define SNDRV_PCM_INFO_SYNC_START	0x00400000	/* pcm support some kind of sync go */enum sndrv_pcm_state {	SNDRV_PCM_STATE_OPEN = 0,	/* stream is open */	SNDRV_PCM_STATE_SETUP,		/* stream has a setup */	SNDRV_PCM_STATE_PREPARED,	/* stream is ready to start */	SNDRV_PCM_STATE_RUNNING,	/* stream is running */	SNDRV_PCM_STATE_XRUN,		/* stream reached an xrun */	SNDRV_PCM_STATE_DRAINING,	/* stream is draining */	SNDRV_PCM_STATE_PAUSED,		/* stream is paused */	SNDRV_PCM_STATE_SUSPENDED,	/* hardware is suspended */	SNDRV_PCM_STATE_DISCONNECTED,	/* hardware is disconnected */	SNDRV_PCM_STATE_LAST = SNDRV_PCM_STATE_DISCONNECTED,};enum {	SNDRV_PCM_MMAP_OFFSET_DATA = 0x00000000,	SNDRV_PCM_MMAP_OFFSET_STATUS = 0x80000000,	SNDRV_PCM_MMAP_OFFSET_CONTROL = 0x81000000,};union sndrv_pcm_sync_id {	unsigned char id[16];	unsigned short id16[8];	unsigned int id32[4];};struct sndrv_pcm_info {	unsigned int device;		/* RO/WR (control): device number */	unsigned int subdevice;		/* RO/WR (control): subdevice number */	int stream;			/* RO/WR (control): stream number */	int card;			/* R: card number */	unsigned char id[64];		/* ID (user selectable) */	unsigned char name[80];		/* name of this device */	unsigned char subname[32];	/* subdevice name */	int dev_class;			/* SNDRV_PCM_CLASS_* */	int dev_subclass;		/* SNDRV_PCM_SUBCLASS_* */	unsigned int subdevices_count;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -