Open Sound System
OSS 4.x Programmer's Guide

Do you have problems with sound/audio application development? Don't panic! Click here for help!


Read the current value of a mixer control


oss_mixext extinfo; /* Values from prior call to SNDCTL_MIX_EXTINFO */
oss_mixer_value vr;;
ioctl(mixer_fd, SNDCTL_MIX_READ, &vr);

The above code fragment lacks all error checks for clarity. Real world applications must always check for the errors and handle them as described below. Also most OSS ioctl calls will return information in the argument variable and it's usually necessary to check it too.


before maiking the call the application should have read the mixer descriptor record for this control using SNDCTL_MIX_EXTINFO. The dev, ctrl and timestamp fields must be initialized to the values returned by SNDCTL_MIX_EXTINFO before making the call.

The timestamp field is used for detecting asynchronous mixer interface structure changes initiated by the device. Some devices may purge parts of the mixer interface when the device mode changes. Ioctl calls accessing modified controls with expired timestamp values will return with errno=EIDRM. If this happens the mixer application should re-read the mixer descriptors and replace the GUI widgets with changed timestamp with new ones (all subsequent entries after the first changed one will have to be changed too).

The current value of the mixer control will be returned in the value field. Encoding of the value field depends on the control type (for example MIXT_ENUM or MIXT_MONOSLIDER). This is explained on the manual page for SNDCTL_MIX_EXTINFO. See the Scaling of mixer control values section for additional info about interpreting the value.

OSS ioctl return values

The return value from the OSS ioctl calls will be -1 if a fatal error occurred. Other values mean that the ioctl call was more or less successful. However in most cases the application must check the value returned in the argument to see what was the accepted value.

Please see the Possible error codes (errno) returned by OSS calls section for more info about the error codes returned by OSS.

Sample programs

ossxmix.cThis is the ossxmix (GTK++ GUI) program shipped with OSS
ossmix.cSources for the ossmix command line mixer shipped with OSS
mixer_applet.cA sample program for developing a simple mixer applet.
mixext.cA simple sample program for using the new mixer API

Copyright (C) 4Front Technologies, 2007. All rights reserved.
Back to index OSS web site