| GStreamer Core Reference Manual | |||
|---|---|---|---|
| <<< Previous Page | Home | Up | Next Page >>> |
"entry-added" void user_function (GstIndex *gstindex, gpointer arg1, gpointer user_data); |
struct GstIndexEntry {
GstIndexEntryType type;
gint id;
union {
struct {
gchar *description;
} id;
struct {
gint nassocs;
GstIndexAssociation
*assocs;
GstAssocFlags flags;
} assoc;
struct {
gchar *key;
GType type;
gpointer object;
} object;
struct {
GstFormat format;
gchar *key;
} format;
} data;
}; |
The basic element of an index.
struct GstIndexGroup {
/* unique ID of group in index */
gint groupnum;
/* list of entries */
GList *entries;
/* the certainty level of the group */
GstIndexCertainty certainty;
/* peer group that contains more certain entries */
gint peergroup;
}; |
A group of related entries in an index.
typedef enum {
GST_INDEX_UNKNOWN,
GST_INDEX_CERTAIN,
GST_INDEX_FUZZY
} GstIndexCertainty; |
The certainty of a group in the index.
| GST_INDEX_UNKNOWN | accuracy is not known |
| GST_INDEX_CERTAIN | accuracy is perfect |
| GST_INDEX_FUZZY | accuracy is fuzzy |
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.
| GST_INDEX_ENTRY_ID | This entry is an id that maps an index id to its owner object |
| GST_INDEX_ENTRY_ASSOCIATION | This entry is an association between formats |
| GST_INDEX_ENTRY_OBJECT | An object |
| GST_INDEX_ENTRY_FORMAT | A format definition |
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.
| GST_INDEX_LOOKUP_EXACT | There has to be an exact indexentry with the given format/value |
| GST_INDEX_LOOKUP_BEFORE | The exact entry or the one before it |
| GST_INDEX_LOOKUP_AFTER | The exact entry or the one after it |
#define GST_INDEX_NASSOCS(entry) ((entry)->data.assoc.nassocs) |
Get the number of associations in the entry.
| entry : | The entry to query |
#define GST_INDEX_ASSOC_FLAGS(entry) ((entry)->data.assoc.flags) |
Get the flags for this entry
| 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.
| entry : | The entry to query |
| i : | The format index |
#define GST_INDEX_ASSOC_VALUE(entry,i) ((entry)->data.assoc.assocs[(i)].value) |
Get the i-th value of the entry.
| entry : | The entry to query |
| i : | The value index |
struct GstIndexAssociation {
GstFormat format;
gint64 value;
}; |
An association in an entry.
| GstFormat format | the format of the association |
| gint64 value | the value of the association |
typedef enum {
GST_ASSOCIATION_FLAG_NONE = 0,
GST_ASSOCIATION_FLAG_KEY_UNIT = (1 << 0),
/* new flags should start here */
GST_ASSOCIATION_FLAG_LAST = (1 << 8),
} GstAssocFlags; |
flags for an association entry
| GST_ASSOCIATION_FLAG_NONE | no extra flags |
| GST_ASSOCIATION_FLAG_KEY_UNIT | the entry marks a key unit, a key unit is one that marks a place where one can randomly seek to. |
| GST_ASSOCIATION_FLAG_LAST | extra user defined flags should start here. |
#define GST_INDEX_FORMAT_FORMAT(entry) ((entry)->data.format.format) |
Get the format of the format entry
| entry : | The entry to query |
#define GST_INDEX_FORMAT_KEY(entry) ((entry)->data.format.key) |
Get the key of the format entry
| entry : | The entry to query |
#define GST_INDEX_ID_DESCRIPTION(entry) ((entry)->data.id.description) |
Get the description of the id entry
| entry : | The entry to query |
gboolean (*GstIndexFilter) (GstIndex *index, GstIndexEntry *entry); |
Function to filter out entries in the index.
| index : | The index being queried |
| entry : | The entry to be added. |
| Returns : | This function should return TRUE if the entry is to be added to the index, FALSE otherwise. |
gboolean (*GstIndexResolver) (GstIndex *index, GstObject *writer, gchar **writer_string, gpointer user_data); |
Function to resolve ids to writer descriptions.
| index : | the index being queried. |
| writer : | The object that wants to write |
| writer_string : | A description of the writer. |
| user_data : | user_data as registered |
| Returns : | TRUE if an id could be assigned to the writer. |
GstIndex* gst_index_new (void); |
Create a new tileindex object
| Returns : | a new index object |
gint gst_index_get_group (GstIndex *index); |
Get the id of the current group.
| index : | 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.
| index : | 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.
| index : | the index to set the new group in |
| groupnum : | 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.
| index : | the index to set the certainty on |
| certainty : | the certainty to set |
GstIndexCertainty gst_index_get_certainty (GstIndex *index); |
Get the certainty of the given index.
| 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.
| index : | the index to register the filter on |
| filter : | the filter to register |
| user_data : | data passed to the filter function |
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.
| index : | the index to register the resolver on |
| resolver : | the resolver to register |
| user_data : | data passed to the resolver function |
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.
| index : | the index to get a unique write id for |
| writer : | the GstObject to allocate an id for |
| id : | 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.
| index : | the index to add the entry to |
| id : | the id of the index writer |
| format : | the format to add to the index |
| Returns : | a pointer to the newly added entry in the index. |
GstIndexEntry* gst_index_add_association (GstIndex *index, gint id, GstAssocFlags flags, GstFormat format, gint64 value, ...); |
Associate given format/value pairs with eachother. Be sure to pass gint64 values to this functions varargs, you might want to use a gint64 cast to be sure.
| index : | the index to add the entry to |
| id : | the id of the index writer |
| flags : | optinal flags for this entry |
| format : | the format of the value |
| 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_object (GstIndex *index, gint id, gchar *key, GType type, gpointer object); |
Add the given object to the index with the given key.
| index : | the index to add the object to |
| id : | the id of the index writer |
| key : | a key for the object |
| type : | the GType of the object |
| 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.
| index : | the index to add the entry to |
| id : | the id of the index writer |
| description : | 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
| index : | the index to search |
| id : | the id of the index writer |
| method : | The lookup method to use |
| flags : | Flags for the entry |
| format : | the format of the value |
| 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.
| index : | the index to search |
| id : | the id of the index writer |
| method : | The lookup method to use |
| flags : | Flags for the entry |
| format : | the format of the value |
| value : | the value to find |
| func : | the function used to compare entries |
| user_data : | user data passed to the compare function |
| Returns : | the entry associated with the value or NULL if the value was not found. |
void gst_index_entry_free (GstIndexEntry *entry); |
Free the memory used by the given entry.
| entry : | the entry to free |
gboolean gst_index_entry_assoc_map (GstIndexEntry *entry, GstFormat format, gint64 *value); |
Gets alternative formats associated with the indexentry.
| entry : | the index to search |
| format : | the format of the value the find |
| value : | a pointer to store the value |
| Returns : | TRUE if there was a value associated with the given format. |
void user_function (GstIndex *gstindex, gpointer arg1, gpointer user_data); |
Is emited when a new entry is added to the index.
| gstindex : | the object which received the signal. |
| arg1 : | The entry added to the index. |
| user_data : | user data set when the signal handler was connected. |