Linux声卡驱动相关的ioctl属性

The ioctl() system call

All OSS system calls follow the familiar Posix/Unix semantics. Please look at the standard manual page (man ioctl) for more informtion. This section will only explain some OSS related details. The error codes returned by OSS as well as their meaning will be described in the Possible error codes (errno) returned by OSS calls section.

The available ioctl call set depends on the device and the calls will be described in the chapters for each device type. All ioctl calls are non-blocking ones except few exceptions that are used to wait until the device has played all of the data written to it.

Some of the ioctl calls have no parameters at all. However most of them have one parameter that is a pointer to an integer variavle or to some structure. The function return of the ioctl() system call has no defined meaning. However return value of -1 means that an error has occurred. In that case the errno system variable will contain the exact error code (see above).

Even if the ioctl call didn't return error it's necessary to check the argument value to see if the device accepted the requested value. Many ioctl calls will use the nearest possible value of the one requested by the application was not supported. For example if an application requests sampling rate of 44000 Hz the device may change it to 44100 Hz. It's responsibility of the application to check if the returned value is suitable for it's purposes.

Most ioctl calls will return only when the application did something seriously wrong. Another reason to an error is that the device is not working properly. If a minor error occurred the ioctl call will just silently modify the argument to the value being actually used.

With OSS the return value of ioctl() is used only for error reporting. The return value has no defined meaning when the call was successful (and it will be 0 in most cases). Applications that use the ioctl return value are likely to fail under different OSS implementations.

Ioctl calls available on audio devices

Source Explanation
SNDCTL_DSP_BIND_CHANNEL Route stereo output to the specified channels (obsolete)
SNDCTL_DSP_CHANNELS Set the number of audio channels
SNDCTL_DSP_COOKEDMODE Disable/enable the "on fly" format conversions made by the OSS software
SNDCTL_DSP_CURRENT_IPTR Returns the current recording position
SNDCTL_DSP_CURRENT_OPTR Returns the current playback position
SNDCTL_DSP_GETBLKSIZE Get the current fragment size (obsolete)
SNDCTL_DSP_GETCAPS Returns the capabilities of an audio device
SNDCTL_DSP_GETCHANNELMASK Returns the bindings supported by the device (obsolete)
SNDCTL_DSP_GET_CHNORDER Get the channel ordering of a multi channel device
SNDCTL_DSP_GETERROR Returns audio device error information
SNDCTL_DSP_GETFMTS Returns a list of natively supported sample formats
SNDCTL_DSP_GETIPEAKS The peak levels for all recording channels
SNDCTL_DSP_GETIPTR Returns the current recording pointer (obsolete)
SNDCTL_DSP_GETISPACE Returns the amount of recorded data that can be read without blocking.
SNDCTL_DSP_GETODELAY Returns the playback buffering delay
SNDCTL_DSP_GETOPEAKS The peak levels for all playback channels
SNDCTL_DSP_GETOPTR Returns the current playback pointer (obsolete)
SNDCTL_DSP_GETOSPACE Returns the amount of playback data that can be written without blocking.
SNDCTL_DSP_GET_PLAYTGT_NAMES Returns labels for the currently available output routings
SNDCTL_DSP_GET_PLAYTGT Returns the current output routing
SNDCTL_DSP_GETPLAYVOL Returns the current audio playback volume
SNDCTL_DSP_GET_RECSRC_NAMES Returns labels for the currently available recording sources
SNDCTL_DSP_GET_RECSRC Returns the current recording source
SNDCTL_DSP_GETRECVOL Returns the current audio recording level
SNDCTL_DSP_GETTRIGGER Returns the current trigger bits (obsolete)
SNDCTL_DSP_HALT_INPUT Aborts audio recording operation
SNDCTL_DSP_HALT_OUTPUT Aborts audio playback operation
SNDCTL_DSP_HALT Aborts audio recording and/or playback operation
SNDCTL_DSP_LOW_WATER Sets the trigger treshold for select()
SNDCTL_DSP_NONBLOCK Force non-blocking mode
SNDCTL_DSP_POLICY Sets the timing policy of an audio device
SNDCTL_DSP_POST Forces audio playback to start (obsolete)
SNDCTL_DSP_READCTL Reads the S/PDIF interface status.
SNDCTL_DSP_SAMPLESIZE Sets the sample size (obsolete)
SNDCTL_DSP_SETDUPLEX Turns on the duplex mode
SNDCTL_DSP_SETFMT Select the sample format
SNDCTL_DSP_SETFRAGMENT Sets the buffer size hint
SNDCTL_DSP_SET_PLAYTGT Sets the current output routing
SNDCTL_DSP_SETPLAYVOL Changes the current audio playback volume
SNDCTL_DSP_SET_RECSRC Sets the current recording source
SNDCTL_DSP_SETRECVOL Changes the current audio recording level
SNDCTL_DSP_SETSYNCRO Slaves the audio device to the /dev/sequencer driver (obsolete)
SNDCTL_DSP_SETTRIGGER Starts audio recording and/or playback in sync
SNDCTL_DSP_SILENCE Clears the playback buffer with silence
SNDCTL_DSP_SKIP Discards all samples in the playback buffer
SNDCTL_DSP_SPEED Set the sampling rate
SNDCTL_DSP_SUBDIVIDE Requests the device to use smaller fragments (obsolete)
SNDCTL_DSP_SYNCGROUP Creates a synchronization group.
SNDCTL_DSP_SYNC Suspend the application until all samples have been played
SNDCTL_DSP_SYNCSTART Starts all devices added to a synchronization group.
SNDCTL_DSP_WRITECTL Alters the S/PDIF interface setup.

Ioctl calls available on Mixer devices

Source Explanation
SNDCTL_MIX_DESCRIPTION Get description text for a mixer control
SNDCTL_MIX_ENUMINFO Get choice list for a MIXT_ENUM control
SNDCTL_MIX_EXTINFO Get a mixer extension descriptor.
SNDCTL_MIX_NREXT Get number of mixer extension descriptor records
SNDCTL_MIX_NRMIX Get number of mixer devices in the system
SNDCTL_MIX_READ Read the current value of a mixer control
SNDCTL_MIX_WRITE Change value of a mixer control

Ioctl calls available on MIDI devices

Source Explanation
midi_timing Using the timed mode MIDI interface
SNDCTL_MIDI_EXPRESS_WRITE Inserts MIDI messages to the beginning of the device output buffer.
SNDCTL_MIDI_INFO Get information about a MIDI device (OBSOLETE)
SNDCTL_MIDI_MPUCMD Obsolete ioctl call
SNDCTL_MIDI_MPUMODE Obsolete ioctl call
SNDCTL_MIDI_MTCINPUT Turn on MTC input mode
SNDCTL_MIDI_PRETIME Set the pre character wait time.
SNDCTL_MIDI_SETMODE Set the interface mode

Device information ioctl calls

Source Explanation
OSS_GETVERSION Returns the OSS API version number of current system
SNDCTL_AUDIOINFO Return information about an audio device
SNDCTL_CARDINFO Returns information about a sound card or pseudo device
SNDCTL_GETLABEL Returns label assigned to this device
SNDCTL_GETSONG Returns the current song name (if given) related with this device
SNDCTL_MIDIINFO Returns information about a MIDI device
SNDCTL_MIXERINFO Returns information about a mixer device
SNDCTL_SETLABEL Sets the label for this device
SNDCTL_SETNAME Sets the name of this device (if changeable)
SNDCTL_SETSONG Sets the song name related with this device.
SNDCTL_SYSINFO Return information about OSS and the devices

你可能感兴趣的:(Linux声卡驱动相关的ioctl属性)