Various fixes
authorStephan Sundermann <ssundermann@gnome.org>
Mon, 21 Jul 2014 22:36:22 +0000 (00:36 +0200)
committerStephan Sundermann <ssundermann@gnome.org>
Mon, 21 Jul 2014 22:36:22 +0000 (00:36 +0200)
.gitignore
Makefile.am
sources/Gst-1.0-merged.metadata [new file with mode: 0644]
sources/custom/MiniObject.cs [new file with mode: 0644]
sources/custom/VideoGLUploadMeta.cs [new file with mode: 0644]
sources/gstreamer-sharp-api.raw
sources/gstreamer-sharp.metadata

index eadac0c..cde114e 100644 (file)
@@ -15,6 +15,9 @@ ltmain.sh
 missing
 stamp-h
 
+# gedit temporary files
+*.*~
+
 # glue binaries/objects (FIXME: kill the glue, kthxbye)
 sources/glue/.deps/
 sources/glue/*.o
index 97924f7..16c38f4 100644 (file)
@@ -7,4 +7,4 @@ EXTRA_DIST = gstreamer-sharp-1.0.pc.in out/gstreamer-sharp.dll.config
 DISTCLEANFILES = gstreamer-sharp-1.0.pc
 
 regenerate:
-       bindinate --name=gstreamer --regenerate=true --merge-with=GstApp-1.0,GstAudio-1.0,GstBase-1.0,GstController-1.0,GstFft-1.0,GstInsertBin-1.0,GstMpegts-1.0,GstNet-1.0,GstPbutils-1.0,GstRiff-1.0,GstRtp-1.0,GstRtsp-1.0,GstSdp-1.0,GstTag-1.0,GstVideo-1.0 --gir=Gst-1.0
+       bindinate --name=gstreamer --regenerate=true --merge-with=GstApp-1.0,GstAudio-1.0,GstBase-1.0,GstController-1.0,GstFft-1.0,GstMpegts-1.0,GstNet-1.0,GstPbutils-1.0,GstRiff-1.0,GstRtp-1.0,GstRtsp-1.0,GstSdp-1.0,GstTag-1.0,GstVideo-1.0 --gir=Gst-1.0
diff --git a/sources/Gst-1.0-merged.metadata b/sources/Gst-1.0-merged.metadata
new file mode 100644 (file)
index 0000000..be2fb18
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0"?>
+<metadata>
+       <remove-attr path="//*[local-name()='method' and @name='ref']" name="introspectable"/>
+</metadata>
diff --git a/sources/custom/MiniObject.cs b/sources/custom/MiniObject.cs
new file mode 100644 (file)
index 0000000..b5cc636
--- /dev/null
@@ -0,0 +1,45 @@
+// Copyright (C) 2014  Stephan Sundermann <stephansundermann@gmail.com>
+// 
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+// 02110-1301  USA
+
+namespace Gst {
+
+       using System;
+       using System.Runtime.InteropServices;
+
+       partial class MiniObject
+       {
+               protected MiniObject () {}
+
+               [DllImport("libgstreamer-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
+               static extern bool gst_mini_object_replace(IntPtr olddata, IntPtr newdata);
+
+               public static bool Replace(ref Gst.MiniObject olddata, Gst.MiniObject newdata) {
+                       return gst_mini_object_replace(olddata.Handle, newdata == null ? IntPtr.Zero : newdata.Handle);
+               }
+
+               public static bool Replace(ref Gst.MiniObject olddata) {
+                       return Replace (ref olddata, null);
+               }
+
+               [DllImport("libgstreamer-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
+               static extern bool gst_mini_object_take(IntPtr olddata, IntPtr newdata);
+
+               public static bool Take(ref Gst.MiniObject olddata, Gst.MiniObject newdata) {
+                       return gst_mini_object_take(olddata.Handle, newdata == null ? IntPtr.Zero : newdata.Handle);
+               }
+       }
+}
diff --git a/sources/custom/VideoGLUploadMeta.cs b/sources/custom/VideoGLUploadMeta.cs
new file mode 100644 (file)
index 0000000..3850286
--- /dev/null
@@ -0,0 +1,29 @@
+// Copyright (C) 2014  Stephan Sundermann <stephansundermann@gmail.com>
+// 
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+// 02110-1301  USA
+
+namespace Gst.Video {
+       using System;
+       using System.Runtime.InteropServices;
+
+       partial struct VideoGLTextureUploadMeta 
+       {
+               public bool Equals (VideoGLTextureUploadMeta other)
+               {
+                       return Meta.Equals (other.Meta) && TextureOrientation.Equals (other.TextureOrientation) && NTextures.Equals (other.NTextures) && TextureType.Equals (other.TextureType);
+               }
+       }
+}
index 145ab37..88f169f 100644 (file)
           <parameter name="flags" type="GstLockFlags"/>
         </parameters>
       </method>
+      <method name="Ref" cname="gst_mini_object_ref">
+        <return-type type="GstMiniObject*" owned="true">
+          <warning>missing glib:type-name</warning>
+        </return-type>
+        <parameters/>
+      </method>
       <method name="SetQdata" cname="gst_mini_object_set_qdata">
         <return-type type="void"/>
         <parameters>
       <constant value="-1" ctype="gint" gtype="gint" name="VALUE_LESS_THAN"/>
       <constant value="2" ctype="gint" gtype="gint" name="VALUE_UNORDERED"/>
       <constant value="1" ctype="gint" gtype="gint" name="VERSION_MAJOR"/>
-      <constant value="91" ctype="gint" gtype="gint" name="VERSION_MICRO"/>
-      <constant value="3" ctype="gint" gtype="gint" name="VERSION_MINOR"/>
+      <constant value="0" ctype="gint" gtype="gint" name="VERSION_MICRO"/>
+      <constant value="4" ctype="gint" gtype="gint" name="VERSION_MINOR"/>
       <constant value="0" ctype="gint" gtype="gint" name="VERSION_NANO"/>
     </object>
   </namespace>
     </object>
     <object name="Constants" cname="GstFftConstants" opaque="true"/>
   </namespace>
-  <namespace name="GstInsertBin" library="gstinsertbin-1.0">
-    <callback name="InsertBinCallback" cname="GstInsertBinCallback">
-      <return-type type="void"/>
-      <parameters>
-        <parameter name="insertbin" type="GstInsertBin*"/>
-        <parameter name="element" type="GstElement*"/>
-        <parameter name="success" type="gboolean"/>
-        <parameter closure="3" name="user_data" type="gpointer"/>
-      </parameters>
-    </callback>
-    <object name="InsertBin" cname="GstInsertBin" opaque="false" hidden="false" parent="GstBin">
-      <implements>
-        <interface cname="GstChildProxy"/>
-      </implements>
-      <class_struct cname="GstInsertBinClass">
-        <field cname="parent_class" access="public" writeable="false" readable="true" name="ParentClass" type="GstBinClass">
-          <warning>missing glib:type-name</warning>
-        </field>
-      </class_struct>
-      <method name="GetType" cname="gst_insert_bin_get_type" shared="true">
-        <return-type type="GType"/>
-      </method>
-      <constructor cname="gst_insert_bin_new">
-        <parameters>
-          <parameter name="name" type="const-gchar*"/>
-        </parameters>
-      </constructor>
-      <method name="Append" cname="gst_insert_bin_append">
-        <return-type type="void"/>
-        <parameters>
-          <parameter name="element" type="GstElement*"/>
-          <parameter closure="2" scope="async" name="callback" type="GstInsertBinCallback"/>
-          <parameter name="user_data" type="gpointer"/>
-        </parameters>
-      </method>
-      <method name="InsertAfter" cname="gst_insert_bin_insert_after">
-        <return-type type="void"/>
-        <parameters>
-          <parameter name="element" type="GstElement*"/>
-          <parameter name="sibling" type="GstElement*"/>
-          <parameter closure="3" scope="async" name="callback" type="GstInsertBinCallback"/>
-          <parameter name="user_data" type="gpointer"/>
-        </parameters>
-      </method>
-      <method name="InsertBefore" cname="gst_insert_bin_insert_before">
-        <return-type type="void"/>
-        <parameters>
-          <parameter name="element" type="GstElement*"/>
-          <parameter name="sibling" type="GstElement*"/>
-          <parameter closure="3" scope="async" name="callback" type="GstInsertBinCallback"/>
-          <parameter name="user_data" type="gpointer"/>
-        </parameters>
-      </method>
-      <method name="Prepend" cname="gst_insert_bin_prepend">
-        <return-type type="void"/>
-        <parameters>
-          <parameter name="element" type="GstElement*"/>
-          <parameter closure="2" scope="async" name="callback" type="GstInsertBinCallback"/>
-          <parameter name="user_data" type="gpointer"/>
-        </parameters>
-      </method>
-      <method name="Remove" cname="gst_insert_bin_remove">
-        <return-type type="void"/>
-        <parameters>
-          <parameter name="element" type="GstElement*"/>
-          <parameter closure="2" scope="async" name="callback" type="GstInsertBinCallback"/>
-          <parameter name="user_data" type="gpointer"/>
-        </parameters>
-      </method>
-      <field cname="parent" access="public" writeable="false" readable="true" name="Parent" type="GstBin*"/>
-      <field cname="priv" access="private" writeable="false" readable="false" name="Priv" type="GstInsertBinPrivate*">
-        <warning>missing glib:type-name</warning>
-      </field>
-      <signal name="AppendEvent" cname="append" when="last">
-        <return-type type="void"/>
-        <parameters>
-          <parameter name="_object" type="GstElement*"/>
-          <parameter name="p0" type="gpointer"/>
-          <parameter name="p1" type="gpointer"/>
-        </parameters>
-        <warning>Signal renamed because of existing method with same name</warning>
-      </signal>
-      <signal name="InsertAfterEvent" cname="insert-after" when="last">
-        <return-type type="void"/>
-        <parameters>
-          <parameter name="_object" type="GstElement*"/>
-          <parameter name="p0" type="GstElement*"/>
-          <parameter name="p1" type="gpointer"/>
-          <parameter name="p2" type="gpointer"/>
-        </parameters>
-        <warning>Signal renamed because of existing method with same name</warning>
-      </signal>
-      <signal name="InsertBeforeEvent" cname="insert-before" when="last">
-        <return-type type="void"/>
-        <parameters>
-          <parameter name="_object" type="GstElement*"/>
-          <parameter name="p0" type="GstElement*"/>
-          <parameter name="p1" type="gpointer"/>
-          <parameter name="p2" type="gpointer"/>
-        </parameters>
-        <warning>Signal renamed because of existing method with same name</warning>
-      </signal>
-      <signal name="PrependEvent" cname="prepend" when="last">
-        <return-type type="void"/>
-        <parameters>
-          <parameter name="_object" type="GstElement*"/>
-          <parameter name="p0" type="gpointer"/>
-          <parameter name="p1" type="gpointer"/>
-        </parameters>
-        <warning>Signal renamed because of existing method with same name</warning>
-      </signal>
-      <signal name="RemoveEvent" cname="remove" when="last">
-        <return-type type="void"/>
-        <parameters>
-          <parameter name="_object" type="GstElement*"/>
-          <parameter name="p0" type="gpointer"/>
-          <parameter name="p1" type="gpointer"/>
-        </parameters>
-        <warning>Signal renamed because of existing method with same name</warning>
-      </signal>
-    </object>
-    <struct name="InsertBinPrivate" cname="GstInsertBinPrivate" opaque="true" hidden="true"/>
-    <object name="Global" cname="GstInsertBinGlobal" opaque="true"/>
-    <object name="Constants" cname="GstInsertBinConstants" opaque="true"/>
-  </namespace>
   <namespace name="GstMpegts" library="gstmpegts-1.0">
     <enum name="ATSCDescriptorType" cname="GstMpegtsATSCDescriptorType" type="enum">
       <member cname="GST_MTS_DESC_ATSC_STUFFING" name="Stuffing" value="128"/>
       <field cname="symbol_rate" access="public" writeable="true" readable="true" name="SymbolRate" type="guint32"/>
       <field cname="fec_inner" access="public" writeable="true" readable="true" name="FecInner" type="GstMpegtsDVBCodeRate"/>
     </struct>
-    <boxed name="Section" cname="GstMpegtsSection" opaque="true" hidden="false">
+    <boxed name="Section" cname="GstMpegtsSection" opaque="false" hidden="false">
       <method name="GetType" cname="gst_mpegts_section_get_type" shared="true">
         <return-type type="GType"/>
       </method>
       <constant value="online-service" ctype="gchar*" gtype="gchar*" name="ENCODING_CATEGORY_ONLINE_SERVICE"/>
       <constant value="storage-editing" ctype="gchar*" gtype="gchar*" name="ENCODING_CATEGORY_STORAGE_EDITING"/>
       <constant value="1" ctype="gint" gtype="gint" name="PLUGINS_BASE_VERSION_MAJOR"/>
-      <constant value="91" ctype="gint" gtype="gint" name="PLUGINS_BASE_VERSION_MICRO"/>
-      <constant value="3" ctype="gint" gtype="gint" name="PLUGINS_BASE_VERSION_MINOR"/>
+      <constant value="0" ctype="gint" gtype="gint" name="PLUGINS_BASE_VERSION_MICRO"/>
+      <constant value="4" ctype="gint" gtype="gint" name="PLUGINS_BASE_VERSION_MINOR"/>
       <constant value="0" ctype="gint" gtype="gint" name="PLUGINS_BASE_VERSION_NANO"/>
     </object>
   </namespace>
         <parameters/>
       </method>
     </struct>
-    <struct name="VideoGLTextureUploadMeta" cname="GstVideoGLTextureUploadMeta" opaque="true" hidden="false">
+    <struct name="VideoGLTextureUploadMeta" cname="GstVideoGLTextureUploadMeta" opaque="false" hidden="false">
       <field cname="meta" access="public" writeable="true" readable="true" name="Meta" type="GstMeta">
         <warning>missing glib:type-name</warning>
       </field>
index 84cce8e..4f77663 100644 (file)
@@ -24,6 +24,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
        <!-- Error with array -->
        <attr path="/api/namespace/object[@cname='GstGlobal']/method[@cname='gst_formats_contains']" name="hidden">true</attr>
        <!-- MiniObject issues -->
+       <attr path="/api/namespace/struct[@cname='GstMiniObject']" name="opaque">true</attr>
        <attr path="/api/namespace/struct[@cname='GstMiniObject']/field[@cname='copy']" name="type">gpointer</attr>
        <attr path="/api/namespace/struct[@cname='GstMiniObject']/field[@cname='free']" name="type">gpointer</attr>
        <attr path="/api/namespace/struct[@cname='GstMiniObject']/field[@cname='dispose']" name="type">gpointer</attr>
@@ -46,14 +47,13 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
        <attr path="/api/namespace/object[@cname='GstBin']/field[@cname='element']" name="hidden">true</attr>
        <attr path="/api/namespace/object[@cname='GstPipeline']/field[@cname='bin']" name="hidden">true</attr>
        <!-- add opaque attribute to all structs which need special handling -->
-       <change-node-type path="/api//namespace//boxed[field/@cname='mini_object']">struct</change-node-type>
-       <attr path="/api/namespace//struct[field/@cname='mini_object']" name="opaque">true</attr>
-       <change-node-type path="/api/namespace//boxed[@cname='GstStructure']">struct</change-node-type>
-       <attr path="/api/namespace/struct[@cname='GstStructure']" name="opaque">true</attr>
+       <attr path="/api/namespace//boxed[field[@type='GstMiniObject']]" name="opaque">true</attr>
+       <attr path="/api/namespace//boxed[field[@type='GstMiniObject']]" name="parent">GstMiniObject</attr>
+       <attr path="/api/namespace//boxed/field[@type='GstMiniObject']" name="hidden">true</attr>
+       <attr path="/api/namespace/boxed[@cname='GstStructure']" name="opaque">true</attr>
        <attr path="/api/namespace/struct[@cname='GstRTSPMessage']" name="opaque">true</attr>
-       <change-node-type path="/api/namespace//boxed[@cname='GstIterator']">struct</change-node-type>
-       <attr path="/api/namespace/struct[@cname='GstIterator']" name="opaque">true</attr>
-       <attr path="/api/namespace/struct[@cname='GstIterator']/method[@cname='gst_iterator_next']" name="hidden">true</attr>
+       <attr path="/api/namespace/boxed[@cname='GstIterator']" name="opaque">true</attr>
+       <attr path="/api/namespace/boxed[@cname='GstIterator']/method[@cname='gst_iterator_next']" name="hidden">true</attr>
        <remove-node path="/api/namespace/boxed[@cname='GstStructure']/field[@cname='name']" />
        <!-- Fix for GstChildProxy -->
        <attr path="/api/namespace/interface[@cname='GstChildProxy']/method[@cname='gst_child_proxy_get_property']" name="hidden">1</attr>
@@ -82,10 +82,6 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
        <attr path="/api/namespace/struct[@cname='GstClockEntry']/field[@cname='destroy_data']" name="hidden">true</attr>
        <attr path="/api/namespace/object[@cname='GstTask']/field[@cname='notify']" name="hidden">true</attr>
 
-       <!-- Add miniobject methods to all miniobject types -->
-       <copy-node path="/api/namespace/struct[@cname='GstMiniObject']//method">/api/namespace//boxed[field/@cname='mini_object']</copy-node>
-       <attr path="/api/namespace/struct[@cname='GstMiniObject']//method" name="hidden">true</attr>
-
        <!-- hide user data; FIXME: already removed in 1.2 GIR file, remove when we update to this version -->
        <attr path="/api/namespace/object[@cname='GstBus']/method[@cname='gst_bus_sync_signal_handler']/parameters/parameter[@name='data']" name="hidden">1</attr>
 
@@ -119,9 +115,9 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
        <move-node path="/api/namespace/object[@name='Global']//method[starts-with(@cname, 'gst_pad')]">/api/namespace/object[@cname='GstPad']</move-node>
 
        <!-- Things implemented on our own -->
-       <attr path="/api/namespace/struct[@cname='GstMessage']/method[@cname='gst_message_parse_error']" name="hidden">true</attr>
-       <attr path="/api/namespace/struct[@cname='GstMessage']/method[@cname='gst_message_get_stream_status_object']" name="hidden">true</attr>
-       <attr path="/api/namespace/struct[@cname='GstMessage']/method[@cname='gst_message_set_stream_status_object']" name="hidden">true</attr>
+       <attr path="/api/namespace/boxed[@cname='GstMessage']/method[@cname='gst_message_parse_error']" name="hidden">true</attr>
+       <attr path="/api/namespace/boxed[@cname='GstMessage']/method[@cname='gst_message_get_stream_status_object']" name="hidden">true</attr>
+       <attr path="/api/namespace/boxed[@cname='GstMessage']/method[@cname='gst_message_set_stream_status_object']" name="hidden">true</attr>
 
        <!-- GstVideo -->
        <attr path="/api/namespace/boxed[@cname='GstVideoCodecState']/field[@cname='padding']" name="type">gpointer</attr>
@@ -192,6 +188,10 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
     <remove-attr path="//object[@cname='GstMpegtsGlobal']//method//return-type[@type='GPtrArray']" name="null_term_array"/>
     <remove-attr path="//boxed[@cname='GstMpegtsDescriptor']//method//parameter[@type='GPtrArray***']" name="array"/>
     <remove-attr path="//boxed[@cname='GstMpegtsDescriptor']//method//parameter[@type='GPtrArray***']" name="null_term_array"/>
+    <attr path="//method[@cname='gst_mini_object_replace']" name="hidden">true</attr>
+    <attr path="//method[@cname='gst_mini_object_take']" name="hidden">true</attr>
+    <attr path="//struct[@cname='GstVideoGLTextureUploadMeta']" name="nohash">true</attr>
+    <attr path="//struct[@cname='GstVideoGLTextureUploadMeta']" name="noequals">true</attr>
 
     <!-- No way to correctly generate these without the element type -->
     <attr path="//boxed[@cname='GstMpegtsDescriptor']//method[parameters/parameter[@type='GArray***']]" name="hidden">true</attr>