📄 soundcard.h
字号:
int offs; /* If required by the device (0 if not used) */ unsigned char data[4000]; /* NOTE! 4000 is not 4k */ } copr_buffer;typedef struct copr_debug_buf { int command; /* Used internally. Set to 0 */ int parm1; int parm2; int flags; int len; /* Length of data in bytes */ } copr_debug_buf;typedef struct copr_msg { int len; unsigned char data[4000]; } copr_msg;#define SNDCTL_COPR_RESET __SIO ('C', 0)#define SNDCTL_COPR_LOAD __SIOWR('C', 1, copr_buffer)#define SNDCTL_COPR_RDATA __SIOWR('C', 2, copr_debug_buf)#define SNDCTL_COPR_RCODE __SIOWR('C', 3, copr_debug_buf)#define SNDCTL_COPR_WDATA __SIOW ('C', 4, copr_debug_buf)#define SNDCTL_COPR_WCODE __SIOW ('C', 5, copr_debug_buf)#define SNDCTL_COPR_RUN __SIOWR('C', 6, copr_debug_buf)#define SNDCTL_COPR_HALT __SIOWR('C', 7, copr_debug_buf)#define SNDCTL_COPR_SENDMSG __SIOWR('C', 8, copr_msg)#define SNDCTL_COPR_RCVMSG __SIOR ('C', 9, copr_msg)/********************************************* * IOCTL commands for /dev/mixer */ /* * Mixer devices * * There can be up to 20 different analog mixer channels. The * SOUND_MIXER_NRDEVICES gives the currently supported maximum. * The SOUND_MIXER_READ_DEVMASK returns a bitmask which tells * the devices supported by the particular mixer. */#define SOUND_MIXER_NRDEVICES 28#define SOUND_MIXER_VOLUME 0#define SOUND_MIXER_BASS 1#define SOUND_MIXER_TREBLE 2#define SOUND_MIXER_SYNTH 3#define SOUND_MIXER_PCM 4#define SOUND_MIXER_SPEAKER 5#define SOUND_MIXER_LINE 6#define SOUND_MIXER_MIC 7#define SOUND_MIXER_CD 8#define SOUND_MIXER_IMIX 9 /* Recording monitor */#define SOUND_MIXER_ALTPCM 10#define SOUND_MIXER_RECLEV 11 /* Recording level */#define SOUND_MIXER_IGAIN 12 /* Input gain */#define SOUND_MIXER_OGAIN 13 /* Output gain *//* * The AD1848 codec and compatibles have three line level inputs * (line, aux1 and aux2). Since each card manufacturer have assigned * different meanings to these inputs, it's inpractical to assign * specific meanings (line, cd, synth etc.) to them. */#define SOUND_MIXER_LINE1 14 /* Input source 1 (aux1) */#define SOUND_MIXER_LINE2 15 /* Input source 2 (aux2) */#define SOUND_MIXER_LINE3 16 /* Input source 3 (line) */#define SOUND_MIXER_DIGITAL1 17 /* Digital (input) 1 */#define SOUND_MIXER_DIGITAL2 18 /* Digital (input) 2 */#define SOUND_MIXER_DIGITAL3 19 /* Digital (input) 3 */#define SOUND_MIXER_PHONEIN 20 /* Phone input */#define SOUND_MIXER_PHONEOUT 21 /* Phone output */#define SOUND_MIXER_VIDEO 22 /* Video/TV (audio) in */#define SOUND_MIXER_RADIO 23 /* Radio in */#define SOUND_MIXER_MONITOR 24 /* Monitor (usually mic) volume */#define SOUND_MIXER_DEPTH 25 /* 3D "depth"/"space" parameter */#define SOUND_MIXER_CENTER 26 /* 3D "center" parameter */#define SOUND_MIXER_MIDI 27 /* Alternative for "synth" *//* Some on/off settings (SOUND_SPECIAL_MIN - SOUND_SPECIAL_MAX) *//* Not counted to SOUND_MIXER_NRDEVICES, but use the same number space */#define SOUND_ONOFF_MIN 28#define SOUND_ONOFF_MAX 30/* Note! Number 31 cannot be used since the sign bit is reserved */#define SOUND_MIXER_NONE 31/* * The following unsupported macros are no longer functional. * Use SOUND_MIXER_PRIVATE# macros in future. */#define SOUND_MIXER_ENHANCE SOUND_MIXER_NONE#define SOUND_MIXER_MUTE SOUND_MIXER_NONE#define SOUND_MIXER_LOUD SOUND_MIXER_NONE#define SOUND_DEVICE_LABELS {"Vol ", "Bass ", "Trebl", "Synth", "Pcm ", "Spkr ", "Line ", \ "Mic ", "CD ", "Mix ", "Pcm2 ", "Rec ", "IGain", "OGain", \ "Line1", "Line2", "Line3", "Digital1", "Digital2", "Digital3", \ "PhoneIn", "PhoneOut", "Video", "Radio", "Monitor", \ "Depth", "Center", "MIDI"}#define SOUND_DEVICE_NAMES {"vol", "bass", "treble", "synth", "pcm", "speaker", "line", \ "mic", "cd", "mix", "pcm2", "rec", "igain", "ogain", \ "line1", "line2", "line3", "dig1", "dig2", "dig3", \ "phin", "phout", "video", "radio", "monitor", \ "depth", "center", "midi"}/* Device bitmask identifiers */#define SOUND_MIXER_RECSRC 0xff /* Arg contains a bit for each recording source */#define SOUND_MIXER_DEVMASK 0xfe /* Arg contains a bit for each supported device */#define SOUND_MIXER_RECMASK 0xfd /* Arg contains a bit for each supported recording source */#define SOUND_MIXER_CAPS 0xfc# define SOUND_CAP_EXCL_INPUT 0x00000001 /* Only one recording source at a time */#define SOUND_MIXER_STEREODEVS 0xfb /* Mixer channels supporting stereo *//* Device mask bits */#define SOUND_MASK_VOLUME (1 << SOUND_MIXER_VOLUME)#define SOUND_MASK_BASS (1 << SOUND_MIXER_BASS)#define SOUND_MASK_TREBLE (1 << SOUND_MIXER_TREBLE)#define SOUND_MASK_SYNTH (1 << SOUND_MIXER_SYNTH)#define SOUND_MASK_PCM (1 << SOUND_MIXER_PCM)#define SOUND_MASK_SPEAKER (1 << SOUND_MIXER_SPEAKER)#define SOUND_MASK_LINE (1 << SOUND_MIXER_LINE)#define SOUND_MASK_MIC (1 << SOUND_MIXER_MIC)#define SOUND_MASK_CD (1 << SOUND_MIXER_CD)#define SOUND_MASK_IMIX (1 << SOUND_MIXER_IMIX)#define SOUND_MASK_ALTPCM (1 << SOUND_MIXER_ALTPCM)#define SOUND_MASK_RECLEV (1 << SOUND_MIXER_RECLEV)#define SOUND_MASK_IGAIN (1 << SOUND_MIXER_IGAIN)#define SOUND_MASK_OGAIN (1 << SOUND_MIXER_OGAIN)#define SOUND_MASK_LINE1 (1 << SOUND_MIXER_LINE1)#define SOUND_MASK_LINE2 (1 << SOUND_MIXER_LINE2)#define SOUND_MASK_LINE3 (1 << SOUND_MIXER_LINE3)#define SOUND_MASK_DIGITAL1 (1 << SOUND_MIXER_DIGITAL1)#define SOUND_MASK_DIGITAL2 (1 << SOUND_MIXER_DIGITAL2)#define SOUND_MASK_DIGITAL3 (1 << SOUND_MIXER_DIGITAL3)#define SOUND_MASK_PHONEIN (1 << SOUND_MIXER_PHONEIN)#define SOUND_MASK_PHONEOUT (1 << SOUND_MIXER_PHONEOUT)#define SOUND_MASK_RADIO (1 << SOUND_MIXER_RADIO)#define SOUND_MASK_VIDEO (1 << SOUND_MIXER_VIDEO)#define SOUND_MASK_MONITOR (1 << SOUND_MIXER_MONITOR)#define SOUND_MASK_DEPTH (1 << SOUND_MIXER_DEPTH)#define SOUND_MASK_CENTER (1 << SOUND_MIXER_CENTER)#define SOUND_MASK_MIDI (1 << SOUND_MIXER_MIDI)/* Obsolete macros */#define SOUND_MASK_MUTE (1 << SOUND_MIXER_MUTE)#define SOUND_MASK_ENHANCE (1 << SOUND_MIXER_ENHANCE)#define SOUND_MASK_LOUD (1 << SOUND_MIXER_LOUD)#define MIXER_READ(dev) __SIOR('M', dev, int)#define SOUND_MIXER_READ_VOLUME MIXER_READ(SOUND_MIXER_VOLUME)#define SOUND_MIXER_READ_BASS MIXER_READ(SOUND_MIXER_BASS)#define SOUND_MIXER_READ_TREBLE MIXER_READ(SOUND_MIXER_TREBLE)#define SOUND_MIXER_READ_SYNTH MIXER_READ(SOUND_MIXER_SYNTH)#define SOUND_MIXER_READ_PCM MIXER_READ(SOUND_MIXER_PCM)#define SOUND_MIXER_READ_SPEAKER MIXER_READ(SOUND_MIXER_SPEAKER)#define SOUND_MIXER_READ_LINE MIXER_READ(SOUND_MIXER_LINE)#define SOUND_MIXER_READ_MIC MIXER_READ(SOUND_MIXER_MIC)#define SOUND_MIXER_READ_CD MIXER_READ(SOUND_MIXER_CD)#define SOUND_MIXER_READ_IMIX MIXER_READ(SOUND_MIXER_IMIX)#define SOUND_MIXER_READ_ALTPCM MIXER_READ(SOUND_MIXER_ALTPCM)#define SOUND_MIXER_READ_RECLEV MIXER_READ(SOUND_MIXER_RECLEV)#define SOUND_MIXER_READ_IGAIN MIXER_READ(SOUND_MIXER_IGAIN)#define SOUND_MIXER_READ_OGAIN MIXER_READ(SOUND_MIXER_OGAIN)#define SOUND_MIXER_READ_LINE1 MIXER_READ(SOUND_MIXER_LINE1)#define SOUND_MIXER_READ_LINE2 MIXER_READ(SOUND_MIXER_LINE2)#define SOUND_MIXER_READ_LINE3 MIXER_READ(SOUND_MIXER_LINE3)/* Obsolete macros */#define SOUND_MIXER_READ_MUTE MIXER_READ(SOUND_MIXER_MUTE)#define SOUND_MIXER_READ_ENHANCE MIXER_READ(SOUND_MIXER_ENHANCE)#define SOUND_MIXER_READ_LOUD MIXER_READ(SOUND_MIXER_LOUD)#define SOUND_MIXER_READ_RECSRC MIXER_READ(SOUND_MIXER_RECSRC)#define SOUND_MIXER_READ_DEVMASK MIXER_READ(SOUND_MIXER_DEVMASK)#define SOUND_MIXER_READ_RECMASK MIXER_READ(SOUND_MIXER_RECMASK)#define SOUND_MIXER_READ_STEREODEVS MIXER_READ(SOUND_MIXER_STEREODEVS)#define SOUND_MIXER_READ_CAPS MIXER_READ(SOUND_MIXER_CAPS)#define MIXER_WRITE(dev) __SIOWR('M', dev, int)#define SOUND_MIXER_WRITE_VOLUME MIXER_WRITE(SOUND_MIXER_VOLUME)#define SOUND_MIXER_WRITE_BASS MIXER_WRITE(SOUND_MIXER_BASS)#define SOUND_MIXER_WRITE_TREBLE MIXER_WRITE(SOUND_MIXER_TREBLE)#define SOUND_MIXER_WRITE_SYNTH MIXER_WRITE(SOUND_MIXER_SYNTH)#define SOUND_MIXER_WRITE_PCM MIXER_WRITE(SOUND_MIXER_PCM)#define SOUND_MIXER_WRITE_SPEAKER MIXER_WRITE(SOUND_MIXER_SPEAKER)#define SOUND_MIXER_WRITE_LINE MIXER_WRITE(SOUND_MIXER_LINE)#define SOUND_MIXER_WRITE_MIC MIXER_WRITE(SOUND_MIXER_MIC)#define SOUND_MIXER_WRITE_CD MIXER_WRITE(SOUND_MIXER_CD)#define SOUND_MIXER_WRITE_IMIX MIXER_WRITE(SOUND_MIXER_IMIX)#define SOUND_MIXER_WRITE_ALTPCM MIXER_WRITE(SOUND_MIXER_ALTPCM)#define SOUND_MIXER_WRITE_RECLEV MIXER_WRITE(SOUND_MIXER_RECLEV)#define SOUND_MIXER_WRITE_IGAIN MIXER_WRITE(SOUND_MIXER_IGAIN)#define SOUND_MIXER_WRITE_OGAIN MIXER_WRITE(SOUND_MIXER_OGAIN)#define SOUND_MIXER_WRITE_LINE1 MIXER_WRITE(SOUND_MIXER_LINE1)#define SOUND_MIXER_WRITE_LINE2 MIXER_WRITE(SOUND_MIXER_LINE2)#define SOUND_MIXER_WRITE_LINE3 MIXER_WRITE(SOUND_MIXER_LINE3)/* Obsolete macros */#define SOUND_MIXER_WRITE_MUTE MIXER_WRITE(SOUND_MIXER_MUTE)#define SOUND_MIXER_WRITE_ENHANCE MIXER_WRITE(SOUND_MIXER_ENHANCE)#define SOUND_MIXER_WRITE_LOUD MIXER_WRITE(SOUND_MIXER_LOUD)#define SOUND_MIXER_WRITE_RECSRC MIXER_WRITE(SOUND_MIXER_RECSRC)typedef struct mixer_info{ char id[16]; char name[32]; int modify_counter; int fillers[10];} mixer_info;typedef struct _old_mixer_info /* Obsolete */{ char id[16]; char name[32];} _old_mixer_info;#define SOUND_MIXER_INFO __SIOR ('M', 101, mixer_info)#define SOUND_OLD_MIXER_INFO __SIOR ('M', 101, _old_mixer_info)/* * A mechanism for accessing "proprietary" mixer features. This method * permits passing 128 bytes of arbitrary data between a mixer application * and the mixer driver. Interpretation of the record is defined by * the particular mixer driver. */typedef unsigned char mixer_record[128];#define SOUND_MIXER_ACCESS __SIOWR('M', 102, mixer_record)/* * The SOUND_MIXER_PRIVATE# commands can be redefined by low level drivers. * These features can be used when accessing device specific features. */#define SOUND_MIXER_PRIVATE1 __SIOWR('M', 111, int)#define SOUND_MIXER_PRIVATE2 __SIOWR('M', 112, int)#define SOUND_MIXER_PRIVATE3 __SIOWR('M', 113, int)#define SOUND_MIXER_PRIVATE4 __SIOWR('M', 114, int)#define SOUND_MIXER_PRIVATE5 __SIOWR('M', 115, int)/* * SOUND_MIXER_GETLEVELS and SOUND_MIXER_SETLEVELS calls can be used * for querying current mixer settings from the driver and for loading * default volume settings _prior_ activating the mixer (loading * doesn't affect current state of the mixer hardware). These calls * are for internal use only. */typedef struct mixer_vol_table { int num; /* Index to volume table */ char name[32]; int levels[32];} mixer_vol_table;#define SOUND_MIXER_GETLEVELS __SIOWR('M', 116, mixer_vol_table)#define SOUND_MIXER_SETLEVELS __SIOWR('M', 117, mixer_vol_table)/* * An ioctl for identifying the driver version. It will return value * of the SOUND_VERSION macro used when compiling the driver. * This call was introduced in OSS version 3.6 and it will not work * with earlier versions (returns EINVAL). */#define OSS_GETVERSION __SIOR ('M', 118, int)/************************************************* * Extended mixer interface (OSS 4.0 and later) * *************************************************/#define SYSINFO_FILL_SIZE 256typedef struct oss_sysinfo { char product[32]; /* For example OSS/Free, OSS/Linux or OSS/Solaris */ char version[32]; /* For example 4.0a */ int versionnum; /* See OSS_GETVERSION */ char options[128]; /* Reserved */ int numaudios; /* # of audio/dsp devices */ int openedaudio[8]; /* Bit mask telling which audio devices are busy */ int numsynths; /* # of availavle synth devices */ int nummidis; /* # of available MIDI ports */ int numtimers; /* # of available timer devices */ int nummixers; /* # of mixer devices */ int filler[SYSINFO_FILL_SIZE];/* For future expansion (set to -1) */} oss_sysinfo;typedef struct oss_mixext { int dev; /* Mixer device number */ int ctrl; /* Controller number */ int type; /* Entry type */# define MIXT_DEVROOT 0 /* Device root entry */# define MIXT_GROUP 1 /* Controller group */# define MIXT_ONOFF 2 /* OFF (0) or ON (1) */# define MIXT_ENUM 3 /* Enumerated (0 to maxvalue) */# define MIXT_MONOSLIDER 4 /* Mono slider (0 to 100) */# define MIXT_STEREOSLIDER 5 /* Stereo slider (dual 0 to 100) */# define MIXT_MESSAGE 6 /* (Readable) textual message */# define MIXT_MONOVU 7 /* VU meter value (mono) */# define MIXT_STEREOVU 8 /* VU meter value (stereo) */# define MIXT_MONOPEAK 9 /* VU meter peak value (mono) */# define MIXT_STEREOPEAK 10 /* VU meter peak value (stereo) */# define MIXT_RADIOGROUP 11 /* Radio button group */# define MIXT_MARKER 12 /* Separator between normal and extension entries */# define MIXT_VALUE 13 /* Decimal value entry */# define MIXT_HEXVALUE 14 /* Hexadecimal value entry */ int maxvalue; /* Possible value range (0 to maxvalue) */ int flags;# define MIXF_READABLE 0x00000001 /* Has readable value */# define MIXF_WRITEABLE 0x00000002 /* Has writeable value */ char id[16]; /* Mnemonic ID (for linking with user space info) */ int parent; /* Entry# of parent (group) node (-1 if root) */ void *handler; /* Internal use */ char data[64]; /* Misc data (entry type dependent) */} oss_mixext;typedef struct oss_mixext_root { char id[16]; char name[48];} oss_mixext_root;typedef struct oss_mixer_value{ int dev; int ctrl; int value; int flags; /* Reserved for future use. Initialize to 0 */ int filler[8]; /* Reserved for future use. Initialize to 0 */}oss_mixer_value;#define OSS_SYSINFO __SIOR ('X', 1, oss_sysinfo)#define SNDCTL_MIX_NRMIX __SIOR ('X', 2, int)#define SNDCTL_MIX_NREXT __SIOWR('X', 3, int)#define SNDCTL_MIX_EXTINFO __SIOWR('X', 4, oss_mixext)#define SNDCTL_MIX_READ __SIOWR('X', 5, oss_mixer_value)#define SNDCTL_MIX_WRITE __SIOWR('X', 6, oss_mixer_value)/* * Level 2 event types for /dev/sequencer *//* * The 4 most significant bits of byte 0 specify the class of
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -