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!


Get the current fragment size (obsolete)


int fragsize;
ioctl(fd, SNDCTL_DSP_GETBLKSIZE, &fragsize);

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.


This ioctl call returns the fragment size (see the Audio timing considerations section for more info). With some prehistoric OSS versions this call was used to find out the optimum read/write count. With the recent OSS versions there is no need to use this call. The applicatioin can use whatever buffer size it sees good.

This call must in no case be called before the device setup phase is complete. This ioctl locks the fragment size which will cause problems when done too early. At least the sample rate, number of channels and sample format must be set up before making this call.

In some cases the fragment sizes being used in playback and recording directions may be different. If the exact fragment size is needed for any reason the following ioctl calls should be used insetad of this one.

This ioctl call is not recommended. If you need to know the "optimal" fragment size then use the following calls instead

Please see the discussion about fragment sizes in the decomentation of SNDCTL_DSP_GETOSPACE.

Compatibility issues

This ioctl call is supported by all OSS versions. However with the latest OSS versions the returned value may be slightly diferent than with older OSS versions. When sample rate and/or sample format conversions are used the returned value is not always a power of 2.

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_decode.cSample format decode routines for ossplay
fulldup.cFull duplex sample program using the single device approach.
iosync.cMeasuring the hardware level latencies.
sweepdown.cPlays a funny synthetic engine stop sound

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