summaryrefslogtreecommitdiff
path: root/test/bufspeed/gstmempool.h
diff options
context:
space:
mode:
Diffstat (limited to 'test/bufspeed/gstmempool.h')
-rw-r--r--test/bufspeed/gstmempool.h43
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);