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!


Disable/enable the "on fly" format conversions made by the OSS software


int enabled=0 or 1; // 0 disables cooked mode and 1 enables it
ioctl(fd, SNDCTL_DSP_COOKEDMODE, &enabled);

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.


The audio device being used doesn't necessarily support the sample format, sampoling rate or number of channels that the application needs. In such cases OSS automatically converts between the format used by the application and the one supported by the device. Normally this is desired behaviour. However in some cases the application needs to disable the conversions (cooked mode). This is necessary if the application requires very precise timing. It's also necessary to turn cooked mode off when using mmap.

If the application turns of the cooked mode it must be prepared to do the conversions itself. Otherwise it will be useless with some audio devices.

This ioctl call must be made as early as possible after opening the device. Otherwise it will not have any effect. In particular the sampling rate, sample format and number of channels must be set after making this call.

Related ioctl calls

Compatibility issues

This ioctl call is only supported by version 4.0 compatible OSS implementations. Other versions will return errno=EINVAL. The application can safely ignore all errors returned by this call. Aborting or even rporting the error doesn't make any sense.

Please look at the When OSS audio ioctl calls can be made section for information about DSP ioctl call ordering.

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

ossplay.cSources for the ossplay audio player and for the ossrecord
fulldup.cFull duplex sample program using the single device approach.
mmap_duplex.cA simple sample program for doing dull duplex using mmap
mmap_test.cA sample program for using mmap()
multich32.cSource file oss-testing/tutorials/sndkit/tests/multich32.c
multich16.cSource file oss-testing/tutorials/sndkit/tests/multich16.c
ioctl_test.cThis program has been used to verify that some of the ioctl calls work

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