Add Gst.Interfaces.Tuner* bindings
authorSebastian Dröge <sebastian.droege@collabora.co.uk>
Tue, 12 May 2009 10:04:53 +0000 (12:04 +0200)
committerSebastian Dröge <sebastian.droege@collabora.co.uk>
Tue, 12 May 2009 10:04:53 +0000 (12:04 +0200)
gstreamer-sharp/Gstreamer.metadata
gstreamer-sharp/Makefile.am
gstreamer-sharp/TunerChannel.custom [new file with mode: 0644]
gstreamer-sharp/TunerNorm.custom [new file with mode: 0644]
gstreamer-sharp/glue/Makefile.am
gstreamer-sharp/glue/tunernorm.c [new file with mode: 0644]

index 63da23a..2f75772 100644 (file)
 
   <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>
index 1c948c5..39425bf 100644 (file)
@@ -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 (file)
index 0000000..2091437
--- /dev/null
@@ -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 (file)
index 0000000..59ed734
--- /dev/null
@@ -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);
+                   }                   
+               }
index 98fe6cd..4c512a2 100644 (file)
@@ -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 (file)
index 0000000..c7b3efb
--- /dev/null
@@ -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);
+}
+