X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=gst%2Fgstmeta.h;h=60268f84e98fd291c72c1cbbcd68fb81a941cfd0;hb=57c8e0146f0e203058c95721527cf50a1dd19f72;hp=3a92cfe8ada83c898d534e2628f74883698f55ef;hpb=007a00cd1bb4dfacc7c5aefb71f54770c2d21093;p=platform%2Fupstream%2Fgstreamer.git diff --git a/gst/gstmeta.h b/gst/gstmeta.h index 3a92cfe..60268f8 100644 --- a/gst/gstmeta.h +++ b/gst/gstmeta.h @@ -15,14 +15,16 @@ * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_META_H__ #define __GST_META_H__ +#include + G_BEGIN_DECLS typedef struct _GstMeta GstMeta; @@ -34,8 +36,8 @@ typedef struct _GstMetaInfo GstMetaInfo; * GstMetaFlags: * @GST_META_FLAG_NONE: no flags * @GST_META_FLAG_READONLY: metadata should not be modified - * @GST_META_FLAG_POOLED: metadata is managed by a bufferpool and should not - * be removed + * @GST_META_FLAG_POOLED: metadata is managed by a bufferpool + * @GST_META_FLAG_LOCKED: metadata should not be removed * @GST_META_FLAG_LAST: additional flags can be added starting from this flag. * * Extra metadata flags. @@ -44,6 +46,7 @@ typedef enum { GST_META_FLAG_NONE = 0, GST_META_FLAG_READONLY = (1 << 0), GST_META_FLAG_POOLED = (1 << 1), + GST_META_FLAG_LOCKED = (1 << 2), GST_META_FLAG_LAST = (1 << 16) } GstMetaFlags; @@ -81,6 +84,15 @@ typedef enum { #define GST_META_FLAG_UNSET(meta,flag) (GST_META_FLAGS (meta) &= ~(flag)) /** + * GST_META_TAG_MEMORY_STR: + * + * This metadata stays relevant as long as memory layout is unchanged. + * + * Since: 1.2 + */ +#define GST_META_TAG_MEMORY_STR "memory" + +/** * GstMeta: * @flags: extra flags for the metadata * @info: pointer to the #GstMetaInfo @@ -93,6 +105,8 @@ struct _GstMeta { const GstMetaInfo *info; }; +#include + /** * GstMetaInitFunction: * @meta: a #GstMeta @@ -117,8 +131,15 @@ typedef void (*GstMetaFreeFunction) (GstMeta *meta, GstBuffer *buffer); * * GQuark for the "gst-copy" transform. */ -GST_EXPORT GQuark _gst_meta_transform_copy; +GST_API GQuark _gst_meta_transform_copy; + +/** + * GST_META_TRANSFORM_IS_COPY: + * @type: a transform type + * + * Check if the transform type is a copy transform + */ #define GST_META_TRANSFORM_IS_COPY(type) ((type) == _gst_meta_transform_copy) /** @@ -159,8 +180,8 @@ typedef gboolean (*GstMetaTransformFunction) (GstBuffer *transbuf, /** * GstMetaInfo: - * @api: tag indentifying the metadata structure and api - * @type: type indentifying the implementor of the api + * @api: tag identifying the metadata structure and api + * @type: type identifying the implementor of the api * @size: size of the metadata * @init_func: function for initializing the metadata * @free_func: function for freeing the metadata @@ -178,31 +199,45 @@ struct _GstMetaInfo { GstMetaFreeFunction free_func; GstMetaTransformFunction transform_func; - /*< private >*/ - gpointer _gst_reserved[GST_PADDING]; + /* No padding needed, GstMetaInfo is always allocated by GStreamer and is + * not subclassable or stack-allocatable, so we can extend it as we please + * just like interfaces */ }; +GST_API GType gst_meta_api_type_register (const gchar *api, const gchar **tags); +GST_API gboolean gst_meta_api_type_has_tag (GType api, GQuark tag); +GST_API const GstMetaInfo * gst_meta_register (GType api, const gchar *impl, gsize size, GstMetaInitFunction init_func, GstMetaFreeFunction free_func, GstMetaTransformFunction transform_func); +GST_API const GstMetaInfo * gst_meta_get_info (const gchar * impl); +GST_API +const gchar* const* gst_meta_api_type_get_tags (GType api); + /* some default tags */ -GST_EXPORT GQuark _gst_meta_tag_memory; + +GST_API GQuark _gst_meta_tag_memory; /** * GST_META_TAG_MEMORY: * * Metadata tagged with this tag depends on the particular memory * or buffer that it is on. + * + * Deprecated: The GQuarks are not exported by any public API, use + * GST_META_TAG_MEMORY_STR instead. */ +#ifndef GST_DISABLE_DEPRECATED #define GST_META_TAG_MEMORY (_gst_meta_tag_memory) +#endif G_END_DECLS