memory: remove memory metadata again

This commit is contained in:
Wim Taymans 2011-03-24 13:01:00 +01:00
parent 6f2af5aa87
commit 121ab46aa6
7 changed files with 3 additions and 222 deletions

View file

@ -752,7 +752,6 @@ init_post (GOptionContext * context, GOptionGroup * group, gpointer data,
g_type_class_ref (gst_search_mode_get_type ());
g_type_class_ref (gst_progress_type_get_type ());
g_type_class_ref (gst_buffer_pool_flags_get_type ());
g_type_class_ref (gst_meta_map_flags_get_type ());
gst_structure_get_type ();
_gst_event_initialize ();
@ -1118,7 +1117,6 @@ gst_deinit (void)
g_type_class_unref (g_type_class_peek (gst_param_spec_fraction_get_type ()));
g_type_class_unref (g_type_class_peek (gst_progress_type_get_type ()));
g_type_class_unref (g_type_class_peek (gst_buffer_pool_flags_get_type ()));
g_type_class_unref (g_type_class_peek (gst_meta_map_flags_get_type ()));
gst_deinitialized = TRUE;
GST_INFO ("deinitialized GStreamer");

View file

@ -107,125 +107,6 @@ gst_meta_get_info (const gchar * impl)
return info;
}
/* Memory metadata */
typedef struct
{
guint8 *data;
GFreeFunc free_func;
gsize size;
gsize offset;
} GstMetaMemoryParams;
typedef struct
{
GstMetaMemory memory;
GstMetaMemoryParams params;
} GstMetaMemoryImpl;
static gpointer
meta_memory_mmap (GstMetaMemory * meta, gsize offset, gsize * size,
GstMetaMapFlags flags)
{
GstMetaMemoryImpl *impl = (GstMetaMemoryImpl *) meta;
*size = impl->params.size - offset;
return impl->params.data + offset;
}
static gboolean
meta_memory_munmap (GstMetaMemory * meta, gpointer data, gsize size)
{
return TRUE;
}
static gboolean
meta_memory_init (GstMetaMemoryImpl * meta, GstMetaMemoryParams * params,
GstBuffer * buffer)
{
GST_DEBUG ("init %p", buffer);
meta->memory.mmap_func = meta_memory_mmap;
meta->memory.munmap_func = meta_memory_munmap;
meta->params = *params;
/* FIXME, backwards compatibility */
//GST_BUFFER_DATA (buffer) = params->data + params->offset;
//GST_BUFFER_SIZE (buffer) = params->size;
return TRUE;
}
static void
meta_memory_free (GstMetaMemoryImpl * meta, GstBuffer * buffer)
{
GST_DEBUG ("free buffer %p", buffer);
if (meta->params.free_func)
meta->params.free_func (meta->params.data);
}
static void
meta_memory_transform (GstBuffer * transbuf, GstMetaMemoryImpl * meta,
GstBuffer * buffer, GstMetaTransformData * data)
{
switch (data->type) {
case GST_META_TRANSFORM_COPY:
{
GST_DEBUG ("copy %p to %p", buffer, transbuf);
gst_buffer_add_meta_memory (transbuf,
g_memdup (meta->params.data, meta->params.size),
g_free, meta->params.size, meta->params.offset);
break;
}
case GST_META_TRANSFORM_TRIM:
{
GstMetaTransformSubbuffer *subdata = (GstMetaTransformSubbuffer *) data;
GST_DEBUG ("trim %p to %p", buffer, transbuf);
gst_buffer_add_meta_memory (transbuf,
meta->params.data, NULL, subdata->size,
meta->params.offset + subdata->offset);
break;
}
case GST_META_TRANSFORM_MAKE_WRITABLE:
{
GST_DEBUG ("make writable %p to %p", buffer, transbuf);
gst_buffer_add_meta_memory (transbuf,
meta->params.data, NULL, meta->params.size, meta->params.offset);
break;
}
default:
/* don't copy by default */
break;
}
}
const GstMetaInfo *
gst_meta_memory_get_info (void)
{
static const GstMetaInfo *meta_info = NULL;
if (meta_info == NULL) {
meta_info = gst_meta_register ("GstMetaMemory", "GstMetaMemoryImpl",
sizeof (GstMetaMemoryImpl),
(GstMetaInitFunction) meta_memory_init,
(GstMetaFreeFunction) meta_memory_free,
(GstMetaTransformFunction) meta_memory_transform,
(GstMetaSerializeFunction) NULL, (GstMetaDeserializeFunction) NULL);
}
return meta_info;
}
GstMetaMemory *
gst_buffer_add_meta_memory (GstBuffer * buffer, gpointer data,
GFreeFunc free_func, gsize size, gsize offset)
{
GstMeta *meta;
GstMetaMemoryParams params = { data, free_func, size, offset };
meta = gst_buffer_add_meta (buffer, GST_META_MEMORY_INFO, &params);
return (GstMetaMemory *) meta;
}
/* Timing metadata */
static void
meta_timing_transform (GstBuffer * transbuf, GstMetaTiming * meta,

View file

@ -181,34 +181,6 @@ const GstMetaInfo * gst_meta_get_info (const gchar * impl);
/* default metadata */
/* memory metadata */
typedef struct _GstMetaMemory GstMetaMemory;
const GstMetaInfo *gst_meta_memory_get_info(void);
#define GST_META_MEMORY_INFO (gst_meta_memory_get_info())
typedef enum {
GST_META_MAP_NONE = 0,
GST_META_MAP_READ = (1 << 0),
GST_META_MAP_WRITE = (1 << 1)
} GstMetaMapFlags;
struct _GstMetaMemory
{
GstMeta meta;
gpointer (*mmap_func) (GstMetaMemory *meta, gsize offset, gsize *size,
GstMetaMapFlags flags);
gboolean (*munmap_func) (GstMetaMemory *meta, gpointer data, gsize size);
};
#define gst_meta_memory_map(m,o,s,f) ((m)->mmap_func(m, o, s, f))
#define gst_meta_memory_unmap(m,d,s) ((m)->munmap_func(m, d, s))
#define gst_buffer_get_meta_memory(b) ((GstMetaMemory*)gst_buffer_get_meta((b),GST_META_MEMORY_INFO))
GstMetaMemory * gst_buffer_add_meta_memory (GstBuffer *buffer, gpointer data,
GFreeFunc free_func,
gsize size, gsize offset);
/* timing metadata */
typedef struct _GstMetaTiming GstMetaTiming;

View file

@ -424,7 +424,7 @@ gst_adapter_map (GstAdapter * adapter, gsize size)
csize = gst_buffer_get_size (cur);
if (csize >= size + skip) {
data = gst_buffer_map (cur, &csize, NULL, GST_META_MAP_READ);
data = gst_buffer_map (cur, &csize, NULL, GST_MAP_READ);
adapter->priv->cdata = data;
adapter->priv->csize = csize;
return data + skip;

View file

@ -69,7 +69,7 @@ check_buffer (GstBuffer * buf, gsize size, const gchar * data)
gchar *bdata;
gsize bsize, csize, msize;
bdata = gst_buffer_map (buf, &bsize, &msize, GST_META_MAP_READ);
bdata = gst_buffer_map (buf, &bsize, &msize, GST_MAP_READ);
csize = size ? size : bsize;
GST_DEBUG ("%lu %lu %lu", bsize, csize, msize);
fail_unless (bsize == csize);

View file

@ -194,75 +194,6 @@ GST_START_TEST (test_meta_test)
GST_END_TEST;
GST_START_TEST (test_meta_memory)
{
GstBuffer *buffer, *copy;
GstMetaMemory *meta;
guint8 *data;
gsize size;
guint i;
buffer = gst_buffer_new ();
/* add some memory metadata */
meta = gst_buffer_add_meta_memory (buffer, g_malloc (4), g_free, 4, 0);
fail_if (meta == NULL);
fail_if (meta->mmap_func == NULL);
fail_if (meta->munmap_func == NULL);
/* prepare for writing */
data = gst_meta_memory_map (meta, 0, &size, GST_META_MAP_WRITE);
fail_if (data == NULL);
fail_if (size != 4);
for (i = 0; i < 4; i++)
data[i] = i;
gst_meta_memory_unmap (meta, data, size);
/* reading */
meta = gst_buffer_get_meta_memory (buffer);
fail_if (meta == NULL);
data = gst_meta_memory_map (meta, 0, &size, GST_META_MAP_READ);
fail_if (data == NULL);
fail_if (size != 4);
for (i = 0; i < 4; i++)
fail_if (data[i] != i);
gst_meta_memory_unmap (meta, data, size);
/* copy of the buffer */
copy = gst_buffer_copy (buffer);
/* get metadata of the buffer */
meta = gst_buffer_get_meta_memory (copy);
fail_if (meta == NULL);
data = gst_meta_memory_map (meta, 0, &size, GST_META_MAP_READ);
fail_if (data == NULL);
fail_if (size != 4);
for (i = 0; i < 4; i++)
fail_if (data[i] != i);
gst_meta_memory_unmap (meta, data, size);
gst_buffer_unref (copy);
#if 0
/* FIXME, does not work yet */
/* make a subbuffer */
subbuf = gst_buffer_create_sub (buffer, 1, 3);
meta = gst_buffer_get_meta_memory (subbuf);
fail_if (meta == NULL);
data = gst_meta_memory_map (meta, 0, &size, GST_META_MAP_READ);
fail_if (data == NULL);
fail_if (size != 3);
for (i = 0; i < 3; i++)
fail_if (data[i] != i + 1);
gst_meta_memory_unmap (meta, data, size);
gst_buffer_unref (subbuf);
#endif
/* clean up */
gst_buffer_unref (buffer);
}
GST_END_TEST;
static Suite *
gst_buffermeta_suite (void)
{
@ -271,7 +202,6 @@ gst_buffermeta_suite (void)
suite_add_tcase (s, tc_chain);
tcase_add_test (tc_chain, test_meta_test);
tcase_add_test (tc_chain, test_meta_memory);
return s;
}

View file

@ -422,7 +422,7 @@ buffer_compare (GstBuffer * buf, const gchar * str, gsize size)
gboolean res;
gpointer data;
data = gst_buffer_map (buf, NULL, NULL, GST_META_MAP_READ);
data = gst_buffer_map (buf, NULL, NULL, GST_MAP_READ);
res = memcmp (data, str, size) == 0;
gst_buffer_unmap (buf, data, size);