Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
al_create_audio_stream(3)   Library Functions Manual   al_create_audio_stream(3)

NAME
     al_create_audio_stream - Allegro 5 API

SYNOPSIS
	    #include <allegro5/allegro_audio.h>

	    ALLEGRO_AUDIO_STREAM *al_create_audio_stream(size_t fragment_count,
	       unsigned int frag_samples, unsigned int freq, ALLEGRO_AUDIO_DEPTH depth,
	       ALLEGRO_CHANNEL_CONF chan_conf)

DESCRIPTION
     Creates  an ALLEGRO_AUDIO_STREAM(3).  The stream will be set to play by de-
     fault.  It will feed audio data from a buffer, which is split into a number
     of fragments.

     Parameters:

     * fragment_count - How many fragments to use for the audio stream.  Usually
       only two fragments are required -  splitting  the  audio  buffer  in  two
       halves.	But it means that the only time when new data can be supplied is
       whenever  one  half has finished playing.  When using many fragments, you
       usually will use fewer samples for one, so there always will  be  (small)
       fragments available to be filled with new data.

     * frag_samples  - The size of a fragment in samples.  See note and explana-
       tion below.

     * freq - The frequency, in Hertz.

     * depth - Must be one of the values listed for ALLEGRO_AUDIO_DEPTH(3).

     * chan_conf - Must be one of the values listed for ALLEGRO_CHANNEL_CONF(3).

     A sample that is referred to by the frag_samples parameter refers to a  se-
     quence  channel  intensities.   E.g.  if you're making a stereo stream with
     the frag_samples set to 4, then the layout of the data in the fragment will
     be:

	    LRLRLRLR

     Where L and R are the intensities for the left and right  channels  respec-
     tively.  A single sample, then, refers to the LR pair in this example.

     The choice of fragment_count, frag_samples and freq directly influences the
     audio delay.  The delay in seconds can be expressed as:

	    delay = fragment_count * frag_samples / freq

     This  is only the delay due to Allegro's streaming, there may be additional
     delay caused by sound drivers and/or hardware.

	    Note: If you know the fragment size in bytes, you can get  the  size
	    in samples like this:

		   sample_size = al_get_channel_count(chan_conf) * al_get_audio_depth_size(depth);
		   samples = bytes_per_fragment / sample_size;

	    The size of the complete buffer is:

		   buffer_size = bytes_per_fragment * fragment_count

	    Note:  Unlike many Allegro objects, audio streams are not implicitly
	    destroyed when Allegro is shut down.  You must destroy them manually
	    with al_destroy_audio_stream(3) before  the  audio	system	is  shut
	    down.

Allegro reference manual			       al_create_audio_stream(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=al_create_audio_stream&sektion=3&manpath=FreeBSD+Ports+15.1.quarterly>

home | help