📄 soundcard.h
字号:
#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)/* * Two ioctls for special souncard function (OSS/Free only) */#define SOUND_MIXER_AGC _SIOWR('M', 103, int)#define SOUND_MIXER_3DSE _SIOWR('M', 104, int)/* * 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)/* * Calls to set/get the recording gain for the currently active * recording source. These calls automatically map to the right control. * Note that these calls are not supported by all drivers. In this case * the call will return -1 with errno set to EINVAL * * The _MONGAIN work in similar way but set/get the monitoring gain for * the currently selected recording source. */#define SOUND_MIXER_READ_RECGAIN __SIOR ('M', 119, int)#define SOUND_MIXER_WRITE_RECGAIN __SIOWR('M', 119, int)#define SOUND_MIXER_READ_MONGAIN __SIOR ('M', 120, int)#define SOUND_MIXER_WRITE_MONGAIN __SIOWR('M', 120, 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 */# define MIXT_MONODB 15 /* Mono atten. slider (0 to -144) */# define MIXT_STEREODB 16 /* Stereo atten. slider (dual 0 to -144) */# define MIXT_SLIDER 17 /* Slider (mono) with full integer range */# define MIXT_3D 18 /* Possible value range (minvalue to maxvalue) */ /* Note that maxvalue may also be smaller than minvalue */ int maxvalue; int minvalue; 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) */ int dummy; /* Internal use */ int timestamp; char data[64]; /* Misc data (entry type dependent) */ unsigned int enum_mask; /* Mask of allowed enum values */ int control_no; /* SOUND_MIXER_VOLUME..SOUND_MIXER_MIDI */ /* (-1 means not indicated) */ int desc; /* Descriptive code. For future use. */ int filler[16];}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 timestamp; /* Must be set to oss_mixext.timestamp */ int filler[8]; /* Reserved for future use. Initialize to 0 */}oss_mixer_value;#define OPEN_READ PCM_ENABLE_INPUT#define OPEN_WRITE PCM_ENABLE_OUTPUT#define OPEN_READWRITE (OPEN_READ|OPEN_WRITE)typedef struct oss_audioinfo{ int dev; /* Audio device number */ char name[64]; int busy; /* 0, OPEN_READ, OPEN_WRITE or OPEN_READWRITE */ int pid; int caps; /* DSP_CAP_INPUT, DSP_CAP_OUTPUT */ int iformats, oformats; int magic; /* Reserved for internal use */ char cmd[64]; /* Command using the device */ int card_number; int port_number; int mixer_dev; int real_device; /* This is the right /dev/dsp# device to open */ int enabled; /* 1=enabled, 0=device not ready at this moment */ int filler[251];}oss_audioinfo;#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)#define SNDCTL_AUDIOINFO __SIOWR('X', 7, oss_audioinfo)/* ioctl codes 'X', 200-255 are reserved for internal use *//* * Level 2 event types for /dev/sequencer *//* * The 4 most significant bits of byte 0 specify the class of * the event: * * 0x8X = system level events, * 0x9X = device/port specific events, event[1] = device/port, * The last 4 bits give the subtype: * 0x02 = Channel event (event[3] = chn). * 0x01 = note event (event[4] = note). * (0x01 is not used alone but always with bit 0x02). * event[2] = MIDI message code (0x80=note off etc.) * */#define EV_SEQ_LOCAL 0x80#define EV_TIMING 0x81#define EV_CHN_COMMON 0x92#define EV_CHN_VOICE 0x93#define EV_SYSEX 0x94#define EV_SYSTEM 0x95 /* MIDI system and real time messages (input only) *//* * Event types 200 to 220 are reserved for application use. * These numbers will not be used by the driver. *//* * Events for event type EV_CHN_VOICE */#define MIDI_NOTEOFF 0x80#define MIDI_NOTEON 0x90#define MIDI_KEY_PRESSURE 0xA0/* * Events for event type EV_CHN_COMMON */#define MIDI_CTL_CHANGE 0xB0#define MIDI_PGM_CHANGE 0xC0#define MIDI_CHN_PRESSURE 0xD0#define MIDI_PITCH_BEND 0xE0#define MIDI_SYSTEM_PREFIX 0xF0/* * Timer event types */#define TMR_WAIT_REL 1 /* Time relative to the prev time */#define TMR_WAIT_ABS 2 /* Absolute time since TMR_START */#define TMR_STOP 3#define TMR_START 4#define TMR_CONTINUE 5#define TMR_TEMPO 6#define TMR_ECHO 8
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -