get_audio_stream_buffer(3) Tells you if you need to fill the audiostream or not. Allegro game programming library.

SYNOPSIS

#include <allegro.h>

void *get_audio_stream_buffer(AUDIOSTREAM *stream);

DESCRIPTION

You must call this function at regular intervals while an audio stream is playing, to provide the next buffer of sample data (the smaller the stream buffer size, the more often it must be called). This function should not be called from a timer handler. Example:

   void *mem_chunk;
   ...
   while (TRUE) {
      ...
      mem_chunk = get_audio_stream_buffer(buffer);
      if (mem_chunk != NULL) {
         /* Refill the stream buffer. */
      }
   }

RETURN VALUE

If it returns NULL, the stream is still playing the previous lot of data, so you don't need to do anything. If it returns a value, that is the location of the next buffer to be played, and you should load the appropriate number of samples (however many you specified when creating the stream) to that address, for example using an fread() from a disk file. After filling the buffer with data, call free_audio_stream_buffer() to indicate that the new data is now valid.