DragonFly On-Line Manual Pages
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(3) 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_VOICE(3) object, or to an ALLEGRO_MIXER(3) object which,
eventually, reaches an ALLEGRO_VOICE 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
ALLEGRO_EVENT_AUDIO_STREAM_FRAGMENT event is generated whenever a new
fragment is ready. When you receive 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 parameters passed
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 finished with supplying data to the stream.
If the stream is created by al_load_audio_stream(3) then it can also
generate an ALLEGRO_EVENT_AUDIO_STREAM_FINISHED event if it reaches the
end of the file and is not set to loop.
Allegro reference manual ALLEGRO_AUDIO_STREAM(3)