summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastian Dröge <sebastian@centricular.com>2020-01-29 12:58:59 +0200
committerThibault Saunier <tsaunier@gnome.org>2020-02-18 15:12:52 +0000
commita088475b9d22c6c6ce7b7dee24262dd8aab48342 (patch)
tree057342d26c6e7e7311a388f61b7bddbb81e271ff
parenta518db82244bf0a752bffb034fb4ec0a80db2a54 (diff)
Bind gst_buffer_new_wrapped() manually
The memory must be allocated with g_malloc() as we will free it again later with g_free(), as such allocate and copy the array that is passed in.
-rw-r--r--sources/custom/Buffer.cs10
-rw-r--r--sources/generated/Gst/Buffer.cs8
-rw-r--r--sources/generated/gstreamer-sharp-api.xml6
-rw-r--r--sources/gstreamer-sharp.metadata3
4 files changed, 14 insertions, 13 deletions
diff --git a/sources/custom/Buffer.cs b/sources/custom/Buffer.cs
index 464ad7e..5d0cb68 100644
--- a/sources/custom/Buffer.cs
+++ b/sources/custom/Buffer.cs
@@ -46,5 +46,15 @@ namespace Gst {
return (ulong) native_dest_size;
}
+
+ [DllImport("gstreamer-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
+ static extern IntPtr gst_buffer_new_wrapped(IntPtr data, UIntPtr n_length);
+
+ public Buffer (byte[] data)
+ {
+ IntPtr ptr = GLib.Marshaller.Malloc((ulong) data.Length);
+ Marshal.Copy(data, 0, ptr, data.Length);
+ Raw = gst_buffer_new_wrapped(ptr, new UIntPtr((ulong) data.Length));
+ }
}
}
diff --git a/sources/generated/Gst/Buffer.cs b/sources/generated/Gst/Buffer.cs
index 39293e5..cc3e305 100644
--- a/sources/generated/Gst/Buffer.cs
+++ b/sources/generated/Gst/Buffer.cs
@@ -581,14 +581,6 @@ namespace Gst {
}
[DllImport("gstreamer-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
- static extern IntPtr gst_buffer_new_wrapped(byte[] data, UIntPtr n_length);
-
- public Buffer (byte[] data)
- {
- Raw = gst_buffer_new_wrapped(data, new UIntPtr ((ulong) (data == null ? 0 : data.Length)));
- }
-
- [DllImport("gstreamer-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
static extern IntPtr gst_buffer_new_wrapped_bytes(IntPtr bytes);
public Buffer (GLib.Bytes bytes)
diff --git a/sources/generated/gstreamer-sharp-api.xml b/sources/generated/gstreamer-sharp-api.xml
index a381805..bc0cd66 100644
--- a/sources/generated/gstreamer-sharp-api.xml
+++ b/sources/generated/gstreamer-sharp-api.xml
@@ -6150,10 +6150,10 @@
</parameter>
</parameters>
</constructor>
- <constructor cname="gst_buffer_new_wrapped">
+ <constructor cname="gst_buffer_new_wrapped" hidden="true">
<parameters>
- <parameter name="data" type="guint8*" owned="true" array="true" array_length_param_index="1" />
- <parameter name="n_length" type="gsize" />
+ <parameter name="data" type="gpointer*" owned="true" array="true" array_length_param_index="1" />
+ <parameter name="size" type="gsize" />
</parameters>
</constructor>
<constructor cname="gst_buffer_new_wrapped_bytes" version="1.16">
diff --git a/sources/gstreamer-sharp.metadata b/sources/gstreamer-sharp.metadata
index dde15c4..73fa0a1 100644
--- a/sources/gstreamer-sharp.metadata
+++ b/sources/gstreamer-sharp.metadata
@@ -321,8 +321,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
<attr path="//method[@cname='gst_tag_list_copy_value']/parameters/parameter[@name='dest']" name="pass_as">ref</attr>
<attr path="//object/field[@cname='parent']" name="hidden">true</attr>
<!-- buffer fixes -->
- <attr path="//constructor[@cname='gst_buffer_new_wrapped']/parameters/parameter[@name='data']" name="type">guint8*</attr>
- <attr path="//constructor[@cname='gst_buffer_new_wrapped']/parameters/parameter[@name='size']" name="name">n_length</attr>
+ <attr path="//constructor[@cname='gst_buffer_new_wrapped']" name="hidden">true</attr>
<attr path="//constructor[@cname='gst_buffer_new_wrapped_full']/parameters/parameter[@name='data']" name="type">guint8*</attr>
<attr path="//constructor[@cname='gst_memory_new_wrapped']/parameters/parameter[@name='data']" name="type">guint8*</attr>
<attr path="//method[@cname='gst_buffer_fill']/parameters/parameter[@name='src']" name="type">guint8*</attr>