From 28e879b517866e9c657643ce1b9e4494c1ae6515 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= Date: Sat, 3 Oct 2009 09:12:01 +0200 Subject: [PATCH] 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. --- gstreamer-sharp/BitReader.custom | 15 +++++++++++++++ gstreamer-sharp/ByteReader.custom | 16 ++++++++++++++++ gstreamer-sharp/Gstreamer.metadata | 2 ++ gstreamer-sharp/Makefile.am | 1 + 4 files changed, 34 insertions(+) create mode 100644 gstreamer-sharp/BitReader.custom diff --git a/gstreamer-sharp/BitReader.custom b/gstreamer-sharp/BitReader.custom new file mode 100644 index 0000000000..f62ef4e5d5 --- /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 71bce84564..2033faec69 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 70b3e00621..fba0c448fb 100644 --- a/gstreamer-sharp/Gstreamer.metadata +++ b/gstreamer-sharp/Gstreamer.metadata @@ -1068,6 +1068,7 @@ 1 1 1 + 1 Get Get Get @@ -1080,6 +1081,7 @@ 1 1 1 + 1 PeekUInt8 PeekUInt16Le PeekUInt16Be diff --git a/gstreamer-sharp/Makefile.am b/gstreamer-sharp/Makefile.am index d4d2786e96..7c5caa0326 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 \