index 3bdc80d0fa67eb79ea7edf30de7ac0dbbb4f5b49..fd276fae446aa48ce388c003e1a5b5067f603330 100644 (file)
#include <gst/gst.h>
+#include "gstindexers.h"
+
#define GST_TYPE_MEM_INDEX \
(gst_index_get_type ())
#define GST_MEM_INDEX(obj) \
/* FILL ME */
};
-static void gst_mem_index_class_init (GstMemIndexClass * klass);
-static void gst_mem_index_init (GstMemIndex * index);
static void gst_mem_index_finalize (GObject * object);
static void gst_mem_index_add_entry (GstIndex * index, GstIndexEntry * entry);
@@ -116,35 +116,11 @@ static GstIndexEntry *gst_mem_index_get_assoc_entry (GstIndex * index, gint id,
#define CLASS(mem_index) GST_MEM_INDEX_CLASS (G_OBJECT_GET_CLASS (mem_index))
-static GstIndex *parent_class = NULL;
-
/*static guint gst_mem_index_signals[LAST_SIGNAL] = { 0 }; */
-GType
-gst_mem_index_get_type (void)
-{
- static GType mem_index_type = 0;
-
- if (!mem_index_type) {
- static const GTypeInfo mem_index_info = {
- sizeof (GstMemIndexClass),
- NULL,
- NULL,
- (GClassInitFunc) gst_mem_index_class_init,
- NULL,
- NULL,
- sizeof (GstMemIndex),
- 1,
- (GInstanceInitFunc) gst_mem_index_init,
- NULL
- };
-
- mem_index_type =
- g_type_register_static (GST_TYPE_INDEX, "GstMemIndex", &mem_index_info,
- 0);
- }
- return mem_index_type;
-}
+GType gst_mem_index_get_type (void);
+
+G_DEFINE_TYPE (GstMemIndex, gst_mem_index, GST_TYPE_INDEX);
static void
gst_mem_index_class_init (GstMemIndexClass * klass)
gobject_class = (GObjectClass *) klass;
gstindex_class = (GstIndexClass *) klass;
- parent_class = g_type_class_peek_parent (klass);
-
- gobject_class->finalize = GST_DEBUG_FUNCPTR (gst_mem_index_finalize);
+ gobject_class->finalize = gst_mem_index_finalize;
gstindex_class->add_entry = GST_DEBUG_FUNCPTR (gst_mem_index_add_entry);
gstindex_class->get_assoc_entry =
g_tree_destroy (index->tree);
}
- g_free (index);
+ g_slice_free (GstMemIndexFormatIndex, index);
}
static void
id_index->format_index = NULL;
}
- g_free (id_index);
+ g_slice_free (GstMemIndexId, id_index);
}
static void
memindex->associations = NULL;
}
- G_OBJECT_CLASS (parent_class)->finalize (object);
+ G_OBJECT_CLASS (gst_mem_index_parent_class)->finalize (object);
}
static void
id_index = g_hash_table_lookup (memindex->id_index, &entry->id);
if (!id_index) {
- id_index = g_new0 (GstMemIndexId, 1);
+ id_index = g_slice_new0 (GstMemIndexId);
id_index->id = entry->id;
id_index->format_index = g_hash_table_new (g_int_hash, g_int_equal);
index = g_hash_table_lookup (id_index->format_index, format);
if (!index) {
- index = g_new0 (GstMemIndexFormatIndex, 1);
+ index = g_slice_new0 (GstMemIndexFormatIndex);
index->format = *format;
index->offset = assoc;
}
}
- if (entry) {
- if ((GST_INDEX_ASSOC_FLAGS (entry) & flags) != flags) {
+ if (entry && ((GST_INDEX_ASSOC_FLAGS (entry) & flags) != flags)) {
+ if (method != GST_INDEX_LOOKUP_EXACT) {
GList *l_entry = g_list_find (memindex->associations, entry);
entry = NULL;
l_entry = g_list_previous (l_entry);
}
}
+ } else {
+ entry = NULL;
}
}
return FALSE;
}
- GST_PLUGIN_FEATURE (factory)->plugin_name = g_strdup (plugin->desc.name);
+ GST_PLUGIN_FEATURE (factory)->plugin_name = plugin->desc.name;
GST_PLUGIN_FEATURE (factory)->loaded = TRUE;
gst_registry_add_feature (gst_registry_get_default (),