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

📄 asound.h

📁 linux 内核源代码
💻 H
📖 第 1 页 / 共 3 页
字号:
/* *  Advanced Linux Sound Architecture - ALSA - Driver *  Copyright (c) 1994-2003 by Jaroslav Kysela <perex@perex.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#ifdef __KERNEL__#include <linux/ioctl.h>#include <linux/types.h>#include <linux/time.h>#include <asm/byteorder.h>#ifdef  __LITTLE_ENDIAN#define SNDRV_LITTLE_ENDIAN#else#ifdef __BIG_ENDIAN#define SNDRV_BIG_ENDIAN#else#error "Unsupported endian..."#endif#endif#endif /* __KERNEL__ **//* *  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 snd_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_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 */	SNDRV_HWDEP_IFACE_HDA,		/* HD-audio */	/* Don't forget to change the following: */	SNDRV_HWDEP_IFACE_LAST = SNDRV_HWDEP_IFACE_SB_RC};struct snd_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 snd_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 snd_hwdep_dsp_image {	unsigned int index;		/* W: DSP index */	unsigned char name[64];		/* W: ID (e.g. file name) */	unsigned char __user *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 snd_hwdep_info),	SNDRV_HWDEP_IOCTL_DSP_STATUS = _IOR('H', 0x02, struct snd_hwdep_dsp_status),	SNDRV_HWDEP_IOCTL_DSP_LOAD   = _IOW('H', 0x03, struct snd_hwdep_dsp_image)};/***************************************************************************** *                                                                           * *             Digital Audio (PCM) interface - /dev/snd/pcm??                * *                                                                           * *****************************************************************************/#define SNDRV_PCM_VERSION		SNDRV_PROTOCOL_VERSION(2, 0, 8)typedef unsigned long snd_pcm_uframes_t;typedef signed long snd_pcm_sframes_t;enum {	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_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_PLAYBACK = 0,	SNDRV_PCM_STREAM_CAPTURE,	SNDRV_PCM_STREAM_LAST = SNDRV_PCM_STREAM_CAPTURE,};typedef int __bitwise snd_pcm_access_t;#define	SNDRV_PCM_ACCESS_MMAP_INTERLEAVED	((__force snd_pcm_access_t) 0) /* interleaved mmap */#define	SNDRV_PCM_ACCESS_MMAP_NONINTERLEAVED	((__force snd_pcm_access_t) 1) /* noninterleaved mmap */#define	SNDRV_PCM_ACCESS_MMAP_COMPLEX		((__force snd_pcm_access_t) 2) /* complex mmap */#define	SNDRV_PCM_ACCESS_RW_INTERLEAVED		((__force snd_pcm_access_t) 3) /* readi/writei */#define	SNDRV_PCM_ACCESS_RW_NONINTERLEAVED	((__force snd_pcm_access_t) 4) /* readn/writen */#define	SNDRV_PCM_ACCESS_LAST		SNDRV_PCM_ACCESS_RW_NONINTERLEAVEDtypedef int __bitwise snd_pcm_format_t;#define	SNDRV_PCM_FORMAT_S8	((__force snd_pcm_format_t) 0)#define	SNDRV_PCM_FORMAT_U8	((__force snd_pcm_format_t) 1)#define	SNDRV_PCM_FORMAT_S16_LE	((__force snd_pcm_format_t) 2)#define	SNDRV_PCM_FORMAT_S16_BE	((__force snd_pcm_format_t) 3)#define	SNDRV_PCM_FORMAT_U16_LE	((__force snd_pcm_format_t) 4)#define	SNDRV_PCM_FORMAT_U16_BE	((__force snd_pcm_format_t) 5)#define	SNDRV_PCM_FORMAT_S24_LE	((__force snd_pcm_format_t) 6) /* low three bytes */#define	SNDRV_PCM_FORMAT_S24_BE	((__force snd_pcm_format_t) 7) /* low three bytes */#define	SNDRV_PCM_FORMAT_U24_LE	((__force snd_pcm_format_t) 8) /* low three bytes */#define	SNDRV_PCM_FORMAT_U24_BE	((__force snd_pcm_format_t) 9) /* low three bytes */#define	SNDRV_PCM_FORMAT_S32_LE	((__force snd_pcm_format_t) 10)#define	SNDRV_PCM_FORMAT_S32_BE	((__force snd_pcm_format_t) 11)#define	SNDRV_PCM_FORMAT_U32_LE	((__force snd_pcm_format_t) 12)#define	SNDRV_PCM_FORMAT_U32_BE	((__force snd_pcm_format_t) 13)#define	SNDRV_PCM_FORMAT_FLOAT_LE	((__force snd_pcm_format_t) 14) /* 4-byte float, IEEE-754 32-bit, range -1.0 to 1.0 */#define	SNDRV_PCM_FORMAT_FLOAT_BE	((__force snd_pcm_format_t) 15) /* 4-byte float, IEEE-754 32-bit, range -1.0 to 1.0 */#define	SNDRV_PCM_FORMAT_FLOAT64_LE	((__force snd_pcm_format_t) 16) /* 8-byte float, IEEE-754 64-bit, range -1.0 to 1.0 */#define	SNDRV_PCM_FORMAT_FLOAT64_BE	((__force snd_pcm_format_t) 17) /* 8-byte float, IEEE-754 64-bit, range -1.0 to 1.0 */#define	SNDRV_PCM_FORMAT_IEC958_SUBFRAME_LE ((__force snd_pcm_format_t) 18) /* IEC-958 subframe, Little Endian */#define	SNDRV_PCM_FORMAT_IEC958_SUBFRAME_BE ((__force snd_pcm_format_t) 19) /* IEC-958 subframe, Big Endian */#define	SNDRV_PCM_FORMAT_MU_LAW		((__force snd_pcm_format_t) 20)#define	SNDRV_PCM_FORMAT_A_LAW		((__force snd_pcm_format_t) 21)#define	SNDRV_PCM_FORMAT_IMA_ADPCM	((__force snd_pcm_format_t) 22)#define	SNDRV_PCM_FORMAT_MPEG		((__force snd_pcm_format_t) 23)#define	SNDRV_PCM_FORMAT_GSM		((__force snd_pcm_format_t) 24)#define	SNDRV_PCM_FORMAT_SPECIAL	((__force snd_pcm_format_t) 31)#define	SNDRV_PCM_FORMAT_S24_3LE	((__force snd_pcm_format_t) 32)	/* in three bytes */#define	SNDRV_PCM_FORMAT_S24_3BE	((__force snd_pcm_format_t) 33)	/* in three bytes */#define	SNDRV_PCM_FORMAT_U24_3LE	((__force snd_pcm_format_t) 34)	/* in three bytes */#define	SNDRV_PCM_FORMAT_U24_3BE	((__force snd_pcm_format_t) 35)	/* in three bytes */#define	SNDRV_PCM_FORMAT_S20_3LE	((__force snd_pcm_format_t) 36)	/* in three bytes */#define	SNDRV_PCM_FORMAT_S20_3BE	((__force snd_pcm_format_t) 37)	/* in three bytes */#define	SNDRV_PCM_FORMAT_U20_3LE	((__force snd_pcm_format_t) 38)	/* in three bytes */#define	SNDRV_PCM_FORMAT_U20_3BE	((__force snd_pcm_format_t) 39)	/* in three bytes */#define	SNDRV_PCM_FORMAT_S18_3LE	((__force snd_pcm_format_t) 40)	/* in three bytes */#define	SNDRV_PCM_FORMAT_S18_3BE	((__force snd_pcm_format_t) 41)	/* in three bytes */#define	SNDRV_PCM_FORMAT_U18_3LE	((__force snd_pcm_format_t) 42)	/* in three bytes */#define	SNDRV_PCM_FORMAT_U18_3BE	((__force snd_pcm_format_t) 43)	/* in three bytes */#define	SNDRV_PCM_FORMAT_LAST		SNDRV_PCM_FORMAT_U18_3BE#ifdef SNDRV_LITTLE_ENDIAN#define	SNDRV_PCM_FORMAT_S16		SNDRV_PCM_FORMAT_S16_LE#define	SNDRV_PCM_FORMAT_U16		SNDRV_PCM_FORMAT_U16_LE#define	SNDRV_PCM_FORMAT_S24		SNDRV_PCM_FORMAT_S24_LE#define	SNDRV_PCM_FORMAT_U24		SNDRV_PCM_FORMAT_U24_LE#define	SNDRV_PCM_FORMAT_S32		SNDRV_PCM_FORMAT_S32_LE#define	SNDRV_PCM_FORMAT_U32		SNDRV_PCM_FORMAT_U32_LE#define	SNDRV_PCM_FORMAT_FLOAT		SNDRV_PCM_FORMAT_FLOAT_LE#define	SNDRV_PCM_FORMAT_FLOAT64	SNDRV_PCM_FORMAT_FLOAT64_LE#define	SNDRV_PCM_FORMAT_IEC958_SUBFRAME SNDRV_PCM_FORMAT_IEC958_SUBFRAME_LE#endif#ifdef SNDRV_BIG_ENDIAN#define	SNDRV_PCM_FORMAT_S16		SNDRV_PCM_FORMAT_S16_BE#define	SNDRV_PCM_FORMAT_U16		SNDRV_PCM_FORMAT_U16_BE#define	SNDRV_PCM_FORMAT_S24		SNDRV_PCM_FORMAT_S24_BE#define	SNDRV_PCM_FORMAT_U24		SNDRV_PCM_FORMAT_U24_BE#define	SNDRV_PCM_FORMAT_S32		SNDRV_PCM_FORMAT_S32_BE#define	SNDRV_PCM_FORMAT_U32		SNDRV_PCM_FORMAT_U32_BE#define	SNDRV_PCM_FORMAT_FLOAT		SNDRV_PCM_FORMAT_FLOAT_BE#define	SNDRV_PCM_FORMAT_FLOAT64	SNDRV_PCM_FORMAT_FLOAT64_BE#define	SNDRV_PCM_FORMAT_IEC958_SUBFRAME SNDRV_PCM_FORMAT_IEC958_SUBFRAME_BE#endiftypedef int __bitwise snd_pcm_subformat_t;#define	SNDRV_PCM_SUBFORMAT_STD		((__force snd_pcm_subformat_t) 0)#define	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 */typedef int __bitwise snd_pcm_state_t;#define	SNDRV_PCM_STATE_OPEN		((__force snd_pcm_state_t) 0) /* stream is open */#define	SNDRV_PCM_STATE_SETUP		((__force snd_pcm_state_t) 1) /* stream has a setup */#define	SNDRV_PCM_STATE_PREPARED	((__force snd_pcm_state_t) 2) /* stream is ready to start */#define	SNDRV_PCM_STATE_RUNNING		((__force snd_pcm_state_t) 3) /* stream is running */#define	SNDRV_PCM_STATE_XRUN		((__force snd_pcm_state_t) 4) /* stream reached an xrun */#define	SNDRV_PCM_STATE_DRAINING	((__force snd_pcm_state_t) 5) /* stream is draining */#define	SNDRV_PCM_STATE_PAUSED		((__force snd_pcm_state_t) 6) /* stream is paused */#define	SNDRV_PCM_STATE_SUSPENDED	((__force snd_pcm_state_t) 7) /* hardware is suspended */#define	SNDRV_PCM_STATE_DISCONNECTED	((__force snd_pcm_state_t) 8) /* hardware is disconnected */#define	SNDRV_PCM_STATE_LAST		SNDRV_PCM_STATE_DISCONNECTEDenum {	SNDRV_PCM_MMAP_OFFSET_DATA = 0x00000000,	SNDRV_PCM_MMAP_OFFSET_STATUS = 0x80000000,	SNDRV_PCM_MMAP_OFFSET_CONTROL = 0x81000000,};union snd_pcm_sync_id {	unsigned char id[16];	unsigned short id16[8];	unsigned int id32[4];};struct snd_pcm_info {	unsigned int device;		/* RO/WR (control): device number */	unsigned int subdevice;		/* RO/WR (control): subdevice number */	int stream;			/* RO/WR (control): stream direction */	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;	unsigned int subdevices_avail;	union snd_pcm_sync_id sync;	/* hardware synchronization ID */	unsigned char reserved[64];	/* reserved for future... */};typedef int __bitwise snd_pcm_hw_param_t;#define	SNDRV_PCM_HW_PARAM_ACCESS	((__force snd_pcm_hw_param_t) 0) /* Access type */#define	SNDRV_PCM_HW_PARAM_FORMAT	((__force snd_pcm_hw_param_t) 1) /* Format */#define	SNDRV_PCM_HW_PARAM_SUBFORMAT	((__force snd_pcm_hw_param_t) 2) /* Subformat */#define	SNDRV_PCM_HW_PARAM_FIRST_MASK	SNDRV_PCM_HW_PARAM_ACCESS#define	SNDRV_PCM_HW_PARAM_LAST_MASK	SNDRV_PCM_HW_PARAM_SUBFORMAT#define	SNDRV_PCM_HW_PARAM_SAMPLE_BITS	((__force snd_pcm_hw_param_t) 8) /* Bits per sample */#define	SNDRV_PCM_HW_PARAM_FRAME_BITS	((__force snd_pcm_hw_param_t) 9) /* Bits per frame */

⌨️ 快捷键说明

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