ALLEGRO_AUDIO_STREAM - Allegro 5 API
typedef struct ALLEGRO_AUDIO_STREAM ALLEGRO_AUDIO_STREAM;
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(3alleg5) objects, streams store information
necessary for playback, so you may not play the same stream multiple times
simultaneously. Streams also need to be attached to an ALLEGRO_MIXER(3alleg5),
which, eventually, reaches an ALLEGRO_VOICE(3alleg5) 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(3alleg5), or listen to events from the
You can register an audio stream event source to an event queue; see
ALLEGRO_EVENT_AUDIO_STREAM_FRAGMENT(3alleg5) event is generated whenever a new
fragment is ready. When you receive an event, use
al_get_audio_stream_fragment(3alleg5) to obtain a pointer to the fragment to
be filled. The size and format are determined by the parameters passed to
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(3alleg5) when you're finished
with supplying data to the stream.
If the stream is created by al_load_audio_stream(3alleg5) then it will also
generate an ALLEGRO_EVENT_AUDIO_STREAM_FINISHED(3alleg5) event if it reaches
the end of the file and is not set to loop.