[gst-cvs] gstreamer-sharp: Add Gst.Interfaces.Tuner* bindings

Sebastian Dröge slomo at kemper.freedesktop.org
Thu May 14 08:16:03 PDT 2009


Module: gstreamer-sharp
Branch: master
Commit: 75c1fe23d19b5e5cbd9f6e06497946e4c706a0d0
URL:    http://cgit.freedesktop.org/gstreamer/gstreamer-sharp/commit/?id=75c1fe23d19b5e5cbd9f6e06497946e4c706a0d0

Author: Sebastian Dröge <sebastian.droege at collabora.co.uk>
Date:   Tue May 12 12:04:53 2009 +0200

Add Gst.Interfaces.Tuner* bindings

---

 gstreamer-sharp/Gstreamer.metadata  |   22 +++++++++++++++++++++-
 gstreamer-sharp/Makefile.am         |    4 +++-
 gstreamer-sharp/TunerChannel.custom |   31 +++++++++++++++++++++++++++++++
 gstreamer-sharp/TunerNorm.custom    |   28 ++++++++++++++++++++++++++++
 gstreamer-sharp/glue/Makefile.am    |    3 ++-
 gstreamer-sharp/glue/tunernorm.c    |    8 ++++++++
 6 files changed, 93 insertions(+), 3 deletions(-)

diff --git a/gstreamer-sharp/Gstreamer.metadata b/gstreamer-sharp/Gstreamer.metadata
index 63da23a..2f75772 100644
--- a/gstreamer-sharp/Gstreamer.metadata
+++ b/gstreamer-sharp/Gstreamer.metadata
@@ -1023,7 +1023,27 @@
 
   <attr path="/api/namespace/interface[@cname='GstNavigation']" name="hidden">1</attr>
   <attr path="/api/namespace/interface[@cname='GstPropertyProbe']" name="hidden">1</attr>
-  <attr path="/api/namespace/interface[@cname='GstTuner']" name="hidden">1</attr>
+
+  <attr path="/api/namespace/interface[@cname='GstTuner']" name="name">Tuner</attr>
+  <remove-node path="/api/namespace/interface[@cname='GstTuner']/method[@cname='gst_tuner_norm_changed']/parameters/parameter[@name='tuner']" />
+  <remove-attr path="/api/namespace/interface[@cname='GstTuner']/method[@cname='gst_tuner_norm_changed']" name="shared" />
+  <remove-node path="/api/namespace/interface[@cname='GstTuner']/method[@cname='gst_tuner_channel_changed']/parameters/parameter[@name='tuner']" />
+  <remove-attr path="/api/namespace/interface[@cname='GstTuner']/method[@cname='gst_tuner_channel_changed']" name="shared" />
+  <attr path="/api/namespace/interface[@cname='GstTuner']/virtual_method[@cname='list_channels']/return-type" name="element_type">GstTunerChannel</attr>
+  <attr path="/api/namespace/interface[@cname='GstTuner']/virtual_method[@cname='list_norms']/return-type" name="element_type">GstTunerChannel</attr>
+  <attr path="/api/namespace/interface[@cname='GstTuner']/method[@cname='gst_tuner_list_channels']/return-type" name="element_type">GstTunerChannel</attr>
+  <attr path="/api/namespace/interface[@cname='GstTuner']/method[@cname='gst_tuner_list_norms']/return-type" name="element_type">GstTunerChannel</attr>
+  <attr path="/api/namespace/interface[@cname='GstTuner']/method[@cname='gst_tuner_channel_changed']" name="name">EmitChannelChanged</attr>
+  <attr path="/api/namespace/interface[@cname='GstTuner']/method[@cname='gst_tuner_norm_changed']" name="name">EmitNormChanged</attr>
+  <attr path="/api/namespace/interface[@cname='GstTuner']/method[@cname='gst_tuner_frequency_changed']" name="name">EmitFrequencyChanged</attr>
+  <attr path="/api/namespace/interface[@cname='GstTuner']/method[@cname='gst_tuner_signal_changed']" name="name">EmitSignalChanged</attr>
+
+  <attr path="/api/namespace/object[@cname='GstTunerChannel']" name="name">TunerChannel</attr>
+  <move-node path="/api/namespace/object[@cname='GstTunerChannel']/method[@cname='gst_tuner_channel_changed']">/api/namespace/interface[@cname='GstTuner']</move-node>
+
+  <attr path="/api/namespace/object[@cname='GstTunerNorm']" name="name">TunerNorm</attr>
+  <attr path="/api/namespace/object[@cname='GstTunerNorm']/field[@name='Framerate']" name="hidden">1</attr>
+  <move-node path="/api/namespace/object[@cname='GstTunerNorm']/method[@cname='gst_tuner_norm_changed']">/api/namespace/interface[@cname='GstTuner']</move-node>
 
   <attr path="/api/namespace/interface[@cname='GstVideoOrientation']" name="name">VideoOrientation</attr>
   <attr path="/api/namespace/interface[@cname='GstVideoOrientation']/virtual_method[@cname='get_hflip']/parameters/parameter[@name='flip']" name="pass_as">out</attr>
