audio_support(7I)




NAME

     audio_support - audio driver support routines and interface


SYNOPSIS

     #include <sys/audio.h>


DESCRIPTION

     The audio support  module supports audio  drivers  that  use
     the  new audio driver  architecture. It also provides a lim-
     ited number of ioctl(2) functions for  application  program-
     mers.


DATA STRUCTURES

     The following data structures are defined to manage the dif-
     ferent audio device types and  channels.

  Device Types
     The following enumeration lists a number of  generic  device
     types.

          typedef enum {
               UNDEFINED, AUDIO, AUDIOCTL, USER1, USER2, USER3
          } audio_device_type_e;

     Currently, the Solaris audio mixer implements only the AUDIO
     and  AUDIOCTL  audio  device types. See the mixer(7I) manual
     page for details. The USER1, USER2 and  USER3  device  types
     allow  third  parties  to write audio personality modules of
     their own.

  Channel Structure
     This structure is used to get and set state  information  on
     individual channels.

          struct audio_channel {
               pid_t                         pid;           /* application's process ID */
               uint_t                        ch_number;     /* device channel */
               audio_device_type_e dev_type;      /* device type */
               uint_t                        info_size;     /* size of channel's */
                                                                 /* info structure */
               void                     *info;              /* channel state information */
          ;
          typedef struct audio_channel audio_channel_t;

     The ch_number must specify the specific  channel  number  to
     get  or  set. When the ioctl() returns, the pid contains the
     process ID of the process that has  that  channel  open  and
     dev_type  will  contain the device type. If pid is 0 (zero),
     then the channel is not open. The pointer *info  must  point
     to  a  buffer  large  enough  to hold whatever audio device-
     related state structure that may  be  returned.   Currently,
     only  the  audio_info_t  structure  is  returned.   See  the
     audio(7I) and mixer(7I) man pages for more information.


IOCTLS

     The audio support  driver provides the following ioctls():

     AUDIO_GET_CH_NUMBER
           This ioctl() returns the channel number pointed to  by
           the  file  descriptor.  It  is returned in the integer
           pointer of the ioctl() argument.

     AUDIO_GET_CH_TYPE
           This ioctl() returns the type of channel  the  process
           has  open.  It  is returned in the audio_device_type_e
           enumeration pointer of the ioctl() argument.

     AUDIO_GET_NUM_CHS
           This ioctl() returns the number of channels the device
           supports. It is returned in the integer pointer of the
           ioctl() argument.


MACROS

     The following macro can be used to  initialize  data  struc-
     tures.   The   established  convention  is  that  the  state
     corresponding to a field set to -1 will not be modified.

          AUDIO_INIT(I, S)

     Where I is a pointer to an info structure and S is the  size
     of that structure.

     The following code segment  demonstrates  how  to  use  this
     macro:

          audio_info_t    info;

          AUDIO_INIT(&info, sizeof(info));
          info.play.port = AUDIO_HEADPHONE;
          err = ioctl(audio_fd, AUDIO_SETINFO, &info);


ERRORS

     EINVAL
           The ioctl() is invalid for this file descriptor.   The
           audio_channel_t  structure's  info  pointer  does  not
           point to a buffer, or the ch_number is bad.

     ENOMEM
           The ioctl() failed due to lack of memory.


FILES

     /usr/share/audio/samples
            Audio sample files


ATTRIBUTES

     See attributes(5) for a description of the following  attri-
     butes:

     _____________________________________________________________
    |       ATTRIBUTE TYPE        |        ATTRIBUTE VALUE       |
    | Architecture                | SPARC, x86                   |
    | Availability                | SUNWaudd, SUNWauddx, SUNWaudh|
    | Stability Level             | Evolving                     |
    |_____________________________|______________________________|


SEE ALSO

     ioctl(2), attributes(5), audio(7I), mixer(7I), streamio(7I)


FUTURE DIRECTIONS

     Over time, additional  audio  personality  modules  will  be
     added.  Audio  application  programmers  are  encouraged  to
     review this man page with each Solaris release for new audio
     personality modules.


Man(1) output converted with man2html