memory: add memory type
authorWim Taymans <wim.taymans@collabora.co.uk>
Mon, 30 Jan 2012 14:57:39 +0000 (15:57 +0100)
committerWim Taymans <wim.taymans@collabora.co.uk>
Mon, 30 Jan 2012 15:13:31 +0000 (16:13 +0100)
Add memory type when registering memory allocators. Add getter for the memory
type.

gst/gstmemory.c
gst/gstmemory.h

index 573d4f1..ec6a95f 100644 (file)
@@ -320,6 +320,7 @@ void
 _priv_gst_memory_initialize (void)
 {
   static const GstMemoryInfo _mem_info = {
+    GST_ALLOCATOR_SYSMEM,
     (GstAllocatorAllocFunction) _default_alloc_alloc,
     (GstMemoryMapFunction) _default_mem_map,
     (GstMemoryUnmapFunction) _default_mem_unmap,
@@ -780,6 +781,22 @@ gst_allocator_new (const GstMemoryInfo * info, gpointer user_data,
 }
 
 /**
+ * gst_alocator_get_memory_type:
+ * @allocator: a #GstAllocator
+ *
+ * Get the memory type allocated by this allocator
+ *
+ * Returns: @allocator with increased refcount
+ */
+const gchar *
+gst_allocator_get_memory_type (GstAllocator * allocator)
+{
+  g_return_val_if_fail (allocator != NULL, NULL);
+
+  return allocator->info.mem_type;
+}
+
+/**
  * gst_alocator_ref:
  * @allocator: a #GstAllocator
  *
index 3d09972..aa9cb22 100644 (file)
@@ -232,6 +232,7 @@ typedef gboolean    (*GstMemoryIsSpanFunction)    (GstMemory *mem1, GstMemory *m
 
 /**
  * GstMemoryInfo:
+ * @type: the memory type this allocator provides
  * @alloc: the implementation of the GstAllocatorAllocFunction
  * @mem_map: the implementation of the GstMemoryMapFunction
  * @mem_unmap: the implementation of the GstMemoryUnmapFunction
@@ -244,6 +245,8 @@ typedef gboolean    (*GstMemoryIsSpanFunction)    (GstMemory *mem1, GstMemory *m
  * the implementations for various memory operations.
  */
 struct _GstMemoryInfo {
+  const gchar              *mem_type;
+
   GstAllocatorAllocFunction alloc;
 
   GstMemoryMapFunction      mem_map;
@@ -259,45 +262,46 @@ struct _GstMemoryInfo {
 };
 
 /* allocators */
-GstAllocator *        gst_allocator_new         (const GstMemoryInfo * info,
-                                                 gpointer user_data, GDestroyNotify notify);
+GstAllocator * gst_allocator_new             (const GstMemoryInfo * info,
+                                              gpointer user_data, GDestroyNotify notify);
+const gchar *  gst_allocator_get_memory_type (GstAllocator * allocator);
 
-GstAllocator *        gst_allocator_ref         (GstAllocator * allocator);
-void                  gst_allocator_unref       (GstAllocator * allocator);
+GstAllocator * gst_allocator_ref             (GstAllocator * allocator);
+void           gst_allocator_unref           (GstAllocator * allocator);
 
-void                  gst_allocator_register    (const gchar *name, GstAllocator *alloc);
-GstAllocator *        gst_allocator_find        (const gchar *name);
+void           gst_allocator_register        (const gchar *name, GstAllocator *alloc);
+GstAllocator * gst_allocator_find            (const gchar *name);
 
-void                  gst_allocator_set_default (GstAllocator * allocator);
+void           gst_allocator_set_default     (GstAllocator * allocator);
 
 /* allocating memory blocks */
-GstMemory * gst_allocator_alloc        (GstAllocator * allocator,
-                                        gsize maxsize, gsize align);
+GstMemory *    gst_allocator_alloc           (GstAllocator * allocator,
+                                              gsize maxsize, gsize align);
 
-GstMemory * gst_memory_new_wrapped     (GstMemoryFlags flags, gpointer data, GFreeFunc free_func,
-                                        gsize maxsize, gsize offset, gsize size);
+GstMemory *    gst_memory_new_wrapped (GstMemoryFlags flags, gpointer data, GFreeFunc free_func,
+                                       gsize maxsize, gsize offset, gsize size);
 
 /* refcounting */
-GstMemory * gst_memory_ref         (GstMemory *mem);
-void        gst_memory_unref       (GstMemory *mem);
+GstMemory *    gst_memory_ref         (GstMemory *mem);
+void           gst_memory_unref       (GstMemory *mem);
 
 /* getting/setting memory properties */
-gsize       gst_memory_get_sizes   (GstMemory *mem, gsize *offset, gsize *maxsize);
-void        gst_memory_resize      (GstMemory *mem, gssize offset, gsize size);
+gsize          gst_memory_get_sizes   (GstMemory *mem, gsize *offset, gsize *maxsize);
+void           gst_memory_resize      (GstMemory *mem, gssize offset, gsize size);
 
 /* retrieving data */
-gboolean    gst_memory_is_writable (GstMemory *mem);
+gboolean       gst_memory_is_writable (GstMemory *mem);
 
-GstMemory * gst_memory_make_mapped (GstMemory *mem, GstMapInfo *info, GstMapFlags flags);
-gboolean    gst_memory_map         (GstMemory *mem, GstMapInfo *info, GstMapFlags flags);
-void        gst_memory_unmap       (GstMemory *mem, GstMapInfo *info);
+GstMemory *    gst_memory_make_mapped (GstMemory *mem, GstMapInfo *info, GstMapFlags flags);
+gboolean       gst_memory_map         (GstMemory *mem, GstMapInfo *info, GstMapFlags flags);
+void           gst_memory_unmap       (GstMemory *mem, GstMapInfo *info);
 
 /* copy and subregions */
-GstMemory * gst_memory_copy        (GstMemory *mem, gssize offset, gssize size);
-GstMemory * gst_memory_share       (GstMemory *mem, gssize offset, gssize size);
+GstMemory *    gst_memory_copy        (GstMemory *mem, gssize offset, gssize size);
+GstMemory *    gst_memory_share       (GstMemory *mem, gssize offset, gssize size);
 
 /* span memory */
-gboolean    gst_memory_is_span     (GstMemory *mem1, GstMemory *mem2, gsize *offset);
+gboolean       gst_memory_is_span     (GstMemory *mem1, GstMemory *mem2, gsize *offset);
 
 G_END_DECLS