au man page on SmartOS

Man page or keyword search:  
man Server   16655 pages
apropos Keyword Search (all sections)
Output format
SmartOS logo
[printable version]

AU(4)									 AU(4)

       au - AU audio file format

       #include <audio/au.h>

       An  AU  audio  file  is	composed of three parts: a header, an optional
       description field, and a contiguous segment of audio data.  The	header
       is  24 bytes, and the description field is at least 4 bytes. Therefore,
       the offset for most AU files is 28 bytes. However,  some	 people	 store
       additional data in the AU header.

       The  AU	audio  structure members and audio data are stored big endian.
       That is, it starts with the most significant byte,  regardless  of  the
       native  byte  order of the machine architecture on which an application
       may be running. Therefore,  multi-byte  audio  data  may	 require  byte
       reversal	 for proper playback on different processor architectures. See
       the macro section for properly reading and writing the AU audio	struc‐
       ture members.

       The AU header is defined by the following structure:

	 struct au_filehdr {
	    uint32_t au_magic;	     /* magic number (.snd) */
	    uint32_t au_offset;	     /* byte offset to start of audio data */
	    uint32_t au_data_size;   /* data length in bytes */
	    uint32_t au_encoding;    /* data encoding */
	    uint32_t au_sample_rate; /* samples per second */
	    uint32_t au_channels;    /* number of interleaved channels */
	 typedef struct au_filehdr au_filehdr_t;

       The  au_magic  field  always  contains the following constant for an AU
       audio file:

	 AUDIO_AU_FILE_MAGIC   ( 0x2e736e64 ) /* ".snd" */

       The au_offset field contains the length of the audio file  header  plus
       the  variable length info field. Consequently, it can be interpreted as
       the offset from the start of the file to the start of the audio data.

       The au_data_size field contains the length, in bytes, of the audio data
       segment.	 If  this  length  is not known when the header is written, it
       should be set to AUDIO_AU_UNKNOWN_SIZE, defined as follows:

	 AUDIO_AU_UNKNOWN_SIZE	( ~0 )	     /* (unsigned) -1 */

       When the au_data_size field contains AUDIO_AU_UNKNOWN_SIZE, the	length
       of  the	audio data can be determined by subtracting au_offset from the
       total length of the file.

       The encoding field contains one of the following enumerated keys:

	 AUDIO_AU_ENCODING_ULAW		/* 8-bit u-law */
	 AUDIO_AU_ENCODING_LINEAR_8	/* 8-bit linear PCM */
	 AUDIO_AU_ENCODING_LINEAR_16	/* 16-bit linear PCM */
	 AUDIO_AU_ENCODING_LINEAR_24	/* 24-bit linear PCM */
	 AUDIO_AU_ENCODING_LINEAR_32	/* 32-bit linear PCM */
	 AUDIO_AU_ENCODING_FLOAT	/* Floating point */
	 AUDIO_AU_ENCODING_DOUBLE	/* Double precision float */
	 AUDIO_AU_ENCODING_FRAGMENTED	/* Fragmented sample data */
	 AUDIO_AU_ENCODING_DSP		/* DSP program */
	 AUDIO_AU_ENCODING_FIXED_8	/* 8-bit fixed point */
	 AUDIO_AU_ENCODING_FIXED_16	/* 16-bit fixed point */
	 AUDIO_AU_ENCODING_FIXED_24	/* 24-bit fixed point */
	 AUDIO_AU_ENCODING_FIXED_32	/* 32-bit fixed point */
	 AUDIO_AU_ENCODING_EMPHASIS	/* 16-bit linear with emphasis */
	 AUDIO_AU_ENCODING_COMPRESSED	/* 16-bit linear compressed */
	 AUDIO_AU_ENCODING_EMP_COMP	/* 16-bit linear with emphasis
						       and compression */
	 AUDIO_AU_ENCODING_MUSIC_KIT	/* Music kit DSP commands */
	 AUDIO_AU_ENCODING_ALAW		/* 8-bit A-law G.711 */

       All of the linear encoding formats  are	signed	integers  centered  at

       The  au_sample_rate  field  contains  the audio file's sampling rate in
       samples per second. Some	 common	 sample	 rates	include	 8000,	11025,
       22050, 44100, and 48000 samples per second.

       The au_channels field contains the number of interleaved data channels.
       For monaural data, this value is set to	one.  For  stereo  data,  this
       value  is  set  to two. More than two data channels can be interleaved,
       but such formats are currently unsupported by the Solaris audio	driver
       architecture.  For  a  stereo  sound file, the first sample is the left
       track and the second sample is the right track.

       The optional info field is a variable length annotation field that  can
       be  either text or data. If it is a text description of the sound, then
       it should be NULL terminated. However, some older files	might  not  be
       terminated properly.  The size of the info field is set when the struc‐
       ture is created and cannot be enlarged later.

       Accessing all of the AU audio structure members should be done  through
       the  supplied  AUDIO_AU_FILE2HOST  and  AUDIO_AU_HOST2FILE  macros.  By
       always using these macros, code will be byte-order independent. See the
       example below.

       Example 1 Displaying Header Information for a Sound File

       The  following program reads and displays the header information for an
       AU sound file. The AUDIO_AU_FILE2HOST macro ensures that this  informa‐
       tion will always be in the proper byte order.

	 void main(void)
	      au_filehdr_t    hdr;
	      au_filehdr_t    local;
	      int	      fd;
	      char	      *name = "";

	      if ((fd = open(name, O_RDONLY)) < 0) {
		   printf("can't open file %s\n", name);

	      (void) read(fd, &hdr, sizeof (hdr));

	      AUDIO_AU_FILE2HOST(&hdr.au_magic, &local.au_magic);
	      AUDIO_AU_FILE2HOST(&hdr.au_offset, &local.au_offset);
	      AUDIO_AU_FILE2HOST(&hdr.au_data_size, &local.au_data_size);
	      AUDIO_AU_FILE2HOST(&hdr.au_encoding, &local.au_encoding);
	      AUDIO_AU_FILE2HOST(&hdr.au_sample_rate, &local.au_sample_rate);
	      AUDIO_AU_FILE2HOST(&hdr.au_channels, &local.au_channels);

	      printf("Magic = %x\n", local.au_magic);
	      printf("Offset = %d\n", local.au_offset);
	      printf("Number of data bytes = %d\n", local.au_data_size);
	      printf("Sound format = %d\n", local.au_encoding);
	      printf("Sample rate = %d\n", local.au_sample_rate);
	      printf("Number of channels = %d\n", local.au_channels);

	      (void) close(fd);

       See attributes(5) for descriptions of the following attributes:

       │Stability Level │ Evolving	  │


       Some  older AU audio files are incorrectly coded with info strings that
       are not properly NULL-terminated. Thus, applications should always  use
       the  au_offset value to find the end of the info data and the beginning
       of the audio data.

				 Jan 15, 2001				 AU(4)

List of man pages available for SmartOS

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
Vote for polarhome
Free Shell Accounts :: the biggest list on the net