summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastian Dröge <sebastian.droege@collabora.co.uk>2009-10-03 09:12:01 +0200
committerSebastian Dröge <sebastian.droege@collabora.co.uk>2009-10-03 09:12:01 +0200
commit28e879b517866e9c657643ce1b9e4494c1ae6515 (patch)
tree0227d35cc363771af752fc079505a724797d1223
parent2453ddfe11f64c74881c89f28c7e9e90d1292057 (diff)
Make sure that the Bit/BitReader buffer is not GC'd before we stop using it
Also add a property to get the used buffer.
-rw-r--r--gstreamer-sharp/BitReader.custom15
-rw-r--r--gstreamer-sharp/ByteReader.custom16
-rw-r--r--gstreamer-sharp/Gstreamer.metadata2
-rw-r--r--gstreamer-sharp/Makefile.am1
4 files changed, 34 insertions, 0 deletions
diff --git a/gstreamer-sharp/BitReader.custom b/gstreamer-sharp/BitReader.custom
new file mode 100644
index 0000000..f62ef4e
--- /dev/null
+++ b/gstreamer-sharp/BitReader.custom
@@ -0,0 +1,15 @@
+Gst.Buffer buffer = null;
+public Gst.Buffer Buffer {
+ get {
+ return buffer;
+ }
+}
+
+[DllImport ("libgstbase-0.10.dll", CallingConvention = CallingConvention.Cdecl) ]
+static extern IntPtr gst_bit_reader_new_from_buffer (IntPtr buffer);
+
+public BitReader (Gst.Buffer buffer) {
+ Raw = gst_bit_reader_new_from_buffer (buffer == null ? IntPtr.Zero : buffer.Handle);
+ this.buffer = buffer;
+}
+
diff --git a/gstreamer-sharp/ByteReader.custom b/gstreamer-sharp/ByteReader.custom
index 71bce84..2033fae 100644
--- a/gstreamer-sharp/ByteReader.custom
+++ b/gstreamer-sharp/ByteReader.custom
@@ -1,3 +1,19 @@
+Gst.Buffer buffer = null;
+public Gst.Buffer Buffer {
+ get {
+ return buffer;
+ }
+}
+
+[DllImport("libgstbase-0.10.dll", CallingConvention = CallingConvention.Cdecl)]
+static extern IntPtr gst_byte_reader_new_from_buffer(IntPtr buffer);
+
+public ByteReader (Gst.Buffer buffer)
+{
+ Raw = gst_byte_reader_new_from_buffer(buffer == null ? IntPtr.Zero : buffer.Handle);
+ this.buffer = buffer;
+}
+
[DllImport ("libgstbase-0.10.dll", CallingConvention = CallingConvention.Cdecl) ]
static extern bool gst_byte_reader_peek_data (IntPtr raw, uint size, out IntPtr val);
diff --git a/gstreamer-sharp/Gstreamer.metadata b/gstreamer-sharp/Gstreamer.metadata
index 70b3e00..fba0c44 100644
--- a/gstreamer-sharp/Gstreamer.metadata
+++ b/gstreamer-sharp/Gstreamer.metadata
@@ -1068,6 +1068,7 @@
<attr path="/api/namespace/struct[@cname='GstBitReader']/method[@cname='gst_bit_reader_init']" name="hidden">1</attr>
<attr path="/api/namespace/struct[@cname='GstBitReader']/method[@cname='gst_bit_reader_init_from_buffer']" name="hidden">1</attr>
<attr path="/api/namespace/struct[@cname='GstBitReader']/constructor[@cname='gst_bit_reader_new']" name="hidden">1</attr>
+ <attr path="/api/namespace/struct[@cname='GstBitReader']/constructor[@cname='gst_bit_reader_new_from_buffer']" name="hidden">1</attr>
<attr path="/api/namespace/struct[@cname='GstBitReader']/method[@cname='gst_bit_reader_get_bits_uint8']" name="name">Get</attr>
<attr path="/api/namespace/struct[@cname='GstBitReader']/method[@cname='gst_bit_reader_get_bits_uint16']" name="name">Get</attr>
<attr path="/api/namespace/struct[@cname='GstBitReader']/method[@cname='gst_bit_reader_get_bits_uint32']" name="name">Get</attr>
@@ -1080,6 +1081,7 @@
<attr path="/api/namespace/struct[@cname='GstByteReader']/method[@cname='gst_byte_reader_init']" name="hidden">1</attr>
<attr path="/api/namespace/struct[@cname='GstByteReader']/method[@cname='gst_byte_reader_init_from_buffer']" name="hidden">1</attr>
<attr path="/api/namespace/struct[@cname='GstByteReader']/constructor[@cname='gst_byte_reader_new']" name="hidden">1</attr>
+ <attr path="/api/namespace/struct[@cname='GstByteReader']/constructor[@cname='gst_byte_reader_new_from_buffer']" name="hidden">1</attr>
<attr path="/api/namespace/struct[@cname='GstByteReader']/method[@cname='gst_byte_reader_peek_uint8']" name="name">PeekUInt8</attr>
<attr path="/api/namespace/struct[@cname='GstByteReader']/method[@cname='gst_byte_reader_peek_uint16_le']" name="name">PeekUInt16Le</attr>
<attr path="/api/namespace/struct[@cname='GstByteReader']/method[@cname='gst_byte_reader_peek_uint16_be']" name="name">PeekUInt16Be</attr>
diff --git a/gstreamer-sharp/Makefile.am b/gstreamer-sharp/Makefile.am
index d4d2786..7c5caa0 100644
--- a/gstreamer-sharp/Makefile.am
+++ b/gstreamer-sharp/Makefile.am
@@ -115,6 +115,7 @@ customs = \
Controller.custom \
ControlSource.custom \
VideoUtil.custom \
+ BitReader.custom \
ByteReader.custom
plugin_csfiles = $(builddir)/coreplugins/generated/*.cs \