[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