summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastian Dröge <sebastian.droege@collabora.co.uk>2009-04-13 13:27:26 +0200
committerSebastian Dröge <sebastian.droege@collabora.co.uk>2009-04-13 13:27:26 +0200
commit4b72aea9d53122363fdbdc2a4bc8d357ad25f85f (patch)
tree379028809d3babef3d6eff1c6e05a3ec107ff526
parent5eef87e58a66c6026dcf6d541260b6ae2c2e8290 (diff)
Fix Gst.Buffer bindings
-rw-r--r--doc/en/Gst/Buffer.xml46
-rw-r--r--doc/en/Gst/BufferFlags.xml80
-rw-r--r--doc/en/Gst/TagFlags.xml56
-rw-r--r--gstreamer-sharp/Buffer.custom197
-rw-r--r--gstreamer-sharp/Gstreamer.metadata21
-rw-r--r--gstreamer-sharp/glue/Makefile.am1
-rw-r--r--gstreamer-sharp/glue/buffer.c43
-rw-r--r--gstreamer-sharp/glue/miniobject.c25
8 files changed, 316 insertions, 153 deletions
diff --git a/doc/en/Gst/Buffer.xml b/doc/en/Gst/Buffer.xml
index 37d1805..00aecd4 100644
--- a/doc/en/Gst/Buffer.xml
+++ b/doc/en/Gst/Buffer.xml
@@ -35,7 +35,7 @@
- <Member MemberName=".ctor"><MemberSignature Language="C#" Value="public Buffer ();" /><MemberType>Constructor</MemberType><AssemblyInfo><AssemblyVersion>0.9.5.99</AssemblyVersion></AssemblyInfo><Parameters /><Docs><summary>To be added.</summary><remarks>To be added.</remarks></Docs></Member><Member MemberName=".ctor">
+ <Member MemberName=".ctor"><MemberSignature Language="C#" Value="public Buffer ();" /><MemberType>Constructor</MemberType><AssemblyInfo><AssemblyVersion>0.9.5.99</AssemblyVersion></AssemblyInfo><Parameters /><Docs><summary>To be added.</summary><remarks>To be added.</remarks></Docs></Member><Member MemberName=".ctor"><MemberSignature Language="C#" Value="public Buffer (byte[] data);" /><MemberType>Constructor</MemberType><AssemblyInfo><AssemblyVersion>0.9.5.99</AssemblyVersion></AssemblyInfo><Parameters><Parameter Name="data" Type="System.Byte[]" /></Parameters><Docs><param name="data">To be added.</param><summary>To be added.</summary><remarks>To be added.</remarks></Docs></Member><Member MemberName=".ctor">
<MemberSignature Language="C#" Value="public Buffer (IntPtr raw);" />
<MemberType>Constructor</MemberType>
<Parameters><Parameter Name="raw" Type="System.IntPtr" /></Parameters>
@@ -57,12 +57,12 @@
<Parameters><Parameter Name="offset" Type="System.UInt32" /><Parameter Name="size" Type="System.UInt32" /></Parameters>
<Docs><param name="offset">To be added.</param><param name="size">To be added.</param><summary>To be added.</summary><returns>To be added.</returns><remarks>To be added.</remarks></Docs>
<AssemblyInfo><AssemblyVersion>0.9.5.99</AssemblyVersion></AssemblyInfo></Member><Member MemberName="Data">
- <MemberSignature Language="C#" Value="public byte Data { get; }" />
+ <MemberSignature Language="C#" Value="public byte[] Data { set; get; }" />
<MemberType>Property</MemberType>
- <ReturnValue><ReturnType>System.Byte</ReturnType></ReturnValue>
+ <ReturnValue><ReturnType>System.Byte[]</ReturnType></ReturnValue>
<Docs><summary>To be added.</summary><value>To be added.</value><remarks>To be added.</remarks></Docs>
<AssemblyInfo><AssemblyVersion>0.9.5.99</AssemblyVersion></AssemblyInfo></Member><Member MemberName="Duration">
- <MemberSignature Language="C#" Value="public ulong Duration { get; }" />
+ <MemberSignature Language="C#" Value="public ulong Duration { set; get; }" />
<MemberType>Property</MemberType>
<ReturnValue><ReturnType>System.UInt64</ReturnType></ReturnValue>
<Docs><summary>To be added.</summary><value>To be added.</value><remarks>To be added.</remarks></Docs>
@@ -82,36 +82,19 @@
<ReturnValue><ReturnType>System.Boolean</ReturnType></ReturnValue>
<Parameters><Parameter Name="buf2" Type="Gst.Buffer" /></Parameters>
<Docs><param name="buf2">To be added.</param><summary>To be added.</summary><returns>To be added.</returns><remarks>To be added.</remarks></Docs>
- <AssemblyInfo><AssemblyVersion>0.9.5.99</AssemblyVersion></AssemblyInfo></Member><Member MemberName="Join">
- <MemberSignature Language="C#" Value="public Gst.Buffer Join (Gst.Buffer buf2);" />
- <MemberType>Method</MemberType>
- <ReturnValue><ReturnType>Gst.Buffer</ReturnType></ReturnValue>
- <Parameters><Parameter Name="buf2" Type="Gst.Buffer" /></Parameters>
- <Docs><param name="buf2">To be added.</param><summary>To be added.</summary><returns>To be added.</returns><remarks>To be added.</remarks></Docs>
- <AssemblyInfo><AssemblyVersion>0.9.5.99</AssemblyVersion></AssemblyInfo></Member><Member MemberName="MakeMetadataWritable">
- <MemberSignature Language="C#" Value="public Gst.Buffer MakeMetadataWritable ();" />
- <MemberType>Method</MemberType>
- <ReturnValue><ReturnType>Gst.Buffer</ReturnType></ReturnValue>
- <Parameters />
- <Docs><summary>To be added.</summary><returns>To be added.</returns><remarks>To be added.</remarks></Docs>
- <AssemblyInfo><AssemblyVersion>0.9.5.99</AssemblyVersion></AssemblyInfo></Member><Member MemberName="MallocData">
- <MemberSignature Language="C#" Value="public byte MallocData { get; }" />
- <MemberType>Property</MemberType>
- <ReturnValue><ReturnType>System.Byte</ReturnType></ReturnValue>
- <Docs><summary>To be added.</summary><value>To be added.</value><remarks>To be added.</remarks></Docs>
- <AssemblyInfo><AssemblyVersion>0.9.5.99</AssemblyVersion></AssemblyInfo></Member><Member MemberName="Merge">
+ <AssemblyInfo><AssemblyVersion>0.9.5.99</AssemblyVersion></AssemblyInfo></Member><Member MemberName="Item"><MemberSignature Language="C#" Value="public byte this[uint index] { set; get; }" /><MemberType>Property</MemberType><AssemblyInfo><AssemblyVersion>0.9.5.99</AssemblyVersion></AssemblyInfo><ReturnValue><ReturnType>System.Byte</ReturnType></ReturnValue><Parameters><Parameter Name="index" Type="System.UInt32" /></Parameters><Docs><param name="index">To be added.</param><summary>To be added.</summary><value>To be added.</value><remarks>To be added.</remarks></Docs></Member><Member MemberName="MakeMetadataWritable"><MemberSignature Language="C#" Value="public void MakeMetadataWritable ();" /><MemberType>Method</MemberType><AssemblyInfo><AssemblyVersion>0.9.5.99</AssemblyVersion></AssemblyInfo><ReturnValue><ReturnType>System.Void</ReturnType></ReturnValue><Parameters /><Docs><summary>To be added.</summary><remarks>To be added.</remarks></Docs></Member><Member MemberName="Merge">
<MemberSignature Language="C#" Value="public Gst.Buffer Merge (Gst.Buffer buf2);" />
<MemberType>Method</MemberType>
<ReturnValue><ReturnType>Gst.Buffer</ReturnType></ReturnValue>
<Parameters><Parameter Name="buf2" Type="Gst.Buffer" /></Parameters>
<Docs><param name="buf2">To be added.</param><summary>To be added.</summary><returns>To be added.</returns><remarks>To be added.</remarks></Docs>
<AssemblyInfo><AssemblyVersion>0.9.5.99</AssemblyVersion></AssemblyInfo></Member><Member MemberName="Offset">
- <MemberSignature Language="C#" Value="public ulong Offset { get; }" />
+ <MemberSignature Language="C#" Value="public ulong Offset { set; get; }" />
<MemberType>Property</MemberType>
<ReturnValue><ReturnType>System.UInt64</ReturnType></ReturnValue>
<Docs><summary>To be added.</summary><value>To be added.</value><remarks>To be added.</remarks></Docs>
<AssemblyInfo><AssemblyVersion>0.9.5.99</AssemblyVersion></AssemblyInfo></Member><Member MemberName="OffsetEnd">
- <MemberSignature Language="C#" Value="public ulong OffsetEnd { get; }" />
+ <MemberSignature Language="C#" Value="public ulong OffsetEnd { set; get; }" />
<MemberType>Property</MemberType>
<ReturnValue><ReturnType>System.UInt64</ReturnType></ReturnValue>
<Docs><summary>To be added.</summary><value>To be added.</value><remarks>To be added.</remarks></Docs>
@@ -126,16 +109,15 @@
<ReturnValue><ReturnType>Gst.Buffer</ReturnType></ReturnValue>
<Parameters><Parameter Name="offset" Type="System.UInt32" /><Parameter Name="buf2" Type="Gst.Buffer" /><Parameter Name="len" Type="System.UInt32" /></Parameters>
<Docs><param name="offset">To be added.</param><param name="buf2">To be added.</param><param name="len">To be added.</param><summary>To be added.</summary><returns>To be added.</returns><remarks>To be added.</remarks></Docs>
- <AssemblyInfo><AssemblyVersion>0.9.5.99</AssemblyVersion></AssemblyInfo></Member><Member MemberName="Stamp">
- <MemberSignature Language="C#" Value="public void Stamp (Gst.Buffer src);" />
- <MemberType>Method</MemberType>
- <ReturnValue><ReturnType>System.Void</ReturnType></ReturnValue>
- <Parameters><Parameter Name="src" Type="Gst.Buffer" /></Parameters>
- <Docs><param name="src">To be added.</param><summary>To be added.</summary><remarks>To be added.</remarks></Docs>
<AssemblyInfo><AssemblyVersion>0.9.5.99</AssemblyVersion></AssemblyInfo></Member><Member MemberName="Timestamp">
- <MemberSignature Language="C#" Value="public ulong Timestamp { get; }" />
+ <MemberSignature Language="C#" Value="public ulong Timestamp { set; get; }" />
<MemberType>Property</MemberType>
<ReturnValue><ReturnType>System.UInt64</ReturnType></ReturnValue>
<Docs><summary>To be added.</summary><value>To be added.</value><remarks>To be added.</remarks></Docs>
- <AssemblyInfo><AssemblyVersion>0.9.5.99</AssemblyVersion></AssemblyInfo></Member><Member MemberName="TryNewAndAlloc"><MemberSignature Language="C#" Value="public static Gst.Buffer TryNewAndAlloc (uint size);" /><MemberType>Method</MemberType><AssemblyInfo><AssemblyVersion>0.9.5.99</AssemblyVersion></AssemblyInfo><ReturnValue><ReturnType>Gst.Buffer</ReturnType></ReturnValue><Parameters><Parameter Name="size" Type="System.UInt32" /></Parameters><Docs><param name="size">To be added.</param><summary>To be added.</summary><returns>To be added.</returns><remarks>To be added.</remarks></Docs></Member></Members>
+ <AssemblyInfo><AssemblyVersion>0.9.5.99</AssemblyVersion></AssemblyInfo></Member></Members>
+ <Attributes>
+ <Attribute>
+ <AttributeName>System.Reflection.DefaultMember("Item")</AttributeName>
+ </Attribute>
+ </Attributes>
</Type>
diff --git a/doc/en/Gst/BufferFlags.xml b/doc/en/Gst/BufferFlags.xml
index cf67b9c..03d8199 100644
--- a/doc/en/Gst/BufferFlags.xml
+++ b/doc/en/Gst/BufferFlags.xml
@@ -17,96 +17,68 @@
<remarks>To be added.</remarks>
</Docs>
<Members>
+
+
+
+
+
+
<Member MemberName="DeltaUnit">
<MemberSignature Language="C#" Value="DeltaUnit" />
<MemberType>Field</MemberType>
<AssemblyInfo>
<AssemblyVersion>0.9.5.99</AssemblyVersion>
</AssemblyInfo>
- <ReturnValue>
- <ReturnType>Gst.BufferFlags</ReturnType>
- </ReturnValue>
- <Docs>
- <summary>To be added.</summary>
- </Docs>
- </Member>
- <Member MemberName="Discont">
+ <ReturnValue><ReturnType>Gst.BufferFlags</ReturnType></ReturnValue>
+ <Docs><summary>To be added.</summary></Docs>
+ </Member><Member MemberName="Discont">
<MemberSignature Language="C#" Value="Discont" />
<MemberType>Field</MemberType>
<AssemblyInfo>
<AssemblyVersion>0.9.5.99</AssemblyVersion>
</AssemblyInfo>
- <ReturnValue>
- <ReturnType>Gst.BufferFlags</ReturnType>
- </ReturnValue>
- <Docs>
- <summary>To be added.</summary>
- </Docs>
- </Member>
- <Member MemberName="Gap">
+ <ReturnValue><ReturnType>Gst.BufferFlags</ReturnType></ReturnValue>
+ <Docs><summary>To be added.</summary></Docs>
+ </Member><Member MemberName="Gap">
<MemberSignature Language="C#" Value="Gap" />
<MemberType>Field</MemberType>
<AssemblyInfo>
<AssemblyVersion>0.9.5.99</AssemblyVersion>
</AssemblyInfo>
- <ReturnValue>
- <ReturnType>Gst.BufferFlags</ReturnType>
- </ReturnValue>
- <Docs>
- <summary>To be added.</summary>
- </Docs>
- </Member>
- <Member MemberName="InCaps">
+ <ReturnValue><ReturnType>Gst.BufferFlags</ReturnType></ReturnValue>
+ <Docs><summary>To be added.</summary></Docs>
+ </Member><Member MemberName="InCaps">
<MemberSignature Language="C#" Value="InCaps" />
<MemberType>Field</MemberType>
<AssemblyInfo>
<AssemblyVersion>0.9.5.99</AssemblyVersion>
</AssemblyInfo>
- <ReturnValue>
- <ReturnType>Gst.BufferFlags</ReturnType>
- </ReturnValue>
- <Docs>
- <summary>To be added.</summary>
- </Docs>
- </Member>
- <Member MemberName="Last">
+ <ReturnValue><ReturnType>Gst.BufferFlags</ReturnType></ReturnValue>
+ <Docs><summary>To be added.</summary></Docs>
+ </Member><Member MemberName="Last">
<MemberSignature Language="C#" Value="Last" />
<MemberType>Field</MemberType>
<AssemblyInfo>
<AssemblyVersion>0.9.5.99</AssemblyVersion>
</AssemblyInfo>
- <ReturnValue>
- <ReturnType>Gst.BufferFlags</ReturnType>
- </ReturnValue>
- <Docs>
- <summary>To be added.</summary>
- </Docs>
- </Member>
- <Member MemberName="Preroll">
+ <ReturnValue><ReturnType>Gst.BufferFlags</ReturnType></ReturnValue>
+ <Docs><summary>To be added.</summary></Docs>
+ </Member><Member MemberName="Preroll">
<MemberSignature Language="C#" Value="Preroll" />
<MemberType>Field</MemberType>
<AssemblyInfo>
<AssemblyVersion>0.9.5.99</AssemblyVersion>
</AssemblyInfo>
- <ReturnValue>
- <ReturnType>Gst.BufferFlags</ReturnType>
- </ReturnValue>
- <Docs>
- <summary>To be added.</summary>
- </Docs>
- </Member>
- <Member MemberName="Readonly">
+ <ReturnValue><ReturnType>Gst.BufferFlags</ReturnType></ReturnValue>
+ <Docs><summary>To be added.</summary></Docs>
+ </Member><Member MemberName="Readonly">
<MemberSignature Language="C#" Value="Readonly" />
<MemberType>Field</MemberType>
<AssemblyInfo>
<AssemblyVersion>0.9.5.99</AssemblyVersion>
</AssemblyInfo>
- <ReturnValue>
- <ReturnType>Gst.BufferFlags</ReturnType>
- </ReturnValue>
- <Docs>
- <summary>To be added.</summary>
- </Docs>
+ <ReturnValue><ReturnType>Gst.BufferFlags</ReturnType></ReturnValue>
+ <Docs><summary>To be added.</summary></Docs>
</Member>
</Members>
</Type>
diff --git a/doc/en/Gst/TagFlags.xml b/doc/en/Gst/TagFlags.xml
index fee6b99..c08c928 100644
--- a/doc/en/Gst/TagFlags.xml
+++ b/doc/en/Gst/TagFlags.xml
@@ -12,70 +12,50 @@
<remarks>To be added.</remarks>
</Docs>
<Members>
+
+
+
+
<Member MemberName="Count">
<MemberSignature Language="C#" Value="Count" />
<MemberType>Field</MemberType>
<AssemblyInfo>
<AssemblyVersion>0.9.5.99</AssemblyVersion>
</AssemblyInfo>
- <ReturnValue>
- <ReturnType>Gst.TagFlags</ReturnType>
- </ReturnValue>
- <Docs>
- <summary>To be added.</summary>
- </Docs>
- </Member>
- <Member MemberName="Decoded">
+ <ReturnValue><ReturnType>Gst.TagFlags</ReturnType></ReturnValue>
+ <Docs><summary>To be added.</summary></Docs>
+ </Member><Member MemberName="Decoded">
<MemberSignature Language="C#" Value="Decoded" />
<MemberType>Field</MemberType>
<AssemblyInfo>
<AssemblyVersion>0.9.5.99</AssemblyVersion>
</AssemblyInfo>
- <ReturnValue>
- <ReturnType>Gst.TagFlags</ReturnType>
- </ReturnValue>
- <Docs>
- <summary>To be added.</summary>
- </Docs>
- </Member>
- <Member MemberName="Encoded">
+ <ReturnValue><ReturnType>Gst.TagFlags</ReturnType></ReturnValue>
+ <Docs><summary>To be added.</summary></Docs>
+ </Member><Member MemberName="Encoded">
<MemberSignature Language="C#" Value="Encoded" />
<MemberType>Field</MemberType>
<AssemblyInfo>
<AssemblyVersion>0.9.5.99</AssemblyVersion>
</AssemblyInfo>
- <ReturnValue>
- <ReturnType>Gst.TagFlags</ReturnType>
- </ReturnValue>
- <Docs>
- <summary>To be added.</summary>
- </Docs>
- </Member>
- <Member MemberName="Meta">
+ <ReturnValue><ReturnType>Gst.TagFlags</ReturnType></ReturnValue>
+ <Docs><summary>To be added.</summary></Docs>
+ </Member><Member MemberName="Meta">
<MemberSignature Language="C#" Value="Meta" />
<MemberType>Field</MemberType>
<AssemblyInfo>
<AssemblyVersion>0.9.5.99</AssemblyVersion>
</AssemblyInfo>
- <ReturnValue>
- <ReturnType>Gst.TagFlags</ReturnType>
- </ReturnValue>
- <Docs>
- <summary>To be added.</summary>
- </Docs>
- </Member>
- <Member MemberName="Undefined">
+ <ReturnValue><ReturnType>Gst.TagFlags</ReturnType></ReturnValue>
+ <Docs><summary>To be added.</summary></Docs>
+ </Member><Member MemberName="Undefined">
<MemberSignature Language="C#" Value="Undefined" />
<MemberType>Field</MemberType>
<AssemblyInfo>
<AssemblyVersion>0.9.5.99</AssemblyVersion>
</AssemblyInfo>
- <ReturnValue>
- <ReturnType>Gst.TagFlags</ReturnType>
- </ReturnValue>
- <Docs>
- <summary>To be added.</summary>
- </Docs>
+ <ReturnValue><ReturnType>Gst.TagFlags</ReturnType></ReturnValue>
+ <Docs><summary>To be added.</summary></Docs>
</Member>
</Members>
</Type>
diff --git a/gstreamer-sharp/Buffer.custom b/gstreamer-sharp/Buffer.custom
index e69de29..631e404 100644
--- a/gstreamer-sharp/Buffer.custom
+++ b/gstreamer-sharp/Buffer.custom
@@ -0,0 +1,197 @@
+[DllImport ("gstreamer-0.10.dll") ]
+static extern IntPtr gst_buffer_try_new_and_alloc (uint size);
+
+public Buffer (uint size) {
+ IntPtr raw = gst_buffer_try_new_and_alloc (size);
+ if (raw == IntPtr.Zero)
+ throw new OutOfMemoryException ();
+ Raw = raw;
+}
+
+public Buffer (byte[] data) : this () {
+ Data = data;
+}
+
+[DllImport ("gstreamersharpglue-0.10") ]
+extern static uint gstsharp_gst_buffer_get_data_offset ();
+[DllImport ("gstreamersharpglue-0.10") ]
+extern static void gstsharp_gst_buffer_set_data (IntPtr handle, IntPtr data, uint size);
+[DllImport ("libglib-2.0-0.dll") ]
+extern static IntPtr g_try_malloc (int size);
+
+static uint data_offset = gstsharp_gst_buffer_get_data_offset ();
+public byte[] Data {
+ get {
+ IntPtr raw_ptr;
+ unsafe {
+ raw_ptr = * ( (IntPtr *) ( ( (byte*) Handle) + data_offset));
+ }
+
+ byte[] data = new byte[Size];
+ Marshal.Copy (raw_ptr, data, 0, (int) Size);
+
+ return data;
+ }
+
+ set {
+ if (!IsWritable)
+ throw new ApplicationException ();
+
+ IntPtr raw_ptr = g_try_malloc (value.Length);
+ if (raw_ptr == IntPtr.Zero)
+ throw new OutOfMemoryException ();
+
+ Marshal.Copy (value, 0, raw_ptr, value.Length);
+ gstsharp_gst_buffer_set_data (Handle, raw_ptr, (uint) value.Length);
+ }
+}
+
+public byte this [uint index] {
+ get {
+ if (index >= Size)
+ throw new ArgumentOutOfRangeException ();
+
+ unsafe {
+ byte **raw_ptr = (byte **) ( ( (byte*) Handle) + data_offset);
+ return * ( (*raw_ptr) + index);
+ }
+ }
+ set {
+ if (index >= Size)
+ throw new ArgumentOutOfRangeException ();
+ if (!IsWritable)
+ throw new ApplicationException ();
+
+ unsafe {
+ byte **raw_ptr = (byte **) ( ( (byte*) Handle) + data_offset);
+ * ( (*raw_ptr) + index) = value;
+ }
+ }
+}
+
+[DllImport ("gstreamer-0.10.dll") ]
+static extern IntPtr gst_buffer_make_metadata_writable (IntPtr raw);
+
+/* FIXME: This is not optimal */
+public void MakeMetadataWritable() {
+ if (IsMetadataWritable)
+ return;
+
+ IntPtr sub = gst_buffer_create_sub (Raw, 0, Size);
+ Raw = sub;
+ /* ^--- Takes a second ref, not good */
+ Unref (Raw);
+ /* ^--- Sets Owned = false, wrong! */
+ Owned = true;
+}
+
+[DllImport ("gstreamer-0.10.dll") ]
+static extern IntPtr gst_buffer_get_caps (IntPtr raw);
+[DllImport ("gstreamer-0.10.dll") ]
+static extern void gst_buffer_set_caps (IntPtr raw, IntPtr caps);
+
+public Gst.Caps Caps {
+ get {
+ IntPtr raw_ret = gst_buffer_get_caps (Handle);
+ Gst.Caps ret = raw_ret == IntPtr.Zero ? null : (Gst.Caps) GLib.Opaque.GetOpaque (raw_ret, typeof (Gst.Caps), true);
+ return ret;
+ }
+ set {
+ if (!IsMetadataWritable)
+ throw new ApplicationException ();
+ gst_buffer_set_caps (Handle, value == null ? IntPtr.Zero : value.Handle);
+ }
+}
+
+[DllImport ("gstreamersharpglue-0.10") ]
+extern static uint gstsharp_gst_buffer_get_timestamp_offset ();
+static uint timestamp_offset = gstsharp_gst_buffer_get_timestamp_offset ();
+
+public ulong Timestamp {
+ get {
+ unsafe {
+ ulong *raw_ptr = ( (ulong*) ( ( (byte*) Handle) + timestamp_offset));
+ return *raw_ptr;
+ }
+ }
+
+ set {
+ if (!IsMetadataWritable)
+ throw new ApplicationException ();
+
+ unsafe {
+ ulong *raw_ptr = ( (ulong*) ( ( (byte*) Handle) + timestamp_offset));
+ *raw_ptr = value;
+ }
+ }
+}
+
+[DllImport ("gstreamersharpglue-0.10") ]
+extern static uint gstsharp_gst_buffer_get_duration_offset ();
+static uint duration_offset = gstsharp_gst_buffer_get_duration_offset ();
+
+public ulong Duration {
+ get {
+ unsafe {
+ ulong *raw_ptr = ( (ulong*) ( ( (byte*) Handle) + duration_offset));
+ return *raw_ptr;
+ }
+ }
+
+ set {
+ if (!IsMetadataWritable)
+ throw new ApplicationException ();
+
+ unsafe {
+ ulong *raw_ptr = ( (ulong*) ( ( (byte*) Handle) + duration_offset));
+ *raw_ptr = value;
+ }
+ }
+}
+
+[DllImport ("gstreamersharpglue-0.10") ]
+extern static uint gstsharp_gst_buffer_get_offset_offset ();
+static uint offset_offset = gstsharp_gst_buffer_get_offset_offset ();
+
+public ulong Offset {
+ get {
+ unsafe {
+ ulong *raw_ptr = ( (ulong*) ( ( (byte*) Handle) + offset_offset));
+ return *raw_ptr;
+ }
+ }
+
+ set {
+ if (!IsMetadataWritable)
+ throw new ApplicationException ();
+
+ unsafe {
+ ulong *raw_ptr = ( (ulong*) ( ( (byte*) Handle) + offset_offset));
+ *raw_ptr = value;
+ }
+ }
+}
+
+[DllImport ("gstreamersharpglue-0.10") ]
+extern static uint gstsharp_gst_buffer_get_offset_end_offset ();
+static uint offset_end_offset = gstsharp_gst_buffer_get_offset_end_offset ();
+
+public ulong OffsetEnd {
+ get {
+ unsafe {
+ ulong *raw_ptr = ( (ulong*) ( ( (byte*) Handle) + offset_end_offset));
+ return *raw_ptr;
+ }
+ }
+
+ set {
+ if (!IsMetadataWritable)
+ throw new ApplicationException ();
+
+ unsafe {
+ ulong *raw_ptr = ( (ulong*) ( ( (byte*) Handle) + offset_end_offset));
+ *raw_ptr = value;
+ }
+ }
+}
+
diff --git a/gstreamer-sharp/Gstreamer.metadata b/gstreamer-sharp/Gstreamer.metadata
index b35cf57..541cc08 100644
--- a/gstreamer-sharp/Gstreamer.metadata
+++ b/gstreamer-sharp/Gstreamer.metadata
@@ -23,7 +23,26 @@
<change-node-type path="/api/namespace/object[@name='Buffer']">boxed</change-node-type>
<attr path="/api/namespace/boxed[@name='Buffer']" name="opaque">true</attr>
- <attr path="/api/namespace/boxed[@name='Buffer']/method[@name='GetCaps']/return-type" name="owned">true</attr>
+ <attr path="/api/namespace/boxed[@name='Buffer']/method[@cname='gst_buffer_get_type']" name="new_flag">1</attr>
+ <attr path="/api/namespace/boxed[@name='Buffer']/method[@cname='gst_buffer_get_caps']/return-type" name="owned">true</attr>
+ <attr path="/api/namespace/boxed[@name='Buffer']/field[@name='Data']" name="hidden">1</attr>
+ <attr path="/api/namespace/boxed[@name='Buffer']/field[@name='Duration']" name="hidden">1</attr>
+ <attr path="/api/namespace/boxed[@name='Buffer']/field[@name='MallocData']" name="hidden">1</attr>
+ <attr path="/api/namespace/boxed[@name='Buffer']/field[@name='Offset']" name="hidden">1</attr>
+ <attr path="/api/namespace/boxed[@name='Buffer']/field[@name='OffsetEnd']" name="hidden">1</attr>
+ <attr path="/api/namespace/boxed[@name='Buffer']/field[@name='Timestamp']" name="hidden">1</attr>
+ <attr path="/api/namespace/boxed[@name='Buffer']/field[@name='Caps']" name="hidden">1</attr>
+ <attr path="/api/namespace/boxed[@name='Buffer']/field[@name='FreeFunc']" name="hidden">1</attr>
+ <attr path="/api/namespace/boxed[@name='Buffer']/method[@cname='gst_buffer_get_caps']" name="hidden">1</attr>
+ <attr path="/api/namespace/boxed[@name='Buffer']/method[@cname='gst_buffer_set_caps']" name="hidden">1</attr>
+ <attr path="/api/namespace/boxed[@name='Buffer']/method[@cname='gst_buffer_stamp']" name="hidden">1</attr>
+ <attr path="/api/namespace/boxed[@name='Buffer']/method[@cname='gst_buffer_join']" name="hidden">1</attr>
+ <attr path="/api/namespace/boxed[@name='Buffer']/method[@cname='gst_buffer_make_metadata_writable']" name="hidden">1</attr>
+ <attr path="/api/namespace/boxed[@name='Buffer']/constructor[@cname='gst_buffer_new_and_alloc']" name="hidden">1</attr>
+ <attr path="/api/namespace/boxed[@name='Buffer']/method[@cname='gst_buffer_try_new_and_alloc']" name="hidden">1</attr>
+ <attr path="/api/namespace/boxed[@name='Buffer']/method[@cname='gst_buffer_create_sub']/return-type" name="owned">true</attr>
+ <attr path="/api/namespace/boxed[@name='Buffer']/method[@cname='gst_buffer_merge']/return-type" name="owned">true</attr>
+ <attr path="/api/namespace/boxed[@name='Buffer']/method[@cname='gst_buffer_span']/return-type" name="owned">true</attr>
<attr path="/api/namespace/enum[@name='BufferFlag']" name="name">BufferFlags</attr>
<attr path="/api/namespace/enum[@name='BufferFlags']/member[@cname='GST_BUFFER_FLAG_READONLY']" name="value">MiniObjectFlags.Readonly</attr>
diff --git a/gstreamer-sharp/glue/Makefile.am b/gstreamer-sharp/glue/Makefile.am
index 2d5fdbf..c45e8d5 100644
--- a/gstreamer-sharp/glue/Makefile.am
+++ b/gstreamer-sharp/glue/Makefile.am
@@ -4,7 +4,6 @@ libgstreamersharpglue_0_10_la_SOURCES = \
buffer.c \
clock.c \
message.c \
- miniobject.c \
bin.c \
gerror.c \
gobject.c
diff --git a/gstreamer-sharp/glue/buffer.c b/gstreamer-sharp/glue/buffer.c
index 72bd608..025cc63 100644
--- a/gstreamer-sharp/glue/buffer.c
+++ b/gstreamer-sharp/glue/buffer.c
@@ -1,7 +1,46 @@
#include <gst/gst.h>
+void
+gstsharp_gst_buffer_set_data (GstBuffer * buffer, guint8 * new_data, guint size)
+{
+ g_return_if_fail (gst_buffer_is_writable (buffer));
+
+ if (buffer->malloc_data && buffer->free_func)
+ buffer->free_func (buffer->malloc_data);
+ else if (buffer->malloc_data)
+ g_free (buffer->malloc_data);
+
+ buffer->malloc_data = buffer->data = new_data;
+ buffer->size = size;
+ buffer->free_func = NULL;
+}
+
+guint
+gstsharp_gst_buffer_get_data_offset (void)
+{
+ return (guint) G_STRUCT_OFFSET (GstBuffer, data);
+}
+
+guint
+gstsharp_gst_buffer_get_timestamp_offset (void)
+{
+ return (guint) G_STRUCT_OFFSET (GstBuffer, timestamp);
+}
+
+guint
+gstsharp_gst_buffer_get_duration_offset (void)
+{
+ return (guint) G_STRUCT_OFFSET (GstBuffer, duration);
+}
+
+guint
+gstsharp_gst_buffer_get_offset_offset (void)
+{
+ return (guint) G_STRUCT_OFFSET (GstBuffer, offset);
+}
+
guint
-gstsharp_gst_buffer_refcount (GstBuffer * buf)
+gstsharp_gst_buffer_get_offset_end_offset (void)
{
- return GST_MINI_OBJECT_REFCOUNT_VALUE (buf);
+ return (guint) G_STRUCT_OFFSET (GstBuffer, offset_end);
}
diff --git a/gstreamer-sharp/glue/miniobject.c b/gstreamer-sharp/glue/miniobject.c
deleted file mode 100644
index 3bfffb6..0000000
--- a/gstreamer-sharp/glue/miniobject.c
+++ /dev/null
@@ -1,25 +0,0 @@
-// Thie file is mostly bits and pieces snipped from the gtk-sharp/glib/glue/object.c code
-// By Mike Kestner
-
-#include <glib-object.h>
-#include <gst/gstminiobject.h>
-
-GType
-gstsharp_get_type_id (GObject * obj)
-{
- return G_TYPE_FROM_INSTANCE (obj);
-}
-
-GType
-gstsharp_register_type (gchar * name, GType parent)
-{
- GTypeQuery query;
- GTypeInfo info = { 0, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, NULL };
-
- g_type_query (parent, &query);
-
- info.class_size = query.class_size;
- info.instance_size = query.instance_size;
-
- return g_type_register_static (parent, name, &info, 0);
-}