00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef __BG_FIFO_H_
00023 #define __BG_FIFO_H_
00024
00043 typedef enum
00044 {
00045 BG_FIFO_PLAYING,
00046 BG_FIFO_STOPPED,
00047 BG_FIFO_PAUSED,
00048 } bg_fifo_state_t;
00049
00055 typedef struct bg_fifo_s bg_fifo_t;
00056
00064 bg_fifo_t * bg_fifo_create(int num_frames,
00065 void * (*create_func)(void*), void * data);
00066
00073 void bg_fifo_destroy(bg_fifo_t * f, void (*destroy_func)(void*, void*), void * data);
00074
00083 void * bg_fifo_lock_read(bg_fifo_t * f, bg_fifo_state_t * state);
00084
00092 void * bg_fifo_try_lock_read(bg_fifo_t*f, bg_fifo_state_t * state);
00093
00097 void bg_fifo_unlock_read(bg_fifo_t*f);
00098
00107 void * bg_fifo_lock_write(bg_fifo_t*f, bg_fifo_state_t * state);
00108
00115 void * bg_fifo_try_lock_write(bg_fifo_t*f, bg_fifo_state_t * state);
00116
00117
00123 void bg_fifo_unlock_write(bg_fifo_t*f, int eof);
00124
00130 void bg_fifo_set_state(bg_fifo_t * f, bg_fifo_state_t state);
00131
00141 void bg_fifo_clear(bg_fifo_t *f );
00142
00146 #endif // __BG_FIFO_H_