|  |  |  | GStreamer 0.10 Core Reference Manual |  | 
|---|
| GstIndexGstIndex — Generate indexes on objects | 
#include <gst/gst.h>
            GstIndex;
            GstIndexEntry;
            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)
            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);
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_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);
"entry-added" void user_function (GstIndex *gstindex, GstIndexEntry *arg1, gpointer user_data);
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 | 
typedef struct {
  GstFormat 	format;
  gint64 	value;
} GstIndexAssociation;
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.
| 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_DELTA_UNIT | the entry marks a delta unit, a delta unit is one that marks a place where one can relatively 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, gpointer user_data);
Function to filter out entries in the index.
| index: | The index being queried | 
| entry: | The entry to be added. | 
| user_data: | User data passed to the function. | 
| Returns : | This function should return TRUEif the entry is to be added
to the index,FALSEotherwise. | 
typedef enum {
  GST_INDEX_RESOLVER_CUSTOM,
  GST_INDEX_RESOLVER_GTYPE,
  GST_INDEX_RESOLVER_PATH
} GstIndexResolverMethod;
The method used to resolve index writers
| GST_INDEX_RESOLVER_CUSTOM | Use a custom resolver | 
| GST_INDEX_RESOLVER_GTYPE | Resolve based on the GType of the object | 
| GST_INDEX_RESOLVER_PATH | Resolve on the path in graph | 
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 : | TRUEif 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
| GST_INDEX_WRITABLE | The index is writable | 
| GST_INDEX_READABLE | The index is readable | 
| GST_INDEX_FLAG_LAST | First flag that can be used by subclasses | 
#define GST_INDEX_IS_READABLE(obj) (GST_OBJECT_FLAG_IS_SET (obj, GST_INDEX_READABLE))
Check if the index can be read from
| obj: | 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
| obj: | The index to check | 
GstIndex* gst_index_new (void);
Create a new tileindex object
| Returns : | a new index object | 
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.
| index: | the index to commit | 
| id: | the writer that commited the index | 
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_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.
| index: | the index to register the filter on | 
| filter: | the filter to register | 
| user_data: | data passed to the filter function | 
| user_data_destroy: | function to call when user_datais 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.
| 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 each other. 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.
This function is not yet implemented.
| 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. | 
GstIndexEntry* gst_index_entry_copy (GstIndexEntry *entry);
Copies an entry and returns the result.
| entry: | the entry to copy | 
| Returns : | a newly allocated GstIndexEntry. | 
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. | 
resolver" property"resolver" GstIndexResolver : Read / Write
Select a predefined object to string mapper.
Default value: GST_INDEX_RESOLVER_PATH
void user_function (GstIndex *gstindex, GstIndexEntry *arg1, gpointer user_data);
Is emitted 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. | 
| << GstImplementsInterface | GstIndexFactory >> |