diff --git a/gstreamer-sharp/Gstreamer.metadata b/gstreamer-sharp/Gstreamer.metadata
index 987283b2b0..458fe9f5d3 100644
--- a/gstreamer-sharp/Gstreamer.metadata
+++ b/gstreamer-sharp/Gstreamer.metadata
@@ -374,23 +374,47 @@
1
- 1
- 1
- 1
+ 1
+ gpointer
+ Method
+ GstIndexResolverMethod
+ 1
+
+
+
+
+
+ 1
+ SetFilter
+ 1
+ SetResolver
+ AddAssociation
+ true
+ GObject*
- 1
+ true
+ public
+ public
1
true
true
true
+ true
+
Last
ObjectFlags.Last << 0
ObjectFlags.Last << 1
ObjectFlags.Last << 8
+ 1
+
+ out
+
+ 1
+
boxed
diff --git a/gstreamer-sharp/Index.custom b/gstreamer-sharp/Index.custom
new file mode 100644
index 0000000000..60b3529a23
--- /dev/null
+++ b/gstreamer-sharp/Index.custom
@@ -0,0 +1,12 @@
+
+public bool IsReadable {
+ get {
+ return ( ( (uint) Flags) & ( (uint) Gst.IndexFlags.Readable)) != 0;
+ }
+}
+
+public bool IsWritable {
+ get {
+ return ( ( (uint) Flags) & ( (uint) Gst.IndexFlags.Writable)) != 0;
+ }
+}
diff --git a/gstreamer-sharp/IndexEntry.custom b/gstreamer-sharp/IndexEntry.custom
new file mode 100644
index 0000000000..577534783a
--- /dev/null
+++ b/gstreamer-sharp/IndexEntry.custom
@@ -0,0 +1,157 @@
+protected virtual GLib.Opaque Copy (IntPtr raw)
+{
+ return GLib.Opaque.GetOpaque (raw, typeof (Gst.IndexEntry), true);
+}
+
+[DllImport ("gstreamersharpglue-0.10") ]
+extern static uint gstsharp_gst_index_entry_get_id_description_offset ();
+
+static uint id_description_offset = gstsharp_gst_index_entry_get_id_description_offset ();
+public string IdDescription {
+ get {
+ if (Type != Gst.IndexEntryType.Id)
+ throw new Exception ();
+
+ unsafe {
+ IntPtr* raw_ptr = (IntPtr*) ( ( (byte*) Handle) + id_description_offset);
+ return GLib.Marshaller.Utf8PtrToString (*raw_ptr);
+ }
+ }
+}
+
+[DllImport ("gstreamersharpglue-0.10") ]
+extern static uint gstsharp_gst_index_entry_get_assoc_nassocs_offset ();
+
+static uint assoc_nassocs_offset = gstsharp_gst_index_entry_get_assoc_nassocs_offset ();
+public int AssocNAssocs {
+ get {
+ if (Type != Gst.IndexEntryType.Association)
+ throw new Exception ();
+
+ unsafe {
+ int* raw_ptr = (int*) ( ( (byte*) Handle) + assoc_nassocs_offset);
+ return (*raw_ptr);
+ }
+ }
+}
+
+[DllImport ("gstreamersharpglue-0.10") ]
+extern static uint gstsharp_gst_index_entry_get_assoc_assocs_offset ();
+
+static uint assoc_assocs_offset = gstsharp_gst_index_entry_get_assoc_assocs_offset ();
+public Gst.IndexAssociation[] AssocAssocs {
+ get {
+ if (Type != Gst.IndexEntryType.Association)
+ throw new Exception ();
+
+ unsafe {
+ IntPtr* raw_ptr = (IntPtr*) ( ( (byte*) Handle) + assoc_assocs_offset);
+ Gst.IndexAssociation[] ret = new Gst.IndexAssociation[AssocNAssocs];
+ if (AssocNAssocs == 0)
+ return ret;
+
+ int unmanaged_struct_size = Marshal.SizeOf (typeof (Gst.IndexAssociation));
+
+ for (int i = 0; i < AssocNAssocs; i++)
+ ret[i] = Gst.IndexAssociation.New (new IntPtr ( (*raw_ptr).ToInt64() + i * unmanaged_struct_size));
+ return ret;
+ }
+ }
+}
+
+[DllImport ("gstreamersharpglue-0.10") ]
+extern static uint gstsharp_gst_index_entry_get_assoc_flags_offset ();
+
+static uint assoc_flags_offset = gstsharp_gst_index_entry_get_assoc_flags_offset ();
+public Gst.AssocFlags AssocFlags {
+ get {
+ if (Type != Gst.IndexEntryType.Association)
+ throw new Exception ();
+
+ unsafe {
+ int* raw_ptr = (int*) ( ( (byte*) Handle) + assoc_flags_offset);
+ return (Gst.AssocFlags) (*raw_ptr);
+ }
+ }
+}
+
+[DllImport ("gstreamersharpglue-0.10") ]
+extern static uint gstsharp_gst_index_entry_get_object_key_offset ();
+
+static uint object_key_offset = gstsharp_gst_index_entry_get_object_key_offset ();
+public string ObjectKey {
+ get {
+ if (Type != Gst.IndexEntryType.Object)
+ throw new Exception ();
+
+ unsafe {
+ IntPtr* raw_ptr = (IntPtr*) ( ( (byte*) Handle) + object_key_offset);
+ return GLib.Marshaller.Utf8PtrToString (*raw_ptr);
+ }
+ }
+}
+
+[DllImport ("gstreamersharpglue-0.10") ]
+extern static uint gstsharp_gst_index_entry_get_object_type_offset ();
+
+static uint object_type_offset = gstsharp_gst_index_entry_get_object_type_offset ();
+public GLib.GType ObjectGType {
+ get {
+ if (Type != Gst.IndexEntryType.Object)
+ throw new Exception ();
+
+ unsafe {
+ IntPtr* raw_ptr = (IntPtr*) ( ( (byte*) Handle) + object_type_offset);
+ return new GLib.GType (*raw_ptr);
+ }
+ }
+}
+
+[DllImport ("gstreamersharpglue-0.10") ]
+extern static uint gstsharp_gst_index_entry_get_object_object_offset ();
+
+static uint object_object_offset = gstsharp_gst_index_entry_get_object_object_offset ();
+public object ObjectObject {
+ get {
+ if (Type != Gst.IndexEntryType.Object)
+ throw new Exception ();
+
+ unsafe {
+ IntPtr* raw_ptr = (IntPtr*) ( ( (byte*) Handle) + object_object_offset);
+ return GLib.Object.GetObject (*raw_ptr, false);
+ }
+ }
+}
+
+[DllImport ("gstreamersharpglue-0.10") ]
+extern static uint gstsharp_gst_index_entry_get_format_format_offset ();
+
+static uint format_format_offset = gstsharp_gst_index_entry_get_format_format_offset ();
+public Gst.Format FormatFormat {
+ get {
+ if (Type != Gst.IndexEntryType.Format)
+ throw new Exception ();
+
+ unsafe {
+ int* raw_ptr = (int*) ( ( (byte*) Handle) + format_format_offset);
+ return (Gst.Format) (*raw_ptr);
+ }
+ }
+}
+
+[DllImport ("gstreamersharpglue-0.10") ]
+extern static uint gstsharp_gst_index_entry_get_format_key_offset ();
+
+static uint format_key_offset = gstsharp_gst_index_entry_get_format_key_offset ();
+public string FormatKey {
+ get {
+ if (Type != Gst.IndexEntryType.Format)
+ throw new Exception ();
+
+ unsafe {
+ IntPtr* raw_ptr = (IntPtr*) ( ( (byte*) Handle) + format_key_offset);
+ return GLib.Marshaller.Utf8PtrToString (*raw_ptr);
+ }
+ }
+}
+
diff --git a/gstreamer-sharp/Makefile.am b/gstreamer-sharp/Makefile.am
index 4307a0e1bb..072fe65338 100644
--- a/gstreamer-sharp/Makefile.am
+++ b/gstreamer-sharp/Makefile.am
@@ -71,6 +71,8 @@ customs = \
Plugin.custom \
Task.custom \
MiniObject.custom \
+ IndexEntry.custom \
+ Index.custom \
Registry.custom \
Query.custom \
Structure.custom \
diff --git a/gstreamer-sharp/glue/Makefile.am b/gstreamer-sharp/glue/Makefile.am
index f5779d998d..c8d4a593aa 100644
--- a/gstreamer-sharp/glue/Makefile.am
+++ b/gstreamer-sharp/glue/Makefile.am
@@ -14,7 +14,8 @@ libgstreamersharpglue_0_10_la_SOURCES = \
object.c \
pad.c \
gobject.c \
- typefind.c
+ typefind.c \
+ indexentry.c
nodist_libgstreamersharpglue_0_10_la_SOURCES = generated.c
diff --git a/gstreamer-sharp/glue/indexentry.c b/gstreamer-sharp/glue/indexentry.c
new file mode 100644
index 0000000000..7c02a309f2
--- /dev/null
+++ b/gstreamer-sharp/glue/indexentry.c
@@ -0,0 +1,55 @@
+#include
+
+uint
+gstsharp_gst_index_entry_get_id_description_offset (void)
+{
+ return (uint) G_STRUCT_OFFSET (GstIndexEntry, data.id.description);
+}
+
+uint
+gstsharp_gst_index_entry_get_assoc_nassocs_offset (void)
+{
+ return (uint) G_STRUCT_OFFSET (GstIndexEntry, data.assoc.nassocs);
+}
+
+uint
+gstsharp_gst_index_entry_get_assoc_assocs_offset (void)
+{
+ return (uint) G_STRUCT_OFFSET (GstIndexEntry, data.assoc.assocs);
+}
+
+uint
+gstsharp_gst_index_entry_get_assoc_flags_offset (void)
+{
+ return (uint) G_STRUCT_OFFSET (GstIndexEntry, data.assoc.flags);
+}
+
+uint
+gstsharp_gst_index_entry_get_object_key_offset (void)
+{
+ return (uint) G_STRUCT_OFFSET (GstIndexEntry, data.object.key);
+}
+
+uint
+gstsharp_gst_index_entry_get_object_type_offset (void)
+{
+ return (uint) G_STRUCT_OFFSET (GstIndexEntry, data.object.type);
+}
+
+uint
+gstsharp_gst_index_entry_get_object_object_offset (void)
+{
+ return (uint) G_STRUCT_OFFSET (GstIndexEntry, data.object.object);
+}
+
+uint
+gstsharp_gst_index_entry_get_format_format_offset (void)
+{
+ return (uint) G_STRUCT_OFFSET (GstIndexEntry, data.format.format);
+}
+
+uint
+gstsharp_gst_index_entry_get_format_key_offset (void)
+{
+ return (uint) G_STRUCT_OFFSET (GstIndexEntry, data.format.key);
+}