summaryrefslogtreecommitdiff
path: root/gstreamer-sharp
diff options
context:
space:
mode:
authorSebastian Dröge <sebastian.droege@collabora.co.uk>2009-05-28 15:31:01 +0200
committerSebastian Dröge <sebastian.droege@collabora.co.uk>2009-05-28 15:31:01 +0200
commit5a9a2f27a782b1ee539ee8c738bb84b3eada0890 (patch)
tree2565f74f5216aea00e2cafa83f9e3e7be26cf913 /gstreamer-sharp
parent1ed4fbcfbda0c1e8485ada04f3e7149ccd5e7572 (diff)
Implement Adapter.Peek() that returns a GstBuffer
Diffstat (limited to 'gstreamer-sharp')
-rw-r--r--gstreamer-sharp/Adapter.custom7
-rw-r--r--gstreamer-sharp/glue/Makefile.am3
-rw-r--r--gstreamer-sharp/glue/adapter.c13
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;
+}