Google
 

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!

SNDCTL_DSP_SET_PLAYTGT

Sets the current output routing

Usage

int route;
ioctl(fd, SNDCTL_DSP_SET_PLAYTGT, &route);

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.

Description

This ioctl call changes the current output routing. The returned value is a number between 0 and N. The meaning of the number depends on the device and it's current setup. There are no predefined values. The application needs to use SNDCTL_DSP_GET_PLAYTGT_NAMES to figure out the currently available output targets. See the Audio input and output volumes and routings section for more info about the routing mechanism.

The value that was accepted by the device will be returned back in the variable pointed by the argument. However it's possible that some other application or user changes the setting to some other value after a while. Applications that want to keep their GUI up to date must check the active value regularily to se if it has changed.

In some cases changing the playback target or recording source may affect the possible sampling rates or formats. For this reason it's recommended that the source/target selections are changed only before checking or setting the rate and other audio stream parameters (or recording and playback volumes).

It's possible that the selected target device is in use by some application which makes changing the selection impossible. In this situation this ioctl call will return -1 with errno set to EBUSY. This is more or less temporary situation which will go away when the conflicting application is closed.

Related ioctl calls

Compatibility issues

This ioctl call is new in OSS 4.0 and not supported by the freeware implementations based on older OSS versions. If this call returns errno=EINVAL then it's safe to assume that the output routing is fixed (to the front channel speakers).

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
playtgt.cA sample program for play target selection


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