Top |
Functions
#define | GST_META_FLAGS() |
#define | GST_META_FLAG_IS_SET() |
#define | GST_META_FLAG_SET() |
#define | GST_META_FLAG_UNSET() |
gboolean | (*GstMetaInitFunction) () |
void | (*GstMetaFreeFunction) () |
gboolean | (*GstMetaTransformFunction) () |
#define | GST_META_TRANSFORM_IS_COPY() |
GType | gst_meta_api_type_register () |
gboolean | gst_meta_api_type_has_tag () |
const gchar * const* | gst_meta_api_type_get_tags () |
const GstMetaInfo * | gst_meta_register () |
const GstMetaInfo * | gst_meta_get_info () |
Types and Values
struct | GstMeta |
enum | GstMetaFlags |
struct | GstMetaInfo |
GstMetaTransformCopy | |
#define | GST_META_TAG_MEMORY |
#define | GST_META_TAG_MEMORY_STR |
Description
The GstMeta structure should be included as the first member of a GstBuffer metadata structure. The structure defines the API of the metadata and should be accessible to all elements using the metadata.
A metadata API is registered with gst_meta_api_type_register()
which takes a
name for the metadata API and some tags associated with the metadata.
With gst_meta_api_type_has_tag()
one can check if a certain metadata API
contains a given tag.
Multiple implementations of a metadata API can be registered.
To implement a metadata API, gst_meta_register()
should be used. This
function takes all parameters needed to create, free and transform metadata
along with the size of the metadata. The function returns a GstMetaInfo
structure that contains the information for the implementation of the API.
A specific implementation can be retrieved by name with gst_meta_get_info()
.
See GstBuffer for how the metadata can be added, retrieved and removed from buffers.
Functions
GST_META_FLAGS()
#define GST_META_FLAGS(meta) (GST_META_CAST (meta)->flags)
A flags word containing GstMetaFlags flags set on meta
GST_META_FLAG_IS_SET()
#define GST_META_FLAG_IS_SET(meta,flag) !!(GST_META_FLAGS (meta) & (flag))
Gives the status of a specific flag on a metadata.
GST_META_FLAG_SET()
#define GST_META_FLAG_SET(meta,flag) (GST_META_FLAGS (meta) |= (flag))
Sets a metadata flag on a metadata.
GST_META_FLAG_UNSET()
#define GST_META_FLAG_UNSET(meta,flag) (GST_META_FLAGS (meta) &= ~(flag))
Clears a metadata flag.
GstMetaInitFunction ()
gboolean (*GstMetaInitFunction) (GstMeta *meta
,gpointer params
,GstBuffer *buffer
);
Function called when meta
is initialized in buffer
.
GstMetaFreeFunction ()
void (*GstMetaFreeFunction) (GstMeta *meta
,GstBuffer *buffer
);
Function called when meta
is freed in buffer
.
GstMetaTransformFunction ()
gboolean (*GstMetaTransformFunction) (GstBuffer *transbuf
,GstMeta *meta
,GstBuffer *buffer
,GQuark type
,gpointer data
);
Function called for each meta
in buffer
as a result of performing a
transformation on transbuf
. Additional type
specific transform data
is passed to the function as data
.
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
.
GST_META_TRANSFORM_IS_COPY()
#define GST_META_TRANSFORM_IS_COPY(type) ((type) == _gst_meta_transform_copy)
Check if the transform type is a copy transform
gst_meta_api_type_register ()
GType gst_meta_api_type_register (const gchar *api
,const gchar **tags
);
Register and return a GType for the api
and associate it with
tags
.
gst_meta_api_type_has_tag ()
gboolean gst_meta_api_type_has_tag (GType api
,GQuark tag
);
Check if api
was registered with tag
.
gst_meta_api_type_get_tags ()
const gchar * const*
gst_meta_api_type_get_tags (GType api
);
Since: 1.2
gst_meta_register ()
const GstMetaInfo * gst_meta_register (GType api
,const gchar *impl
,gsize size
,GstMetaInitFunction init_func
,GstMetaFreeFunction free_func
,GstMetaTransformFunction transform_func
);
Register a new GstMeta implementation.
The same info
can be retrieved later with gst_meta_get_info()
by using
impl
as the key.
gst_meta_get_info ()
const GstMetaInfo *
gst_meta_get_info (const gchar *impl
);
Lookup a previously registered meta info structure by its implementation name
impl
.
Types and Values
struct GstMeta
struct GstMeta { GstMetaFlags flags; const GstMetaInfo *info; };
Base structure for metadata. Custom metadata will put this structure as the first member of their structure.
Members
GstMetaFlags |
extra flags for the metadata |
|
const GstMetaInfo * |
pointer to the GstMetaInfo |
struct GstMetaInfo
struct GstMetaInfo { GType api; GType type; gsize size; GstMetaInitFunction init_func; GstMetaFreeFunction free_func; GstMetaTransformFunction transform_func; /* 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 */ };
The GstMetaInfo provides information about a specific metadata structure.
Members
GType |
tag identifying the metadata structure and api |
|
GType |
type identifying the implementor of the api |
|
gsize |
size of the metadata |
|
GstMetaInitFunction |
function for initializing the metadata |
|
GstMetaFreeFunction |
function for freeing the metadata |
|
GstMetaTransformFunction |
function for transforming the metadata |
GstMetaTransformCopy
typedef struct { gboolean region; gsize offset; gsize size; } GstMetaTransformCopy;
Extra data passed to a "gst-copy" transform GstMetaTransformFunction.
GST_META_TAG_MEMORY
#define GST_META_TAG_MEMORY (_gst_meta_tag_memory)
GST_META_TAG_MEMORY
is deprecated and should not be used in newly-written code.
The GQuarks are not exported by any public API, use GST_META_TAG_MEMORY_STR instead.
Metadata tagged with this tag depends on the particular memory or buffer that it is on.
GST_META_TAG_MEMORY_STR
#define GST_META_TAG_MEMORY_STR "memory"
This metadata stays relevant as long as memory layout is unchanged.
Since: 1.2