diff options
author | Sebastian Dröge <sebastian.droege@collabora.co.uk> | 2009-05-28 15:31:01 +0200 |
---|---|---|
committer | Sebastian Dröge <sebastian.droege@collabora.co.uk> | 2009-05-28 15:31:01 +0200 |
commit | 5a9a2f27a782b1ee539ee8c738bb84b3eada0890 (patch) | |
tree | 2565f74f5216aea00e2cafa83f9e3e7be26cf913 /gstreamer-sharp | |
parent | 1ed4fbcfbda0c1e8485ada04f3e7149ccd5e7572 (diff) |
Implement Adapter.Peek() that returns a GstBuffer
Diffstat (limited to 'gstreamer-sharp')
-rw-r--r-- | gstreamer-sharp/Adapter.custom | 7 | ||||
-rw-r--r-- | gstreamer-sharp/glue/Makefile.am | 3 | ||||
-rw-r--r-- | gstreamer-sharp/glue/adapter.c | 13 |
3 files changed, 22 insertions, 1 deletions
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 <gst/gst.h> +#include <gst/base/gstadapter.h> + +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; +} |