From: Wim Taymans Date: Tue, 28 Feb 2012 15:17:47 +0000 (+0100) Subject: meta: add return vale to transform X-Git-Tag: RELEASE-0.11.3~103 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=f0105dd81f7a4a31a90ccb096589ae344c6553c6;p=platform%2Fupstream%2Fgstreamer.git meta: add return vale to transform Add a boolean return value so that we can see when a transform fails. --- diff --git a/gst/gstmeta.h b/gst/gstmeta.h index e4ce17f..9d820c2 100644 --- a/gst/gstmeta.h +++ b/gst/gstmeta.h @@ -148,10 +148,12 @@ typedef struct { * Implementations should check the @type of the transform and parse * additional type specific fields in @data that should be used to update * the metadata on @transbuf. + * + * Returns: %TRUE if the transform could be performed */ -typedef void (*GstMetaTransformFunction) (GstBuffer *transbuf, - GstMeta *meta, GstBuffer *buffer, - GQuark type, gpointer data); +typedef gboolean (*GstMetaTransformFunction) (GstBuffer *transbuf, + GstMeta *meta, GstBuffer *buffer, + GQuark type, gpointer data); /** * GstMetaInfo: diff --git a/libs/gst/net/gstnetaddressmeta.c b/libs/gst/net/gstnetaddressmeta.c index 057ff79..12028de 100644 --- a/libs/gst/net/gstnetaddressmeta.c +++ b/libs/gst/net/gstnetaddressmeta.c @@ -33,28 +33,35 @@ #include "gstnetaddressmeta.h" static gboolean -net_address_meta_init (GstNetAddressMeta * meta, gpointer params, - GstBuffer * buffer) +net_address_meta_init (GstMeta * meta, gpointer params, GstBuffer * buffer) { - meta->addr = NULL; + GstNetAddressMeta *nmeta = (GstNetAddressMeta *) meta; + + nmeta->addr = NULL; return TRUE; } -static void -net_address_meta_transform (GstBuffer * transbuf, GstNetAddressMeta * meta, +static gboolean +net_address_meta_transform (GstBuffer * transbuf, GstMeta * meta, GstBuffer * buffer, GQuark type, gpointer data) { + GstNetAddressMeta *nmeta = (GstNetAddressMeta *) meta; + /* we always copy no matter what transform */ - gst_buffer_add_net_address_meta (transbuf, meta->addr); + gst_buffer_add_net_address_meta (transbuf, nmeta->addr); + + return TRUE; } static void -net_address_meta_free (GstNetAddressMeta * meta, GstBuffer * buffer) +net_address_meta_free (GstMeta * meta, GstBuffer * buffer) { - if (meta->addr) - g_object_unref (meta->addr); - meta->addr = NULL; + GstNetAddressMeta *nmeta = (GstNetAddressMeta *) meta; + + if (nmeta->addr) + g_object_unref (nmeta->addr); + nmeta->addr = NULL; } const GstMetaInfo * @@ -66,9 +73,8 @@ gst_net_address_meta_get_info (void) if (meta_info == NULL) { meta_info = gst_meta_register ("GstNetAddressMeta", "GstNetAddressMeta", sizeof (GstNetAddressMeta), - (GstMetaInitFunction) net_address_meta_init, - (GstMetaFreeFunction) net_address_meta_free, - (GstMetaTransformFunction) net_address_meta_transform, tags); + net_address_meta_init, + net_address_meta_free, net_address_meta_transform, tags); } return meta_info; } diff --git a/tests/check/gst/gstmeta.c b/tests/check/gst/gstmeta.c index 1ca52d6..392b123 100644 --- a/tests/check/gst/gstmeta.c +++ b/tests/check/gst/gstmeta.c @@ -63,27 +63,28 @@ gst_meta_test_init (GstMetaTest * meta) } #endif -static void -test_init_func (GstMetaTest * meta, GstBuffer * buffer) +static gboolean +test_init_func (GstMeta * meta, gpointer params, GstBuffer * buffer) { GST_DEBUG ("init called on buffer %p, meta %p", buffer, meta); /* nothing to init really, the init function is mostly for allocating * additional memory or doing special setup as part of adding the metadata to * the buffer*/ + return TRUE; } static void -test_free_func (GstMetaTest * meta, GstBuffer * buffer) +test_free_func (GstMeta * meta, GstBuffer * buffer) { GST_DEBUG ("free called on buffer %p, meta %p", buffer, meta); /* nothing to free really */ } -static void -test_transform_func (GstBuffer * transbuf, GstMetaTest * meta, +static gboolean +test_transform_func (GstBuffer * transbuf, GstMeta * meta, GstBuffer * buffer, GQuark type, gpointer data) { - GstMetaTest *test; + GstMetaTest *test, *tmeta = (GstMetaTest *) meta; GST_DEBUG ("transform %s called from buffer %p to %p, meta %p", g_quark_to_string (type), buffer, transbuf, meta); @@ -94,11 +95,11 @@ test_transform_func (GstBuffer * transbuf, GstMetaTest * meta, test = GST_META_TEST_ADD (transbuf); if (copy_data->offset == 0) { /* same offset, copy timestamps */ - test->pts = meta->pts; - test->dts = meta->dts; + test->pts = tmeta->pts; + test->dts = tmeta->dts; if (copy_data->size == gst_buffer_get_size (buffer)) { /* same size, copy duration */ - test->duration = meta->duration; + test->duration = tmeta->duration; } else { /* else clear */ test->duration = GST_CLOCK_TIME_NONE; @@ -108,8 +109,9 @@ test_transform_func (GstBuffer * transbuf, GstMetaTest * meta, test->dts = -1; test->duration = -1; } - test->clock_rate = meta->clock_rate; + test->clock_rate = tmeta->clock_rate; } + return TRUE; } static const GstMetaInfo * @@ -121,9 +123,7 @@ gst_meta_test_get_info (void) if (meta_test_info == NULL) { meta_test_info = gst_meta_register ("GstMetaTest", "GstMetaTest", sizeof (GstMetaTest), - (GstMetaInitFunction) test_init_func, - (GstMetaFreeFunction) test_free_func, - (GstMetaTransformFunction) test_transform_func, tags); + test_init_func, test_free_func, test_transform_func, tags); } return meta_test_info; }