diff options
Diffstat (limited to 'test/bufspeed/gstmempool.h')
-rw-r--r-- | test/bufspeed/gstmempool.h | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/test/bufspeed/gstmempool.h b/test/bufspeed/gstmempool.h new file mode 100644 index 0000000000..307b768892 --- /dev/null +++ b/test/bufspeed/gstmempool.h @@ -0,0 +1,43 @@ +#include <glib.h> + +typedef struct _GstMemPool GstMemPool; +typedef struct _GstMemPoolElement GstMemPoolElement; + +typedef void (*GstMemPoolAllocFunc) (GstMemPool *pool, gpointer data); +typedef void (*GstMemPoolFreeFunc) (GstMemPool *pool, gpointer data); + +struct _GstMemPoolElement +{ + GstMemPoolElement *link; /* next cell in the lifo */ + GstMemPoolElement *area; +}; + +struct _GstMemPool +{ + volatile GstMemPoolElement *free; /* the first free element */ + volatile gulong cnt; /* used to avoid ABA problem */ + + gchar *name; + gulong area_size; + gulong pool_size; + gulong atom_size; + gboolean cleanup; + GstMemPoolAllocFunc alloc_func; + GstMemPoolFreeFunc free_func; + GMutex *chunk_lock; +}; + + +GstMemPool* gst_mem_pool_new (gchar *name, + gint atom_size, + gulong area_size, + gint type, + GstMemPoolAllocFunc alloc_func, + GstMemPoolFreeFunc free_func); + +void gst_mem_pool_destroy (GstMemPool *mem_pool); + +gpointer gst_mem_pool_alloc (GstMemPool *mem_pool); +gpointer gst_mem_pool_alloc0 (GstMemPool *mem_pool); +void gst_mem_pool_free (GstMemPool *mem_pool, + gpointer mem); |