mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-10-02 16:52:42 +00:00
memory: remove memory metadata again
This commit is contained in:
parent
6f2af5aa87
commit
121ab46aa6
7 changed files with 3 additions and 222 deletions
|
@ -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");
|
||||
|
|
119
gst/gstmeta.c
119
gst/gstmeta.c
|
@ -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, ¶ms);
|
||||
|
||||
return (GstMetaMemory *) meta;
|
||||
}
|
||||
|
||||
/* Timing metadata */
|
||||
static void
|
||||
meta_timing_transform (GstBuffer * transbuf, GstMetaTiming * meta,
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
Loading…
Reference in a new issue