From: Sebastian Dröge Date: Thu, 28 May 2009 13:31:01 +0000 (+0200) Subject: Implement Adapter.Peek() that returns a GstBuffer X-Git-Tag: 1.19.3~483^2~542 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=5a9a2f27a782b1ee539ee8c738bb84b3eada0890;p=platform%2Fupstream%2Fgstreamer.git Implement Adapter.Peek() that returns a GstBuffer --- diff --git a/gstreamer-sharp/Adapter.custom b/gstreamer-sharp/Adapter.custom index 1e0ea64..da49141 100644 --- a/gstreamer-sharp/Adapter.custom +++ b/gstreamer-sharp/Adapter.custom @@ -5,3 +5,10 @@ gst_adapter_push(Handle, buf == null ? IntPtr.Zero : buf.OwnedHandle); } + + [DllImport ("gstreamersharpglue-0.10.dll") ] + static extern IntPtr gstsharp_gst_adapter_peek_buffer (IntPtr adapter, uint size); + + public Gst.Buffer Peek (uint size) { + return (Gst.Buffer) Gst.MiniObject.GetObject (gstsharp_gst_adapter_peek_buffer (Handle, size), true); + } diff --git a/gstreamer-sharp/glue/Makefile.am b/gstreamer-sharp/glue/Makefile.am index 110c2bd..d7963eb 100644 --- a/gstreamer-sharp/glue/Makefile.am +++ b/gstreamer-sharp/glue/Makefile.am @@ -17,7 +17,8 @@ libgstreamersharpglue_0_10_la_SOURCES = \ indexentry.c \ indexfactory.c \ mixertrack.c \ - tunernorm.c + tunernorm.c \ + adapter.c nodist_libgstreamersharpglue_0_10_la_SOURCES = generated.c diff --git a/gstreamer-sharp/glue/adapter.c b/gstreamer-sharp/glue/adapter.c new file mode 100644 index 0000000..aa767bb --- /dev/null +++ b/gstreamer-sharp/glue/adapter.c @@ -0,0 +1,13 @@ +#include +#include + +GstBuffer * +gstsharp_gst_adapter_peek_buffer (GstAdapter *adapter, guint size) { + GstBuffer *ret = gst_buffer_new_and_try_alloc (size); + + if (ret == NULL) + return NULL; + + gst_adapter_copy (adapter, GST_BUFFER_DATA (ret), 0, size); + return ret; +}