diff --git a/gstreamer-sharp/Makefile.am b/gstreamer-sharp/Makefile.am
index 1c948c5..39425bf 100644
--- a/gstreamer-sharp/Makefile.am
+++ b/gstreamer-sharp/Makefile.am
@@ -91,7 +91,9 @@ customs = 			\
 	TagList.custom		\
 	TypeFind.custom		\
 	TypeFindFactory.custom	\
-	MixerTrack.custom
+	MixerTrack.custom	\
+	TunerNorm.custom	\
+	TunerChannel.custom
 
 build_customs = $(addprefix $(srcdir)/, $(customs))
 
diff --git a/gstreamer-sharp/TunerChannel.custom b/gstreamer-sharp/TunerChannel.custom
new file mode 100644
index 0000000..2091437
--- /dev/null
+++ b/gstreamer-sharp/TunerChannel.custom
@@ -0,0 +1,31 @@
+public TunerChannel (string label, TunerChannelFlags flags, float freq_multiplicator, ulong min_frequency, ulong max_frequency, int min_signal, int max_signal) {
+  unsafe {
+    IntPtr* raw_ptr = (IntPtr*) ( ( (byte*) Handle) + label_offset);
+    *raw_ptr = GLib.Marshaller.StringToPtrGStrdup (label);
+
+  }
+  unsafe {
+    int* raw_ptr = (int*) ( ( (byte*) Handle) + flags_offset);
+    *raw_ptr = (int) flags;
+  }
+  unsafe {
+    float* raw_ptr = (float*) ( ( (byte*) Handle) + freq_multiplicator_offset);
+    *raw_ptr = freq_multiplicator;
+  }
+  unsafe {
+    UIntPtr* raw_ptr = (UIntPtr*) ( ( (byte*) Handle) + min_frequency_offset);
+    *raw_ptr = (UIntPtr) min_frequency;
+  }
+  unsafe {
+    UIntPtr* raw_ptr = (UIntPtr*) ( ( (byte*) Handle) + max_frequency_offset);
+    *raw_ptr = (UIntPtr) max_frequency;
+  }
+  unsafe {
+    int* raw_ptr = (int*) ( ( (byte*) Handle) + min_signal_offset);
+    *raw_ptr = min_signal;
+  }
+  unsafe {
+    int* raw_ptr = (int*) ( ( (byte*) Handle) + max_signal_offset);
+    *raw_ptr = max_signal;
+  }
+}
diff --git a/gstreamer-sharp/TunerNorm.custom b/gstreamer-sharp/TunerNorm.custom
new file mode 100644
index 0000000..59ed734
--- /dev/null
+++ b/gstreamer-sharp/TunerNorm.custom
@@ -0,0 +1,28 @@
+		[DllImport ("gstreamersharpglue-0.10")]
+		extern static uint gst__interfacessharp_gst__interfaces_tunernorm_get_framerate_offset ();
+
+		static uint framerate_offset = gst__interfacessharp_gst__interfaces_tunernorm_get_framerate_offset ();
+		public Gst.Fraction Framerate {
+			get {
+				unsafe {
+					IntPtr raw_ptr = (IntPtr)(((byte*)Handle) + framerate_offset);
+					GLib.Value v = (GLib.Value) Marshal.PtrToStructure (raw_ptr, typeof (GLib.Value));
+					return (Gst.Fraction) v.Val;
+				}
+			}
+		}
+
+		[DllImport ("gstreamer-0.10.dll") ]
+		private static extern void gst_value_set_fraction (IntPtr v, int numerator, int denominator);
+
+		public TunerNorm (string label, Gst.Fraction framerate) {
+		    unsafe {
+		    	IntPtr* raw_ptr = (IntPtr*) ( ( (byte*) Handle) + label_offset);
+			*raw_ptr = GLib.Marshaller.StringToPtrGStrdup (label);
+
+		    }
+		    unsafe {
+		        IntPtr raw_ptr = (IntPtr)(((byte*)Handle) + framerate_offset);
+			gst_value_set_fraction (raw_ptr, framerate.Numerator, framerate.Denominator);
+		    }			
+		}
diff --git a/gstreamer-sharp/glue/Makefile.am b/gstreamer-sharp/glue/Makefile.am
index 98fe6cd..4c512a2 100644
--- a/gstreamer-sharp/glue/Makefile.am
+++ b/gstreamer-sharp/glue/Makefile.am
@@ -16,7 +16,8 @@ libgstreamersharpglue_0_10_la_SOURCES =	\
 	typefind.c \
 	indexentry.c \
 	indexfactory.c \
-	mixertrack.c
+	mixertrack.c \
+	tunernorm.c
 
 nodist_libgstreamersharpglue_0_10_la_SOURCES = generated.c 
 
diff --git a/gstreamer-sharp/glue/tunernorm.c b/gstreamer-sharp/glue/tunernorm.c
new file mode 100644
index 0000000..c7b3efb
--- /dev/null
+++ b/gstreamer-sharp/glue/tunernorm.c
@@ -0,0 +1,8 @@
+#include <gst/interfaces/tunernorm.h>
+
+guint
+gst__interfacessharp_gst__interfaces_tunernorm_get_framerate_offset (void)
+{
+        return (guint)G_STRUCT_OFFSET (GstTunerNorm, framerate);
+}
+





More information about the Gstreamer-commits mailing list