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

FreeBSD Manual Pages

  
 
  

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

NAME
     ALLEGRO_AUDIO_STREAM - Allegro 5 API

SYNOPSIS
	    #include <allegro5/allegro_audio.h>

	    typedef struct ALLEGRO_AUDIO_STREAM ALLEGRO_AUDIO_STREAM;

DESCRIPTION
     An  ALLEGRO_AUDIO_STREAM  object  is  used to stream generated audio to the
     sound device, in real-time.  This is done by reading from a  buffer,  which
     is  split	into  a  number  of fragments.	Whenever a fragment has finished
     playing, the user can refill it with new data.

     As with ALLEGRO_SAMPLE_INSTANCE(3) objects, streams store information  nec-
     essary for playback, so you may not play the same stream multiple times si-
     multaneously.   Streams  also  need  to be attached to an ALLEGRO_MIXER(3),
     which, eventually, reaches an ALLEGRO_VOICE(3) object.

     While playing, you must periodically fill fragments with  new  audio  data.
     To  know when a new fragment is ready to be filled, you can either directly
     check with al_get_available_audio_stream_fragments(3), or listen to  events
     from the stream.

     You  can  register  an  audio  stream  event  source to an event queue; see
     al_get_audio_stream_event_source(3).   An	ALLEGRO_EVENT_AUDIO_STREAM_FRAG-
     MENT(3)  event is generated whenever a new fragment is ready.  When you re-
     ceive an event, use al_get_audio_stream_fragment(3) to obtain a pointer  to
     the fragment to be filled.  The size and format are determined by the para-
     meters passed to al_create_audio_stream(3).

     If you're late with supplying new data, the stream will be silent until new
     data  is provided.  You must call al_drain_audio_stream(3) when you're fin-
     ished with supplying data to the stream.

     It is often a good idea to prefill the audio stream with data before  ALLE-
     GRO_EVENT_AUDIO_STREAM_FRAGMENT(3)  events  arrive.  Here is a snippet that
     will fill the stream buffers with silence:

	    ALLEGRO_AUDIO_STREAM *stream = al_create_audio_stream(num_buffers,
	       samples_per_buffer, freq, depth, channel_conf);
	    void *buf;
	    while ((buf = al_get_audio_stream_fragment(stream))) {
	       al_fill_silence(buf, samples_per_buffer, depth, channel_conf);
	       al_set_audio_stream_fragment(stream, buf);
	    }

     If  the  stream  is  created  by  al_load_audio_stream(3)	or   al_play_au-
     dio_stream(3) then it will also generate an ALLEGRO_EVENT_AUDIO_STREAM_FIN-
     ISHED(3) event if it reaches the end of the file and is not set to loop.

Allegro reference manual				 ALLEGRO_AUDIO_STREAM(3)

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

home | help