diff --git a/gstreamer-sharp/Gstreamer.metadata b/gstreamer-sharp/Gstreamer.metadata
index 63da23abb0..2f75772396 100644
--- a/gstreamer-sharp/Gstreamer.metadata
+++ b/gstreamer-sharp/Gstreamer.metadata
@@ -1023,7 +1023,27 @@
1
1
- 1
+
+ Tuner
+
+
+
+
+ GstTunerChannel
+ GstTunerChannel
+ GstTunerChannel
+ GstTunerChannel
+ EmitChannelChanged
+ EmitNormChanged
+ EmitFrequencyChanged
+ EmitSignalChanged
+
+ TunerChannel
+ /api/namespace/interface[@cname='GstTuner']
+
+ TunerNorm
+ 1
+ /api/namespace/interface[@cname='GstTuner']
VideoOrientation
out
diff --git a/gstreamer-sharp/Makefile.am b/gstreamer-sharp/Makefile.am
index 1c948c57c8..39425bf436 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 0000000000..2091437047
--- /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 0000000000..59ed734fbc
--- /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 98fe6cd239..4c512a2ab7 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 0000000000..c7b3efb618
--- /dev/null
+++ b/gstreamer-sharp/glue/tunernorm.c
@@ -0,0 +1,8 @@
+#include
+
+guint
+gst__interfacessharp_gst__interfaces_tunernorm_get_framerate_offset (void)
+{
+ return (guint)G_STRUCT_OFFSET (GstTunerNorm, framerate);
+}
+