AppSrc.PushBuffer() takes ownership of the buffer

Part of bug #585551.
This commit is contained in:
Sebastian Dröge 2009-06-12 15:21:28 +02:00
parent e53329406a
commit b3b018c916
2 changed files with 22 additions and 12 deletions

View file

@ -1,14 +1,23 @@
[DllImport("libgstreamer-0.10.dll") ]
static extern IntPtr gst_element_factory_make (IntPtr element, IntPtr name);
[DllImport ("libgstreamer-0.10.dll") ]
static extern IntPtr gst_element_factory_make (IntPtr element, IntPtr name);
public AppSrc (string name) : base (IntPtr.Zero) {
IntPtr native_name = GLib.Marshaller.StringToPtrGStrdup (name);
IntPtr native_element = GLib.Marshaller.StringToPtrGStrdup ("appsrc");
Raw = gst_element_factory_make (native_element, native_name);
GLib.Marshaller.Free (native_name);
GLib.Marshaller.Free (native_element);
if (Raw == IntPtr.Zero)
throw new Exception ("Failed to instantiate element \"appsrc\"");
}
public AppSrc (string name) : base (IntPtr.Zero) {
IntPtr native_name = GLib.Marshaller.StringToPtrGStrdup (name);
IntPtr native_element = GLib.Marshaller.StringToPtrGStrdup ("appsrc");
Raw = gst_element_factory_make (native_element, native_name);
GLib.Marshaller.Free (native_name);
GLib.Marshaller.Free (native_element);
if (Raw == IntPtr.Zero)
throw new Exception ("Failed to instantiate element \"appsrc\"");
}
public AppSrc () : this ((string) null) { }
public AppSrc () : this ( (string) null) { }
[DllImport ("libgstapp-0.10.dll") ]
static extern int gst_app_src_push_buffer (IntPtr raw, IntPtr buffer);
public Gst.FlowReturn PushBuffer (Gst.Buffer buffer) {
int raw_ret = gst_app_src_push_buffer (Handle, buffer == null ? IntPtr.Zero : buffer.OwnedHandle);
Gst.FlowReturn ret = (Gst.FlowReturn) raw_ret;
return ret;
}

View file

@ -1134,6 +1134,7 @@
<attr path="/api/namespace/object[@cname='GstAppSrc']/method[@cname='gst_app_src_set_callbacks']" name="hidden">1</attr>
<attr path="/api/namespace/object[@cname='GstAppSrc']/signal[@cname='push-buffer']" name="hidden">1</attr>
<attr path="/api/namespace/object[@cname='GstAppSrc']/signal[@cname='end-of-stream']" name="hidden">1</attr>
<attr path="/api/namespace/object[@cname='GstAppSrc']/method[@cname='gst_app_src_push_buffer']" name="hidden">1</attr>
<!-- GStreamer Interfaces library -->
<attr path="/api/namespace/enum[@cname='GstNavigationCommand']" name="name">NavigationCommand</attr>