GStreamer 0.10 Core Reference Manual | ||||
---|---|---|---|---|
Top | Description | Object Hierarchy | Properties | Signals |
#include <gst/gst.h> struct GstIndex; struct GstIndexEntry; struct GstIndexGroup; enum GstIndexCertainty; enum GstIndexEntryType; enum GstIndexLookupMethod; #define GST_INDEX_NASSOCS (entry) #define GST_INDEX_ASSOC_FLAGS (entry) #define GST_INDEX_ASSOC_FORMAT (entry, i) #define GST_INDEX_ASSOC_VALUE (entry, i) struct GstIndexAssociation; enum GstAssocFlags; #define GST_INDEX_FORMAT_FORMAT (entry) #define GST_INDEX_FORMAT_KEY (entry) #define GST_INDEX_ID_INVALID #define GST_INDEX_ID_DESCRIPTION (entry) gboolean (*GstIndexFilter) (GstIndex *index
,GstIndexEntry *entry
,gpointer user_data
); enum GstIndexResolverMethod; gboolean (*GstIndexResolver) (GstIndex *index
,GstObject *writer
,gchar **writer_string
,gpointer user_data
); enum GstIndexFlags; #define GST_INDEX_IS_READABLE (obj) #define GST_INDEX_IS_WRITABLE (obj) GstIndex * gst_index_new (void
); void gst_index_commit (GstIndex *index
,gint id
); gint gst_index_get_group (GstIndex *index
); gint gst_index_new_group (GstIndex *index
); gboolean gst_index_set_group (GstIndex *index
,gint groupnum
); void gst_index_set_certainty (GstIndex *index
,GstIndexCertainty certainty
); GstIndexCertainty gst_index_get_certainty (GstIndex *index
); void gst_index_set_filter (GstIndex *index
,GstIndexFilter filter
,gpointer user_data
); void gst_index_set_filter_full (GstIndex *index
,GstIndexFilter filter
,gpointer user_data
,GDestroyNotify user_data_destroy
); void gst_index_set_resolver (GstIndex *index
,GstIndexResolver resolver
,gpointer user_data
); void gst_index_set_resolver_full (GstIndex *index
,GstIndexResolver resolver
,gpointer user_data
,GDestroyNotify user_data_destroy
); gboolean gst_index_get_writer_id (GstIndex *index
,GstObject *writer
,gint *id
); GstIndexEntry * gst_index_add_format (GstIndex *index
,gint id
,GstFormat format
); GstIndexEntry * gst_index_add_association (GstIndex *index
,gint id
,GstAssocFlags flags
,GstFormat format
,gint64 value
,...
); GstIndexEntry * gst_index_add_associationv (GstIndex *index
,gint id
,GstAssocFlags flags
,gint n
,const GstIndexAssociation *list
); GstIndexEntry * gst_index_add_object (GstIndex *index
,gint id
,gchar *key
,GType type
,gpointer object
); GstIndexEntry * gst_index_add_id (GstIndex *index
,gint id
,gchar *description
); GstIndexEntry * gst_index_get_assoc_entry (GstIndex *index
,gint id
,GstIndexLookupMethod method
,GstAssocFlags flags
,GstFormat format
,gint64 value
); GstIndexEntry * gst_index_get_assoc_entry_full (GstIndex *index
,gint id
,GstIndexLookupMethod method
,GstAssocFlags flags
,GstFormat format
,gint64 value
,GCompareDataFunc func
,gpointer user_data
); GstIndexEntry * gst_index_entry_copy (GstIndexEntry *entry
); void gst_index_entry_free (GstIndexEntry *entry
); gboolean gst_index_entry_assoc_map (GstIndexEntry *entry
,GstFormat format
,gint64 *value
);
GstIndex is used to generate a stream index of one or more elements in a pipeline.
Elements will overload the set_index and get_index virtual methods in GstElement. When streaming data, the element will add index entries if it has an index set.
Each element that adds to the index will do that using a writer_id. The
writer_id is obtained from gst_index_get_writer_id()
.
The application that wants to index the stream will create a new index object
using gst_index_new()
or gst_index_factory_make()
. The index is assigned to a
specific element, a bin or the whole pipeline. This will cause indexable
elements to add entires to the index while playing.
typedef enum { GST_INDEX_UNKNOWN, GST_INDEX_CERTAIN, GST_INDEX_FUZZY } GstIndexCertainty;
The certainty of a group in the index.
typedef enum { GST_INDEX_ENTRY_ID, GST_INDEX_ENTRY_ASSOCIATION, GST_INDEX_ENTRY_OBJECT, GST_INDEX_ENTRY_FORMAT } GstIndexEntryType;
The different types of entries in the index.
typedef enum { GST_INDEX_LOOKUP_EXACT, GST_INDEX_LOOKUP_BEFORE, GST_INDEX_LOOKUP_AFTER } GstIndexLookupMethod;
Specify the method to find an index entry in the index.
#define GST_INDEX_NASSOCS(entry) ((entry)->data.assoc.nassocs)
Get the number of associations in the entry.
|
The entry to query |
#define GST_INDEX_ASSOC_FLAGS(entry) ((entry)->data.assoc.flags)
Get the flags for this entry.
|
The entry to query |
#define GST_INDEX_ASSOC_FORMAT(entry,i) ((entry)->data.assoc.assocs[(i)].format)
Get the i-th format of the entry.
|
The entry to query |
|
The format index |
#define GST_INDEX_ASSOC_VALUE(entry,i) ((entry)->data.assoc.assocs[(i)].value)
Get the i-th value of the entry.
|
The entry to query |
|
The value index |
struct GstIndexAssociation { GstFormat format; gint64 value; };
An association in an entry.
typedef enum { GST_ASSOCIATION_FLAG_NONE = 0, GST_ASSOCIATION_FLAG_KEY_UNIT = (1 << 0), GST_ASSOCIATION_FLAG_DELTA_UNIT = (1 << 1), /* new flags should start here */ GST_ASSOCIATION_FLAG_LAST = (1 << 8) } GstAssocFlags;
Flags for an association entry.
no extra flags | |
the entry marks a key unit, a key unit is one that marks a place where one can randomly seek to. | |
the entry marks a delta unit, a delta unit is one that marks a place where one can relatively seek to. | |
extra user defined flags should start here. |
#define GST_INDEX_FORMAT_FORMAT(entry) ((entry)->data.format.format)
Get the format of the format entry
|
The entry to query |
#define GST_INDEX_FORMAT_KEY(entry) ((entry)->data.format.key)
Get the key of the format entry
|
The entry to query |
#define GST_INDEX_ID_DESCRIPTION(entry) ((entry)->data.id.description)
Get the description of the id entry
|
The entry to query |
gboolean (*GstIndexFilter) (GstIndex *index
,GstIndexEntry *entry
,gpointer user_data
);
Function to filter out entries in the index.
typedef enum { GST_INDEX_RESOLVER_CUSTOM, GST_INDEX_RESOLVER_GTYPE, GST_INDEX_RESOLVER_PATH } GstIndexResolverMethod;
The method used to resolve index writers
gboolean (*GstIndexResolver) (GstIndex *index
,GstObject *writer
,gchar **writer_string
,gpointer user_data
);
Function to resolve ids to writer descriptions.
|
the index being queried. |
|
The object that wants to write |
|
A description of the writer. |
|
user_data as registered |
Returns : |
TRUE if an id could be assigned to the writer. |
typedef enum { GST_INDEX_WRITABLE = (GST_OBJECT_FLAG_LAST << 0), GST_INDEX_READABLE = (GST_OBJECT_FLAG_LAST << 1), GST_INDEX_FLAG_LAST = (GST_OBJECT_FLAG_LAST << 8) } GstIndexFlags;
Flags for this index
#define GST_INDEX_IS_READABLE(obj) (GST_OBJECT_FLAG_IS_SET (obj, GST_INDEX_READABLE))
Check if the index can be read from
|
The index to check |
#define GST_INDEX_IS_WRITABLE(obj) (GST_OBJECT_FLAG_IS_SET (obj, GST_INDEX_WRITABLE))
Check if the index can be written to
|
The index to check |
GstIndex * gst_index_new (void
);
Create a new dummy index object. Use gst_element_set_index()
to assign that
to an element or pipeline. This index is not storing anything, but will
still emit e.g. the "entry-added" signal.
Returns : |
a new index object. [transfer full] |
void gst_index_commit (GstIndex *index
,gint id
);
Tell the index that the writer with the given id is done with this index and is not going to write any more entries to it.
|
the index to commit |
|
the writer that commited the index |
gint gst_index_get_group (GstIndex *index
);
Get the id of the current group.
|
the index to get the current group from |
Returns : |
the id of the current group. |
gint gst_index_new_group (GstIndex *index
);
Create a new group for the given index. It will be set as the current group.
|
the index to create the new group in |
Returns : |
the id of the newly created group. |
gboolean gst_index_set_group (GstIndex *index
,gint groupnum
);
Set the current groupnumber to the given argument.
|
the index to set the new group in |
|
the groupnumber to set |
Returns : |
TRUE if the operation succeeded, FALSE if the group did not exist. |
void gst_index_set_certainty (GstIndex *index
,GstIndexCertainty certainty
);
Set the certainty of the given index.
|
the index to set the certainty on |
|
the certainty to set |
GstIndexCertainty gst_index_get_certainty (GstIndex *index
);
Get the certainty of the given index.
|
the index to get the certainty of |
Returns : |
the certainty of the index. |
void gst_index_set_filter (GstIndex *index
,GstIndexFilter filter
,gpointer user_data
);
Lets the app register a custom filter function so that it can select what entries should be stored in the index.
|
the index to register the filter on |
|
the filter to register |
|
data passed to the filter function |
void gst_index_set_filter_full (GstIndex *index
,GstIndexFilter filter
,gpointer user_data
,GDestroyNotify user_data_destroy
);
Lets the app register a custom filter function so that it can select what entries should be stored in the index.
|
the index to register the filter on |
|
the filter to register |
|
data passed to the filter function |
|
function to call when user_data is unset |
void gst_index_set_resolver (GstIndex *index
,GstIndexResolver resolver
,gpointer user_data
);
Lets the app register a custom function to map index ids to writer descriptions.
|
the index to register the resolver on |
|
the resolver to register |
|
data passed to the resolver function |
void gst_index_set_resolver_full (GstIndex *index
,GstIndexResolver resolver
,gpointer user_data
,GDestroyNotify user_data_destroy
);
Lets the app register a custom function to map index ids to writer descriptions.
|
the index to register the resolver on |
|
the resolver to register |
|
data passed to the resolver function |
|
destroy function for user_data
|
Since 0.10.18
gboolean gst_index_get_writer_id (GstIndex *index
,GstObject *writer
,gint *id
);
Before entries can be added to the index, a writer should obtain a unique id. The methods to add new entries to the index require this id as an argument.
The application can implement a custom function to map the writer object to a string. That string will be used to register or look up an id in the index.
writer
's GST_OBJECT_LOCK, as the default
resolver may call functions that take the object lock as well, and
the lock is not recursive.
|
the index to get a unique write id for |
|
the GstObject to allocate an id for |
|
a pointer to a gint to hold the id |
Returns : |
TRUE if the writer would be mapped to an id. |
GstIndexEntry * gst_index_add_format (GstIndex *index
,gint id
,GstFormat format
);
Adds a format entry into the index. This function is used to map dynamic GstFormat ids to their original format key.
Free-function: gst_index_entry_free
|
the index to add the entry to |
|
the id of the index writer |
|
the format to add to the index |
Returns : |
a pointer to the newly added entry in the index. [transfer full] |
GstIndexEntry * gst_index_add_association (GstIndex *index
,gint id
,GstAssocFlags flags
,GstFormat format
,gint64 value
,...
);
Associate given format/value pairs with each other. Be sure to pass gint64 values to this functions varargs, you might want to use a gint64 cast to be sure.
|
the index to add the entry to |
|
the id of the index writer |
|
optinal flags for this entry |
|
the format of the value |
|
the value |
|
other format/value pairs or 0 to end the list |
Returns : |
a pointer to the newly added entry in the index. |
GstIndexEntry * gst_index_add_associationv (GstIndex *index
,gint id
,GstAssocFlags flags
,gint n
,const GstIndexAssociation *list
);
Associate given format/value pairs with each other.
|
the index to add the entry to |
|
the id of the index writer |
|
optinal flags for this entry |
|
number of associations |
|
list of associations |
Returns : |
a pointer to the newly added entry in the index. |
GstIndexEntry * gst_index_add_object (GstIndex *index
,gint id
,gchar *key
,GType type
,gpointer object
);
Add the given object to the index with the given key.
This function is not yet implemented.
|
the index to add the object to |
|
the id of the index writer |
|
a key for the object |
|
the GType of the object |
|
a pointer to the object to add |
Returns : |
a pointer to the newly added entry in the index. |
GstIndexEntry * gst_index_add_id (GstIndex *index
,gint id
,gchar *description
);
Add an id entry into the index.
|
the index to add the entry to |
|
the id of the index writer |
|
the description of the index writer |
Returns : |
a pointer to the newly added entry in the index. |
GstIndexEntry * gst_index_get_assoc_entry (GstIndex *index
,gint id
,GstIndexLookupMethod method
,GstAssocFlags flags
,GstFormat format
,gint64 value
);
Finds the given format/value in the index
|
the index to search |
|
the id of the index writer |
|
The lookup method to use |
|
Flags for the entry |
|
the format of the value |
|
the value to find |
Returns : |
the entry associated with the value or NULL if the value was not found. |
GstIndexEntry * gst_index_get_assoc_entry_full (GstIndex *index
,gint id
,GstIndexLookupMethod method
,GstAssocFlags flags
,GstFormat format
,gint64 value
,GCompareDataFunc func
,gpointer user_data
);
Finds the given format/value in the index with the given compare function and user_data.
|
the index to search |
|
the id of the index writer |
|
The lookup method to use |
|
Flags for the entry |
|
the format of the value |
|
the value to find |
|
the function used to compare entries |
|
user data passed to the compare function |
Returns : |
the entry associated with the value or NULL if the value was not found. |
GstIndexEntry * gst_index_entry_copy (GstIndexEntry *entry
);
Copies an entry and returns the result.
Free-function: gst_index_entry_free
|
the entry to copy |
Returns : |
a newly allocated GstIndexEntry. [transfer full] |
void gst_index_entry_free (GstIndexEntry *entry
);
Free the memory used by the given entry.
|
the entry to free. [transfer full] |
gboolean gst_index_entry_assoc_map (GstIndexEntry *entry
,GstFormat format
,gint64 *value
);
Gets alternative formats associated with the indexentry.
|
the index to search |
|
the format of the value the find |
|
a pointer to store the value |
Returns : |
TRUE if there was a value associated with the given format. |
"resolver"
property"resolver" GstIndexResolver : Read / Write
Select a predefined object to string mapper.
Default value: GST_INDEX_RESOLVER_PATH
"entry-added"
signalvoid user_function (GstIndex *gstindex,
GstIndexEntry *arg1,
gpointer user_data) : Run Last
Is emitted when a new entry is added to the index.
|
the object which received the signal. |
|
The entry added to the index. |
|
user data set when the signal handler was connected. |