<?xml version="1.0"?>
<!-- This file was automatically generated from C sources - DO NOT EDIT!
To affect the contents of this file, edit the original C definitions,
and/or use gtk-doc annotations.  -->
<repository version="1.2"
            xmlns="http://www.gtk.org/introspection/core/1.0"
            xmlns:c="http://www.gtk.org/introspection/c/1.0"
            xmlns:glib="http://www.gtk.org/introspection/glib/1.0">
  <include name="Gst" version="1.0"/>
  <include name="GstBase" version="1.0"/>
  <package name="gstreamer-gl-1.0"/>
  <c:include name="gst/gl/gl.h"/>
  <namespace name="GstGL"
             version="1.0"
             shared-library="libgstgl-1.0.so.0"
             c:identifier-prefixes="Gst"
             c:symbol-prefixes="gst">
    <alias name="GLBaseFilter_autoptr" c:type="GstGLBaseFilter_autoptr">
      <type name="gpointer" c:type="gpointer"/>
    </alias>
    <alias name="GLBaseMemoryAllocator_autoptr"
           c:type="GstGLBaseMemoryAllocator_autoptr">
      <type name="gpointer" c:type="gpointer"/>
    </alias>
    <alias name="GLBufferAllocator_autoptr"
           c:type="GstGLBufferAllocator_autoptr">
      <type name="gpointer" c:type="gpointer"/>
    </alias>
    <alias name="GLBufferPool_autoptr" c:type="GstGLBufferPool_autoptr">
      <type name="gpointer" c:type="gpointer"/>
    </alias>
    <alias name="GLColorConvert_autoptr" c:type="GstGLColorConvert_autoptr">
      <type name="gpointer" c:type="gpointer"/>
    </alias>
    <alias name="GLContext_autoptr" c:type="GstGLContext_autoptr">
      <type name="gpointer" c:type="gpointer"/>
    </alias>
    <alias name="GLDisplay_autoptr" c:type="GstGLDisplay_autoptr">
      <type name="gpointer" c:type="gpointer"/>
    </alias>
    <alias name="GLFilter_autoptr" c:type="GstGLFilter_autoptr">
      <type name="gpointer" c:type="gpointer"/>
    </alias>
    <alias name="GLFramebuffer_autoptr" c:type="GstGLFramebuffer_autoptr">
      <type name="gpointer" c:type="gpointer"/>
    </alias>
    <alias name="GLMemoryAllocator_autoptr"
           c:type="GstGLMemoryAllocator_autoptr">
      <type name="gpointer" c:type="gpointer"/>
    </alias>
    <alias name="GLMemoryPBOAllocator_autoptr"
           c:type="GstGLMemoryPBOAllocator_autoptr">
      <type name="gpointer" c:type="gpointer"/>
    </alias>
    <alias name="GLOverlayCompositor_autoptr"
           c:type="GstGLOverlayCompositor_autoptr">
      <type name="gpointer" c:type="gpointer"/>
    </alias>
    <alias name="GLSLStage_autoptr" c:type="GstGLSLStage_autoptr">
      <type name="gpointer" c:type="gpointer"/>
    </alias>
    <alias name="GLShader_autoptr" c:type="GstGLShader_autoptr">
      <type name="gpointer" c:type="gpointer"/>
    </alias>
    <alias name="GLUpload_autoptr" c:type="GstGLUpload_autoptr">
      <type name="gpointer" c:type="gpointer"/>
    </alias>
    <alias name="GLViewConvert_autoptr" c:type="GstGLViewConvert_autoptr">
      <type name="gpointer" c:type="gpointer"/>
    </alias>
    <alias name="GLWindow_autoptr" c:type="GstGLWindow_autoptr">
      <type name="gpointer" c:type="gpointer"/>
    </alias>
    <constant name="BUFFER_POOL_OPTION_GL_SYNC_META"
              value="GstBufferPoolOptionGLSyncMeta"
              c:type="GST_BUFFER_POOL_OPTION_GL_SYNC_META">
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="BUFFER_POOL_OPTION_GL_TEXTURE_TARGET_2D"
              value="GstBufferPoolOptionGLTextureTarget2D"
              c:type="GST_BUFFER_POOL_OPTION_GL_TEXTURE_TARGET_2D">
      <doc xml:space="preserve">String used for %GST_GL_TEXTURE_TARGET_2D as a #GstBufferPool pool option</doc>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="BUFFER_POOL_OPTION_GL_TEXTURE_TARGET_EXTERNAL_OES"
              value="GstBufferPoolOptionGLTextureTargetExternalOES"
              c:type="GST_BUFFER_POOL_OPTION_GL_TEXTURE_TARGET_EXTERNAL_OES">
      <doc xml:space="preserve">String used for %GST_GL_TEXTURE_TARGET_ESTERNAL_OES as a #GstBufferPool pool option</doc>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="BUFFER_POOL_OPTION_GL_TEXTURE_TARGET_RECTANGLE"
              value="GstBufferPoolOptionGLTextureTargetRectangle"
              c:type="GST_BUFFER_POOL_OPTION_GL_TEXTURE_TARGET_RECTANGLE">
      <doc xml:space="preserve">String used for %GST_GL_TEXTURE_TARGET_RECTANGLE as a #GstBufferPool pool option</doc>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="CAPS_FEATURE_MEMORY_GL_BUFFER"
              value="memory:GLBuffer"
              c:type="GST_CAPS_FEATURE_MEMORY_GL_BUFFER">
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="CAPS_FEATURE_MEMORY_GL_MEMORY"
              value="memory:GLMemory"
              c:type="GST_CAPS_FEATURE_MEMORY_GL_MEMORY">
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <bitfield name="GLAPI" c:type="GstGLAPI">
      <member name="none" value="0" c:identifier="GST_GL_API_NONE">
        <doc xml:space="preserve">no API</doc>
      </member>
      <member name="opengl" value="1" c:identifier="GST_GL_API_OPENGL">
        <doc xml:space="preserve">Desktop OpenGL up to and including 3.1.  The
                   compatibility profile when the OpenGL version is &gt;= 3.2</doc>
      </member>
      <member name="opengl3" value="2" c:identifier="GST_GL_API_OPENGL3">
        <doc xml:space="preserve">Desktop OpenGL &gt;= 3.2 core profile</doc>
      </member>
      <member name="gles1" value="32768" c:identifier="GST_GL_API_GLES1">
        <doc xml:space="preserve">OpenGL ES 1.x</doc>
      </member>
      <member name="gles2" value="65536" c:identifier="GST_GL_API_GLES2">
        <doc xml:space="preserve">OpenGL ES 2.x and 3.x</doc>
      </member>
      <member name="any" value="4294967295" c:identifier="GST_GL_API_ANY">
        <doc xml:space="preserve">Any OpenGL API</doc>
      </member>
    </bitfield>
    <record name="GLAllocationParams"
            c:type="GstGLAllocationParams"
            glib:type-name="GstGLAllocationParams"
            glib:get-type="gst_gl_allocation_params_get_type"
            c:symbol-prefix="gl_allocation_params">
      <field name="struct_size" writable="1">
        <doc xml:space="preserve">the size of the struct (including and subclass data)</doc>
        <type name="gsize" c:type="gsize"/>
      </field>
      <field name="copy" writable="1">
        <doc xml:space="preserve">a #GstGLAllocationParamsCopyFunc</doc>
        <type name="GLAllocationParamsCopyFunc"
              c:type="GstGLAllocationParamsCopyFunc"/>
      </field>
      <field name="free" writable="1">
        <doc xml:space="preserve">a #GstGLAllocationParamsFreeFunc</doc>
        <type name="GLAllocationParamsFreeFunc"
              c:type="GstGLAllocationParamsFreeFunc"/>
      </field>
      <field name="alloc_flags" writable="1">
        <doc xml:space="preserve">allocation flags</doc>
        <type name="guint" c:type="guint"/>
      </field>
      <field name="alloc_size" writable="1">
        <doc xml:space="preserve">the allocation size</doc>
        <type name="gsize" c:type="gsize"/>
      </field>
      <field name="alloc_params" writable="1">
        <doc xml:space="preserve">the #GstAllocationParams</doc>
        <type name="Gst.AllocationParams" c:type="GstAllocationParams*"/>
      </field>
      <field name="context" writable="1">
        <doc xml:space="preserve">a #GstGLContext</doc>
        <type name="GLContext" c:type="GstGLContext*"/>
      </field>
      <field name="notify" writable="1">
        <doc xml:space="preserve">a #GDestroyNotify</doc>
        <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
      </field>
      <field name="user_data" writable="1">
        <doc xml:space="preserve">argument to call @notify with</doc>
        <type name="gpointer" c:type="gpointer"/>
      </field>
      <field name="wrapped_data" writable="1">
        <doc xml:space="preserve">the wrapped data pointer</doc>
        <type name="gpointer" c:type="gpointer"/>
      </field>
      <field name="gl_handle" writable="1">
        <doc xml:space="preserve">the wrapped OpenGL handle</doc>
        <type name="guint" c:type="guint"/>
      </field>
      <method name="copy"
              c:identifier="gst_gl_allocation_params_copy"
              version="1.8">
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a copy of the #GstGLAllocationParams specified by @src or %NULL on
         failure</doc>
          <type name="GLAllocationParams" c:type="GstGLAllocationParams*"/>
        </return-value>
        <parameters>
          <instance-parameter name="src" transfer-ownership="none">
            <doc xml:space="preserve">the #GstGLAllocationParams to initialize</doc>
            <type name="GLAllocationParams" c:type="GstGLAllocationParams*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="copy_data"
              c:identifier="gst_gl_allocation_params_copy_data"
              version="1.8">
        <doc xml:space="preserve">Copies the dynamically allocated data from @src to @dest.  Direct subclasses
should call this function in their own overriden copy function.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="src" transfer-ownership="none">
            <doc xml:space="preserve">the source #GstGLAllocationParams</doc>
            <type name="GLAllocationParams" c:type="GstGLAllocationParams*"/>
          </instance-parameter>
          <parameter name="dest" transfer-ownership="none">
            <doc xml:space="preserve">the destination #GstGLAllocationParams</doc>
            <type name="GLAllocationParams" c:type="GstGLAllocationParams*"/>
          </parameter>
        </parameters>
      </method>
      <method name="free"
              c:identifier="gst_gl_allocation_params_free"
              version="1.8">
        <doc xml:space="preserve">Frees the #GstGLAllocationParams and all associated data.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="params" transfer-ownership="none">
            <doc xml:space="preserve">the #GstGLAllocationParams to initialize</doc>
            <type name="GLAllocationParams" c:type="GstGLAllocationParams*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="free_data"
              c:identifier="gst_gl_allocation_params_free_data"
              version="1.8">
        <doc xml:space="preserve">Frees the dynamically allocated data in @params.  Direct subclasses
should call this function in their own overriden free function.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="params" transfer-ownership="none">
            <doc xml:space="preserve">the source #GstGLAllocationParams</doc>
            <type name="GLAllocationParams" c:type="GstGLAllocationParams*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="init"
              c:identifier="gst_gl_allocation_params_init"
              version="1.8"
              introspectable="0">
        <doc xml:space="preserve">@notify will be called once for each allocated memory using these @params
when freeing the memory.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">whether the paramaters could be initialized</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="params" transfer-ownership="none">
            <doc xml:space="preserve">the #GstGLAllocationParams to initialize</doc>
            <type name="GLAllocationParams" c:type="GstGLAllocationParams*"/>
          </instance-parameter>
          <parameter name="struct_size" transfer-ownership="none">
            <doc xml:space="preserve">the struct size of the implementation</doc>
            <type name="gsize" c:type="gsize"/>
          </parameter>
          <parameter name="alloc_flags" transfer-ownership="none">
            <doc xml:space="preserve">some alloc flags</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="copy" transfer-ownership="none">
            <doc xml:space="preserve">a copy function</doc>
            <type name="GLAllocationParamsCopyFunc"
                  c:type="GstGLAllocationParamsCopyFunc"/>
          </parameter>
          <parameter name="free"
                     transfer-ownership="none"
                     scope="notified"
                     closure="9"
                     destroy="10">
            <doc xml:space="preserve">a free function</doc>
            <type name="GLAllocationParamsFreeFunc"
                  c:type="GstGLAllocationParamsFreeFunc"/>
          </parameter>
          <parameter name="context" transfer-ownership="none">
            <doc xml:space="preserve">a #GstGLContext</doc>
            <type name="GLContext" c:type="GstGLContext*"/>
          </parameter>
          <parameter name="alloc_size" transfer-ownership="none">
            <doc xml:space="preserve">the number of bytes to allocate.</doc>
            <type name="gsize" c:type="gsize"/>
          </parameter>
          <parameter name="alloc_params"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">a #GstAllocationParams to apply</doc>
            <type name="Gst.AllocationParams" c:type="GstAllocationParams*"/>
          </parameter>
          <parameter name="wrapped_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">a sysmem data pointer to initialize the allocation with</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
          <parameter name="gl_handle" transfer-ownership="none">
            <doc xml:space="preserve">a GL handle to initialize the allocation with</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">user data to call @notify with</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
          <parameter name="notify"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async">
            <doc xml:space="preserve">a #GDestroyNotify</doc>
            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
          </parameter>
        </parameters>
      </method>
    </record>
    <callback name="GLAllocationParamsCopyFunc"
              c:type="GstGLAllocationParamsCopyFunc">
      <doc xml:space="preserve">Copies the parameters from @src into @dest.  The subclass must compose copy
functions from the superclass.</doc>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="src" transfer-ownership="none">
          <doc xml:space="preserve">the source #GstGLAllocationParams to copy from</doc>
          <type name="GLAllocationParams" c:type="GstGLAllocationParams*"/>
        </parameter>
        <parameter name="dest" transfer-ownership="none">
          <doc xml:space="preserve">the source #GstGLAllocationParams to copy</doc>
          <type name="GLAllocationParams" c:type="GstGLAllocationParams*"/>
        </parameter>
      </parameters>
    </callback>
    <callback name="GLAllocationParamsFreeFunc"
              c:type="GstGLAllocationParamsFreeFunc">
      <doc xml:space="preserve">Free any dynamically allocated data.  The subclass must call the superclass'
free.</doc>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="params" transfer-ownership="none">
          <doc xml:space="preserve">a #GstGLAllocationParams</doc>
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
      </parameters>
    </callback>
    <record name="GLAsyncDebug" c:type="GstGLAsyncDebug">
      <doc xml:space="preserve">#GstGLAsyncDebug an opaque structure and should only be accessed through the
provided API.</doc>
      <field name="state_flags" readable="0" private="1">
        <type name="guint" c:type="guint"/>
      </field>
      <field name="cat" readable="0" private="1">
        <type name="Gst.DebugCategory" c:type="GstDebugCategory*"/>
      </field>
      <field name="level" readable="0" private="1">
        <type name="Gst.DebugLevel" c:type="GstDebugLevel"/>
      </field>
      <field name="file" readable="0" private="1">
        <type name="utf8" c:type="const gchar*"/>
      </field>
      <field name="function" readable="0" private="1">
        <type name="utf8" c:type="const gchar*"/>
      </field>
      <field name="line" readable="0" private="1">
        <type name="gint" c:type="gint"/>
      </field>
      <field name="object" readable="0" private="1">
        <type name="GObject.Object" c:type="GObject*"/>
      </field>
      <field name="debug_msg" readable="0" private="1">
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="callback" readable="0" private="1">
        <type name="GLAsyncDebugLogGetMessage"
              c:type="GstGLAsyncDebugLogGetMessage"/>
      </field>
      <field name="user_data" readable="0" private="1">
        <type name="gpointer" c:type="gpointer"/>
      </field>
      <field name="notify" readable="0" private="1">
        <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
      </field>
      <method name="free" c:identifier="gst_gl_async_debug_free" version="1.8">
        <doc xml:space="preserve">Frees @ad</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="ad" transfer-ownership="none">
            <doc xml:space="preserve">a #GstGLAsyncDebug</doc>
            <type name="GLAsyncDebug" c:type="GstGLAsyncDebug*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="freeze"
              c:identifier="gst_gl_async_debug_freeze"
              version="1.8">
        <doc xml:space="preserve">freeze the debug output.  While frozen, any call to
gst_gl_async_debug_output_log_msg() will not output any messages but
subsequent calls to gst_gl_async_debug_store_log_msg() will overwrite previous
messages.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="ad" transfer-ownership="none">
            <doc xml:space="preserve">a #GstGLAsyncDebug</doc>
            <type name="GLAsyncDebug" c:type="GstGLAsyncDebug*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="init" c:identifier="gst_gl_async_debug_init" version="1.8">
        <doc xml:space="preserve">Initialize @ad.  Intended for use with #GstGLAsyncDebug's that are embedded
in other structs.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="ad" transfer-ownership="none">
            <doc xml:space="preserve">a #GstGLAsyncDebug</doc>
            <type name="GLAsyncDebug" c:type="GstGLAsyncDebug*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="output_log_msg"
              c:identifier="gst_gl_async_debug_output_log_msg">
        <doc xml:space="preserve">Outputs a previously stored debug message.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="ad" transfer-ownership="none">
            <doc xml:space="preserve">the #GstGLAsyncDebug to store the message in</doc>
            <type name="GLAsyncDebug" c:type="GstGLAsyncDebug*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="store_log_msg"
              c:identifier="gst_gl_async_debug_store_log_msg"
              version="1.8"
              introspectable="0">
        <doc xml:space="preserve">Stores a debug message for later output by gst_gl_async_debug_output_log_msg()</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="ad" transfer-ownership="none">
            <doc xml:space="preserve">the #GstGLAsyncDebug to store the message in</doc>
            <type name="GLAsyncDebug" c:type="GstGLAsyncDebug*"/>
          </instance-parameter>
          <parameter name="cat" transfer-ownership="none">
            <doc xml:space="preserve">the #GstDebugCategory to output the message in</doc>
            <type name="Gst.DebugCategory" c:type="GstDebugCategory*"/>
          </parameter>
          <parameter name="level" transfer-ownership="none">
            <doc xml:space="preserve">the #GstLevel</doc>
            <type name="Gst.DebugLevel" c:type="GstDebugLevel"/>
          </parameter>
          <parameter name="file" transfer-ownership="none">
            <doc xml:space="preserve">the file where the debug message originates from</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="function" transfer-ownership="none">
            <doc xml:space="preserve">the function where the debug message originates from</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="line" transfer-ownership="none">
            <doc xml:space="preserve">the line in @file where the debug message originates from</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="object"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">a #GObject to associate with the debug message</doc>
            <type name="GObject.Object" c:type="GObject*"/>
          </parameter>
          <parameter name="format" transfer-ownership="none">
            <doc xml:space="preserve">a printf style format string</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="..." transfer-ownership="none">
            <doc xml:space="preserve">the list of arguments for @format</doc>
            <varargs/>
          </parameter>
        </parameters>
      </method>
      <method name="store_log_msg_valist"
              c:identifier="gst_gl_async_debug_store_log_msg_valist"
              version="1.8"
              introspectable="0">
        <doc xml:space="preserve">Stores a debug message for later output by gst_gl_async_debug_output_log_msg()</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="ad" transfer-ownership="none">
            <doc xml:space="preserve">the #GstGLAsyncDebug to store the message in</doc>
            <type name="GLAsyncDebug" c:type="GstGLAsyncDebug*"/>
          </instance-parameter>
          <parameter name="cat" transfer-ownership="none">
            <doc xml:space="preserve">the #GstDebugCategory to output the message in</doc>
            <type name="Gst.DebugCategory" c:type="GstDebugCategory*"/>
          </parameter>
          <parameter name="level" transfer-ownership="none">
            <doc xml:space="preserve">the #GstLevel</doc>
            <type name="Gst.DebugLevel" c:type="GstDebugLevel"/>
          </parameter>
          <parameter name="file" transfer-ownership="none">
            <doc xml:space="preserve">the file where the debug message originates from</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="function" transfer-ownership="none">
            <doc xml:space="preserve">the function where the debug message originates from</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="line" transfer-ownership="none">
            <doc xml:space="preserve">the line in @file where the debug message originates from</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="object"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">a #GObject to associate with the debug message</doc>
            <type name="GObject.Object" c:type="GObject*"/>
          </parameter>
          <parameter name="format" transfer-ownership="none">
            <doc xml:space="preserve">a printf style format string</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="varargs" transfer-ownership="none">
            <doc xml:space="preserve">the list of arguments for @format</doc>
            <type name="va_list" c:type="va_list"/>
          </parameter>
        </parameters>
      </method>
      <method name="thaw" c:identifier="gst_gl_async_debug_thaw" version="1.8">
        <doc xml:space="preserve">unfreeze the debug output.  See gst_gl_async_debug_freeze() for what freezing means</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="ad" transfer-ownership="none">
            <doc xml:space="preserve">a #GstGLAsyncDebug</doc>
            <type name="GLAsyncDebug" c:type="GstGLAsyncDebug*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="unset" c:identifier="gst_gl_async_debug_unset">
        <doc xml:space="preserve">Unset any dynamically allocated data.  Intended for use with
#GstGLAsyncDebug's that are embedded in other structs.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="ad" transfer-ownership="none">
            <doc xml:space="preserve">a #GstGLAsyncDebug</doc>
            <type name="GLAsyncDebug" c:type="GstGLAsyncDebug*"/>
          </instance-parameter>
        </parameters>
      </method>
      <function name="new"
                c:identifier="gst_gl_async_debug_new"
                version="1.8"
                introspectable="0">
        <doc xml:space="preserve">Free with gst_gl_async_debug_free()</doc>
        <return-value>
          <doc xml:space="preserve">a new #GstGLAsyncDebug</doc>
          <type name="GLAsyncDebug" c:type="GstGLAsyncDebug*"/>
        </return-value>
      </function>
    </record>
    <callback name="GLAsyncDebugLogGetMessage"
              c:type="GstGLAsyncDebugLogGetMessage">
      <return-value transfer-ownership="full">
        <type name="utf8" c:type="gchar*"/>
      </return-value>
      <parameters>
        <parameter name="user_data" transfer-ownership="none" closure="0">
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
      </parameters>
    </callback>
    <class name="GLBaseFilter"
           c:symbol-prefix="gl_base_filter"
           c:type="GstGLBaseFilter"
           parent="GstBase.BaseTransform"
           glib:type-name="GstGLBaseFilter"
           glib:get-type="gst_gl_base_filter_get_type"
           glib:type-struct="GLBaseFilterClass">
      <doc xml:space="preserve">#GstGLBaseFilter handles the nitty gritty details of retrieving an OpenGL
context.  It also provided some wrappers around #GstBaseTransform's
start(), stop() and set_caps() virtual methods that ensure an OpenGL context
is available and current in the calling thread.</doc>
      <virtual-method name="gl_set_caps">
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="filter" transfer-ownership="none">
            <type name="GLBaseFilter" c:type="GstGLBaseFilter*"/>
          </instance-parameter>
          <parameter name="incaps" transfer-ownership="none">
            <type name="Gst.Caps" c:type="GstCaps*"/>
          </parameter>
          <parameter name="outcaps" transfer-ownership="none">
            <type name="Gst.Caps" c:type="GstCaps*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="gl_start">
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="filter" transfer-ownership="none">
            <type name="GLBaseFilter" c:type="GstGLBaseFilter*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="gl_stop">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="filter" transfer-ownership="none">
            <type name="GLBaseFilter" c:type="GstGLBaseFilter*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <property name="context" transfer-ownership="none">
        <type name="GLContext"/>
      </property>
      <field name="parent">
        <doc xml:space="preserve">parent #GstBaseTransform</doc>
        <type name="GstBase.BaseTransform" c:type="GstBaseTransform"/>
      </field>
      <field name="display">
        <doc xml:space="preserve">the currently configured #GstGLDisplay</doc>
        <type name="GLDisplay" c:type="GstGLDisplay*"/>
      </field>
      <field name="context">
        <doc xml:space="preserve">the currently configured #GstGLContext</doc>
        <type name="GLContext" c:type="GstGLContext*"/>
      </field>
      <field name="in_caps">
        <doc xml:space="preserve">the currently configured input #GstCaps</doc>
        <type name="Gst.Caps" c:type="GstCaps*"/>
      </field>
      <field name="out_caps">
        <doc xml:space="preserve">the currently configured output #GstCaps</doc>
        <type name="Gst.Caps" c:type="GstCaps*"/>
      </field>
      <field name="_padding" readable="0" private="1">
        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
      <field name="priv" readable="0" private="1">
        <type name="GLBaseFilterPrivate" c:type="GstGLBaseFilterPrivate*"/>
      </field>
    </class>
    <record name="GLBaseFilterClass"
            c:type="GstGLBaseFilterClass"
            glib:is-gtype-struct-for="GLBaseFilter">
      <field name="parent_class">
        <doc xml:space="preserve">parent class</doc>
        <type name="GstBase.BaseTransformClass"
              c:type="GstBaseTransformClass"/>
      </field>
      <field name="supported_gl_api">
        <doc xml:space="preserve">the logical-OR of #GstGLAPI's supported by this element</doc>
        <type name="GLAPI" c:type="GstGLAPI"/>
      </field>
      <field name="gl_start">
        <callback name="gl_start">
          <return-value transfer-ownership="none">
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="filter" transfer-ownership="none">
              <type name="GLBaseFilter" c:type="GstGLBaseFilter*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="gl_stop">
        <callback name="gl_stop">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="filter" transfer-ownership="none">
              <type name="GLBaseFilter" c:type="GstGLBaseFilter*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="gl_set_caps">
        <callback name="gl_set_caps">
          <return-value transfer-ownership="none">
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="filter" transfer-ownership="none">
              <type name="GLBaseFilter" c:type="GstGLBaseFilter*"/>
            </parameter>
            <parameter name="incaps" transfer-ownership="none">
              <type name="Gst.Caps" c:type="GstCaps*"/>
            </parameter>
            <parameter name="outcaps" transfer-ownership="none">
              <type name="Gst.Caps" c:type="GstCaps*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="_padding" readable="0" private="1">
        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
    </record>
    <record name="GLBaseFilterPrivate"
            c:type="GstGLBaseFilterPrivate"
            disguised="1">
    </record>
    <record name="GLBaseMemory" c:type="GstGLBaseMemory">
      <doc xml:space="preserve">GstGLBaseMemory is a #GstMemory subclass providing the basis of support
for the mapping of GL buffers.

Data is uploaded or downloaded from the GPU as is necessary.</doc>
      <field name="mem" writable="1">
        <doc xml:space="preserve">the parent object</doc>
        <type name="Gst.Memory" c:type="GstMemory"/>
      </field>
      <field name="context" writable="1">
        <doc xml:space="preserve">the #GstGLContext to use for GL operations</doc>
        <type name="GLContext" c:type="GstGLContext*"/>
      </field>
      <field name="lock" writable="1">
        <type name="GLib.Mutex" c:type="GMutex"/>
      </field>
      <field name="map_flags" writable="1">
        <type name="Gst.MapFlags" c:type="GstMapFlags"/>
      </field>
      <field name="map_count" writable="1">
        <type name="gint" c:type="gint"/>
      </field>
      <field name="gl_map_count" writable="1">
        <type name="gint" c:type="gint"/>
      </field>
      <field name="data" writable="1">
        <type name="gpointer" c:type="gpointer"/>
      </field>
      <field name="query" writable="1">
        <type name="GLQuery" c:type="GstGLQuery*"/>
      </field>
      <field name="alloc_size" readable="0" private="1">
        <type name="gsize" c:type="gsize"/>
      </field>
      <field name="alloc_data" readable="0" private="1">
        <type name="gpointer" c:type="gpointer"/>
      </field>
      <field name="notify" readable="0" private="1">
        <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
      </field>
      <field name="user_data" readable="0" private="1">
        <type name="gpointer" c:type="gpointer"/>
      </field>
      <method name="alloc_data" c:identifier="gst_gl_base_memory_alloc_data">
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="gl_mem" transfer-ownership="none">
            <type name="GLBaseMemory" c:type="GstGLBaseMemory*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="init" c:identifier="gst_gl_base_memory_init" version="1.8">
        <doc xml:space="preserve">Initializes @mem with the required parameters</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="mem" transfer-ownership="none">
            <doc xml:space="preserve">the #GstGLBaseMemory to initialize</doc>
            <type name="GLBaseMemory" c:type="GstGLBaseMemory*"/>
          </instance-parameter>
          <parameter name="allocator" transfer-ownership="none">
            <doc xml:space="preserve">the #GstAllocator to initialize with</doc>
            <type name="Gst.Allocator" c:type="GstAllocator*"/>
          </parameter>
          <parameter name="parent"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">the parent #GstMemory to initialize with</doc>
            <type name="Gst.Memory" c:type="GstMemory*"/>
          </parameter>
          <parameter name="context" transfer-ownership="none">
            <doc xml:space="preserve">the #GstGLContext to initialize with</doc>
            <type name="GLContext" c:type="GstGLContext*"/>
          </parameter>
          <parameter name="params"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">the @GstAllocationParams to initialize with</doc>
            <type name="Gst.AllocationParams" c:type="GstAllocationParams*"/>
          </parameter>
          <parameter name="size" transfer-ownership="none">
            <doc xml:space="preserve">the number of bytes to be allocated</doc>
            <type name="gsize" c:type="gsize"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">user data to call @notify with</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
          <parameter name="notify"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async">
            <doc xml:space="preserve">a #GDestroyNotify</doc>
            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
          </parameter>
        </parameters>
      </method>
      <method name="memcpy"
              c:identifier="gst_gl_base_memory_memcpy"
              version="1.8">
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">whether the copy suceeded.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="src" transfer-ownership="none">
            <doc xml:space="preserve">the source #GstGLBaseMemory</doc>
            <type name="GLBaseMemory" c:type="GstGLBaseMemory*"/>
          </instance-parameter>
          <parameter name="dest" transfer-ownership="none">
            <doc xml:space="preserve">the destination #GstGLBaseMemory</doc>
            <type name="GLBaseMemory" c:type="GstGLBaseMemory*"/>
          </parameter>
          <parameter name="offset" transfer-ownership="none">
            <doc xml:space="preserve">the offset to start at</doc>
            <type name="gssize" c:type="gssize"/>
          </parameter>
          <parameter name="size" transfer-ownership="none">
            <doc xml:space="preserve">the number of bytes to copy</doc>
            <type name="gssize" c:type="gssize"/>
          </parameter>
        </parameters>
      </method>
      <function name="alloc"
                c:identifier="gst_gl_base_memory_alloc"
                version="1.8"
                introspectable="0">
        <return-value>
          <doc xml:space="preserve">a new #GstGLBaseMemory from @allocator with the requested @params.</doc>
          <type name="GLBaseMemory" c:type="GstGLBaseMemory*"/>
        </return-value>
        <parameters>
          <parameter name="allocator" transfer-ownership="none">
            <doc xml:space="preserve">a #GstGLBaseMemoryAllocator</doc>
            <type name="GLBaseMemoryAllocator"
                  c:type="GstGLBaseMemoryAllocator*"/>
          </parameter>
          <parameter name="params" transfer-ownership="none">
            <doc xml:space="preserve">the #GstGLAllocationParams to allocate the memory with</doc>
            <type name="GLAllocationParams" c:type="GstGLAllocationParams*"/>
          </parameter>
        </parameters>
      </function>
      <function name="error_quark"
                c:identifier="gst_gl_base_memory_error_quark">
        <return-value transfer-ownership="none">
          <type name="GLib.Quark" c:type="GQuark"/>
        </return-value>
      </function>
      <function name="init_once"
                c:identifier="gst_gl_base_memory_init_once"
                version="1.8">
        <doc xml:space="preserve">Initializes the GL Base Memory allocator. It is safe to call this function
multiple times.  This must be called before any other GstGLBaseMemory operation.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </function>
    </record>
    <class name="GLBaseMemoryAllocator"
           c:symbol-prefix="gl_base_memory_allocator"
           c:type="GstGLBaseMemoryAllocator"
           version="1.8"
           parent="Gst.Allocator"
           abstract="1"
           glib:type-name="GstGLBaseMemoryAllocator"
           glib:get-type="gst_gl_base_memory_allocator_get_type"
           glib:type-struct="GLBaseMemoryAllocatorClass">
      <doc xml:space="preserve">Opaque #GstGLBaseMemoryAllocator struct</doc>
      <virtual-method name="alloc" introspectable="0">
        <return-value>
          <doc xml:space="preserve">a newly allocated #GstGLBaseMemory from @allocator and @params</doc>
          <type name="GLBaseMemory" c:type="GstGLBaseMemory*"/>
        </return-value>
        <parameters>
          <instance-parameter name="allocator" transfer-ownership="none">
            <doc xml:space="preserve">a #GstGLBaseMemoryAllocator</doc>
            <type name="GLBaseMemoryAllocator"
                  c:type="GstGLBaseMemoryAllocator*"/>
          </instance-parameter>
          <parameter name="params" transfer-ownership="none">
            <doc xml:space="preserve">the #GstGLAllocationParams to allocate the memory with</doc>
            <type name="GLAllocationParams" c:type="GstGLAllocationParams*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <field name="parent" readable="0" private="1">
        <type name="Gst.Allocator" c:type="GstAllocator"/>
      </field>
      <field name="fallback_mem_copy" readable="0" private="1">
        <type name="Gst.MemoryCopyFunction" c:type="GstMemoryCopyFunction"/>
      </field>
    </class>
    <callback name="GLBaseMemoryAllocatorAllocFunction"
              c:type="GstGLBaseMemoryAllocatorAllocFunction"
              version="1.8"
              introspectable="0">
      <doc xml:space="preserve">Note: not called with a GL context current</doc>
      <return-value>
        <doc xml:space="preserve">a newly allocated #GstGLBaseMemory from @allocator and @params</doc>
        <type name="GLBaseMemory" c:type="GstGLBaseMemory*"/>
      </return-value>
      <parameters>
        <parameter name="allocator" transfer-ownership="none">
          <doc xml:space="preserve">a #GstGLBaseMemoryAllocator</doc>
          <type name="GLBaseMemoryAllocator"
                c:type="GstGLBaseMemoryAllocator*"/>
        </parameter>
        <parameter name="params" transfer-ownership="none">
          <doc xml:space="preserve">the #GstGLAllocationParams to allocate the memory with</doc>
          <type name="GLAllocationParams" c:type="GstGLAllocationParams*"/>
        </parameter>
      </parameters>
    </callback>
    <record name="GLBaseMemoryAllocatorClass"
            c:type="GstGLBaseMemoryAllocatorClass"
            glib:is-gtype-struct-for="GLBaseMemoryAllocator"
            version="1.8">
      <field name="parent_class">
        <doc xml:space="preserve">the parent class</doc>
        <type name="Gst.AllocatorClass" c:type="GstAllocatorClass"/>
      </field>
      <field name="alloc" introspectable="0">
        <doc xml:space="preserve">a #GstGLBaseMemoryAllocatorAllocFunctions</doc>
        <type name="GLBaseMemoryAllocatorAllocFunction"
              c:type="GstGLBaseMemoryAllocatorAllocFunction"/>
      </field>
      <field name="create">
        <doc xml:space="preserve">a #GstGLBaseMemoryAllocatorCreateFunction</doc>
        <type name="GLBaseMemoryAllocatorCreateFunction"
              c:type="GstGLBaseMemoryAllocatorCreateFunction"/>
      </field>
      <field name="map" introspectable="0">
        <doc xml:space="preserve">a #GstGLBaseMemoryAllocatorMapFunction</doc>
        <type name="GLBaseMemoryAllocatorMapFunction"
              c:type="GstGLBaseMemoryAllocatorMapFunction"/>
      </field>
      <field name="unmap">
        <doc xml:space="preserve">a #GstGLBaseMemoryAllocatorUnmapFunction</doc>
        <type name="GLBaseMemoryAllocatorUnmapFunction"
              c:type="GstGLBaseMemoryAllocatorUnmapFunction"/>
      </field>
      <field name="copy" introspectable="0">
        <doc xml:space="preserve">a #GstGLBaseMemoryAllocatorCopyFunction</doc>
        <type name="GLBaseMemoryAllocatorCopyFunction"
              c:type="GstGLBaseMemoryAllocatorCopyFunction"/>
      </field>
      <field name="destroy">
        <doc xml:space="preserve">a #GstGLBaseMemoryAllocatorDestroyFunction</doc>
        <type name="GLBaseMemoryAllocatorDestroyFunction"
              c:type="GstGLBaseMemoryAllocatorDestroyFunction"/>
      </field>
    </record>
    <callback name="GLBaseMemoryAllocatorCopyFunction"
              c:type="GstGLBaseMemoryAllocatorCopyFunction"
              version="1.8"
              introspectable="0">
      <doc xml:space="preserve">Also see gst_memory_copy();</doc>
      <return-value>
        <doc xml:space="preserve">the newly copied #GstGLMemory or %NULL</doc>
        <type name="GLBaseMemory" c:type="GstGLBaseMemory*"/>
      </return-value>
      <parameters>
        <parameter name="mem" transfer-ownership="none">
          <doc xml:space="preserve">a #GstGLBaseMemory</doc>
          <type name="GLBaseMemory" c:type="GstGLBaseMemory*"/>
        </parameter>
        <parameter name="offset" transfer-ownership="none">
          <doc xml:space="preserve">the offset to copy from</doc>
          <type name="gssize" c:type="gssize"/>
        </parameter>
        <parameter name="size" transfer-ownership="none">
          <doc xml:space="preserve">the number of bytes to copy</doc>
          <type name="gssize" c:type="gssize"/>
        </parameter>
      </parameters>
    </callback>
    <callback name="GLBaseMemoryAllocatorCreateFunction"
              c:type="GstGLBaseMemoryAllocatorCreateFunction"
              version="1.8"
              throws="1">
      <doc xml:space="preserve">As this virtual method is called with an OpenGL context current, use this
function to allocate and OpenGL resources needed for your application</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">whether the creation succeeded</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="mem" transfer-ownership="none">
          <doc xml:space="preserve">a #GstGLBaseMemory</doc>
          <type name="GLBaseMemory" c:type="GstGLBaseMemory*"/>
        </parameter>
      </parameters>
    </callback>
    <callback name="GLBaseMemoryAllocatorDestroyFunction"
              c:type="GstGLBaseMemoryAllocatorDestroyFunction"
              version="1.8">
      <doc xml:space="preserve">Destroy any resources allocated throughout the lifetime of @mem</doc>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="mem" transfer-ownership="none">
          <doc xml:space="preserve">a #GstGLBaseMemory</doc>
          <type name="GLBaseMemory" c:type="GstGLBaseMemory*"/>
        </parameter>
      </parameters>
    </callback>
    <callback name="GLBaseMemoryAllocatorMapFunction"
              c:type="GstGLBaseMemoryAllocatorMapFunction"
              version="1.8"
              introspectable="0">
      <doc xml:space="preserve">Also see gst_memory_map();</doc>
      <return-value>
        <doc xml:space="preserve">the mapped pointer</doc>
        <type name="gpointer" c:type="gpointer"/>
      </return-value>
      <parameters>
        <parameter name="mem" transfer-ownership="none">
          <doc xml:space="preserve">a #GstGLBaseMemory</doc>
          <type name="GLBaseMemory" c:type="GstGLBaseMemory*"/>
        </parameter>
        <parameter name="info" transfer-ownership="none">
          <doc xml:space="preserve">a #GstMapInfo to map with</doc>
          <type name="Gst.MapInfo" c:type="GstMapInfo*"/>
        </parameter>
        <parameter name="maxsize" transfer-ownership="none">
          <doc xml:space="preserve">the size to map</doc>
          <type name="gsize" c:type="gsize"/>
        </parameter>
      </parameters>
    </callback>
    <callback name="GLBaseMemoryAllocatorUnmapFunction"
              c:type="GstGLBaseMemoryAllocatorUnmapFunction"
              version="1.8">
      <doc xml:space="preserve">Also see gst_memory_unmap();</doc>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="mem" transfer-ownership="none">
          <doc xml:space="preserve">a #GstGLBaseMemory</doc>
          <type name="GLBaseMemory" c:type="GstGLBaseMemory*"/>
        </parameter>
        <parameter name="info" transfer-ownership="none">
          <doc xml:space="preserve">a #GstMapInfo to map with</doc>
          <type name="Gst.MapInfo" c:type="GstMapInfo*"/>
        </parameter>
      </parameters>
    </callback>
    <enumeration name="GLBaseMemoryError"
                 c:type="GstGLBaseMemoryError"
                 glib:error-domain="gst-gl-base-buffer-error-quark">
      <member name="failed"
              value="0"
              c:identifier="GST_GL_BASE_MEMORY_ERROR_FAILED">
        <doc xml:space="preserve">generic faliure</doc>
      </member>
      <member name="old_libs"
              value="1"
              c:identifier="GST_GL_BASE_MEMORY_ERROR_OLD_LIBS">
        <doc xml:space="preserve">the implementation is too old and doesn't
                                    implement enough features</doc>
      </member>
      <member name="resource_unavailable"
              value="2"
              c:identifier="GST_GL_BASE_MEMORY_ERROR_RESOURCE_UNAVAILABLE">
        <doc xml:space="preserve">a resource could not be found</doc>
      </member>
    </enumeration>
    <bitfield name="GLBaseMemoryTransfer" c:type="GstGLBaseMemoryTransfer">
      <member name="download"
              value="1048576"
              c:identifier="GST_GL_BASE_MEMORY_TRANSFER_NEED_DOWNLOAD">
        <doc xml:space="preserve">the texture needs downloading
                                            to the data pointer</doc>
      </member>
      <member name="upload"
              value="2097152"
              c:identifier="GST_GL_BASE_MEMORY_TRANSFER_NEED_UPLOAD">
        <doc xml:space="preserve">the data pointer needs uploading
                                            to the texture</doc>
      </member>
    </bitfield>
    <record name="GLBuffer" c:type="GstGLBuffer">
      <doc xml:space="preserve">GstGLBuffer is a #GstMemory subclass providing support for the mapping of
GL buffers.

Data is uploaded or downloaded from the GPU as is necessary.</doc>
      <field name="mem" writable="1">
        <doc xml:space="preserve">the parent object</doc>
        <type name="GLBaseMemory" c:type="GstGLBaseMemory"/>
      </field>
      <field name="id" writable="1">
        <doc xml:space="preserve">the buffer id for this memory</doc>
        <type name="guint" c:type="guint"/>
      </field>
      <field name="target" writable="1">
        <doc xml:space="preserve">the OpenGL target of this texture for binding purposes</doc>
        <type name="guint" c:type="guint"/>
      </field>
      <field name="usage_hints" writable="1">
        <doc xml:space="preserve">the OpenGL usage hints this buffer was created with</doc>
        <type name="guint" c:type="guint"/>
      </field>
      <function name="alloc"
                c:identifier="gst_gl_buffer_alloc"
                introspectable="0">
        <return-value>
          <type name="GLBuffer" c:type="GstGLBuffer*"/>
        </return-value>
        <parameters>
          <parameter name="context" transfer-ownership="none">
            <type name="GLContext" c:type="GstGLContext*"/>
          </parameter>
          <parameter name="gl_target" transfer-ownership="none">
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="gl_usage" transfer-ownership="none">
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="params" transfer-ownership="none">
            <type name="Gst.AllocationParams" c:type="GstAllocationParams*"/>
          </parameter>
          <parameter name="maxsize" transfer-ownership="none">
            <type name="gsize" c:type="gsize"/>
          </parameter>
        </parameters>
      </function>
      <function name="init_once"
                c:identifier="gst_gl_buffer_init_once"
                version="1.8">
        <doc xml:space="preserve">Initializes the GL Buffer allocator. It is safe to call this function
multiple times.  This must be called before any other #GstGLBuffer operation.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </function>
    </record>
    <record name="GLBufferAllocationParams"
            c:type="GstGLBufferAllocationParams">
      <field name="parent" writable="1">
        <doc xml:space="preserve">parent object</doc>
        <type name="GLAllocationParams" c:type="GstGLAllocationParams"/>
      </field>
      <field name="gl_target" writable="1">
        <doc xml:space="preserve">the OpenGL target to bind the buffer to</doc>
        <type name="guint" c:type="guint"/>
      </field>
      <field name="gl_usage" writable="1">
        <doc xml:space="preserve">the OpenGL usage hint to create the buffer with</doc>
        <type name="guint" c:type="guint"/>
      </field>
      <function name="new"
                c:identifier="gst_gl_buffer_allocation_params_new"
                version="1.8"
                introspectable="0">
        <return-value>
          <doc xml:space="preserve">a new #GstGLBufferAllocationParams for allocating OpenGL buffer
         objects</doc>
          <type name="GLBufferAllocationParams"
                c:type="GstGLBufferAllocationParams*"/>
        </return-value>
        <parameters>
          <parameter name="context" transfer-ownership="none">
            <doc xml:space="preserve">a #GstGLContext</doc>
            <type name="GLContext" c:type="GstGLContext*"/>
          </parameter>
          <parameter name="alloc_size" transfer-ownership="none">
            <doc xml:space="preserve">the size in bytes to allocate</doc>
            <type name="gsize" c:type="gsize"/>
          </parameter>
          <parameter name="alloc_params"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">the #GstAllocationParams for @tex_id</doc>
            <type name="Gst.AllocationParams" c:type="GstAllocationParams*"/>
          </parameter>
          <parameter name="gl_target" transfer-ownership="none">
            <doc xml:space="preserve">the OpenGL target to allocate</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="gl_usage" transfer-ownership="none">
            <doc xml:space="preserve">the OpenGL usage hint to allocate with</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </function>
    </record>
    <class name="GLBufferAllocator"
           c:symbol-prefix="gl_buffer_allocator"
           c:type="GstGLBufferAllocator"
           parent="GLBaseMemoryAllocator"
           glib:type-name="GstGLBufferAllocator"
           glib:get-type="gst_gl_buffer_allocator_get_type"
           glib:type-struct="GLBufferAllocatorClass">
      <doc xml:space="preserve">Opaque #GstGLAllocator struct</doc>
      <field name="parent">
        <type name="GLBaseMemoryAllocator" c:type="GstGLBaseMemoryAllocator"/>
      </field>
    </class>
    <record name="GLBufferAllocatorClass"
            c:type="GstGLBufferAllocatorClass"
            glib:is-gtype-struct-for="GLBufferAllocator">
      <doc xml:space="preserve">The #GstGLBufferAllocatorClass only contains private data</doc>
      <field name="parent_class">
        <type name="GLBaseMemoryAllocatorClass"
              c:type="GstGLBaseMemoryAllocatorClass"/>
      </field>
    </record>
    <class name="GLBufferPool"
           c:symbol-prefix="gl_buffer_pool"
           c:type="GstGLBufferPool"
           parent="Gst.BufferPool"
           glib:type-name="GstGLBufferPool"
           glib:get-type="gst_gl_buffer_pool_get_type"
           glib:type-struct="GLBufferPoolClass">
      <doc xml:space="preserve">a #GstGLBufferPool is an object that allocates buffers with #GstGLMemory

A #GstGLBufferPool is created with gst_gl_buffer_pool_new()

#GstGLBufferPool implements the VideoMeta buffer pool option
#GST_BUFFER_POOL_OPTION_VIDEO_META</doc>
      <constructor name="new" c:identifier="gst_gl_buffer_pool_new">
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">a #GstBufferPool that allocates buffers with #GstGLMemory</doc>
          <type name="Gst.BufferPool" c:type="GstBufferPool*"/>
        </return-value>
        <parameters>
          <parameter name="context" transfer-ownership="none">
            <doc xml:space="preserve">the #GstGLContext to use</doc>
            <type name="GLContext" c:type="GstGLContext*"/>
          </parameter>
        </parameters>
      </constructor>
      <method name="replace_last_buffer"
              c:identifier="gst_gl_buffer_pool_replace_last_buffer">
        <doc xml:space="preserve">Set @pool&lt;--  --&gt;s last buffer to @buffer for #GstGLPlatform&lt;--  --&gt;s that
require it.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="pool" transfer-ownership="none">
            <doc xml:space="preserve">a #GstGLBufferPool</doc>
            <type name="GLBufferPool" c:type="GstGLBufferPool*"/>
          </instance-parameter>
          <parameter name="buffer" transfer-ownership="none">
            <doc xml:space="preserve">a #GstBuffer</doc>
            <type name="Gst.Buffer" c:type="GstBuffer*"/>
          </parameter>
        </parameters>
      </method>
      <field name="bufferpool">
        <type name="Gst.BufferPool" c:type="GstBufferPool"/>
      </field>
      <field name="context">
        <type name="GLContext" c:type="GstGLContext*"/>
      </field>
      <field name="priv">
        <type name="GLBufferPoolPrivate" c:type="GstGLBufferPoolPrivate*"/>
      </field>
    </class>
    <record name="GLBufferPoolClass"
            c:type="GstGLBufferPoolClass"
            glib:is-gtype-struct-for="GLBufferPool">
      <doc xml:space="preserve">The #GstGLBufferPoolClass structure contains only private data</doc>
      <field name="parent_class">
        <type name="Gst.BufferPoolClass" c:type="GstBufferPoolClass"/>
      </field>
    </record>
    <record name="GLBufferPoolPrivate"
            c:type="GstGLBufferPoolPrivate"
            disguised="1">
    </record>
    <class name="GLColorConvert"
           c:symbol-prefix="gl_color_convert"
           c:type="GstGLColorConvert"
           parent="Gst.Object"
           glib:type-name="GstGLColorConvert"
           glib:get-type="gst_gl_color_convert_get_type"
           glib:type-struct="GLColorConvertClass">
      <doc xml:space="preserve">#GstGLColorConvert is an object that converts between color spaces and/or
formats using OpenGL Shaders.

A #GstGLColorConvert can be created with gst_gl_color_convert_new().</doc>
      <constructor name="new" c:identifier="gst_gl_color_convert_new">
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">a new #GstGLColorConvert object</doc>
          <type name="GLColorConvert" c:type="GstGLColorConvert*"/>
        </return-value>
        <parameters>
          <parameter name="context" transfer-ownership="none">
            <doc xml:space="preserve">a #GstGLContext</doc>
            <type name="GLContext" c:type="GstGLContext*"/>
          </parameter>
        </parameters>
      </constructor>
      <function name="fixate_caps"
                c:identifier="gst_gl_color_convert_fixate_caps">
        <return-value transfer-ownership="full">
          <type name="Gst.Caps" c:type="GstCaps*"/>
        </return-value>
        <parameters>
          <parameter name="convert" transfer-ownership="none">
            <type name="GLContext" c:type="GstGLContext*"/>
          </parameter>
          <parameter name="direction" transfer-ownership="none">
            <type name="Gst.PadDirection" c:type="GstPadDirection"/>
          </parameter>
          <parameter name="caps" transfer-ownership="none">
            <type name="Gst.Caps" c:type="GstCaps*"/>
          </parameter>
          <parameter name="other" transfer-ownership="none">
            <type name="Gst.Caps" c:type="GstCaps*"/>
          </parameter>
        </parameters>
      </function>
      <function name="transform_caps"
                c:identifier="gst_gl_color_convert_transform_caps">
        <return-value transfer-ownership="full">
          <type name="Gst.Caps" c:type="GstCaps*"/>
        </return-value>
        <parameters>
          <parameter name="convert" transfer-ownership="none">
            <type name="GLContext" c:type="GstGLContext*"/>
          </parameter>
          <parameter name="direction" transfer-ownership="none">
            <type name="Gst.PadDirection" c:type="GstPadDirection"/>
          </parameter>
          <parameter name="caps" transfer-ownership="none">
            <type name="Gst.Caps" c:type="GstCaps*"/>
          </parameter>
          <parameter name="filter" transfer-ownership="none">
            <type name="Gst.Caps" c:type="GstCaps*"/>
          </parameter>
        </parameters>
      </function>
      <method name="decide_allocation"
              c:identifier="gst_gl_color_convert_decide_allocation">
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="convert" transfer-ownership="none">
            <type name="GLColorConvert" c:type="GstGLColorConvert*"/>
          </instance-parameter>
          <parameter name="query" transfer-ownership="none">
            <type name="Gst.Query" c:type="GstQuery*"/>
          </parameter>
        </parameters>
      </method>
      <method name="perform" c:identifier="gst_gl_color_convert_perform">
        <doc xml:space="preserve">Converts the data contained by @inbuf using the formats specified by the
#GstVideoInfo&lt;!--  --&gt;s passed to gst_gl_color_convert_set_caps()</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a converted #GstBuffer or %NULL%</doc>
          <type name="Gst.Buffer" c:type="GstBuffer*"/>
        </return-value>
        <parameters>
          <instance-parameter name="convert" transfer-ownership="none">
            <doc xml:space="preserve">a #GstGLColorConvert</doc>
            <type name="GLColorConvert" c:type="GstGLColorConvert*"/>
          </instance-parameter>
          <parameter name="inbuf" transfer-ownership="none">
            <doc xml:space="preserve">the texture ids for input formatted according to in_info</doc>
            <type name="Gst.Buffer" c:type="GstBuffer*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_caps" c:identifier="gst_gl_color_convert_set_caps">
        <doc xml:space="preserve">Initializes @convert with the information required for conversion.</doc>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="convert" transfer-ownership="none">
            <doc xml:space="preserve">a #GstGLColorConvert</doc>
            <type name="GLColorConvert" c:type="GstGLColorConvert*"/>
          </instance-parameter>
          <parameter name="in_caps" transfer-ownership="none">
            <doc xml:space="preserve">input #GstCaps</doc>
            <type name="Gst.Caps" c:type="GstCaps*"/>
          </parameter>
          <parameter name="out_caps" transfer-ownership="none">
            <doc xml:space="preserve">output #GstCaps</doc>
            <type name="Gst.Caps" c:type="GstCaps*"/>
          </parameter>
        </parameters>
      </method>
      <field name="parent" readable="0" private="1">
        <type name="Gst.Object" c:type="GstObject"/>
      </field>
      <field name="context" readable="0" private="1">
        <type name="GLContext" c:type="GstGLContext*"/>
      </field>
      <field name="in_info" introspectable="0" readable="0" private="1">
        <type c:type="GstVideoInfo"/>
      </field>
      <field name="out_info" introspectable="0" readable="0" private="1">
        <type c:type="GstVideoInfo"/>
      </field>
      <field name="initted" readable="0" private="1">
        <type name="gboolean" c:type="gboolean"/>
      </field>
      <field name="passthrough" readable="0" private="1">
        <type name="gboolean" c:type="gboolean"/>
      </field>
      <field name="inbuf" readable="0" private="1">
        <type name="Gst.Buffer" c:type="GstBuffer*"/>
      </field>
      <field name="outbuf" readable="0" private="1">
        <type name="Gst.Buffer" c:type="GstBuffer*"/>
      </field>
      <field name="fbo" introspectable="0" readable="0" private="1">
        <type c:type="GLuint"/>
      </field>
      <field name="depth_buffer" introspectable="0" readable="0" private="1">
        <type c:type="GLuint"/>
      </field>
      <field name="shader" readable="0" private="1">
        <type name="GLShader" c:type="GstGLShader*"/>
      </field>
      <field name="priv" readable="0" private="1">
        <type name="GLColorConvertPrivate" c:type="GstGLColorConvertPrivate*"/>
      </field>
      <field name="_reserved" readable="0" private="1">
        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
    </class>
    <record name="GLColorConvertClass"
            c:type="GstGLColorConvertClass"
            glib:is-gtype-struct-for="GLColorConvert">
      <doc xml:space="preserve">The #GstGLColorConvertClass struct only contains private data</doc>
      <field name="object_class">
        <type name="Gst.ObjectClass" c:type="GstObjectClass"/>
      </field>
    </record>
    <record name="GLColorConvertPrivate"
            c:type="GstGLColorConvertPrivate"
            disguised="1">
    </record>
    <class name="GLContext"
           c:symbol-prefix="gl_context"
           c:type="GstGLContext"
           parent="Gst.Object"
           abstract="1"
           glib:type-name="GstGLContext"
           glib:get-type="gst_gl_context_get_type"
           glib:type-struct="GLContextClass">
      <doc xml:space="preserve">#GstGLContext wraps an OpenGL context object in a uniform API.  As a result
of the limitation on OpenGL context, this object is not thread safe unless
specified and must only be activated in a single thread.</doc>
      <constructor name="new" c:identifier="gst_gl_context_new" version="1.4">
        <doc xml:space="preserve">Create a new #GstGLContext with the specified @display</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">a new #GstGLContext</doc>
          <type name="GLContext" c:type="GstGLContext*"/>
        </return-value>
        <parameters>
          <parameter name="display" transfer-ownership="none">
            <doc xml:space="preserve">a #GstGLDisplay</doc>
            <type name="GLDisplay" c:type="GstGLDisplay*"/>
          </parameter>
        </parameters>
      </constructor>
      <constructor name="new_wrapped"
                   c:identifier="gst_gl_context_new_wrapped"
                   version="1.4">
        <doc xml:space="preserve">Wraps an existing OpenGL context into a #GstGLContext.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">a #GstGLContext wrapping @handle</doc>
          <type name="GLContext" c:type="GstGLContext*"/>
        </return-value>
        <parameters>
          <parameter name="display" transfer-ownership="none">
            <doc xml:space="preserve">a #GstGLDisplay</doc>
            <type name="GLDisplay" c:type="GstGLDisplay*"/>
          </parameter>
          <parameter name="handle" transfer-ownership="none">
            <doc xml:space="preserve">the OpenGL context to wrap</doc>
            <type name="guintptr" c:type="guintptr"/>
          </parameter>
          <parameter name="context_type" transfer-ownership="none">
            <doc xml:space="preserve">a #GstGLPlatform specifying the type of context in @handle</doc>
            <type name="GLPlatform" c:type="GstGLPlatform"/>
          </parameter>
          <parameter name="available_apis" transfer-ownership="none">
            <doc xml:space="preserve">a #GstGLAPI containing the available OpenGL apis in @handle</doc>
            <type name="GLAPI" c:type="GstGLAPI"/>
          </parameter>
        </parameters>
      </constructor>
      <function name="default_get_proc_address"
                c:identifier="gst_gl_context_default_get_proc_address"
                introspectable="0">
        <return-value>
          <type name="gpointer" c:type="gpointer"/>
        </return-value>
        <parameters>
          <parameter name="gl_api" transfer-ownership="none">
            <type name="GLAPI" c:type="GstGLAPI"/>
          </parameter>
          <parameter name="name" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </function>
      <function name="error_quark" c:identifier="gst_gl_context_error_quark">
        <return-value transfer-ownership="none">
          <type name="GLib.Quark" c:type="GQuark"/>
        </return-value>
      </function>
      <function name="get_current"
                c:identifier="gst_gl_context_get_current"
                version="1.6"
                introspectable="0">
        <doc xml:space="preserve">See also gst_gl_context_activate().</doc>
        <return-value>
          <doc xml:space="preserve">the #GstGLContext active in the current thread or %NULL</doc>
          <type name="GLContext" c:type="GstGLContext*"/>
        </return-value>
      </function>
      <function name="get_current_gl_api"
                c:identifier="gst_gl_context_get_current_gl_api"
                version="1.6">
        <doc xml:space="preserve">If an error occurs, @major and @minor aren't modified and %GST_GL_API_NONE is
returned.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">The version supported by the OpenGL context current in the calling
         thread or %GST_GL_API_NONE</doc>
          <type name="GLAPI" c:type="GstGLAPI"/>
        </return-value>
        <parameters>
          <parameter name="platform" transfer-ownership="none">
            <doc xml:space="preserve">the #GstGLPlatform to retrieve the API for</doc>
            <type name="GLPlatform" c:type="GstGLPlatform"/>
          </parameter>
          <parameter name="major"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">(allow-none): the major version</doc>
            <type name="guint" c:type="guint*"/>
          </parameter>
          <parameter name="minor"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">(allow-none): the minor version</doc>
            <type name="guint" c:type="guint*"/>
          </parameter>
        </parameters>
      </function>
      <function name="get_current_gl_context"
                c:identifier="gst_gl_context_get_current_gl_context"
                version="1.6">
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">The OpenGL context handle current in the calling thread or %NULL</doc>
          <type name="guintptr" c:type="guintptr"/>
        </return-value>
        <parameters>
          <parameter name="context_type" transfer-ownership="none">
            <doc xml:space="preserve">a #GstGLPlatform specifying the type of context to retrieve</doc>
            <type name="GLPlatform" c:type="GstGLPlatform"/>
          </parameter>
        </parameters>
      </function>
      <function name="get_error" c:identifier="gst_gl_context_get_error">
        <return-value transfer-ownership="full">
          <type name="utf8" c:type="gchar*"/>
        </return-value>
      </function>
      <function name="get_proc_address_with_platform"
                c:identifier="gst_gl_context_get_proc_address_with_platform"
                introspectable="0">
        <return-value>
          <type name="gpointer" c:type="gpointer"/>
        </return-value>
        <parameters>
          <parameter name="context_type" transfer-ownership="none">
            <type name="GLPlatform" c:type="GstGLPlatform"/>
          </parameter>
          <parameter name="gl_api" transfer-ownership="none">
            <type name="GLAPI" c:type="GstGLAPI"/>
          </parameter>
          <parameter name="name" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </function>
      <virtual-method name="activate" invoker="activate" version="1.4">
        <doc xml:space="preserve">(De)activate the OpenGL context represented by this @context.

In OpenGL terms, calls eglMakeCurrent or similar with this context and the
currently set window.  See gst_gl_context_set_window() for details.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">Whether the activation succeeded</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="context" transfer-ownership="none">
            <doc xml:space="preserve">a #GstGLContext</doc>
            <type name="GLContext" c:type="GstGLContext*"/>
          </instance-parameter>
          <parameter name="activate" transfer-ownership="none">
            <doc xml:space="preserve">%TRUE to activate, %FALSE to deactivate</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="check_feature"
                      invoker="check_feature"
                      version="1.4">
        <doc xml:space="preserve">Some features require that the context be created before it is possible to
determine their existence and so will fail if that is not the case.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">Whether @feature is supported by @context</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="context" transfer-ownership="none">
            <doc xml:space="preserve">a #GstGLContext</doc>
            <type name="GLContext" c:type="GstGLContext*"/>
          </instance-parameter>
          <parameter name="feature" transfer-ownership="none">
            <doc xml:space="preserve">a platform specific feature</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="choose_format" throws="1">
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="context" transfer-ownership="none">
            <type name="GLContext" c:type="GstGLContext*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="create_context" throws="1">
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="context" transfer-ownership="none">
            <type name="GLContext" c:type="GstGLContext*"/>
          </instance-parameter>
          <parameter name="gl_api" transfer-ownership="none">
            <type name="GLAPI" c:type="GstGLAPI"/>
          </parameter>
          <parameter name="other_context" transfer-ownership="none">
            <type name="GLContext" c:type="GstGLContext*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="destroy_context">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="context" transfer-ownership="none">
            <type name="GLContext" c:type="GstGLContext*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_gl_api" invoker="get_gl_api" version="1.4">
        <doc xml:space="preserve">Get the currently enabled OpenGL api.

The currently available API may be limited by the #GstGLDisplay in use and/or
the #GstGLWindow chosen.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the available OpenGL api</doc>
          <type name="GLAPI" c:type="GstGLAPI"/>
        </return-value>
        <parameters>
          <instance-parameter name="context" transfer-ownership="none">
            <doc xml:space="preserve">a #GstGLContext</doc>
            <type name="GLContext" c:type="GstGLContext*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_gl_context"
                      invoker="get_gl_context"
                      version="1.4">
        <doc xml:space="preserve">Gets the backing OpenGL context used by @context.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">The platform specific backing OpenGL context</doc>
          <type name="guintptr" c:type="guintptr"/>
        </return-value>
        <parameters>
          <instance-parameter name="context" transfer-ownership="none">
            <doc xml:space="preserve">a #GstGLContext:</doc>
            <type name="GLContext" c:type="GstGLContext*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_gl_platform"
                      invoker="get_gl_platform"
                      version="1.4">
        <doc xml:space="preserve">Gets the OpenGL platform that used by @context.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">The platform specific backing OpenGL context</doc>
          <type name="GLPlatform" c:type="GstGLPlatform"/>
        </return-value>
        <parameters>
          <instance-parameter name="context" transfer-ownership="none">
            <doc xml:space="preserve">a #GstGLContext:</doc>
            <type name="GLContext" c:type="GstGLContext*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="swap_buffers">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="context" transfer-ownership="none">
            <type name="GLContext" c:type="GstGLContext*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <method name="activate"
              c:identifier="gst_gl_context_activate"
              version="1.4">
        <doc xml:space="preserve">(De)activate the OpenGL context represented by this @context.

In OpenGL terms, calls eglMakeCurrent or similar with this context and the
currently set window.  See gst_gl_context_set_window() for details.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">Whether the activation succeeded</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="context" transfer-ownership="none">
            <doc xml:space="preserve">a #GstGLContext</doc>
            <type name="GLContext" c:type="GstGLContext*"/>
          </instance-parameter>
          <parameter name="activate" transfer-ownership="none">
            <doc xml:space="preserve">%TRUE to activate, %FALSE to deactivate</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <method name="can_share"
              c:identifier="gst_gl_context_can_share"
              version="1.6">
        <doc xml:space="preserve">Note: This will always fail for two wrapped #GstGLContext's</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">whether @context and @other_context are able to share OpenGL
     resources.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="context" transfer-ownership="none">
            <doc xml:space="preserve">a #GstGLContext</doc>
            <type name="GLContext" c:type="GstGLContext*"/>
          </instance-parameter>
          <parameter name="other_context" transfer-ownership="none">
            <doc xml:space="preserve">another #GstGLContext</doc>
            <type name="GLContext" c:type="GstGLContext*"/>
          </parameter>
        </parameters>
      </method>
      <method name="check_feature"
              c:identifier="gst_gl_context_check_feature"
              version="1.4">
        <doc xml:space="preserve">Some features require that the context be created before it is possible to
determine their existence and so will fail if that is not the case.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">Whether @feature is supported by @context</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="context" transfer-ownership="none">
            <doc xml:space="preserve">a #GstGLContext</doc>
            <type name="GLContext" c:type="GstGLContext*"/>
          </instance-parameter>
          <parameter name="feature" transfer-ownership="none">
            <doc xml:space="preserve">a platform specific feature</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="check_framebuffer_status"
              c:identifier="gst_gl_context_check_framebuffer_status">
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="context" transfer-ownership="none">
            <type name="GLContext" c:type="GstGLContext*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="check_gl_version"
              c:identifier="gst_gl_context_check_gl_version"
              version="1.4">
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">whether OpenGL context implements the required api and specified
version.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="context" transfer-ownership="none">
            <doc xml:space="preserve">a #GstGLContext</doc>
            <type name="GLContext" c:type="GstGLContext*"/>
          </instance-parameter>
          <parameter name="api" transfer-ownership="none">
            <doc xml:space="preserve">api type required</doc>
            <type name="GLAPI" c:type="GstGLAPI"/>
          </parameter>
          <parameter name="maj" transfer-ownership="none">
            <doc xml:space="preserve">major version required</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="min" transfer-ownership="none">
            <doc xml:space="preserve">minor version required</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="clear_shader" c:identifier="gst_gl_context_clear_shader">
        <doc xml:space="preserve">Clear's the currently set shader from the GL state machine.

Note: must be called in the GL thread.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="context" transfer-ownership="none">
            <doc xml:space="preserve">a #GstGLContext</doc>
            <type name="GLContext" c:type="GstGLContext*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="create"
              c:identifier="gst_gl_context_create"
              version="1.4"
              throws="1">
        <doc xml:space="preserve">Creates an OpenGL context in the current thread with the specified
@other_context as a context to share shareable OpenGL objects with.  See the
OpenGL specification for what is shared between contexts.

If an error occurs, and @error is not %NULL, then error will contain details
of the error and %FALSE will be returned.

Should only be called once.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">whether the context could successfully be created</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="context" transfer-ownership="none">
            <doc xml:space="preserve">a #GstGLContext:</doc>
            <type name="GLContext" c:type="GstGLContext*"/>
          </instance-parameter>
          <parameter name="other_context"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">a #GstGLContext to share OpenGL objects with</doc>
            <type name="GLContext" c:type="GstGLContext*"/>
          </parameter>
        </parameters>
      </method>
      <method name="del_fbo"
              c:identifier="gst_gl_context_del_fbo"
              introspectable="0">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="context" transfer-ownership="none">
            <type name="GLContext" c:type="GstGLContext*"/>
          </instance-parameter>
          <parameter name="fbo" transfer-ownership="none">
            <type c:type="GLuint"/>
          </parameter>
          <parameter name="depth_buffer" transfer-ownership="none">
            <type c:type="GLuint"/>
          </parameter>
        </parameters>
      </method>
      <method name="del_shader" c:identifier="gst_gl_context_del_shader">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="context" transfer-ownership="none">
            <type name="GLContext" c:type="GstGLContext*"/>
          </instance-parameter>
          <parameter name="shader" transfer-ownership="none">
            <type name="GLShader" c:type="GstGLShader*"/>
          </parameter>
        </parameters>
      </method>
      <method name="del_texture"
              c:identifier="gst_gl_context_del_texture"
              introspectable="0">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="context" transfer-ownership="none">
            <type name="GLContext" c:type="GstGLContext*"/>
          </instance-parameter>
          <parameter name="pTexture" transfer-ownership="none">
            <type c:type="GLuint*"/>
          </parameter>
        </parameters>
      </method>
      <method name="destroy"
              c:identifier="gst_gl_context_destroy"
              version="1.6">
        <doc xml:space="preserve">Destroys an OpenGL context.

Should only be called after gst_gl_context_create() has been successfully
called for this context.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="context" transfer-ownership="none">
            <doc xml:space="preserve">a #GstGLContext:</doc>
            <type name="GLContext" c:type="GstGLContext*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="fill_info"
              c:identifier="gst_gl_context_fill_info"
              version="1.6"
              throws="1">
        <doc xml:space="preserve">Fills @context's info (version, extensions, vtable, etc) from the GL
context in the current thread.  Typically used with wrapped contexts to
allow wrapped contexts to be used as regular #GstGLContext's.</doc>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="context" transfer-ownership="none">
            <doc xml:space="preserve">a #GstGLContext:</doc>
            <type name="GLContext" c:type="GstGLContext*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="gen_fbo"
              c:identifier="gst_gl_context_gen_fbo"
              introspectable="0">
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="context" transfer-ownership="none">
            <type name="GLContext" c:type="GstGLContext*"/>
          </instance-parameter>
          <parameter name="width" transfer-ownership="none">
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="height" transfer-ownership="none">
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="fbo" transfer-ownership="none">
            <type c:type="GLuint*"/>
          </parameter>
          <parameter name="depthbuffer" transfer-ownership="none">
            <type c:type="GLuint*"/>
          </parameter>
        </parameters>
      </method>
      <method name="gen_shader" c:identifier="gst_gl_context_gen_shader">
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="context" transfer-ownership="none">
            <type name="GLContext" c:type="GstGLContext*"/>
          </instance-parameter>
          <parameter name="shader_vertex_source" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="shader_fragment_source" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="shader" transfer-ownership="none">
            <type name="GLShader" c:type="GstGLShader**"/>
          </parameter>
        </parameters>
      </method>
      <method name="gen_texture"
              c:identifier="gst_gl_context_gen_texture"
              introspectable="0">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="context" transfer-ownership="none">
            <type name="GLContext" c:type="GstGLContext*"/>
          </instance-parameter>
          <parameter name="pTexture" transfer-ownership="none">
            <type c:type="GLuint*"/>
          </parameter>
          <parameter name="v_format" transfer-ownership="none">
            <type c:type="GstVideoFormat"/>
          </parameter>
          <parameter name="width" transfer-ownership="none">
            <type c:type="GLint"/>
          </parameter>
          <parameter name="height" transfer-ownership="none">
            <type c:type="GLint"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_display"
              c:identifier="gst_gl_context_get_display"
              version="1.4"
              introspectable="0">
        <return-value>
          <doc xml:space="preserve">the #GstGLDisplay associated with this @context</doc>
          <type name="GLDisplay" c:type="GstGLDisplay*"/>
        </return-value>
        <parameters>
          <instance-parameter name="context" transfer-ownership="none">
            <doc xml:space="preserve">a #GstGLContext:</doc>
            <type name="GLContext" c:type="GstGLContext*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_gl_api"
              c:identifier="gst_gl_context_get_gl_api"
              version="1.4">
        <doc xml:space="preserve">Get the currently enabled OpenGL api.

The currently available API may be limited by the #GstGLDisplay in use and/or
the #GstGLWindow chosen.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the available OpenGL api</doc>
          <type name="GLAPI" c:type="GstGLAPI"/>
        </return-value>
        <parameters>
          <instance-parameter name="context" transfer-ownership="none">
            <doc xml:space="preserve">a #GstGLContext</doc>
            <type name="GLContext" c:type="GstGLContext*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_gl_context"
              c:identifier="gst_gl_context_get_gl_context"
              version="1.4">
        <doc xml:space="preserve">Gets the backing OpenGL context used by @context.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">The platform specific backing OpenGL context</doc>
          <type name="guintptr" c:type="guintptr"/>
        </return-value>
        <parameters>
          <instance-parameter name="context" transfer-ownership="none">
            <doc xml:space="preserve">a #GstGLContext:</doc>
            <type name="GLContext" c:type="GstGLContext*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_gl_platform"
              c:identifier="gst_gl_context_get_gl_platform"
              version="1.4">
        <doc xml:space="preserve">Gets the OpenGL platform that used by @context.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">The platform specific backing OpenGL context</doc>
          <type name="GLPlatform" c:type="GstGLPlatform"/>
        </return-value>
        <parameters>
          <instance-parameter name="context" transfer-ownership="none">
            <doc xml:space="preserve">a #GstGLContext:</doc>
            <type name="GLContext" c:type="GstGLContext*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_gl_version"
              c:identifier="gst_gl_context_get_gl_version"
              version="1.4">
        <doc xml:space="preserve">Returns the OpenGL version implemented by @context.  See
gst_gl_context_get_gl_api() for retreiving the OpenGL api implemented by
@context.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="context" transfer-ownership="none">
            <doc xml:space="preserve">a #GstGLContext</doc>
            <type name="GLContext" c:type="GstGLContext*"/>
          </instance-parameter>
          <parameter name="maj"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">resulting major version</doc>
            <type name="gint" c:type="gint*"/>
          </parameter>
          <parameter name="min"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">resulting minor version</doc>
            <type name="gint" c:type="gint*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_proc_address"
              c:identifier="gst_gl_context_get_proc_address"
              version="1.4"
              introspectable="0">
        <doc xml:space="preserve">Get a function pointer to a specified opengl function, @name.  If the the
specific function does not exist, NULL is returned instead.

Platform specfic functions (names starting 'egl', 'glX', 'wgl', etc) can also
be retrieved using this method.</doc>
        <return-value>
          <doc xml:space="preserve">a function pointer or NULL</doc>
          <type name="gpointer" c:type="gpointer"/>
        </return-value>
        <parameters>
          <instance-parameter name="context" transfer-ownership="none">
            <doc xml:space="preserve">a #GstGLContext</doc>
            <type name="GLContext" c:type="GstGLContext*"/>
          </instance-parameter>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve">an opengl function name</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_thread"
              c:identifier="gst_gl_context_get_thread"
              version="1.6">
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">The #GThread, @context is current in or NULL</doc>
          <type name="GLib.Thread" c:type="GThread*"/>
        </return-value>
        <parameters>
          <instance-parameter name="context" transfer-ownership="none">
            <doc xml:space="preserve">a #GstGLContext</doc>
            <type name="GLContext" c:type="GstGLContext*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_window"
              c:identifier="gst_gl_context_get_window"
              version="1.4"
              introspectable="0">
        <return-value>
          <doc xml:space="preserve">the currently set window</doc>
          <type name="GLWindow" c:type="GstGLWindow*"/>
        </return-value>
        <parameters>
          <instance-parameter name="context" transfer-ownership="none">
            <doc xml:space="preserve">a #GstGLContext</doc>
            <type name="GLContext" c:type="GstGLContext*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="is_shared"
              c:identifier="gst_gl_context_is_shared"
              version="1.8">
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">Whether the #GstGLContext has been shared with another #GstGLContext</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="context" transfer-ownership="none">
            <doc xml:space="preserve">a #GstGLContext</doc>
            <type name="GLContext" c:type="GstGLContext*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set_error"
              c:identifier="gst_gl_context_set_error"
              introspectable="0">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="context" transfer-ownership="none">
            <type name="GLContext" c:type="GstGLContext*"/>
          </instance-parameter>
          <parameter name="format" transfer-ownership="none">
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="..." transfer-ownership="none">
            <varargs/>
          </parameter>
        </parameters>
      </method>
      <method name="set_shared_with"
              c:identifier="gst_gl_context_set_shared_with"
              version="1.8">
        <doc xml:space="preserve">Will internally set @context as shared with @share</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="context" transfer-ownership="none">
            <doc xml:space="preserve">a wrapped #GstGLContext</doc>
            <type name="GLContext" c:type="GstGLContext*"/>
          </instance-parameter>
          <parameter name="share" transfer-ownership="none">
            <doc xml:space="preserve">another #GstGLContext</doc>
            <type name="GLContext" c:type="GstGLContext*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_window"
              c:identifier="gst_gl_context_set_window"
              version="1.4">
        <doc xml:space="preserve">Set's the current window on @context to @window.  The window can only be
changed before gst_gl_context_create() has been called and the @window is not
already running.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">Whether the window was successfully updated</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="context" transfer-ownership="none">
            <doc xml:space="preserve">a #GstGLContext</doc>
            <type name="GLContext" c:type="GstGLContext*"/>
          </instance-parameter>
          <parameter name="window" transfer-ownership="full">
            <doc xml:space="preserve">a #GstGLWindow</doc>
            <type name="GLWindow" c:type="GstGLWindow*"/>
          </parameter>
        </parameters>
      </method>
      <method name="supports_glsl_profile_version"
              c:identifier="gst_gl_context_supports_glsl_profile_version">
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="context" transfer-ownership="none">
            <type name="GLContext" c:type="GstGLContext*"/>
          </instance-parameter>
          <parameter name="version" transfer-ownership="none">
            <type name="GLSLVersion" c:type="GstGLSLVersion"/>
          </parameter>
          <parameter name="profile" transfer-ownership="none">
            <type name="GLSLProfile" c:type="GstGLSLProfile"/>
          </parameter>
        </parameters>
      </method>
      <method name="thread_add"
              c:identifier="gst_gl_context_thread_add"
              version="1.4"
              introspectable="0">
        <doc xml:space="preserve">Execute @func in the OpenGL thread of @context with @data

MT-safe</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="context" transfer-ownership="none">
            <doc xml:space="preserve">a #GstGLContext</doc>
            <type name="GLContext" c:type="GstGLContext*"/>
          </instance-parameter>
          <parameter name="func" transfer-ownership="none" closure="1">
            <doc xml:space="preserve">a #GstGLContextThreadFunc</doc>
            <type name="GLContextThreadFunc" c:type="GstGLContextThreadFunc"/>
          </parameter>
          <parameter name="data" transfer-ownership="none">
            <doc xml:space="preserve">user data to call @func with</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="use_fbo_v2"
              c:identifier="gst_gl_context_use_fbo_v2"
              introspectable="0">
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="context" transfer-ownership="none">
            <type name="GLContext" c:type="GstGLContext*"/>
          </instance-parameter>
          <parameter name="texture_fbo_width" transfer-ownership="none">
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="texture_fbo_height" transfer-ownership="none">
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="fbo" transfer-ownership="none">
            <type c:type="GLuint"/>
          </parameter>
          <parameter name="depth_buffer" transfer-ownership="none">
            <type c:type="GLuint"/>
          </parameter>
          <parameter name="texture_fbo" transfer-ownership="none">
            <type c:type="GLuint"/>
          </parameter>
          <parameter name="cb" transfer-ownership="none">
            <type c:type="GLCB_V2"/>
          </parameter>
          <parameter name="stuff" transfer-ownership="none">
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <field name="parent" readable="0" private="1">
        <type name="Gst.Object" c:type="GstObject"/>
      </field>
      <field name="display" readable="0" private="1">
        <type name="GLDisplay" c:type="GstGLDisplay*"/>
      </field>
      <field name="window" readable="0" private="1">
        <type name="GLWindow" c:type="GstGLWindow*"/>
      </field>
      <field name="gl_vtable" readable="0" private="1">
        <type name="GLFuncs" c:type="GstGLFuncs*"/>
      </field>
      <field name="_reserved" readable="0" private="1">
        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
      <field name="priv" readable="0" private="1">
        <type name="GLContextPrivate" c:type="GstGLContextPrivate*"/>
      </field>
    </class>
    <record name="GLContextClass"
            c:type="GstGLContextClass"
            glib:is-gtype-struct-for="GLContext">
      <field name="parent_class">
        <type name="Gst.ObjectClass" c:type="GstObjectClass"/>
      </field>
      <field name="get_current_context">
        <callback name="get_current_context">
          <return-value transfer-ownership="none">
            <type name="guintptr" c:type="guintptr"/>
          </return-value>
        </callback>
      </field>
      <field name="get_gl_context">
        <callback name="get_gl_context">
          <return-value transfer-ownership="none">
            <doc xml:space="preserve">The platform specific backing OpenGL context</doc>
            <type name="guintptr" c:type="guintptr"/>
          </return-value>
          <parameters>
            <parameter name="context" transfer-ownership="none">
              <doc xml:space="preserve">a #GstGLContext:</doc>
              <type name="GLContext" c:type="GstGLContext*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_gl_api">
        <callback name="get_gl_api">
          <return-value transfer-ownership="none">
            <doc xml:space="preserve">the available OpenGL api</doc>
            <type name="GLAPI" c:type="GstGLAPI"/>
          </return-value>
          <parameters>
            <parameter name="context" transfer-ownership="none">
              <doc xml:space="preserve">a #GstGLContext</doc>
              <type name="GLContext" c:type="GstGLContext*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_gl_platform">
        <callback name="get_gl_platform">
          <return-value transfer-ownership="none">
            <doc xml:space="preserve">The platform specific backing OpenGL context</doc>
            <type name="GLPlatform" c:type="GstGLPlatform"/>
          </return-value>
          <parameters>
            <parameter name="context" transfer-ownership="none">
              <doc xml:space="preserve">a #GstGLContext:</doc>
              <type name="GLContext" c:type="GstGLContext*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_proc_address" introspectable="0">
        <callback name="get_proc_address" introspectable="0">
          <return-value>
            <type name="gpointer" c:type="gpointer"/>
          </return-value>
          <parameters>
            <parameter name="gl_api" transfer-ownership="none">
              <type name="GLAPI" c:type="GstGLAPI"/>
            </parameter>
            <parameter name="name" transfer-ownership="none">
              <type name="utf8" c:type="const gchar*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="activate">
        <callback name="activate">
          <return-value transfer-ownership="none">
            <doc xml:space="preserve">Whether the activation succeeded</doc>
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="context" transfer-ownership="none">
              <doc xml:space="preserve">a #GstGLContext</doc>
              <type name="GLContext" c:type="GstGLContext*"/>
            </parameter>
            <parameter name="activate" transfer-ownership="none">
              <doc xml:space="preserve">%TRUE to activate, %FALSE to deactivate</doc>
              <type name="gboolean" c:type="gboolean"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="choose_format">
        <callback name="choose_format" throws="1">
          <return-value transfer-ownership="none">
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="context" transfer-ownership="none">
              <type name="GLContext" c:type="GstGLContext*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="create_context">
        <callback name="create_context" throws="1">
          <return-value transfer-ownership="none">
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="context" transfer-ownership="none">
              <type name="GLContext" c:type="GstGLContext*"/>
            </parameter>
            <parameter name="gl_api" transfer-ownership="none">
              <type name="GLAPI" c:type="GstGLAPI"/>
            </parameter>
            <parameter name="other_context" transfer-ownership="none">
              <type name="GLContext" c:type="GstGLContext*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="destroy_context">
        <callback name="destroy_context">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="context" transfer-ownership="none">
              <type name="GLContext" c:type="GstGLContext*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="swap_buffers">
        <callback name="swap_buffers">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="context" transfer-ownership="none">
              <type name="GLContext" c:type="GstGLContext*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="check_feature">
        <callback name="check_feature">
          <return-value transfer-ownership="none">
            <doc xml:space="preserve">Whether @feature is supported by @context</doc>
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="context" transfer-ownership="none">
              <doc xml:space="preserve">a #GstGLContext</doc>
              <type name="GLContext" c:type="GstGLContext*"/>
            </parameter>
            <parameter name="feature" transfer-ownership="none">
              <doc xml:space="preserve">a platform specific feature</doc>
              <type name="utf8" c:type="const gchar*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="_reserved" readable="0" private="1">
        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
    </record>
    <enumeration name="GLContextError" c:type="GstGLContextError">
      <member name="failed"
              value="0"
              c:identifier="GST_GL_CONTEXT_ERROR_FAILED">
      </member>
      <member name="wrong_config"
              value="1"
              c:identifier="GST_GL_CONTEXT_ERROR_WRONG_CONFIG">
      </member>
      <member name="wrong_api"
              value="2"
              c:identifier="GST_GL_CONTEXT_ERROR_WRONG_API">
      </member>
      <member name="old_libs"
              value="3"
              c:identifier="GST_GL_CONTEXT_ERROR_OLD_LIBS">
      </member>
      <member name="create_context"
              value="4"
              c:identifier="GST_GL_CONTEXT_ERROR_CREATE_CONTEXT">
      </member>
      <member name="resource_unavailable"
              value="5"
              c:identifier="GST_GL_CONTEXT_ERROR_RESOURCE_UNAVAILABLE">
      </member>
    </enumeration>
    <record name="GLContextPrivate" c:type="GstGLContextPrivate" disguised="1">
    </record>
    <callback name="GLContextThreadFunc" c:type="GstGLContextThreadFunc">
      <doc xml:space="preserve">Represents a function to run in the GL thread with @context and @data</doc>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="context" transfer-ownership="none">
          <doc xml:space="preserve">a #GstGLContext</doc>
          <type name="GLContext" c:type="GstGLContext*"/>
        </parameter>
        <parameter name="data" transfer-ownership="none">
          <doc xml:space="preserve">user data</doc>
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
      </parameters>
    </callback>
    <class name="GLControlBindingProxy"
           c:symbol-prefix="gl_control_binding_proxy"
           c:type="GstGLControlBindingProxy"
           parent="Gst.ControlBinding"
           glib:type-name="GstGLControlBindingProxy"
           glib:get-type="gst_gl_control_binding_proxy_get_type"
           glib:type-struct="GLControlBindingProxyClass">
      <constructor name="new" c:identifier="gst_gl_control_binding_proxy_new">
        <return-value transfer-ownership="none">
          <type name="Gst.ControlBinding" c:type="GstControlBinding*"/>
        </return-value>
        <parameters>
          <parameter name="object" transfer-ownership="none">
            <type name="Gst.Object" c:type="GstObject*"/>
          </parameter>
          <parameter name="property_name" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="ref_object" transfer-ownership="none">
            <type name="Gst.Object" c:type="GstObject*"/>
          </parameter>
          <parameter name="ref_property_name" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </constructor>
      <field name="parent">
        <type name="Gst.ControlBinding" c:type="GstControlBinding"/>
      </field>
      <field name="ref_object">
        <type name="Gst.Object" c:type="GstObject*"/>
      </field>
      <field name="property_name">
        <type name="utf8" c:type="const gchar*"/>
      </field>
    </class>
    <record name="GLControlBindingProxyClass"
            c:type="GstGLControlBindingProxyClass"
            glib:is-gtype-struct-for="GLControlBindingProxy">
      <field name="parent_class">
        <type name="Gst.ControlBindingClass" c:type="GstControlBindingClass"/>
      </field>
    </record>
    <class name="GLDisplay"
           c:symbol-prefix="gl_display"
           c:type="GstGLDisplay"
           parent="Gst.Object"
           glib:type-name="GstGLDisplay"
           glib:get-type="gst_gl_display_get_type"
           glib:type-struct="GLDisplayClass">
      <doc xml:space="preserve">#GstGLDisplay represents a connection to the underlying windowing system.
Elements are required to make use of #GstContext to share and propogate
a #GstGLDisplay.

There are a number of environment variables that influence the choice of
platform and window system specific functionality.
- GST_GL_WINDOW influences the window system to use.  Common values are
  'x11', 'wayland', 'win32' or 'cocoa'.
- GST_GL_PLATFORM influences the OpenGL platform to use.  Common values are
  'egl', 'glx', 'wgl' or 'cgl'.
- GST_GL_API influences the OpenGL API requested by the OpenGL platform.
  Common values are 'opengl' and 'gles2'.

&lt;note&gt;Certain window systems require a special function to be called to
initialize threading support.  As this GStreamer GL library does not preclude
concurrent access to the windowing system, it is strongly advised that
applications ensure that threading support has been initialized before any
other toolkit/library functionality is accessed.  Failure to do so could
result in sudden application abortion during execution.  The most notably
example of such a function is X11's XInitThreads().&lt;/note&gt;</doc>
      <constructor name="new" c:identifier="gst_gl_display_new" version="1.4">
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new #GstGLDisplay</doc>
          <type name="GLDisplay" c:type="GstGLDisplay*"/>
        </return-value>
      </constructor>
      <virtual-method name="get_handle" invoker="get_handle">
        <return-value transfer-ownership="none">
          <type name="guintptr" c:type="guintptr"/>
        </return-value>
        <parameters>
          <instance-parameter name="display" transfer-ownership="none">
            <type name="GLDisplay" c:type="GstGLDisplay*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <method name="add_context"
              c:identifier="gst_gl_display_add_context"
              version="1.6">
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">whether @context was successfully added. %FALSE may be returned
if there already exists another context for @context's active thread.

Must be called with the object lock held.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="display" transfer-ownership="none">
            <doc xml:space="preserve">a #GstGLDisplay</doc>
            <type name="GLDisplay" c:type="GstGLDisplay*"/>
          </instance-parameter>
          <parameter name="context" transfer-ownership="none">
            <doc xml:space="preserve">a #GstGLContext</doc>
            <type name="GLContext" c:type="GstGLContext*"/>
          </parameter>
        </parameters>
      </method>
      <method name="create_context"
              c:identifier="gst_gl_display_create_context"
              version="1.6"
              throws="1">
        <doc xml:space="preserve">It requires the display's object lock to be held.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">whether a new context could be created.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="display" transfer-ownership="none">
            <doc xml:space="preserve">a #GstGLDisplay</doc>
            <type name="GLDisplay" c:type="GstGLDisplay*"/>
          </instance-parameter>
          <parameter name="other_context" transfer-ownership="none">
            <doc xml:space="preserve">other #GstGLContext to share resources with.</doc>
            <type name="GLContext" c:type="GstGLContext*"/>
          </parameter>
          <parameter name="p_context" transfer-ownership="none">
            <doc xml:space="preserve">resulting #GstGLContext</doc>
            <type name="GLContext" c:type="GstGLContext**"/>
          </parameter>
        </parameters>
      </method>
      <method name="filter_gl_api" c:identifier="gst_gl_display_filter_gl_api">
        <doc xml:space="preserve">limit the use of OpenGL to the requested @gl_api.  This is intended to allow
application and elements to request a specific set of OpenGL API's based on
what they support.  See gst_gl_context_get_gl_api() for the retreiving the
API supported by a #GstGLContext.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="display" transfer-ownership="none">
            <doc xml:space="preserve">a #GstGLDisplay</doc>
            <type name="GLDisplay" c:type="GstGLDisplay*"/>
          </instance-parameter>
          <parameter name="gl_api" transfer-ownership="none">
            <doc xml:space="preserve">a #GstGLAPI to filter with</doc>
            <type name="GLAPI" c:type="GstGLAPI"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_gl_api" c:identifier="gst_gl_display_get_gl_api">
        <doc xml:space="preserve">see gst_gl_display_filter_gl_api() for what the returned value represents</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the #GstGLAPI configured for @display</doc>
          <type name="GLAPI" c:type="GstGLAPI"/>
        </return-value>
        <parameters>
          <instance-parameter name="display" transfer-ownership="none">
            <doc xml:space="preserve">a #GstGLDisplay</doc>
            <type name="GLDisplay" c:type="GstGLDisplay*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_gl_api_unlocked"
              c:identifier="gst_gl_display_get_gl_api_unlocked">
        <return-value transfer-ownership="none">
          <type name="GLAPI" c:type="GstGLAPI"/>
        </return-value>
        <parameters>
          <instance-parameter name="display" transfer-ownership="none">
            <type name="GLDisplay" c:type="GstGLDisplay*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_gl_context_for_thread"
              c:identifier="gst_gl_display_get_gl_context_for_thread"
              version="1.6">
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">the #GstGLContext current on @thread or %NULL

Must be called with the object lock held.</doc>
          <type name="GLContext" c:type="GstGLContext*"/>
        </return-value>
        <parameters>
          <instance-parameter name="display" transfer-ownership="none">
            <doc xml:space="preserve">a #GstGLDisplay</doc>
            <type name="GLDisplay" c:type="GstGLDisplay*"/>
          </instance-parameter>
          <parameter name="thread" transfer-ownership="none">
            <doc xml:space="preserve">a #GThread</doc>
            <type name="GLib.Thread" c:type="GThread*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_handle" c:identifier="gst_gl_display_get_handle">
        <return-value transfer-ownership="none">
          <type name="guintptr" c:type="guintptr"/>
        </return-value>
        <parameters>
          <instance-parameter name="display" transfer-ownership="none">
            <type name="GLDisplay" c:type="GstGLDisplay*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_handle_type"
              c:identifier="gst_gl_display_get_handle_type"
              version="1.4">
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the #GstGLDisplayType of @display</doc>
          <type name="GLDisplayType" c:type="GstGLDisplayType"/>
        </return-value>
        <parameters>
          <instance-parameter name="display" transfer-ownership="none">
            <doc xml:space="preserve">a #GstGLDisplay</doc>
            <type name="GLDisplay" c:type="GstGLDisplay*"/>
          </instance-parameter>
        </parameters>
      </method>
      <field name="object" readable="0" private="1">
        <type name="Gst.Object" c:type="GstObject"/>
      </field>
      <field name="type" readable="0" private="1">
        <type name="GLDisplayType" c:type="GstGLDisplayType"/>
      </field>
      <field name="priv" readable="0" private="1">
        <type name="GLDisplayPrivate" c:type="GstGLDisplayPrivate*"/>
      </field>
      <glib:signal name="create-context" when="last" introspectable="0">
        <doc xml:space="preserve">Overrides the @GstGLContext creation mechanism.
It can be called in any thread and it is emitted with
display's object lock held.</doc>
        <return-value>
          <doc xml:space="preserve">the new context.</doc>
          <type name="GLContext"/>
        </return-value>
        <parameters>
          <parameter name="context" transfer-ownership="none">
            <doc xml:space="preserve">other context to share resources with.</doc>
            <type name="GLContext"/>
          </parameter>
        </parameters>
      </glib:signal>
    </class>
    <record name="GLDisplayClass"
            c:type="GstGLDisplayClass"
            glib:is-gtype-struct-for="GLDisplay">
      <field name="object_class">
        <type name="Gst.ObjectClass" c:type="GstObjectClass"/>
      </field>
      <field name="get_handle">
        <callback name="get_handle">
          <return-value transfer-ownership="none">
            <type name="guintptr" c:type="guintptr"/>
          </return-value>
          <parameters>
            <parameter name="display" transfer-ownership="none">
              <type name="GLDisplay" c:type="GstGLDisplay*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
    </record>
    <record name="GLDisplayPrivate" c:type="GstGLDisplayPrivate" disguised="1">
    </record>
    <enumeration name="GLDisplayProjection" c:type="GstGLDisplayProjection">
      <member name="ortho2d"
              value="0"
              c:identifier="GST_GL_DISPLAY_PROJECTION_ORTHO2D">
      </member>
      <member name="perspective"
              value="1"
              c:identifier="GST_GL_DISPLAY_PROJECTION_PERSPECTIVE">
      </member>
    </enumeration>
    <bitfield name="GLDisplayType" c:type="GstGLDisplayType">
      <member name="none" value="0" c:identifier="GST_GL_DISPLAY_TYPE_NONE">
        <doc xml:space="preserve">no display type</doc>
      </member>
      <member name="x11" value="1" c:identifier="GST_GL_DISPLAY_TYPE_X11">
        <doc xml:space="preserve">X11 display</doc>
      </member>
      <member name="wayland"
              value="2"
              c:identifier="GST_GL_DISPLAY_TYPE_WAYLAND">
        <doc xml:space="preserve">Wayland display</doc>
      </member>
      <member name="cocoa" value="4" c:identifier="GST_GL_DISPLAY_TYPE_COCOA">
        <doc xml:space="preserve">Cocoa display</doc>
      </member>
      <member name="win32" value="8" c:identifier="GST_GL_DISPLAY_TYPE_WIN32">
        <doc xml:space="preserve">Win32 display</doc>
      </member>
      <member name="dispmanx"
              value="16"
              c:identifier="GST_GL_DISPLAY_TYPE_DISPMANX">
        <doc xml:space="preserve">Dispmanx display</doc>
      </member>
      <member name="egl" value="32" c:identifier="GST_GL_DISPLAY_TYPE_EGL">
        <doc xml:space="preserve">EGL display</doc>
      </member>
      <member name="any"
              value="4294967295"
              c:identifier="GST_GL_DISPLAY_TYPE_ANY">
        <doc xml:space="preserve">any display type</doc>
      </member>
    </bitfield>
    <record name="GLFeatureData" c:type="GstGLFeatureData">
      <field name="feature_name" writable="1">
        <type name="utf8" c:type="const char*"/>
      </field>
      <field name="gl_availability" writable="1">
        <type name="GLAPI" c:type="GstGLAPI"/>
      </field>
      <field name="min_gl_major" writable="1">
        <type name="gint" c:type="int"/>
      </field>
      <field name="min_gl_minor" writable="1">
        <type name="gint" c:type="int"/>
      </field>
      <field name="min_gles_major" writable="1">
        <type name="gint" c:type="int"/>
      </field>
      <field name="min_gles_minor" writable="1">
        <type name="gint" c:type="int"/>
      </field>
      <field name="namespaces" writable="1">
        <type name="utf8" c:type="const char*"/>
      </field>
      <field name="extension_names" writable="1">
        <type name="utf8" c:type="const char*"/>
      </field>
      <field name="functions" writable="1">
        <type name="GLFeatureFunction" c:type="const GstGLFeatureFunction*"/>
      </field>
    </record>
    <record name="GLFeatureFunction" c:type="GstGLFeatureFunction">
      <field name="name" writable="1">
        <type name="utf8" c:type="const char*"/>
      </field>
      <field name="pointer_offset" writable="1">
        <type name="guint" c:type="unsigned"/>
      </field>
    </record>
    <class name="GLFilter"
           c:symbol-prefix="gl_filter"
           c:type="GstGLFilter"
           parent="GLBaseFilter"
           glib:type-name="GstGLFilter"
           glib:get-type="gst_gl_filter_get_type"
           glib:type-struct="GLFilterClass">
      <doc xml:space="preserve">#GstGLFilter is a base class that provides the logic of getting the GL context
from downstream and automatic upload/download for non-#GstGLMemory
#GstBuffer&lt;!--  --&gt;s.</doc>
      <virtual-method name="display_init_cb">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="filter" transfer-ownership="none">
            <type name="GLFilter" c:type="GstGLFilter*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="display_reset_cb">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="filter" transfer-ownership="none">
            <type name="GLFilter" c:type="GstGLFilter*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="filter">
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="filter" transfer-ownership="none">
            <type name="GLFilter" c:type="GstGLFilter*"/>
          </instance-parameter>
          <parameter name="inbuf" transfer-ownership="none">
            <type name="Gst.Buffer" c:type="GstBuffer*"/>
          </parameter>
          <parameter name="outbuf" transfer-ownership="none">
            <type name="Gst.Buffer" c:type="GstBuffer*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="filter_texture" invoker="filter_texture">
        <doc xml:space="preserve">Perform automatic upload if needed, call filter_texture vfunc and then an
automatic download if needed.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">whether the transformation succeeded</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="filter" transfer-ownership="none">
            <doc xml:space="preserve">a #GstGLFilter</doc>
            <type name="GLFilter" c:type="GstGLFilter*"/>
          </instance-parameter>
          <parameter name="in_tex" transfer-ownership="none">
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="out_tex" transfer-ownership="none">
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="init_fbo">
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="filter" transfer-ownership="none">
            <type name="GLFilter" c:type="GstGLFilter*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="set_caps">
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="filter" transfer-ownership="none">
            <type name="GLFilter" c:type="GstGLFilter*"/>
          </instance-parameter>
          <parameter name="incaps" transfer-ownership="none">
            <type name="Gst.Caps" c:type="GstCaps*"/>
          </parameter>
          <parameter name="outcaps" transfer-ownership="none">
            <type name="Gst.Caps" c:type="GstCaps*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="transform_internal_caps">
        <return-value transfer-ownership="full">
          <type name="Gst.Caps" c:type="GstCaps*"/>
        </return-value>
        <parameters>
          <instance-parameter name="filter" transfer-ownership="none">
            <type name="GLFilter" c:type="GstGLFilter*"/>
          </instance-parameter>
          <parameter name="direction" transfer-ownership="none">
            <type name="Gst.PadDirection" c:type="GstPadDirection"/>
          </parameter>
          <parameter name="caps" transfer-ownership="none">
            <type name="Gst.Caps" c:type="GstCaps*"/>
          </parameter>
          <parameter name="filter_caps" transfer-ownership="none">
            <type name="Gst.Caps" c:type="GstCaps*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <method name="draw_texture"
              c:identifier="gst_gl_filter_draw_texture"
              introspectable="0">
        <doc xml:space="preserve">Draws @texture into the OpenGL scene at the specified @width and @height.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="filter" transfer-ownership="none">
            <doc xml:space="preserve">a #GstGLFilter</doc>
            <type name="GLFilter" c:type="GstGLFilter*"/>
          </instance-parameter>
          <parameter name="texture" transfer-ownership="none">
            <doc xml:space="preserve">the texture to draw</doc>
            <type c:type="GLuint"/>
          </parameter>
          <parameter name="width" transfer-ownership="none">
            <doc xml:space="preserve">width of @texture</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="height" transfer-ownership="none">
            <doc xml:space="preserve">height of texture</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </method>
      <method name="filter_texture"
              c:identifier="gst_gl_filter_filter_texture">
        <doc xml:space="preserve">Perform automatic upload if needed, call filter_texture vfunc and then an
automatic download if needed.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">whether the transformation succeeded</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="filter" transfer-ownership="none">
            <doc xml:space="preserve">a #GstGLFilter</doc>
            <type name="GLFilter" c:type="GstGLFilter*"/>
          </instance-parameter>
          <parameter name="inbuf" transfer-ownership="none">
            <doc xml:space="preserve">an input buffer</doc>
            <type name="Gst.Buffer" c:type="GstBuffer*"/>
          </parameter>
          <parameter name="outbuf" transfer-ownership="none">
            <doc xml:space="preserve">an output buffer</doc>
            <type name="Gst.Buffer" c:type="GstBuffer*"/>
          </parameter>
        </parameters>
      </method>
      <method name="render_to_target"
              c:identifier="gst_gl_filter_render_to_target"
              introspectable="0">
        <doc xml:space="preserve">Transforms @input into @output using @func on through FBO.  @resize should
only ever be %TRUE whenever @input is the input texture of @filter.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="filter" transfer-ownership="none">
            <doc xml:space="preserve">a #GstGLFilter</doc>
            <type name="GLFilter" c:type="GstGLFilter*"/>
          </instance-parameter>
          <parameter name="resize" transfer-ownership="none">
            <doc xml:space="preserve">whether to automatically resize the texture between the input size
         and the output size</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
          <parameter name="input" transfer-ownership="none">
            <doc xml:space="preserve">the input texture</doc>
            <type c:type="GLuint"/>
          </parameter>
          <parameter name="target" transfer-ownership="none">
            <doc xml:space="preserve">the output texture</doc>
            <type c:type="GLuint"/>
          </parameter>
          <parameter name="func" transfer-ownership="none">
            <doc xml:space="preserve">the function to transform @input into @output. called with @data</doc>
            <type c:type="GLCB"/>
          </parameter>
          <parameter name="data" transfer-ownership="none">
            <doc xml:space="preserve">the data associated with @func</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="render_to_target_with_shader"
              c:identifier="gst_gl_filter_render_to_target_with_shader"
              introspectable="0">
        <doc xml:space="preserve">Transforms @input into @output using @shader on FBO.  @resize should
only ever be %TRUE whenever @input is the input texture of @filter.

See also: gst_gl_filter_render_to_target()</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="filter" transfer-ownership="none">
            <doc xml:space="preserve">a #GstGLFilter</doc>
            <type name="GLFilter" c:type="GstGLFilter*"/>
          </instance-parameter>
          <parameter name="resize" transfer-ownership="none">
            <doc xml:space="preserve">whether to automatically resize the texture between the input size
         and the output size</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
          <parameter name="input" transfer-ownership="none">
            <doc xml:space="preserve">the input texture</doc>
            <type c:type="GLuint"/>
          </parameter>
          <parameter name="target" transfer-ownership="none">
            <doc xml:space="preserve">the output texture</doc>
            <type c:type="GLuint"/>
          </parameter>
          <parameter name="shader" transfer-ownership="none">
            <doc xml:space="preserve">the shader to use.</doc>
            <type name="GLShader" c:type="GstGLShader*"/>
          </parameter>
        </parameters>
      </method>
      <field name="parent">
        <type name="GLBaseFilter" c:type="GstGLBaseFilter"/>
      </field>
      <field name="in_info" introspectable="0">
        <doc xml:space="preserve">the video info for input buffers</doc>
        <type c:type="GstVideoInfo"/>
      </field>
      <field name="out_info" introspectable="0">
        <doc xml:space="preserve">the video info for output buffers</doc>
        <type c:type="GstVideoInfo"/>
      </field>
      <field name="out_caps">
        <type name="Gst.Caps" c:type="GstCaps*"/>
      </field>
      <field name="fbo" introspectable="0" readable="0" private="1">
        <doc xml:space="preserve">GL Framebuffer object used for transformations</doc>
        <type c:type="GLuint"/>
      </field>
      <field name="depthbuffer" introspectable="0" readable="0" private="1">
        <doc xml:space="preserve">GL renderbuffer attached to @fbo</doc>
        <type c:type="GLuint"/>
      </field>
      <field name="in_tex_id" introspectable="0" readable="0" private="1">
        <type c:type="GLuint"/>
      </field>
      <field name="out_tex_id" introspectable="0" readable="0" private="1">
        <type c:type="GLuint"/>
      </field>
      <field name="default_shader" readable="0" private="1">
        <type name="GLShader" c:type="GstGLShader*"/>
      </field>
      <field name="valid_attributes" readable="0" private="1">
        <type name="gboolean" c:type="gboolean"/>
      </field>
      <field name="vao" introspectable="0" readable="0" private="1">
        <type c:type="GLuint"/>
      </field>
      <field name="vbo_indices" introspectable="0" readable="0" private="1">
        <type c:type="GLuint"/>
      </field>
      <field name="vertex_buffer" introspectable="0" readable="0" private="1">
        <type c:type="GLuint"/>
      </field>
      <field name="draw_attr_position_loc"
             introspectable="0"
             readable="0"
             private="1">
        <type c:type="GLint"/>
      </field>
      <field name="draw_attr_texture_loc"
             introspectable="0"
             readable="0"
             private="1">
        <type c:type="GLint"/>
      </field>
    </class>
    <record name="GLFilterClass"
            c:type="GstGLFilterClass"
            glib:is-gtype-struct-for="GLFilter">
      <field name="parent_class">
        <type name="GLBaseFilterClass" c:type="GstGLBaseFilterClass"/>
      </field>
      <field name="set_caps">
        <callback name="set_caps">
          <return-value transfer-ownership="none">
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="filter" transfer-ownership="none">
              <type name="GLFilter" c:type="GstGLFilter*"/>
            </parameter>
            <parameter name="incaps" transfer-ownership="none">
              <type name="Gst.Caps" c:type="GstCaps*"/>
            </parameter>
            <parameter name="outcaps" transfer-ownership="none">
              <type name="Gst.Caps" c:type="GstCaps*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="filter">
        <callback name="filter">
          <return-value transfer-ownership="none">
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="filter" transfer-ownership="none">
              <type name="GLFilter" c:type="GstGLFilter*"/>
            </parameter>
            <parameter name="inbuf" transfer-ownership="none">
              <type name="Gst.Buffer" c:type="GstBuffer*"/>
            </parameter>
            <parameter name="outbuf" transfer-ownership="none">
              <type name="Gst.Buffer" c:type="GstBuffer*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="filter_texture">
        <callback name="filter_texture">
          <return-value transfer-ownership="none">
            <doc xml:space="preserve">whether the transformation succeeded</doc>
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="filter" transfer-ownership="none">
              <doc xml:space="preserve">a #GstGLFilter</doc>
              <type name="GLFilter" c:type="GstGLFilter*"/>
            </parameter>
            <parameter name="in_tex" transfer-ownership="none">
              <type name="guint" c:type="guint"/>
            </parameter>
            <parameter name="out_tex" transfer-ownership="none">
              <type name="guint" c:type="guint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="init_fbo">
        <callback name="init_fbo">
          <return-value transfer-ownership="none">
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="filter" transfer-ownership="none">
              <type name="GLFilter" c:type="GstGLFilter*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="transform_internal_caps">
        <callback name="transform_internal_caps">
          <return-value transfer-ownership="full">
            <type name="Gst.Caps" c:type="GstCaps*"/>
          </return-value>
          <parameters>
            <parameter name="filter" transfer-ownership="none">
              <type name="GLFilter" c:type="GstGLFilter*"/>
            </parameter>
            <parameter name="direction" transfer-ownership="none">
              <type name="Gst.PadDirection" c:type="GstPadDirection"/>
            </parameter>
            <parameter name="caps" transfer-ownership="none">
              <type name="Gst.Caps" c:type="GstCaps*"/>
            </parameter>
            <parameter name="filter_caps" transfer-ownership="none">
              <type name="Gst.Caps" c:type="GstCaps*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="display_init_cb">
        <callback name="display_init_cb">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="filter" transfer-ownership="none">
              <type name="GLFilter" c:type="GstGLFilter*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="display_reset_cb">
        <callback name="display_reset_cb">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="filter" transfer-ownership="none">
              <type name="GLFilter" c:type="GstGLFilter*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
    </record>
    <class name="GLFramebuffer"
           c:symbol-prefix="gl_framebuffer"
           c:type="GstGLFramebuffer"
           parent="GObject.Object"
           glib:type-name="GstGLFramebuffer"
           glib:get-type="gst_gl_framebuffer_get_type"
           glib:type-struct="GLFramebufferClass">
      <constructor name="new" c:identifier="gst_gl_framebuffer_new">
        <return-value transfer-ownership="full">
          <type name="GLFramebuffer" c:type="GstGLFramebuffer*"/>
        </return-value>
        <parameters>
          <parameter name="context" transfer-ownership="none">
            <type name="GLContext" c:type="GstGLContext*"/>
          </parameter>
        </parameters>
      </constructor>
      <method name="delete" c:identifier="gst_gl_framebuffer_delete">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="frame" transfer-ownership="none">
            <type name="GLFramebuffer" c:type="GstGLFramebuffer*"/>
          </instance-parameter>
          <parameter name="fbo" transfer-ownership="none">
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="depth" transfer-ownership="none">
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </method>
      <method name="generate" c:identifier="gst_gl_framebuffer_generate">
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="frame" transfer-ownership="none">
            <type name="GLFramebuffer" c:type="GstGLFramebuffer*"/>
          </instance-parameter>
          <parameter name="width" transfer-ownership="none">
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="height" transfer-ownership="none">
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="fbo" transfer-ownership="none">
            <type name="guint" c:type="guint*"/>
          </parameter>
          <parameter name="depthbuffer" transfer-ownership="none">
            <type name="guint" c:type="guint*"/>
          </parameter>
        </parameters>
      </method>
      <method name="use_v2"
              c:identifier="gst_gl_framebuffer_use_v2"
              introspectable="0">
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="frame" transfer-ownership="none">
            <type name="GLFramebuffer" c:type="GstGLFramebuffer*"/>
          </instance-parameter>
          <parameter name="texture_fbo_width" transfer-ownership="none">
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="texture_fbo_height" transfer-ownership="none">
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="fbo" transfer-ownership="none">
            <type c:type="GLuint"/>
          </parameter>
          <parameter name="depth_buffer" transfer-ownership="none">
            <type c:type="GLuint"/>
          </parameter>
          <parameter name="texture_fbo" transfer-ownership="none">
            <type c:type="GLuint"/>
          </parameter>
          <parameter name="cb" transfer-ownership="none">
            <type c:type="GLCB_V2"/>
          </parameter>
          <parameter name="stuff" transfer-ownership="none">
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <field name="object">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
      <field name="context" readable="0" private="1">
        <type name="GLContext" c:type="GstGLContext*"/>
      </field>
      <field name="priv" readable="0" private="1">
        <type name="GLFramebufferPrivate" c:type="GstGLFramebufferPrivate*"/>
      </field>
    </class>
    <record name="GLFramebufferClass"
            c:type="GstGLFramebufferClass"
            glib:is-gtype-struct-for="GLFramebuffer">
      <field name="object_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
    </record>
    <record name="GLFramebufferPrivate"
            c:type="GstGLFramebufferPrivate"
            disguised="1">
    </record>
    <record name="GLFuncs" c:type="GstGLFuncs">
      <field name="BindTexture" introspectable="0">
        <callback name="BindTexture" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="target" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
            <parameter name="texture" transfer-ownership="none">
              <type c:type="GLuint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="BlendFunc" introspectable="0">
        <callback name="BlendFunc" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="sfactor" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
            <parameter name="dfactor" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="Clear" introspectable="0">
        <callback name="Clear" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="mask" transfer-ownership="none">
              <type c:type="GLbitfield"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="ClearColor" introspectable="0">
        <callback name="ClearColor" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="red" transfer-ownership="none">
              <type c:type="GLclampf"/>
            </parameter>
            <parameter name="green" transfer-ownership="none">
              <type c:type="GLclampf"/>
            </parameter>
            <parameter name="blue" transfer-ownership="none">
              <type c:type="GLclampf"/>
            </parameter>
            <parameter name="alpha" transfer-ownership="none">
              <type c:type="GLclampf"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="ClearStencil" introspectable="0">
        <callback name="ClearStencil" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="s" transfer-ownership="none">
              <type c:type="GLint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="ColorMask" introspectable="0">
        <callback name="ColorMask" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="red" transfer-ownership="none">
              <type c:type="GLboolean"/>
            </parameter>
            <parameter name="green" transfer-ownership="none">
              <type c:type="GLboolean"/>
            </parameter>
            <parameter name="blue" transfer-ownership="none">
              <type c:type="GLboolean"/>
            </parameter>
            <parameter name="alpha" transfer-ownership="none">
              <type c:type="GLboolean"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="CopyTexSubImage2D" introspectable="0">
        <callback name="CopyTexSubImage2D" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="target" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
            <parameter name="level" transfer-ownership="none">
              <type c:type="GLint"/>
            </parameter>
            <parameter name="xoffset" transfer-ownership="none">
              <type c:type="GLint"/>
            </parameter>
            <parameter name="yoffset" transfer-ownership="none">
              <type c:type="GLint"/>
            </parameter>
            <parameter name="x" transfer-ownership="none">
              <type c:type="GLint"/>
            </parameter>
            <parameter name="y" transfer-ownership="none">
              <type c:type="GLint"/>
            </parameter>
            <parameter name="width" transfer-ownership="none">
              <type c:type="GLsizei"/>
            </parameter>
            <parameter name="height" transfer-ownership="none">
              <type c:type="GLsizei"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="DeleteTextures" introspectable="0">
        <callback name="DeleteTextures" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="n" transfer-ownership="none">
              <type c:type="GLsizei"/>
            </parameter>
            <parameter name="textures" transfer-ownership="none">
              <type c:type="const GLuint*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="DepthFunc" introspectable="0">
        <callback name="DepthFunc" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="func" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="DepthMask" introspectable="0">
        <callback name="DepthMask" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="flag" transfer-ownership="none">
              <type c:type="GLboolean"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="Disable" introspectable="0">
        <callback name="Disable" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="cap" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="DrawArrays" introspectable="0">
        <callback name="DrawArrays" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="mode" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
            <parameter name="first" transfer-ownership="none">
              <type c:type="GLint"/>
            </parameter>
            <parameter name="count" transfer-ownership="none">
              <type c:type="GLsizei"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="DrawElements" introspectable="0">
        <callback name="DrawElements" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="mode" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
            <parameter name="count" transfer-ownership="none">
              <type c:type="GLsizei"/>
            </parameter>
            <parameter name="type" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
            <parameter name="indices" transfer-ownership="none">
              <type c:type="const GLvoid*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="Enable" introspectable="0">
        <callback name="Enable" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="cap" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="Finish">
        <callback name="Finish">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="Flush">
        <callback name="Flush">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="FrontFace" introspectable="0">
        <callback name="FrontFace" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="mode" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="CullFace" introspectable="0">
        <callback name="CullFace" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="mode" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="GenTextures" introspectable="0">
        <callback name="GenTextures" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="n" transfer-ownership="none">
              <type c:type="GLsizei"/>
            </parameter>
            <parameter name="textures" transfer-ownership="none">
              <type c:type="GLuint*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="GetError" introspectable="0">
        <callback name="GetError" introspectable="0">
          <return-value>
            <type c:type="GLenum"/>
          </return-value>
        </callback>
      </field>
      <field name="GetIntegerv" introspectable="0">
        <callback name="GetIntegerv" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="pname" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
            <parameter name="params" transfer-ownership="none">
              <type c:type="GLint*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="GetBooleanv" introspectable="0">
        <callback name="GetBooleanv" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="pname" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
            <parameter name="params" transfer-ownership="none">
              <type c:type="GLboolean*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="GetFloatv" introspectable="0">
        <callback name="GetFloatv" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="pname" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
            <parameter name="params" transfer-ownership="none">
              <type c:type="GLfloat*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="GetString" introspectable="0">
        <callback name="GetString" introspectable="0">
          <return-value transfer-ownership="none">
            <type c:type="const GLubyte*"/>
          </return-value>
          <parameters>
            <parameter name="name" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="Hint" introspectable="0">
        <callback name="Hint" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="target" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
            <parameter name="mode" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="IsTexture" introspectable="0">
        <callback name="IsTexture" introspectable="0">
          <return-value>
            <type c:type="GLboolean"/>
          </return-value>
          <parameters>
            <parameter name="texture" transfer-ownership="none">
              <type c:type="GLuint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="PixelStorei" introspectable="0">
        <callback name="PixelStorei" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="pname" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
            <parameter name="param" transfer-ownership="none">
              <type c:type="GLint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="ReadPixels" introspectable="0">
        <callback name="ReadPixels" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="x" transfer-ownership="none">
              <type c:type="GLint"/>
            </parameter>
            <parameter name="y" transfer-ownership="none">
              <type c:type="GLint"/>
            </parameter>
            <parameter name="width" transfer-ownership="none">
              <type c:type="GLsizei"/>
            </parameter>
            <parameter name="height" transfer-ownership="none">
              <type c:type="GLsizei"/>
            </parameter>
            <parameter name="format" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
            <parameter name="type" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
            <parameter name="pixels" transfer-ownership="none">
              <type c:type="GLvoid*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="Scissor" introspectable="0">
        <callback name="Scissor" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="x" transfer-ownership="none">
              <type c:type="GLint"/>
            </parameter>
            <parameter name="y" transfer-ownership="none">
              <type c:type="GLint"/>
            </parameter>
            <parameter name="width" transfer-ownership="none">
              <type c:type="GLsizei"/>
            </parameter>
            <parameter name="height" transfer-ownership="none">
              <type c:type="GLsizei"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="StencilFunc" introspectable="0">
        <callback name="StencilFunc" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="func" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
            <parameter name="ref" transfer-ownership="none">
              <type c:type="GLint"/>
            </parameter>
            <parameter name="mask" transfer-ownership="none">
              <type c:type="GLuint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="StencilMask" introspectable="0">
        <callback name="StencilMask" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="mask" transfer-ownership="none">
              <type c:type="GLuint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="StencilOp" introspectable="0">
        <callback name="StencilOp" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="fail" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
            <parameter name="zfail" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
            <parameter name="zpass" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="TexImage2D" introspectable="0">
        <callback name="TexImage2D" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="target" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
            <parameter name="level" transfer-ownership="none">
              <type c:type="GLint"/>
            </parameter>
            <parameter name="internalformat" transfer-ownership="none">
              <type c:type="GLint"/>
            </parameter>
            <parameter name="width" transfer-ownership="none">
              <type c:type="GLsizei"/>
            </parameter>
            <parameter name="height" transfer-ownership="none">
              <type c:type="GLsizei"/>
            </parameter>
            <parameter name="border" transfer-ownership="none">
              <type c:type="GLint"/>
            </parameter>
            <parameter name="format" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
            <parameter name="type" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
            <parameter name="pixels" transfer-ownership="none">
              <type c:type="const GLvoid*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="TexParameterfv" introspectable="0">
        <callback name="TexParameterfv" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="target" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
            <parameter name="pname" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
            <parameter name="params" transfer-ownership="none">
              <type c:type="const GLfloat*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="TexParameteri" introspectable="0">
        <callback name="TexParameteri" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="target" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
            <parameter name="pname" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
            <parameter name="param" transfer-ownership="none">
              <type c:type="GLint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="TexParameteriv" introspectable="0">
        <callback name="TexParameteriv" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="target" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
            <parameter name="pname" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
            <parameter name="params" transfer-ownership="none">
              <type c:type="const GLint*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="GetTexParameterfv" introspectable="0">
        <callback name="GetTexParameterfv" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="target" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
            <parameter name="pname" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
            <parameter name="params" transfer-ownership="none">
              <type c:type="GLfloat*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="GetTexParameteriv" introspectable="0">
        <callback name="GetTexParameteriv" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="target" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
            <parameter name="pname" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
            <parameter name="params" transfer-ownership="none">
              <type c:type="GLint*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="TexSubImage2D" introspectable="0">
        <callback name="TexSubImage2D" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="target" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
            <parameter name="level" transfer-ownership="none">
              <type c:type="GLint"/>
            </parameter>
            <parameter name="xoffset" transfer-ownership="none">
              <type c:type="GLint"/>
            </parameter>
            <parameter name="yoffset" transfer-ownership="none">
              <type c:type="GLint"/>
            </parameter>
            <parameter name="width" transfer-ownership="none">
              <type c:type="GLsizei"/>
            </parameter>
            <parameter name="height" transfer-ownership="none">
              <type c:type="GLsizei"/>
            </parameter>
            <parameter name="format" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
            <parameter name="type" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
            <parameter name="pixels" transfer-ownership="none">
              <type c:type="const GLvoid*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="CopyTexImage2D" introspectable="0">
        <callback name="CopyTexImage2D" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="target" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
            <parameter name="level" transfer-ownership="none">
              <type c:type="GLint"/>
            </parameter>
            <parameter name="internalformat" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
            <parameter name="x" transfer-ownership="none">
              <type c:type="GLint"/>
            </parameter>
            <parameter name="y" transfer-ownership="none">
              <type c:type="GLint"/>
            </parameter>
            <parameter name="width" transfer-ownership="none">
              <type c:type="GLsizei"/>
            </parameter>
            <parameter name="height" transfer-ownership="none">
              <type c:type="GLsizei"/>
            </parameter>
            <parameter name="border" transfer-ownership="none">
              <type c:type="GLint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="Viewport" introspectable="0">
        <callback name="Viewport" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="x" transfer-ownership="none">
              <type c:type="GLint"/>
            </parameter>
            <parameter name="y" transfer-ownership="none">
              <type c:type="GLint"/>
            </parameter>
            <parameter name="width" transfer-ownership="none">
              <type c:type="GLsizei"/>
            </parameter>
            <parameter name="height" transfer-ownership="none">
              <type c:type="GLsizei"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="IsEnabled" introspectable="0">
        <callback name="IsEnabled" introspectable="0">
          <return-value>
            <type c:type="GLboolean"/>
          </return-value>
          <parameters>
            <parameter name="cap" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="LineWidth" introspectable="0">
        <callback name="LineWidth" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="width" transfer-ownership="none">
              <type c:type="GLfloat"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="PolygonOffset" introspectable="0">
        <callback name="PolygonOffset" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="factor" transfer-ownership="none">
              <type c:type="GLfloat"/>
            </parameter>
            <parameter name="units" transfer-ownership="none">
              <type c:type="GLfloat"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="TexParameterf" introspectable="0">
        <callback name="TexParameterf" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="target" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
            <parameter name="pname" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
            <parameter name="param" transfer-ownership="none">
              <type c:type="GLfloat"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="TexImage3D" introspectable="0">
        <callback name="TexImage3D" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="target" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
            <parameter name="level" transfer-ownership="none">
              <type c:type="GLint"/>
            </parameter>
            <parameter name="internalFormat" transfer-ownership="none">
              <type c:type="GLint"/>
            </parameter>
            <parameter name="width" transfer-ownership="none">
              <type c:type="GLsizei"/>
            </parameter>
            <parameter name="height" transfer-ownership="none">
              <type c:type="GLsizei"/>
            </parameter>
            <parameter name="depth" transfer-ownership="none">
              <type c:type="GLsizei"/>
            </parameter>
            <parameter name="border" transfer-ownership="none">
              <type c:type="GLint"/>
            </parameter>
            <parameter name="format" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
            <parameter name="type" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
            <parameter name="pixels" transfer-ownership="none">
              <type c:type="const GLvoid*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="TexSubImage3D" introspectable="0">
        <callback name="TexSubImage3D" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="target" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
            <parameter name="level" transfer-ownership="none">
              <type c:type="GLint"/>
            </parameter>
            <parameter name="xoffset" transfer-ownership="none">
              <type c:type="GLint"/>
            </parameter>
            <parameter name="yoffset" transfer-ownership="none">
              <type c:type="GLint"/>
            </parameter>
            <parameter name="zoffset" transfer-ownership="none">
              <type c:type="GLint"/>
            </parameter>
            <parameter name="width" transfer-ownership="none">
              <type c:type="GLsizei"/>
            </parameter>
            <parameter name="height" transfer-ownership="none">
              <type c:type="GLsizei"/>
            </parameter>
            <parameter name="depth" transfer-ownership="none">
              <type c:type="GLsizei"/>
            </parameter>
            <parameter name="format" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
            <parameter name="type" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
            <parameter name="pixels" transfer-ownership="none">
              <type c:type="const GLvoid*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="CompressedTexImage2D" introspectable="0">
        <callback name="CompressedTexImage2D" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="target" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
            <parameter name="level" transfer-ownership="none">
              <type c:type="GLint"/>
            </parameter>
            <parameter name="internalformat" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
            <parameter name="width" transfer-ownership="none">
              <type c:type="GLsizei"/>
            </parameter>
            <parameter name="height" transfer-ownership="none">
              <type c:type="GLsizei"/>
            </parameter>
            <parameter name="border" transfer-ownership="none">
              <type c:type="GLint"/>
            </parameter>
            <parameter name="imageSize" transfer-ownership="none">
              <type c:type="GLsizei"/>
            </parameter>
            <parameter name="data" transfer-ownership="none">
              <type c:type="const GLvoid*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="CompressedTexSubImage2D" introspectable="0">
        <callback name="CompressedTexSubImage2D" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="target" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
            <parameter name="level" transfer-ownership="none">
              <type c:type="GLint"/>
            </parameter>
            <parameter name="xoffset" transfer-ownership="none">
              <type c:type="GLint"/>
            </parameter>
            <parameter name="yoffset" transfer-ownership="none">
              <type c:type="GLint"/>
            </parameter>
            <parameter name="width" transfer-ownership="none">
              <type c:type="GLsizei"/>
            </parameter>
            <parameter name="height" transfer-ownership="none">
              <type c:type="GLsizei"/>
            </parameter>
            <parameter name="format" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
            <parameter name="imageSize" transfer-ownership="none">
              <type c:type="GLsizei"/>
            </parameter>
            <parameter name="data" transfer-ownership="none">
              <type c:type="const GLvoid*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="SampleCoverage" introspectable="0">
        <callback name="SampleCoverage" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="value" transfer-ownership="none">
              <type c:type="GLclampf"/>
            </parameter>
            <parameter name="invert" transfer-ownership="none">
              <type c:type="GLboolean"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="GetBufferParameteriv" introspectable="0">
        <callback name="GetBufferParameteriv" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="target" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
            <parameter name="pname" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
            <parameter name="params" transfer-ownership="none">
              <type c:type="GLint*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="GenBuffers" introspectable="0">
        <callback name="GenBuffers" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="n" transfer-ownership="none">
              <type c:type="GLsizei"/>
            </parameter>
            <parameter name="buffers" transfer-ownership="none">
              <type c:type="GLuint*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="BindBuffer" introspectable="0">
        <callback name="BindBuffer" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="target" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
            <parameter name="buffer" transfer-ownership="none">
              <type c:type="GLuint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="BufferData" introspectable="0">
        <callback name="BufferData" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="target" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
            <parameter name="size" transfer-ownership="none">
              <type c:type="GLsizeiptr"/>
            </parameter>
            <parameter name="data" transfer-ownership="none">
              <type c:type="const GLvoid*"/>
            </parameter>
            <parameter name="usage" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="BufferSubData" introspectable="0">
        <callback name="BufferSubData" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="target" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
            <parameter name="offset" transfer-ownership="none">
              <type c:type="GLintptr"/>
            </parameter>
            <parameter name="size" transfer-ownership="none">
              <type c:type="GLsizeiptr"/>
            </parameter>
            <parameter name="data" transfer-ownership="none">
              <type c:type="const GLvoid*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="DeleteBuffers" introspectable="0">
        <callback name="DeleteBuffers" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="n" transfer-ownership="none">
              <type c:type="GLsizei"/>
            </parameter>
            <parameter name="buffers" transfer-ownership="none">
              <type c:type="const GLuint*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="IsBuffer" introspectable="0">
        <callback name="IsBuffer" introspectable="0">
          <return-value>
            <type c:type="GLboolean"/>
          </return-value>
          <parameters>
            <parameter name="buffer" transfer-ownership="none">
              <type c:type="GLuint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="ActiveTexture" introspectable="0">
        <callback name="ActiveTexture" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="texture" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="MapBuffer" introspectable="0">
        <callback name="MapBuffer" introspectable="0">
          <return-value>
            <type name="gpointer" c:type="void*"/>
          </return-value>
          <parameters>
            <parameter name="target" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
            <parameter name="access" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="UnmapBuffer" introspectable="0">
        <callback name="UnmapBuffer" introspectable="0">
          <return-value>
            <type c:type="GLboolean"/>
          </return-value>
          <parameters>
            <parameter name="target" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="GetStringi" introspectable="0">
        <callback name="GetStringi" introspectable="0">
          <return-value transfer-ownership="none">
            <type c:type="const GLubyte*"/>
          </return-value>
          <parameters>
            <parameter name="name" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
            <parameter name="index" transfer-ownership="none">
              <type c:type="GLint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="MapBufferRange" introspectable="0">
        <callback name="MapBufferRange" introspectable="0">
          <return-value>
            <type name="gpointer" c:type="void*"/>
          </return-value>
          <parameters>
            <parameter name="target" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
            <parameter name="offset" transfer-ownership="none">
              <type c:type="GLintptr"/>
            </parameter>
            <parameter name="length" transfer-ownership="none">
              <type c:type="GLsizeiptr"/>
            </parameter>
            <parameter name="access" transfer-ownership="none">
              <type c:type="GLbitfield"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="BlendEquation" introspectable="0">
        <callback name="BlendEquation" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="mode" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="BlendColor" introspectable="0">
        <callback name="BlendColor" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="red" transfer-ownership="none">
              <type c:type="GLclampf"/>
            </parameter>
            <parameter name="green" transfer-ownership="none">
              <type c:type="GLclampf"/>
            </parameter>
            <parameter name="blue" transfer-ownership="none">
              <type c:type="GLclampf"/>
            </parameter>
            <parameter name="alpha" transfer-ownership="none">
              <type c:type="GLclampf"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="BlendFuncSeparate" introspectable="0">
        <callback name="BlendFuncSeparate" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="srcRGB" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
            <parameter name="dstRGB" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
            <parameter name="srcAlpha" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
            <parameter name="dstAlpha" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="BlendEquationSeparate" introspectable="0">
        <callback name="BlendEquationSeparate" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="modeRGB" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
            <parameter name="modeAlpha" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="StencilFuncSeparate" introspectable="0">
        <callback name="StencilFuncSeparate" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="face" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
            <parameter name="func" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
            <parameter name="ref" transfer-ownership="none">
              <type c:type="GLint"/>
            </parameter>
            <parameter name="mask" transfer-ownership="none">
              <type c:type="GLuint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="StencilMaskSeparate" introspectable="0">
        <callback name="StencilMaskSeparate" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="face" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
            <parameter name="mask" transfer-ownership="none">
              <type c:type="GLuint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="StencilOpSeparate" introspectable="0">
        <callback name="StencilOpSeparate" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="face" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
            <parameter name="fail" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
            <parameter name="zfail" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
            <parameter name="zpass" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="EGLImageTargetTexture2D" introspectable="0">
        <callback name="EGLImageTargetTexture2D" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="target" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
            <parameter name="image" transfer-ownership="none">
              <type c:type="GLeglImageOES"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="EGLImageTargetRenderbufferStorage" introspectable="0">
        <callback name="EGLImageTargetRenderbufferStorage" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="target" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
            <parameter name="image" transfer-ownership="none">
              <type c:type="GLeglImageOES"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="GenRenderbuffers" introspectable="0">
        <callback name="GenRenderbuffers" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="n" transfer-ownership="none">
              <type c:type="GLsizei"/>
            </parameter>
            <parameter name="renderbuffers" transfer-ownership="none">
              <type c:type="GLuint*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="DeleteRenderbuffers" introspectable="0">
        <callback name="DeleteRenderbuffers" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="n" transfer-ownership="none">
              <type c:type="GLsizei"/>
            </parameter>
            <parameter name="renderbuffers" transfer-ownership="none">
              <type c:type="const GLuint*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="BindRenderbuffer" introspectable="0">
        <callback name="BindRenderbuffer" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="target" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
            <parameter name="renderbuffer" transfer-ownership="none">
              <type c:type="GLuint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="RenderbufferStorage" introspectable="0">
        <callback name="RenderbufferStorage" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="target" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
            <parameter name="internalformat" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
            <parameter name="width" transfer-ownership="none">
              <type c:type="GLsizei"/>
            </parameter>
            <parameter name="height" transfer-ownership="none">
              <type c:type="GLsizei"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="GenFramebuffers" introspectable="0">
        <callback name="GenFramebuffers" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="n" transfer-ownership="none">
              <type c:type="GLsizei"/>
            </parameter>
            <parameter name="framebuffers" transfer-ownership="none">
              <type c:type="GLuint*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="BindFramebuffer" introspectable="0">
        <callback name="BindFramebuffer" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="target" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
            <parameter name="framebuffer" transfer-ownership="none">
              <type c:type="GLuint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="FramebufferTexture2D" introspectable="0">
        <callback name="FramebufferTexture2D" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="target" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
            <parameter name="attachment" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
            <parameter name="textarget" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
            <parameter name="texture" transfer-ownership="none">
              <type c:type="GLuint"/>
            </parameter>
            <parameter name="level" transfer-ownership="none">
              <type c:type="GLint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="FramebufferRenderbuffer" introspectable="0">
        <callback name="FramebufferRenderbuffer" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="target" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
            <parameter name="attachment" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
            <parameter name="renderbuffertarget" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
            <parameter name="renderbuffer" transfer-ownership="none">
              <type c:type="GLuint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="IsRenderbuffer" introspectable="0">
        <callback name="IsRenderbuffer" introspectable="0">
          <return-value>
            <type c:type="GLboolean"/>
          </return-value>
          <parameters>
            <parameter name="renderbuffer" transfer-ownership="none">
              <type c:type="GLuint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="CheckFramebufferStatus" introspectable="0">
        <callback name="CheckFramebufferStatus" introspectable="0">
          <return-value>
            <type c:type="GLenum"/>
          </return-value>
          <parameters>
            <parameter name="target" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="DeleteFramebuffers" introspectable="0">
        <callback name="DeleteFramebuffers" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="n" transfer-ownership="none">
              <type c:type="GLsizei"/>
            </parameter>
            <parameter name="framebuffers" transfer-ownership="none">
              <type c:type="const GLuint*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="GenerateMipmap" introspectable="0">
        <callback name="GenerateMipmap" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="target" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="GetFramebufferAttachmentParameteriv" introspectable="0">
        <callback name="GetFramebufferAttachmentParameteriv"
                  introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="target" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
            <parameter name="attachment" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
            <parameter name="pname" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
            <parameter name="params" transfer-ownership="none">
              <type c:type="GLint*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="GetRenderbufferParameteriv" introspectable="0">
        <callback name="GetRenderbufferParameteriv" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="target" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
            <parameter name="pname" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
            <parameter name="params" transfer-ownership="none">
              <type c:type="GLint*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="IsFramebuffer" introspectable="0">
        <callback name="IsFramebuffer" introspectable="0">
          <return-value>
            <type c:type="GLboolean"/>
          </return-value>
          <parameters>
            <parameter name="framebuffer" transfer-ownership="none">
              <type c:type="GLuint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="BlitFramebuffer" introspectable="0">
        <callback name="BlitFramebuffer" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="srcX0" transfer-ownership="none">
              <type c:type="GLint"/>
            </parameter>
            <parameter name="srcY0" transfer-ownership="none">
              <type c:type="GLint"/>
            </parameter>
            <parameter name="srcX1" transfer-ownership="none">
              <type c:type="GLint"/>
            </parameter>
            <parameter name="srcY1" transfer-ownership="none">
              <type c:type="GLint"/>
            </parameter>
            <parameter name="dstX0" transfer-ownership="none">
              <type c:type="GLint"/>
            </parameter>
            <parameter name="dstY0" transfer-ownership="none">
              <type c:type="GLint"/>
            </parameter>
            <parameter name="dstX1" transfer-ownership="none">
              <type c:type="GLint"/>
            </parameter>
            <parameter name="dstY1" transfer-ownership="none">
              <type c:type="GLint"/>
            </parameter>
            <parameter name="mask" transfer-ownership="none">
              <type c:type="GLbitfield"/>
            </parameter>
            <parameter name="filter" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="DiscardFramebuffer" introspectable="0">
        <callback name="DiscardFramebuffer" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="target" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
            <parameter name="numAttachments" transfer-ownership="none">
              <type c:type="GLsizei"/>
            </parameter>
            <parameter name="attachments" transfer-ownership="none">
              <type c:type="const GLenum*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="ReadBuffer" introspectable="0">
        <callback name="ReadBuffer" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="mode" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="DrawBuffers" introspectable="0">
        <callback name="DrawBuffers" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="n" transfer-ownership="none">
              <type c:type="GLsizei"/>
            </parameter>
            <parameter name="bufs" transfer-ownership="none">
              <type c:type="const GLenum*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="ClientActiveTexture" introspectable="0">
        <callback name="ClientActiveTexture" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="texture" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="AlphaFunc" introspectable="0">
        <callback name="AlphaFunc" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="func" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
            <parameter name="ref" transfer-ownership="none">
              <type c:type="GLclampf"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="Fogf" introspectable="0">
        <callback name="Fogf" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="pname" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
            <parameter name="param" transfer-ownership="none">
              <type c:type="GLfloat"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="Fogfv" introspectable="0">
        <callback name="Fogfv" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="pname" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
            <parameter name="params" transfer-ownership="none">
              <type c:type="const GLfloat*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="LoadMatrixf" introspectable="0">
        <callback name="LoadMatrixf" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="m" transfer-ownership="none">
              <type c:type="const GLfloat*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="Materialfv" introspectable="0">
        <callback name="Materialfv" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="face" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
            <parameter name="pname" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
            <parameter name="params" transfer-ownership="none">
              <type c:type="const GLfloat*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="PointSize" introspectable="0">
        <callback name="PointSize" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="size" transfer-ownership="none">
              <type c:type="GLfloat"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="TexEnvfv" introspectable="0">
        <callback name="TexEnvfv" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="target" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
            <parameter name="pname" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
            <parameter name="params" transfer-ownership="none">
              <type c:type="const GLfloat*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="Color4ub" introspectable="0">
        <callback name="Color4ub" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="red" transfer-ownership="none">
              <type c:type="GLubyte"/>
            </parameter>
            <parameter name="green" transfer-ownership="none">
              <type c:type="GLubyte"/>
            </parameter>
            <parameter name="blue" transfer-ownership="none">
              <type c:type="GLubyte"/>
            </parameter>
            <parameter name="alpha" transfer-ownership="none">
              <type c:type="GLubyte"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="ColorPointer" introspectable="0">
        <callback name="ColorPointer" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="size" transfer-ownership="none">
              <type c:type="GLint"/>
            </parameter>
            <parameter name="type" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
            <parameter name="stride" transfer-ownership="none">
              <type c:type="GLsizei"/>
            </parameter>
            <parameter name="pointer" transfer-ownership="none">
              <type c:type="const GLvoid*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="DisableClientState" introspectable="0">
        <callback name="DisableClientState" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="array" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="EnableClientState" introspectable="0">
        <callback name="EnableClientState" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="array" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="LoadIdentity">
        <callback name="LoadIdentity">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="MatrixMode" introspectable="0">
        <callback name="MatrixMode" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="mode" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="NormalPointer" introspectable="0">
        <callback name="NormalPointer" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="type" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
            <parameter name="stride" transfer-ownership="none">
              <type c:type="GLsizei"/>
            </parameter>
            <parameter name="pointer" transfer-ownership="none">
              <type c:type="const GLvoid*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="TexCoordPointer" introspectable="0">
        <callback name="TexCoordPointer" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="size" transfer-ownership="none">
              <type c:type="GLint"/>
            </parameter>
            <parameter name="type" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
            <parameter name="stride" transfer-ownership="none">
              <type c:type="GLsizei"/>
            </parameter>
            <parameter name="pointer" transfer-ownership="none">
              <type c:type="const GLvoid*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="TexEnvi" introspectable="0">
        <callback name="TexEnvi" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="target" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
            <parameter name="pname" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
            <parameter name="param" transfer-ownership="none">
              <type c:type="GLint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="VertexPointer" introspectable="0">
        <callback name="VertexPointer" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="size" transfer-ownership="none">
              <type c:type="GLint"/>
            </parameter>
            <parameter name="type" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
            <parameter name="stride" transfer-ownership="none">
              <type c:type="GLsizei"/>
            </parameter>
            <parameter name="pointer" transfer-ownership="none">
              <type c:type="const GLvoid*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="PushMatrix">
        <callback name="PushMatrix">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="PopMatrix">
        <callback name="PopMatrix">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="PushAttrib" introspectable="0">
        <callback name="PushAttrib" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="mask" transfer-ownership="none">
              <type c:type="GLbitfield"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="PopAttrib">
        <callback name="PopAttrib">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="TexImage1D" introspectable="0">
        <callback name="TexImage1D" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="target" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
            <parameter name="level" transfer-ownership="none">
              <type c:type="GLint"/>
            </parameter>
            <parameter name="internalFormat" transfer-ownership="none">
              <type c:type="GLint"/>
            </parameter>
            <parameter name="width" transfer-ownership="none">
              <type c:type="GLsizei"/>
            </parameter>
            <parameter name="border" transfer-ownership="none">
              <type c:type="GLint"/>
            </parameter>
            <parameter name="format" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
            <parameter name="type" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
            <parameter name="data" transfer-ownership="none">
              <type c:type="const GLvoid*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="Rotatef" introspectable="0">
        <callback name="Rotatef" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="angle" transfer-ownership="none">
              <type c:type="GLfloat"/>
            </parameter>
            <parameter name="x" transfer-ownership="none">
              <type c:type="GLfloat"/>
            </parameter>
            <parameter name="y" transfer-ownership="none">
              <type c:type="GLfloat"/>
            </parameter>
            <parameter name="z" transfer-ownership="none">
              <type c:type="GLfloat"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="Translatef" introspectable="0">
        <callback name="Translatef" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="x" transfer-ownership="none">
              <type c:type="GLfloat"/>
            </parameter>
            <parameter name="y" transfer-ownership="none">
              <type c:type="GLfloat"/>
            </parameter>
            <parameter name="z" transfer-ownership="none">
              <type c:type="GLfloat"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="Scalef" introspectable="0">
        <callback name="Scalef" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="x" transfer-ownership="none">
              <type c:type="GLfloat"/>
            </parameter>
            <parameter name="y" transfer-ownership="none">
              <type c:type="GLfloat"/>
            </parameter>
            <parameter name="z" transfer-ownership="none">
              <type c:type="GLfloat"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="Lightfv" introspectable="0">
        <callback name="Lightfv" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="light" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
            <parameter name="pname" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
            <parameter name="params" transfer-ownership="none">
              <type c:type="const GLfloat*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="ColorMaterial" introspectable="0">
        <callback name="ColorMaterial" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="face" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
            <parameter name="pname" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="ShadeModel" introspectable="0">
        <callback name="ShadeModel" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="value" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="DepthRangef" introspectable="0">
        <callback name="DepthRangef" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="near_val" transfer-ownership="none">
              <type c:type="GLfloat"/>
            </parameter>
            <parameter name="far_val" transfer-ownership="none">
              <type c:type="GLfloat"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="ClearDepthf" introspectable="0">
        <callback name="ClearDepthf" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="depth" transfer-ownership="none">
              <type c:type="GLclampf"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="ClipPlanef" introspectable="0">
        <callback name="ClipPlanef" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="plane" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
            <parameter name="equation" transfer-ownership="none">
              <type c:type="const GLfloat*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="ReleaseShaderCompiler">
        <callback name="ReleaseShaderCompiler">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="GetShaderPrecisionFormat" introspectable="0">
        <callback name="GetShaderPrecisionFormat" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="shadertype" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
            <parameter name="precisiontype" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
            <parameter name="range" transfer-ownership="none">
              <type c:type="GLint*"/>
            </parameter>
            <parameter name="precision" transfer-ownership="none">
              <type c:type="GLint*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="ShaderBinary" introspectable="0">
        <callback name="ShaderBinary" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="n" transfer-ownership="none">
              <type c:type="GLsizei"/>
            </parameter>
            <parameter name="shaders" transfer-ownership="none">
              <type c:type="const GLuint*"/>
            </parameter>
            <parameter name="binaryformat" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
            <parameter name="binary" transfer-ownership="none">
              <type c:type="const GLvoid*"/>
            </parameter>
            <parameter name="length" transfer-ownership="none">
              <type c:type="GLsizei"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="RenderbufferStorageMultisampleIMG" introspectable="0">
        <callback name="RenderbufferStorageMultisampleIMG" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="target" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
            <parameter name="samples" transfer-ownership="none">
              <type c:type="GLsizei"/>
            </parameter>
            <parameter name="internal_format" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
            <parameter name="width" transfer-ownership="none">
              <type c:type="GLsizei"/>
            </parameter>
            <parameter name="height" transfer-ownership="none">
              <type c:type="GLsizei"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="FramebufferTexture2DMultisampleIMG" introspectable="0">
        <callback name="FramebufferTexture2DMultisampleIMG" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="target" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
            <parameter name="attachment" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
            <parameter name="textarget" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
            <parameter name="texture" transfer-ownership="none">
              <type c:type="GLuint"/>
            </parameter>
            <parameter name="level" transfer-ownership="none">
              <type c:type="GLint"/>
            </parameter>
            <parameter name="samples" transfer-ownership="none">
              <type c:type="GLsizei"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="GetTexLevelParameteriv" introspectable="0">
        <callback name="GetTexLevelParameteriv" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="target" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
            <parameter name="level" transfer-ownership="none">
              <type c:type="GLint"/>
            </parameter>
            <parameter name="pname" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
            <parameter name="params" transfer-ownership="none">
              <type c:type="GLint*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="GetTexImage" introspectable="0">
        <callback name="GetTexImage" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="target" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
            <parameter name="level" transfer-ownership="none">
              <type c:type="GLint"/>
            </parameter>
            <parameter name="format" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
            <parameter name="type" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
            <parameter name="pixels" transfer-ownership="none">
              <type c:type="GLvoid*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="DepthRange">
        <callback name="DepthRange">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="near_val" transfer-ownership="none">
              <type name="gdouble" c:type="double"/>
            </parameter>
            <parameter name="far_val" transfer-ownership="none">
              <type name="gdouble" c:type="double"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="DrawBuffer" introspectable="0">
        <callback name="DrawBuffer" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="mode" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="ClearDepth">
        <callback name="ClearDepth">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="depth" transfer-ownership="none">
              <type name="gdouble" c:type="double"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="ClipPlane" introspectable="0">
        <callback name="ClipPlane" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="plane" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
            <parameter name="equation" transfer-ownership="none">
              <type name="gdouble" c:type="const double*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="CreateProgram" introspectable="0">
        <callback name="CreateProgram" introspectable="0">
          <return-value>
            <type c:type="GLuint"/>
          </return-value>
        </callback>
      </field>
      <field name="CreateShader" introspectable="0">
        <callback name="CreateShader" introspectable="0">
          <return-value>
            <type c:type="GLuint"/>
          </return-value>
          <parameters>
            <parameter name="shaderType" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="DeleteShader" introspectable="0">
        <callback name="DeleteShader" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="shader" transfer-ownership="none">
              <type c:type="GLuint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="AttachShader" introspectable="0">
        <callback name="AttachShader" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="program" transfer-ownership="none">
              <type c:type="GLuint"/>
            </parameter>
            <parameter name="shader" transfer-ownership="none">
              <type c:type="GLuint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="UseProgram" introspectable="0">
        <callback name="UseProgram" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="program" transfer-ownership="none">
              <type c:type="GLuint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="DeleteProgram" introspectable="0">
        <callback name="DeleteProgram" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="program" transfer-ownership="none">
              <type c:type="GLuint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="GetShaderInfoLog" introspectable="0">
        <callback name="GetShaderInfoLog" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="shader" transfer-ownership="none">
              <type c:type="GLuint"/>
            </parameter>
            <parameter name="maxLength" transfer-ownership="none">
              <type c:type="GLsizei"/>
            </parameter>
            <parameter name="length" transfer-ownership="none">
              <type c:type="GLsizei*"/>
            </parameter>
            <parameter name="infoLog" transfer-ownership="none">
              <type name="utf8" c:type="char*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="GetProgramInfoLog" introspectable="0">
        <callback name="GetProgramInfoLog" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="program" transfer-ownership="none">
              <type c:type="GLuint"/>
            </parameter>
            <parameter name="bufSize" transfer-ownership="none">
              <type c:type="GLsizei"/>
            </parameter>
            <parameter name="length" transfer-ownership="none">
              <type c:type="GLsizei*"/>
            </parameter>
            <parameter name="infoLog" transfer-ownership="none">
              <type name="utf8" c:type="char*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="GetShaderiv" introspectable="0">
        <callback name="GetShaderiv" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="shader" transfer-ownership="none">
              <type c:type="GLuint"/>
            </parameter>
            <parameter name="pname" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
            <parameter name="params" transfer-ownership="none">
              <type c:type="GLint*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="GetProgramiv" introspectable="0">
        <callback name="GetProgramiv" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="program" transfer-ownership="none">
              <type c:type="GLuint"/>
            </parameter>
            <parameter name="pname" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
            <parameter name="params" transfer-ownership="none">
              <type c:type="GLint*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="DetachShader" introspectable="0">
        <callback name="DetachShader" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="program" transfer-ownership="none">
              <type c:type="GLuint"/>
            </parameter>
            <parameter name="shader" transfer-ownership="none">
              <type c:type="GLuint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="GetAttachedShaders" introspectable="0">
        <callback name="GetAttachedShaders" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="program" transfer-ownership="none">
              <type c:type="GLuint"/>
            </parameter>
            <parameter name="maxcount" transfer-ownership="none">
              <type c:type="GLsizei"/>
            </parameter>
            <parameter name="count" transfer-ownership="none">
              <type c:type="GLsizei*"/>
            </parameter>
            <parameter name="shaders" transfer-ownership="none">
              <type c:type="GLuint*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="IsShader" introspectable="0">
        <callback name="IsShader" introspectable="0">
          <return-value>
            <type c:type="GLboolean"/>
          </return-value>
          <parameters>
            <parameter name="shader" transfer-ownership="none">
              <type c:type="GLuint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="IsProgram" introspectable="0">
        <callback name="IsProgram" introspectable="0">
          <return-value>
            <type c:type="GLboolean"/>
          </return-value>
          <parameters>
            <parameter name="program" transfer-ownership="none">
              <type c:type="GLuint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="ShaderSource" introspectable="0">
        <callback name="ShaderSource" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="shader" transfer-ownership="none">
              <type c:type="GLuint"/>
            </parameter>
            <parameter name="count" transfer-ownership="none">
              <type c:type="GLsizei"/>
            </parameter>
            <parameter name="string" transfer-ownership="none">
              <type name="utf8" c:type="const char**"/>
            </parameter>
            <parameter name="length" transfer-ownership="none">
              <type c:type="const GLint*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="CompileShader" introspectable="0">
        <callback name="CompileShader" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="shader" transfer-ownership="none">
              <type c:type="GLuint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="LinkProgram" introspectable="0">
        <callback name="LinkProgram" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="program" transfer-ownership="none">
              <type c:type="GLuint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="GetUniformLocation" introspectable="0">
        <callback name="GetUniformLocation" introspectable="0">
          <return-value>
            <type c:type="GLint"/>
          </return-value>
          <parameters>
            <parameter name="program" transfer-ownership="none">
              <type c:type="GLuint"/>
            </parameter>
            <parameter name="name" transfer-ownership="none">
              <type name="utf8" c:type="const char*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="Uniform1f" introspectable="0">
        <callback name="Uniform1f" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="location" transfer-ownership="none">
              <type c:type="GLint"/>
            </parameter>
            <parameter name="v0" transfer-ownership="none">
              <type c:type="GLfloat"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="Uniform2f" introspectable="0">
        <callback name="Uniform2f" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="location" transfer-ownership="none">
              <type c:type="GLint"/>
            </parameter>
            <parameter name="v0" transfer-ownership="none">
              <type c:type="GLfloat"/>
            </parameter>
            <parameter name="v1" transfer-ownership="none">
              <type c:type="GLfloat"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="Uniform3f" introspectable="0">
        <callback name="Uniform3f" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="location" transfer-ownership="none">
              <type c:type="GLint"/>
            </parameter>
            <parameter name="v0" transfer-ownership="none">
              <type c:type="GLfloat"/>
            </parameter>
            <parameter name="v1" transfer-ownership="none">
              <type c:type="GLfloat"/>
            </parameter>
            <parameter name="v2" transfer-ownership="none">
              <type c:type="GLfloat"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="Uniform4f" introspectable="0">
        <callback name="Uniform4f" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="location" transfer-ownership="none">
              <type c:type="GLint"/>
            </parameter>
            <parameter name="v0" transfer-ownership="none">
              <type c:type="GLfloat"/>
            </parameter>
            <parameter name="v1" transfer-ownership="none">
              <type c:type="GLfloat"/>
            </parameter>
            <parameter name="v2" transfer-ownership="none">
              <type c:type="GLfloat"/>
            </parameter>
            <parameter name="v3" transfer-ownership="none">
              <type c:type="GLfloat"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="Uniform1fv" introspectable="0">
        <callback name="Uniform1fv" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="location" transfer-ownership="none">
              <type c:type="GLint"/>
            </parameter>
            <parameter name="count" transfer-ownership="none">
              <type c:type="GLsizei"/>
            </parameter>
            <parameter name="value" transfer-ownership="none">
              <type c:type="const GLfloat*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="Uniform2fv" introspectable="0">
        <callback name="Uniform2fv" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="location" transfer-ownership="none">
              <type c:type="GLint"/>
            </parameter>
            <parameter name="count" transfer-ownership="none">
              <type c:type="GLsizei"/>
            </parameter>
            <parameter name="value" transfer-ownership="none">
              <type c:type="const GLfloat*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="Uniform3fv" introspectable="0">
        <callback name="Uniform3fv" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="location" transfer-ownership="none">
              <type c:type="GLint"/>
            </parameter>
            <parameter name="count" transfer-ownership="none">
              <type c:type="GLsizei"/>
            </parameter>
            <parameter name="value" transfer-ownership="none">
              <type c:type="const GLfloat*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="Uniform4fv" introspectable="0">
        <callback name="Uniform4fv" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="location" transfer-ownership="none">
              <type c:type="GLint"/>
            </parameter>
            <parameter name="count" transfer-ownership="none">
              <type c:type="GLsizei"/>
            </parameter>
            <parameter name="value" transfer-ownership="none">
              <type c:type="const GLfloat*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="Uniform1i" introspectable="0">
        <callback name="Uniform1i" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="location" transfer-ownership="none">
              <type c:type="GLint"/>
            </parameter>
            <parameter name="v0" transfer-ownership="none">
              <type c:type="GLint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="Uniform2i" introspectable="0">
        <callback name="Uniform2i" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="location" transfer-ownership="none">
              <type c:type="GLint"/>
            </parameter>
            <parameter name="v0" transfer-ownership="none">
              <type c:type="GLint"/>
            </parameter>
            <parameter name="v1" transfer-ownership="none">
              <type c:type="GLint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="Uniform3i" introspectable="0">
        <callback name="Uniform3i" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="location" transfer-ownership="none">
              <type c:type="GLint"/>
            </parameter>
            <parameter name="v0" transfer-ownership="none">
              <type c:type="GLint"/>
            </parameter>
            <parameter name="v1" transfer-ownership="none">
              <type c:type="GLint"/>
            </parameter>
            <parameter name="v2" transfer-ownership="none">
              <type c:type="GLint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="Uniform4i" introspectable="0">
        <callback name="Uniform4i" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="location" transfer-ownership="none">
              <type c:type="GLint"/>
            </parameter>
            <parameter name="v0" transfer-ownership="none">
              <type c:type="GLint"/>
            </parameter>
            <parameter name="v1" transfer-ownership="none">
              <type c:type="GLint"/>
            </parameter>
            <parameter name="v2" transfer-ownership="none">
              <type c:type="GLint"/>
            </parameter>
            <parameter name="v3" transfer-ownership="none">
              <type c:type="GLint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="Uniform1iv" introspectable="0">
        <callback name="Uniform1iv" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="location" transfer-ownership="none">
              <type c:type="GLint"/>
            </parameter>
            <parameter name="count" transfer-ownership="none">
              <type c:type="GLsizei"/>
            </parameter>
            <parameter name="value" transfer-ownership="none">
              <type c:type="const GLint*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="Uniform2iv" introspectable="0">
        <callback name="Uniform2iv" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="location" transfer-ownership="none">
              <type c:type="GLint"/>
            </parameter>
            <parameter name="count" transfer-ownership="none">
              <type c:type="GLsizei"/>
            </parameter>
            <parameter name="value" transfer-ownership="none">
              <type c:type="const GLint*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="Uniform3iv" introspectable="0">
        <callback name="Uniform3iv" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="location" transfer-ownership="none">
              <type c:type="GLint"/>
            </parameter>
            <parameter name="count" transfer-ownership="none">
              <type c:type="GLsizei"/>
            </parameter>
            <parameter name="value" transfer-ownership="none">
              <type c:type="const GLint*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="Uniform4iv" introspectable="0">
        <callback name="Uniform4iv" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="location" transfer-ownership="none">
              <type c:type="GLint"/>
            </parameter>
            <parameter name="count" transfer-ownership="none">
              <type c:type="GLsizei"/>
            </parameter>
            <parameter name="value" transfer-ownership="none">
              <type c:type="const GLint*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="UniformMatrix2fv" introspectable="0">
        <callback name="UniformMatrix2fv" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="location" transfer-ownership="none">
              <type c:type="GLint"/>
            </parameter>
            <parameter name="count" transfer-ownership="none">
              <type c:type="GLsizei"/>
            </parameter>
            <parameter name="transpose" transfer-ownership="none">
              <type c:type="GLboolean"/>
            </parameter>
            <parameter name="value" transfer-ownership="none">
              <type c:type="const GLfloat*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="UniformMatrix3fv" introspectable="0">
        <callback name="UniformMatrix3fv" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="location" transfer-ownership="none">
              <type c:type="GLint"/>
            </parameter>
            <parameter name="count" transfer-ownership="none">
              <type c:type="GLsizei"/>
            </parameter>
            <parameter name="transpose" transfer-ownership="none">
              <type c:type="GLboolean"/>
            </parameter>
            <parameter name="value" transfer-ownership="none">
              <type c:type="const GLfloat*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="UniformMatrix4fv" introspectable="0">
        <callback name="UniformMatrix4fv" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="location" transfer-ownership="none">
              <type c:type="GLint"/>
            </parameter>
            <parameter name="count" transfer-ownership="none">
              <type c:type="GLsizei"/>
            </parameter>
            <parameter name="transpose" transfer-ownership="none">
              <type c:type="GLboolean"/>
            </parameter>
            <parameter name="value" transfer-ownership="none">
              <type c:type="const GLfloat*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="GetUniformfv" introspectable="0">
        <callback name="GetUniformfv" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="program" transfer-ownership="none">
              <type c:type="GLuint"/>
            </parameter>
            <parameter name="location" transfer-ownership="none">
              <type c:type="GLint"/>
            </parameter>
            <parameter name="params" transfer-ownership="none">
              <type c:type="GLfloat*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="GetUniformiv" introspectable="0">
        <callback name="GetUniformiv" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="program" transfer-ownership="none">
              <type c:type="GLuint"/>
            </parameter>
            <parameter name="location" transfer-ownership="none">
              <type c:type="GLint"/>
            </parameter>
            <parameter name="params" transfer-ownership="none">
              <type c:type="GLint*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="GetActiveUniform" introspectable="0">
        <callback name="GetActiveUniform" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="program" transfer-ownership="none">
              <type c:type="GLuint"/>
            </parameter>
            <parameter name="index" transfer-ownership="none">
              <type c:type="GLuint"/>
            </parameter>
            <parameter name="bufsize" transfer-ownership="none">
              <type c:type="GLsizei"/>
            </parameter>
            <parameter name="length" transfer-ownership="none">
              <type c:type="GLsizei*"/>
            </parameter>
            <parameter name="size" transfer-ownership="none">
              <type c:type="GLint*"/>
            </parameter>
            <parameter name="type" transfer-ownership="none">
              <type c:type="GLenum*"/>
            </parameter>
            <parameter name="name" transfer-ownership="none">
              <type c:type="GLchar*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="GetShaderSource" introspectable="0">
        <callback name="GetShaderSource" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="shader" transfer-ownership="none">
              <type c:type="GLuint"/>
            </parameter>
            <parameter name="bufsize" transfer-ownership="none">
              <type c:type="GLsizei"/>
            </parameter>
            <parameter name="length" transfer-ownership="none">
              <type c:type="GLsizei*"/>
            </parameter>
            <parameter name="source" transfer-ownership="none">
              <type c:type="GLchar*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="ValidateProgram" introspectable="0">
        <callback name="ValidateProgram" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="program" transfer-ownership="none">
              <type c:type="GLuint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="VertexAttribPointer" introspectable="0">
        <callback name="VertexAttribPointer" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="index" transfer-ownership="none">
              <type c:type="GLuint"/>
            </parameter>
            <parameter name="size" transfer-ownership="none">
              <type c:type="GLint"/>
            </parameter>
            <parameter name="type" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
            <parameter name="normalized" transfer-ownership="none">
              <type c:type="GLboolean"/>
            </parameter>
            <parameter name="stride" transfer-ownership="none">
              <type c:type="GLsizei"/>
            </parameter>
            <parameter name="pointer" transfer-ownership="none">
              <type c:type="const GLvoid*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="EnableVertexAttribArray" introspectable="0">
        <callback name="EnableVertexAttribArray" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="index" transfer-ownership="none">
              <type c:type="GLuint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="DisableVertexAttribArray" introspectable="0">
        <callback name="DisableVertexAttribArray" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="index" transfer-ownership="none">
              <type c:type="GLuint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="VertexAttrib1f" introspectable="0">
        <callback name="VertexAttrib1f" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="indx" transfer-ownership="none">
              <type c:type="GLuint"/>
            </parameter>
            <parameter name="x" transfer-ownership="none">
              <type c:type="GLfloat"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="VertexAttrib1fv" introspectable="0">
        <callback name="VertexAttrib1fv" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="indx" transfer-ownership="none">
              <type c:type="GLuint"/>
            </parameter>
            <parameter name="values" transfer-ownership="none">
              <type c:type="const GLfloat*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="VertexAttrib2f" introspectable="0">
        <callback name="VertexAttrib2f" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="indx" transfer-ownership="none">
              <type c:type="GLuint"/>
            </parameter>
            <parameter name="x" transfer-ownership="none">
              <type c:type="GLfloat"/>
            </parameter>
            <parameter name="y" transfer-ownership="none">
              <type c:type="GLfloat"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="VertexAttrib2fv" introspectable="0">
        <callback name="VertexAttrib2fv" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="indx" transfer-ownership="none">
              <type c:type="GLuint"/>
            </parameter>
            <parameter name="values" transfer-ownership="none">
              <type c:type="const GLfloat*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="VertexAttrib3f" introspectable="0">
        <callback name="VertexAttrib3f" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="indx" transfer-ownership="none">
              <type c:type="GLuint"/>
            </parameter>
            <parameter name="x" transfer-ownership="none">
              <type c:type="GLfloat"/>
            </parameter>
            <parameter name="y" transfer-ownership="none">
              <type c:type="GLfloat"/>
            </parameter>
            <parameter name="z" transfer-ownership="none">
              <type c:type="GLfloat"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="VertexAttrib3fv" introspectable="0">
        <callback name="VertexAttrib3fv" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="indx" transfer-ownership="none">
              <type c:type="GLuint"/>
            </parameter>
            <parameter name="values" transfer-ownership="none">
              <type c:type="const GLfloat*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="VertexAttrib4f" introspectable="0">
        <callback name="VertexAttrib4f" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="index" transfer-ownership="none">
              <type c:type="GLuint"/>
            </parameter>
            <parameter name="x" transfer-ownership="none">
              <type c:type="GLfloat"/>
            </parameter>
            <parameter name="y" transfer-ownership="none">
              <type c:type="GLfloat"/>
            </parameter>
            <parameter name="z" transfer-ownership="none">
              <type c:type="GLfloat"/>
            </parameter>
            <parameter name="w" transfer-ownership="none">
              <type c:type="GLfloat"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="VertexAttrib4fv" introspectable="0">
        <callback name="VertexAttrib4fv" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="indx" transfer-ownership="none">
              <type c:type="GLuint"/>
            </parameter>
            <parameter name="values" transfer-ownership="none">
              <type c:type="const GLfloat*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="GetVertexAttribfv" introspectable="0">
        <callback name="GetVertexAttribfv" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="index" transfer-ownership="none">
              <type c:type="GLuint"/>
            </parameter>
            <parameter name="pname" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
            <parameter name="params" transfer-ownership="none">
              <type c:type="GLfloat*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="GetVertexAttribiv" introspectable="0">
        <callback name="GetVertexAttribiv" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="index" transfer-ownership="none">
              <type c:type="GLuint"/>
            </parameter>
            <parameter name="pname" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
            <parameter name="params" transfer-ownership="none">
              <type c:type="GLint*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="GetVertexAttribPointerv" introspectable="0">
        <callback name="GetVertexAttribPointerv" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="index" transfer-ownership="none">
              <type c:type="GLuint"/>
            </parameter>
            <parameter name="pname" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
            <parameter name="pointer" transfer-ownership="none">
              <type c:type="GLvoid**"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="GetAttribLocation" introspectable="0">
        <callback name="GetAttribLocation" introspectable="0">
          <return-value>
            <type c:type="GLint"/>
          </return-value>
          <parameters>
            <parameter name="program" transfer-ownership="none">
              <type c:type="GLuint"/>
            </parameter>
            <parameter name="name" transfer-ownership="none">
              <type name="utf8" c:type="const char*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="BindAttribLocation" introspectable="0">
        <callback name="BindAttribLocation" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="program" transfer-ownership="none">
              <type c:type="GLuint"/>
            </parameter>
            <parameter name="index" transfer-ownership="none">
              <type c:type="GLuint"/>
            </parameter>
            <parameter name="name" transfer-ownership="none">
              <type c:type="const GLchar*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="GetActiveAttrib" introspectable="0">
        <callback name="GetActiveAttrib" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="program" transfer-ownership="none">
              <type c:type="GLuint"/>
            </parameter>
            <parameter name="index" transfer-ownership="none">
              <type c:type="GLuint"/>
            </parameter>
            <parameter name="bufsize" transfer-ownership="none">
              <type c:type="GLsizei"/>
            </parameter>
            <parameter name="length" transfer-ownership="none">
              <type c:type="GLsizei*"/>
            </parameter>
            <parameter name="size" transfer-ownership="none">
              <type c:type="GLint*"/>
            </parameter>
            <parameter name="type" transfer-ownership="none">
              <type c:type="GLenum*"/>
            </parameter>
            <parameter name="name" transfer-ownership="none">
              <type c:type="GLchar*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="CreateProgramObject" introspectable="0">
        <callback name="CreateProgramObject" introspectable="0">
          <return-value>
            <type c:type="GLuint"/>
          </return-value>
        </callback>
      </field>
      <field name="CreateShaderObject" introspectable="0">
        <callback name="CreateShaderObject" introspectable="0">
          <return-value>
            <type c:type="GLuint"/>
          </return-value>
          <parameters>
            <parameter name="shaderType" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="DeleteObject" introspectable="0">
        <callback name="DeleteObject" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="obj" transfer-ownership="none">
              <type c:type="GLuint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="AttachObject" introspectable="0">
        <callback name="AttachObject" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="container" transfer-ownership="none">
              <type c:type="GLuint"/>
            </parameter>
            <parameter name="obj" transfer-ownership="none">
              <type c:type="GLuint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="UseProgramObject" introspectable="0">
        <callback name="UseProgramObject" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="programObj" transfer-ownership="none">
              <type c:type="GLuint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="GetInfoLog" introspectable="0">
        <callback name="GetInfoLog" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="obj" transfer-ownership="none">
              <type c:type="GLuint"/>
            </parameter>
            <parameter name="maxLength" transfer-ownership="none">
              <type c:type="GLsizei"/>
            </parameter>
            <parameter name="length" transfer-ownership="none">
              <type c:type="GLsizei*"/>
            </parameter>
            <parameter name="infoLog" transfer-ownership="none">
              <type name="utf8" c:type="char*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="GetObjectParameteriv" introspectable="0">
        <callback name="GetObjectParameteriv" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="obj" transfer-ownership="none">
              <type c:type="GLuint"/>
            </parameter>
            <parameter name="pname" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
            <parameter name="params" transfer-ownership="none">
              <type c:type="GLint*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="DetachObject" introspectable="0">
        <callback name="DetachObject" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="container" transfer-ownership="none">
              <type c:type="GLuint"/>
            </parameter>
            <parameter name="obj" transfer-ownership="none">
              <type c:type="GLuint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="GetAttachedObjects" introspectable="0">
        <callback name="GetAttachedObjects" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="program" transfer-ownership="none">
              <type c:type="GLuint"/>
            </parameter>
            <parameter name="maxcount" transfer-ownership="none">
              <type c:type="GLsizei"/>
            </parameter>
            <parameter name="count" transfer-ownership="none">
              <type c:type="GLsizei*"/>
            </parameter>
            <parameter name="shaders" transfer-ownership="none">
              <type c:type="GLuint*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="GenPrograms" introspectable="0">
        <callback name="GenPrograms" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="n" transfer-ownership="none">
              <type c:type="GLsizei"/>
            </parameter>
            <parameter name="programs" transfer-ownership="none">
              <type c:type="GLuint*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="DeletePrograms" introspectable="0">
        <callback name="DeletePrograms" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="n" transfer-ownership="none">
              <type c:type="GLsizei"/>
            </parameter>
            <parameter name="programs" transfer-ownership="none">
              <type c:type="GLuint*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="BindProgram" introspectable="0">
        <callback name="BindProgram" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="target" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
            <parameter name="program" transfer-ownership="none">
              <type c:type="GLuint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="ProgramString" introspectable="0">
        <callback name="ProgramString" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="target" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
            <parameter name="format" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
            <parameter name="len" transfer-ownership="none">
              <type c:type="GLsizei"/>
            </parameter>
            <parameter name="program" transfer-ownership="none">
              <type name="gpointer" c:type="void*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="ProgramLocalParameter4fv" introspectable="0">
        <callback name="ProgramLocalParameter4fv" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="target" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
            <parameter name="index" transfer-ownership="none">
              <type c:type="GLuint"/>
            </parameter>
            <parameter name="params" transfer-ownership="none">
              <type c:type="GLfloat*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="UniformMatrix2x3fv" introspectable="0">
        <callback name="UniformMatrix2x3fv" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="location" transfer-ownership="none">
              <type c:type="GLint"/>
            </parameter>
            <parameter name="count" transfer-ownership="none">
              <type c:type="GLsizei"/>
            </parameter>
            <parameter name="transpose" transfer-ownership="none">
              <type c:type="GLboolean"/>
            </parameter>
            <parameter name="value" transfer-ownership="none">
              <type c:type="const GLfloat*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="UniformMatrix3x2fv" introspectable="0">
        <callback name="UniformMatrix3x2fv" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="location" transfer-ownership="none">
              <type c:type="GLint"/>
            </parameter>
            <parameter name="count" transfer-ownership="none">
              <type c:type="GLsizei"/>
            </parameter>
            <parameter name="transpose" transfer-ownership="none">
              <type c:type="GLboolean"/>
            </parameter>
            <parameter name="value" transfer-ownership="none">
              <type c:type="const GLfloat*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="UniformMatrix2x4fv" introspectable="0">
        <callback name="UniformMatrix2x4fv" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="location" transfer-ownership="none">
              <type c:type="GLint"/>
            </parameter>
            <parameter name="count" transfer-ownership="none">
              <type c:type="GLsizei"/>
            </parameter>
            <parameter name="transpose" transfer-ownership="none">
              <type c:type="GLboolean"/>
            </parameter>
            <parameter name="value" transfer-ownership="none">
              <type c:type="const GLfloat*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="UniformMatrix4x2fv" introspectable="0">
        <callback name="UniformMatrix4x2fv" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="location" transfer-ownership="none">
              <type c:type="GLint"/>
            </parameter>
            <parameter name="count" transfer-ownership="none">
              <type c:type="GLsizei"/>
            </parameter>
            <parameter name="transpose" transfer-ownership="none">
              <type c:type="GLboolean"/>
            </parameter>
            <parameter name="value" transfer-ownership="none">
              <type c:type="const GLfloat*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="UniformMatrix3x4fv" introspectable="0">
        <callback name="UniformMatrix3x4fv" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="location" transfer-ownership="none">
              <type c:type="GLint"/>
            </parameter>
            <parameter name="count" transfer-ownership="none">
              <type c:type="GLsizei"/>
            </parameter>
            <parameter name="transpose" transfer-ownership="none">
              <type c:type="GLboolean"/>
            </parameter>
            <parameter name="value" transfer-ownership="none">
              <type c:type="const GLfloat*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="UniformMatrix4x3fv" introspectable="0">
        <callback name="UniformMatrix4x3fv" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="location" transfer-ownership="none">
              <type c:type="GLint"/>
            </parameter>
            <parameter name="count" transfer-ownership="none">
              <type c:type="GLsizei"/>
            </parameter>
            <parameter name="transpose" transfer-ownership="none">
              <type c:type="GLboolean"/>
            </parameter>
            <parameter name="value" transfer-ownership="none">
              <type c:type="const GLfloat*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="DebugMessageControl" introspectable="0">
        <callback name="DebugMessageControl" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="source" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
            <parameter name="type" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
            <parameter name="severity" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
            <parameter name="count" transfer-ownership="none">
              <type c:type="GLsizei"/>
            </parameter>
            <parameter name="ids" transfer-ownership="none">
              <type c:type="const GLuint*"/>
            </parameter>
            <parameter name="enabled" transfer-ownership="none">
              <type name="gboolean" c:type="gboolean"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="DebugMessageInsert" introspectable="0">
        <callback name="DebugMessageInsert" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="source" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
            <parameter name="type" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
            <parameter name="id" transfer-ownership="none">
              <type c:type="GLuint"/>
            </parameter>
            <parameter name="severity" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
            <parameter name="length" transfer-ownership="none">
              <type c:type="GLsizei"/>
            </parameter>
            <parameter name="message" transfer-ownership="none">
              <type name="utf8" c:type="const gchar*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="DebugMessageCallback" introspectable="0">
        <callback name="DebugMessageCallback" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="callback" transfer-ownership="none">
              <type c:type="GST_GL_DEBUG_PROC"/>
            </parameter>
            <parameter name="user_data" transfer-ownership="none" closure="1">
              <type name="gpointer" c:type="gpointer"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="GetDebugMessageLog" introspectable="0">
        <callback name="GetDebugMessageLog" introspectable="0">
          <return-value>
            <type c:type="GLuint"/>
          </return-value>
          <parameters>
            <parameter name="count" transfer-ownership="none">
              <type c:type="GLuint"/>
            </parameter>
            <parameter name="bufSize" transfer-ownership="none">
              <type c:type="GLsizei"/>
            </parameter>
            <parameter name="sources" transfer-ownership="none">
              <type c:type="GLenum*"/>
            </parameter>
            <parameter name="types" transfer-ownership="none">
              <type c:type="GLenum*"/>
            </parameter>
            <parameter name="ids" transfer-ownership="none">
              <type c:type="GLuint*"/>
            </parameter>
            <parameter name="severities" transfer-ownership="none">
              <type c:type="GLenum*"/>
            </parameter>
            <parameter name="lengths" transfer-ownership="none">
              <type c:type="GLsizei*"/>
            </parameter>
            <parameter name="messageLog" transfer-ownership="none">
              <type name="utf8" c:type="gchar*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="GetPointerv" introspectable="0">
        <callback name="GetPointerv" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="pname" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
            <parameter name="params" transfer-ownership="none">
              <type name="gpointer" c:type="gpointer*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="PushDebugGroup" introspectable="0">
        <callback name="PushDebugGroup" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="source" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
            <parameter name="id" transfer-ownership="none">
              <type c:type="GLuint"/>
            </parameter>
            <parameter name="length" transfer-ownership="none">
              <type c:type="GLsizei"/>
            </parameter>
            <parameter name="message" transfer-ownership="none">
              <type name="utf8" c:type="const gchar*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="PopDebugGroup">
        <callback name="PopDebugGroup">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="ObjectLabel" introspectable="0">
        <callback name="ObjectLabel" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="identifier" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
            <parameter name="name" transfer-ownership="none">
              <type c:type="GLuint"/>
            </parameter>
            <parameter name="length" transfer-ownership="none">
              <type c:type="GLsizei"/>
            </parameter>
            <parameter name="label" transfer-ownership="none">
              <type name="utf8" c:type="const gchar*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="GetObjectLabel" introspectable="0">
        <callback name="GetObjectLabel" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="identifier" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
            <parameter name="name" transfer-ownership="none">
              <type c:type="GLuint"/>
            </parameter>
            <parameter name="bufSize" transfer-ownership="none">
              <type c:type="GLsizei"/>
            </parameter>
            <parameter name="length" transfer-ownership="none">
              <type c:type="GLsizei*"/>
            </parameter>
            <parameter name="label" transfer-ownership="none">
              <type name="utf8" c:type="gchar*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="ObjectPtrLabel" introspectable="0">
        <callback name="ObjectPtrLabel" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="ptr" transfer-ownership="none">
              <type name="gpointer" c:type="gpointer"/>
            </parameter>
            <parameter name="length" transfer-ownership="none">
              <type c:type="GLsizei"/>
            </parameter>
            <parameter name="label" transfer-ownership="none">
              <type name="utf8" c:type="const gchar*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="GetObjectPtrLabel" introspectable="0">
        <callback name="GetObjectPtrLabel" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="ptr" transfer-ownership="none">
              <type name="gpointer" c:type="gpointer"/>
            </parameter>
            <parameter name="bufSize" transfer-ownership="none">
              <type c:type="GLsizei"/>
            </parameter>
            <parameter name="length" transfer-ownership="none">
              <type c:type="GLsizei*"/>
            </parameter>
            <parameter name="label" transfer-ownership="none">
              <type name="utf8" c:type="gchar*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="InsertEventMarker" introspectable="0">
        <callback name="InsertEventMarker" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="length" transfer-ownership="none">
              <type c:type="GLsizei"/>
            </parameter>
            <parameter name="message" transfer-ownership="none">
              <type name="utf8" c:type="const gchar*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="PushGroupMarker" introspectable="0">
        <callback name="PushGroupMarker" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="length" transfer-ownership="none">
              <type c:type="GLsizei"/>
            </parameter>
            <parameter name="message" transfer-ownership="none">
              <type name="utf8" c:type="const gchar*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="PopGroupMarker">
        <callback name="PopGroupMarker">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="StringMarker" introspectable="0">
        <callback name="StringMarker" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="length" transfer-ownership="none">
              <type c:type="GLsizei"/>
            </parameter>
            <parameter name="message" transfer-ownership="none">
              <type name="utf8" c:type="const gchar*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="GenVertexArrays" introspectable="0">
        <callback name="GenVertexArrays" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="n" transfer-ownership="none">
              <type c:type="GLsizei"/>
            </parameter>
            <parameter name="arrays" transfer-ownership="none">
              <type c:type="GLuint*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="DeleteVertexArrays" introspectable="0">
        <callback name="DeleteVertexArrays" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="n" transfer-ownership="none">
              <type c:type="GLsizei"/>
            </parameter>
            <parameter name="arrays" transfer-ownership="none">
              <type c:type="GLuint*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="BindVertexArray" introspectable="0">
        <callback name="BindVertexArray" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="array" transfer-ownership="none">
              <type c:type="GLuint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="IsVertexArray" introspectable="0">
        <callback name="IsVertexArray" introspectable="0">
          <return-value>
            <type c:type="GLboolean"/>
          </return-value>
          <parameters>
            <parameter name="array" transfer-ownership="none">
              <type c:type="GLuint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="FenceSync" introspectable="0">
        <callback name="FenceSync" introspectable="0">
          <return-value>
            <type c:type="GLsync"/>
          </return-value>
          <parameters>
            <parameter name="condition" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
            <parameter name="flags" transfer-ownership="none">
              <type c:type="GLbitfield"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="IsSync" introspectable="0">
        <callback name="IsSync" introspectable="0">
          <return-value>
            <type c:type="GLboolean"/>
          </return-value>
          <parameters>
            <parameter name="sync" transfer-ownership="none">
              <type c:type="GLsync"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="DeleteSync" introspectable="0">
        <callback name="DeleteSync" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="sync" transfer-ownership="none">
              <type c:type="GLsync"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="ClientWaitSync" introspectable="0">
        <callback name="ClientWaitSync" introspectable="0">
          <return-value>
            <type c:type="GLenum"/>
          </return-value>
          <parameters>
            <parameter name="sync" transfer-ownership="none">
              <type c:type="GLsync"/>
            </parameter>
            <parameter name="flags" transfer-ownership="none">
              <type c:type="GLbitfield"/>
            </parameter>
            <parameter name="timeout" transfer-ownership="none">
              <type c:type="GLuint64"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="WaitSync" introspectable="0">
        <callback name="WaitSync" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="sync" transfer-ownership="none">
              <type c:type="GLsync"/>
            </parameter>
            <parameter name="flags" transfer-ownership="none">
              <type c:type="GLbitfield"/>
            </parameter>
            <parameter name="timeout" transfer-ownership="none">
              <type c:type="GLuint64"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="GetSynciv" introspectable="0">
        <callback name="GetSynciv" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="sync" transfer-ownership="none">
              <type c:type="GLsync"/>
            </parameter>
            <parameter name="flags" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
            <parameter name="timeout" transfer-ownership="none">
              <type c:type="GLuint64"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="CopyBufferSubData" introspectable="0">
        <callback name="CopyBufferSubData" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="readTarget" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
            <parameter name="writeTarget" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
            <parameter name="readOffset" transfer-ownership="none">
              <type c:type="GLintptr"/>
            </parameter>
            <parameter name="writeOffset" transfer-ownership="none">
              <type c:type="GLintptr"/>
            </parameter>
            <parameter name="size" transfer-ownership="none">
              <type c:type="GLsizeiptr"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="GetBufferSubData" introspectable="0">
        <callback name="GetBufferSubData" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="target" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
            <parameter name="offset" transfer-ownership="none">
              <type c:type="GLintptr"/>
            </parameter>
            <parameter name="size" transfer-ownership="none">
              <type c:type="GLsizeiptr"/>
            </parameter>
            <parameter name="data" transfer-ownership="none">
              <type name="gpointer" c:type="void*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="GenQueries" introspectable="0">
        <callback name="GenQueries" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="n" transfer-ownership="none">
              <type c:type="GLsizei"/>
            </parameter>
            <parameter name="ids" transfer-ownership="none">
              <type c:type="GLuint*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="DeleteQueries" introspectable="0">
        <callback name="DeleteQueries" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="n" transfer-ownership="none">
              <type c:type="GLsizei"/>
            </parameter>
            <parameter name="ids" transfer-ownership="none">
              <type c:type="GLuint*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="IsQuery" introspectable="0">
        <callback name="IsQuery" introspectable="0">
          <return-value>
            <type c:type="GLboolean"/>
          </return-value>
          <parameters>
            <parameter name="id" transfer-ownership="none">
              <type c:type="GLuint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="BeginQuery" introspectable="0">
        <callback name="BeginQuery" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="target" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
            <parameter name="id" transfer-ownership="none">
              <type c:type="GLuint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="EndQuery" introspectable="0">
        <callback name="EndQuery" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="target" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="QueryCounter" introspectable="0">
        <callback name="QueryCounter" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="id" transfer-ownership="none">
              <type c:type="GLuint"/>
            </parameter>
            <parameter name="target" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="GetQueryiv" introspectable="0">
        <callback name="GetQueryiv" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="target" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
            <parameter name="pname" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
            <parameter name="params" transfer-ownership="none">
              <type c:type="GLint*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="GetQueryObjectiv" introspectable="0">
        <callback name="GetQueryObjectiv" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="id" transfer-ownership="none">
              <type c:type="GLuint"/>
            </parameter>
            <parameter name="pname" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
            <parameter name="params" transfer-ownership="none">
              <type c:type="GLint*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="GetQueryObjectuiv" introspectable="0">
        <callback name="GetQueryObjectuiv" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="id" transfer-ownership="none">
              <type c:type="GLuint"/>
            </parameter>
            <parameter name="pname" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
            <parameter name="params" transfer-ownership="none">
              <type c:type="GLuint*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="GetQueryObjecti64v" introspectable="0">
        <callback name="GetQueryObjecti64v" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="id" transfer-ownership="none">
              <type c:type="GLuint"/>
            </parameter>
            <parameter name="pname" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
            <parameter name="params" transfer-ownership="none">
              <type c:type="GLint64*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="GetQueryObjectui64v" introspectable="0">
        <callback name="GetQueryObjectui64v" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="id" transfer-ownership="none">
              <type c:type="GLuint"/>
            </parameter>
            <parameter name="pname" transfer-ownership="none">
              <type c:type="GLenum"/>
            </parameter>
            <parameter name="params" transfer-ownership="none">
              <type c:type="GLuint64*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="padding" writable="1">
        <array zero-terminated="0" c:type="gpointer" fixed-size="120">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
    </record>
    <record name="GLMemory" c:type="GstGLMemory">
      <doc xml:space="preserve">GstGLMemory is a #GstGLBaseMemory subclass providing support for the mapping of
OpenGL textures.

#GstGLMemory is created or wrapped through gst_gl_base_memory_alloc()
with #GstGLVideoAllocationParams.

Data is uploaded or downloaded from the GPU as is necessary.</doc>
      <field name="mem" writable="1">
        <doc xml:space="preserve">the parent object</doc>
        <type name="GLBaseMemory" c:type="GstGLBaseMemory"/>
      </field>
      <field name="tex_id" writable="1">
        <doc xml:space="preserve">the GL texture id for this memory</doc>
        <type name="guint" c:type="guint"/>
      </field>
      <field name="tex_target" writable="1">
        <doc xml:space="preserve">the GL texture target for this memory</doc>
        <type name="GLTextureTarget" c:type="GstGLTextureTarget"/>
      </field>
      <field name="tex_type" introspectable="0" writable="1">
        <doc xml:space="preserve">the texture type</doc>
        <type c:type="GstVideoGLTextureType"/>
      </field>
      <field name="info" introspectable="0" writable="1">
        <doc xml:space="preserve">the texture's #GstVideoInfo</doc>
        <type c:type="GstVideoInfo"/>
      </field>
      <field name="valign" introspectable="0" writable="1">
        <doc xml:space="preserve">data alignment for system memory mapping</doc>
        <type c:type="GstVideoAlignment"/>
      </field>
      <field name="plane" writable="1">
        <doc xml:space="preserve">data plane in @info</doc>
        <type name="guint" c:type="guint"/>
      </field>
      <field name="tex_scaling" writable="1">
        <doc xml:space="preserve">GL shader scaling parameters for @valign and/or width/height</doc>
        <array zero-terminated="0" c:type="gfloat" fixed-size="2">
          <type name="gfloat" c:type="gfloat"/>
        </array>
      </field>
      <field name="texture_wrapped" writable="1">
        <type name="gboolean" c:type="gboolean"/>
      </field>
      <field name="unpack_length" writable="1">
        <type name="guint" c:type="guint"/>
      </field>
      <field name="tex_width" writable="1">
        <type name="guint" c:type="guint"/>
      </field>
      <method name="copy_into"
              c:identifier="gst_gl_memory_copy_into"
              version="1.8"
              introspectable="0">
        <doc xml:space="preserve">Copies @gl_mem into the texture specfified by @tex_id.  The format of @tex_id
is specified by @tex_type, @width and @height.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">Whether the copy suceeded</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="gl_mem" transfer-ownership="none">
            <doc xml:space="preserve">a #GstGLMemory</doc>
            <type name="GLMemory" c:type="GstGLMemory*"/>
          </instance-parameter>
          <parameter name="tex_id" transfer-ownership="none">
            <doc xml:space="preserve">OpenGL texture id</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="target" transfer-ownership="none">
            <doc xml:space="preserve">the #GstGLTextureTarget</doc>
            <type name="GLTextureTarget" c:type="GstGLTextureTarget"/>
          </parameter>
          <parameter name="tex_type" transfer-ownership="none">
            <doc xml:space="preserve">the #GstVideoGLTextureType</doc>
            <type c:type="GstVideoGLTextureType"/>
          </parameter>
          <parameter name="width" transfer-ownership="none">
            <doc xml:space="preserve">width of @tex_id</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="height" transfer-ownership="none">
            <doc xml:space="preserve">height of @tex_id</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="copy_teximage"
              c:identifier="gst_gl_memory_copy_teximage"
              introspectable="0">
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="src" transfer-ownership="none">
            <type name="GLMemory" c:type="GstGLMemory*"/>
          </instance-parameter>
          <parameter name="tex_id" transfer-ownership="none">
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="out_target" transfer-ownership="none">
            <type name="GLTextureTarget" c:type="GstGLTextureTarget"/>
          </parameter>
          <parameter name="out_tex_type" transfer-ownership="none">
            <type c:type="GstVideoGLTextureType"/>
          </parameter>
          <parameter name="width" transfer-ownership="none">
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="height" transfer-ownership="none">
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_texture_height"
              c:identifier="gst_gl_memory_get_texture_height"
              version="1.8">
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the texture height of @gl_mem</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <instance-parameter name="gl_mem" transfer-ownership="none">
            <doc xml:space="preserve">a #GstGLMemory</doc>
            <type name="GLMemory" c:type="GstGLMemory*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_texture_id"
              c:identifier="gst_gl_memory_get_texture_id"
              version="1.8">
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the OpenGL texture handle of @gl_mem</doc>
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <instance-parameter name="gl_mem" transfer-ownership="none">
            <doc xml:space="preserve">a #GstGLMemory</doc>
            <type name="GLMemory" c:type="GstGLMemory*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_texture_target"
              c:identifier="gst_gl_memory_get_texture_target"
              version="1.8">
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the #GstGLTextureTarget of @gl_mem</doc>
          <type name="GLTextureTarget" c:type="GstGLTextureTarget"/>
        </return-value>
        <parameters>
          <instance-parameter name="gl_mem" transfer-ownership="none">
            <doc xml:space="preserve">a #GstGLMemory</doc>
            <type name="GLMemory" c:type="GstGLMemory*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_texture_type"
              c:identifier="gst_gl_memory_get_texture_type"
              version="1.8"
              introspectable="0">
        <return-value>
          <doc xml:space="preserve">the #GstVideoGLTextureType of @gl_mem</doc>
          <type c:type="GstVideoGLTextureType"/>
        </return-value>
        <parameters>
          <instance-parameter name="gl_mem" transfer-ownership="none">
            <doc xml:space="preserve">a #GstGLMemory</doc>
            <type name="GLMemory" c:type="GstGLMemory*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_texture_width"
              c:identifier="gst_gl_memory_get_texture_width"
              version="1.8">
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the texture width of @gl_mem</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <instance-parameter name="gl_mem" transfer-ownership="none">
            <doc xml:space="preserve">a #GstGLMemory</doc>
            <type name="GLMemory" c:type="GstGLMemory*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="init"
              c:identifier="gst_gl_memory_init"
              version="1.8"
              introspectable="0">
        <doc xml:space="preserve">Initializes @mem with the required parameters.  @info is assumed to have
already have been modified with gst_video_info_align().</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="mem" transfer-ownership="none">
            <doc xml:space="preserve">the #GstGLBaseMemory to initialize</doc>
            <type name="GLMemory" c:type="GstGLMemory*"/>
          </instance-parameter>
          <parameter name="allocator" transfer-ownership="none">
            <doc xml:space="preserve">the #GstAllocator to initialize with</doc>
            <type name="Gst.Allocator" c:type="GstAllocator*"/>
          </parameter>
          <parameter name="parent"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">the parent #GstMemory to initialize with</doc>
            <type name="Gst.Memory" c:type="GstMemory*"/>
          </parameter>
          <parameter name="context" transfer-ownership="none">
            <doc xml:space="preserve">the #GstGLContext to initialize with</doc>
            <type name="GLContext" c:type="GstGLContext*"/>
          </parameter>
          <parameter name="target" transfer-ownership="none">
            <doc xml:space="preserve">the #GstGLTextureTarget for this #GstGLMemory</doc>
            <type name="GLTextureTarget" c:type="GstGLTextureTarget"/>
          </parameter>
          <parameter name="params"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">the @GstAllocationParams to initialize with</doc>
            <type name="Gst.AllocationParams" c:type="GstAllocationParams*"/>
          </parameter>
          <parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve">the #GstVideoInfo for this #GstGLMemory</doc>
            <type c:type="GstVideoInfo*"/>
          </parameter>
          <parameter name="plane" transfer-ownership="none">
            <doc xml:space="preserve">the plane number (starting from 0) for this #GstGLMemory</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="valign"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">optional #GstVideoAlignment parameters</doc>
            <type c:type="GstVideoAlignment*"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">user data to call @notify with</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
          <parameter name="notify"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async">
            <doc xml:space="preserve">a #GDestroyNotify</doc>
            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
          </parameter>
        </parameters>
      </method>
      <method name="read_pixels"
              c:identifier="gst_gl_memory_read_pixels"
              version="1.8">
        <doc xml:space="preserve">Reads the texture in #GstGLMemory into @read_pointer if no buffer is bound
to %GL_PIXEL_PACK_BUFFER.  Otherwise @read_pointer is the byte offset into
the currently bound %GL_PIXEL_PACK_BUFFER buffer to store the result of
glReadPixels.  See the OpenGL specification for glReadPixels for more
details.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">whether theread operation succeeded</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="gl_mem" transfer-ownership="none">
            <doc xml:space="preserve">a #GstGLMemory</doc>
            <type name="GLMemory" c:type="GstGLMemory*"/>
          </instance-parameter>
          <parameter name="read_pointer" transfer-ownership="none">
            <doc xml:space="preserve">the data pointer to pass to glReadPixels</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="texsubimage"
              c:identifier="gst_gl_memory_texsubimage"
              version="1.8">
        <doc xml:space="preserve">See gst_gl_memory_read_pixels() for what @read_pointer signifies.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="gl_mem" transfer-ownership="none">
            <doc xml:space="preserve">a #GstGLMemory</doc>
            <type name="GLMemory" c:type="GstGLMemory*"/>
          </instance-parameter>
          <parameter name="read_pointer" transfer-ownership="none">
            <doc xml:space="preserve">the data pointer to pass to glTexSubImage</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <function name="init_once"
                c:identifier="gst_gl_memory_init_once"
                version="1.4">
        <doc xml:space="preserve">Initializes the GL Base Texture allocator. It is safe to call this function
multiple times.  This must be called before any other GstGLMemory operation.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </function>
      <function name="setup_buffer"
                c:identifier="gst_gl_memory_setup_buffer"
                version="1.8">
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">whether the buffer was correctly setup</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="allocator" transfer-ownership="none">
            <doc xml:space="preserve">the @GstGLMemoryAllocator to allocate from</doc>
            <type name="GLMemoryAllocator" c:type="GstGLMemoryAllocator*"/>
          </parameter>
          <parameter name="buffer" transfer-ownership="none">
            <doc xml:space="preserve">a #GstBuffer to setup</doc>
            <type name="Gst.Buffer" c:type="GstBuffer*"/>
          </parameter>
          <parameter name="params" transfer-ownership="none">
            <doc xml:space="preserve">the #GstGLVideoAllocationParams to allocate with</doc>
            <type name="GLVideoAllocationParams"
                  c:type="GstGLVideoAllocationParams*"/>
          </parameter>
        </parameters>
      </function>
    </record>
    <class name="GLMemoryAllocator"
           c:symbol-prefix="gl_memory_allocator"
           c:type="GstGLMemoryAllocator"
           parent="GLBaseMemoryAllocator"
           glib:type-name="GstGLMemoryAllocator"
           glib:get-type="gst_gl_memory_allocator_get_type"
           glib:type-struct="GLMemoryAllocatorClass">
      <doc xml:space="preserve">Opaque #GstGLMemoryAllocator struct</doc>
      <function name="get_default"
                c:identifier="gst_gl_memory_allocator_get_default"
                version="1.8"
                introspectable="0">
        <return-value>
          <doc xml:space="preserve">the default #GstGLMemoryAllocator supported by @context</doc>
          <type name="GLMemoryAllocator" c:type="GstGLMemoryAllocator*"/>
        </return-value>
        <parameters>
          <parameter name="context" transfer-ownership="none">
            <doc xml:space="preserve">a #GstGLContext</doc>
            <type name="GLContext" c:type="GstGLContext*"/>
          </parameter>
        </parameters>
      </function>
      <field name="parent">
        <type name="GLBaseMemoryAllocator" c:type="GstGLBaseMemoryAllocator"/>
      </field>
    </class>
    <record name="GLMemoryAllocatorClass"
            c:type="GstGLMemoryAllocatorClass"
            glib:is-gtype-struct-for="GLMemoryAllocator">
      <doc xml:space="preserve">The #GstGLMemoryAllocatorClass only contains private data</doc>
      <field name="parent_class">
        <type name="GLBaseMemoryAllocatorClass"
              c:type="GstGLBaseMemoryAllocatorClass"/>
      </field>
      <field name="map" introspectable="0">
        <type name="GLBaseMemoryAllocatorMapFunction"
              c:type="GstGLBaseMemoryAllocatorMapFunction"/>
      </field>
      <field name="copy" introspectable="0">
        <type name="GLBaseMemoryAllocatorCopyFunction"
              c:type="GstGLBaseMemoryAllocatorCopyFunction"/>
      </field>
      <field name="unmap">
        <type name="GLBaseMemoryAllocatorUnmapFunction"
              c:type="GstGLBaseMemoryAllocatorUnmapFunction"/>
      </field>
    </record>
    <record name="GLMemoryPBO" c:type="GstGLMemoryPBO">
      <doc xml:space="preserve">#GstGLMemoryPBO is created or wrapped through gst_gl_base_memory_alloc()
with #GstGLVideoAllocationParams.

#GstGLMemoryPBO is created through gst_gl_memory_pbo_alloc() or system memory can
be wrapped through gst_gl_memory_pbo_wrapped().

Data is uploaded or downloaded from the GPU as is necessary.</doc>
      <field name="mem" writable="1">
        <type name="GLMemory" c:type="GstGLMemory"/>
      </field>
      <field name="pbo" readable="0" private="1">
        <type name="GLBuffer" c:type="GstGLBuffer*"/>
      </field>
      <method name="copy_into_texture"
              c:identifier="gst_gl_memory_pbo_copy_into_texture"
              version="1.8"
              introspectable="0">
        <doc xml:space="preserve">Copies @gl_mem into the texture specfified by @tex_id.  The format of @tex_id
is specified by @tex_type, @width and @height.

If @respecify is %TRUE, then the copy is performed in terms of the texture
data.  This is useful for splitting RGBA textures into RG or R textures or
vice versa. The requirement for this to succeed is that the backing texture
data must be the same size, i.e. say a RGBA8 texture is converted into a RG8
texture, then the RG texture must have twice as many pixels available for
output as the RGBA texture.

Otherwise, if @respecify is %FALSE, then the copy is performed per texel
using glCopyTexImage.  See the OpenGL specification for details on the
mappings between texture formats.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">Whether the copy suceeded</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="gl_mem" transfer-ownership="none">
            <doc xml:space="preserve">a #GstGLMemoryPBO</doc>
            <type name="GLMemoryPBO" c:type="GstGLMemoryPBO*"/>
          </instance-parameter>
          <parameter name="tex_id" transfer-ownership="none">
            <doc xml:space="preserve">the destination texture id</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="target" transfer-ownership="none">
            <doc xml:space="preserve">the destination #GstGLTextureTarget</doc>
            <type name="GLTextureTarget" c:type="GstGLTextureTarget"/>
          </parameter>
          <parameter name="tex_type" transfer-ownership="none">
            <doc xml:space="preserve">the destination #GstVideoGLTextureType</doc>
            <type c:type="GstVideoGLTextureType"/>
          </parameter>
          <parameter name="width" transfer-ownership="none">
            <doc xml:space="preserve">width of @tex_id</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="height" transfer-ownership="none">
            <doc xml:space="preserve">height of @tex_id</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="stride" transfer-ownership="none">
            <doc xml:space="preserve">stride of the backing texture data</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="respecify" transfer-ownership="none">
            <doc xml:space="preserve">whether to copy the data or copy per texel</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <method name="download_transfer"
              c:identifier="gst_gl_memory_pbo_download_transfer"
              version="1.8">
        <doc xml:space="preserve">Transfer the texture data from the PBO into the texture if necessary.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="gl_mem" transfer-ownership="none">
            <doc xml:space="preserve">a #GstGLMemoryPBO</doc>
            <type name="GLMemoryPBO" c:type="GstGLMemoryPBO*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="upload_transfer"
              c:identifier="gst_gl_memory_pbo_upload_transfer">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="gl_mem" transfer-ownership="none">
            <type name="GLMemoryPBO" c:type="GstGLMemoryPBO*"/>
          </instance-parameter>
        </parameters>
      </method>
      <function name="init_once" c:identifier="gst_gl_memory_pbo_init_once">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </function>
    </record>
    <class name="GLMemoryPBOAllocator"
           c:symbol-prefix="gl_memory_pbo_allocator"
           c:type="GstGLMemoryPBOAllocator"
           parent="GLMemoryAllocator"
           glib:type-name="GstGLMemoryPBOAllocator"
           glib:get-type="gst_gl_memory_pbo_allocator_get_type"
           glib:type-struct="GLMemoryPBOAllocatorClass">
      <field name="parent">
        <type name="GLMemoryAllocator" c:type="GstGLMemoryAllocator"/>
      </field>
    </class>
    <record name="GLMemoryPBOAllocatorClass"
            c:type="GstGLMemoryPBOAllocatorClass"
            glib:is-gtype-struct-for="GLMemoryPBOAllocator">
      <field name="parent_class">
        <type name="GLMemoryAllocatorClass"
              c:type="GstGLMemoryAllocatorClass"/>
      </field>
    </record>
    <class name="GLOverlayCompositor"
           c:symbol-prefix="gl_overlay_compositor"
           c:type="GstGLOverlayCompositor"
           parent="Gst.Object"
           glib:type-name="GstGLOverlayCompositor"
           glib:get-type="gst_gl_overlay_compositor_get_type"
           glib:type-struct="GLOverlayCompositorClass">
      <doc xml:space="preserve">Opaque #GstGLOverlayCompositor object</doc>
      <constructor name="new" c:identifier="gst_gl_overlay_compositor_new">
        <return-value transfer-ownership="none">
          <type name="GLOverlayCompositor" c:type="GstGLOverlayCompositor*"/>
        </return-value>
        <parameters>
          <parameter name="context" transfer-ownership="none">
            <type name="GLContext" c:type="GstGLContext*"/>
          </parameter>
        </parameters>
      </constructor>
      <function name="add_caps"
                c:identifier="gst_gl_overlay_compositor_add_caps">
        <return-value transfer-ownership="full">
          <type name="Gst.Caps" c:type="GstCaps*"/>
        </return-value>
        <parameters>
          <parameter name="caps" transfer-ownership="none">
            <type name="Gst.Caps" c:type="GstCaps*"/>
          </parameter>
        </parameters>
      </function>
      <method name="draw_overlays"
              c:identifier="gst_gl_overlay_compositor_draw_overlays">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="compositor" transfer-ownership="none">
            <type name="GLOverlayCompositor" c:type="GstGLOverlayCompositor*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="free_overlays"
              c:identifier="gst_gl_overlay_compositor_free_overlays">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="compositor" transfer-ownership="none">
            <type name="GLOverlayCompositor" c:type="GstGLOverlayCompositor*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="upload_overlays"
              c:identifier="gst_gl_overlay_compositor_upload_overlays">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="compositor" transfer-ownership="none">
            <type name="GLOverlayCompositor" c:type="GstGLOverlayCompositor*"/>
          </instance-parameter>
          <parameter name="buf" transfer-ownership="none">
            <type name="Gst.Buffer" c:type="GstBuffer*"/>
          </parameter>
        </parameters>
      </method>
      <field name="parent">
        <type name="Gst.Object" c:type="GstObject"/>
      </field>
      <field name="context">
        <type name="GLContext" c:type="GstGLContext*"/>
      </field>
      <field name="last_window_width">
        <type name="guint" c:type="guint"/>
      </field>
      <field name="last_window_height">
        <type name="guint" c:type="guint"/>
      </field>
      <field name="overlays">
        <type name="GLib.List" c:type="GList*">
          <type name="gpointer" c:type="gpointer"/>
        </type>
      </field>
      <field name="shader">
        <type name="GLShader" c:type="GstGLShader*"/>
      </field>
      <field name="position_attrib" introspectable="0">
        <type c:type="GLint"/>
      </field>
      <field name="texcoord_attrib" introspectable="0">
        <type c:type="GLint"/>
      </field>
    </class>
    <record name="GLOverlayCompositorClass"
            c:type="GstGLOverlayCompositorClass"
            glib:is-gtype-struct-for="GLOverlayCompositor">
      <field name="object_class">
        <type name="Gst.ObjectClass" c:type="GstObjectClass"/>
      </field>
    </record>
    <bitfield name="GLPlatform" c:type="GstGLPlatform">
      <member name="none" value="0" c:identifier="GST_GL_PLATFORM_NONE">
        <doc xml:space="preserve">no platform</doc>
      </member>
      <member name="egl" value="1" c:identifier="GST_GL_PLATFORM_EGL">
        <doc xml:space="preserve">the EGL platform used primarily with the X11, wayland
                     and android window systems as well as on embedded Linux</doc>
      </member>
      <member name="glx" value="2" c:identifier="GST_GL_PLATFORM_GLX">
        <doc xml:space="preserve">the GLX platform used primarily with the X11 window system</doc>
      </member>
      <member name="wgl" value="4" c:identifier="GST_GL_PLATFORM_WGL">
        <doc xml:space="preserve">the WGL platform used primarily on Windows</doc>
      </member>
      <member name="cgl" value="8" c:identifier="GST_GL_PLATFORM_CGL">
        <doc xml:space="preserve">the CGL platform used primarily on OS X</doc>
      </member>
      <member name="eagl" value="16" c:identifier="GST_GL_PLATFORM_EAGL">
        <doc xml:space="preserve">the EAGL platform used primarily on iOS</doc>
      </member>
      <member name="any" value="4294967295" c:identifier="GST_GL_PLATFORM_ANY">
        <doc xml:space="preserve">any OpenGL platform</doc>
      </member>
    </bitfield>
    <record name="GLQuery" c:type="GstGLQuery">
      <field name="context" readable="0" private="1">
        <type name="GLContext" c:type="GstGLContext*"/>
      </field>
      <field name="query_type" readable="0" private="1">
        <type name="guint" c:type="guint"/>
      </field>
      <field name="query_id" readable="0" private="1">
        <type name="guint" c:type="guint"/>
      </field>
      <field name="supported" readable="0" private="1">
        <type name="gboolean" c:type="gboolean"/>
      </field>
      <field name="start_called" readable="0" private="1">
        <type name="gboolean" c:type="gboolean"/>
      </field>
      <field name="debug" readable="0" private="1">
        <type name="GLAsyncDebug" c:type="GstGLAsyncDebug"/>
      </field>
      <method name="counter" c:identifier="gst_gl_query_counter">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="query" transfer-ownership="none">
            <type name="GLQuery" c:type="GstGLQuery*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="end" c:identifier="gst_gl_query_end">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="query" transfer-ownership="none">
            <type name="GLQuery" c:type="GstGLQuery*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="free" c:identifier="gst_gl_query_free">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="query" transfer-ownership="none">
            <type name="GLQuery" c:type="GstGLQuery*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="init" c:identifier="gst_gl_query_init">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="query" transfer-ownership="none">
            <type name="GLQuery" c:type="GstGLQuery*"/>
          </instance-parameter>
          <parameter name="context" transfer-ownership="none">
            <type name="GLContext" c:type="GstGLContext*"/>
          </parameter>
          <parameter name="query_type" transfer-ownership="none">
            <type name="GLQueryType" c:type="GstGLQueryType"/>
          </parameter>
        </parameters>
      </method>
      <method name="result" c:identifier="gst_gl_query_result">
        <return-value transfer-ownership="none">
          <type name="guint64" c:type="guint64"/>
        </return-value>
        <parameters>
          <instance-parameter name="query" transfer-ownership="none">
            <type name="GLQuery" c:type="GstGLQuery*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="start" c:identifier="gst_gl_query_start">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="query" transfer-ownership="none">
            <type name="GLQuery" c:type="GstGLQuery*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="unset" c:identifier="gst_gl_query_unset">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="query" transfer-ownership="none">
            <type name="GLQuery" c:type="GstGLQuery*"/>
          </instance-parameter>
        </parameters>
      </method>
      <function name="new" c:identifier="gst_gl_query_new" introspectable="0">
        <return-value>
          <type name="GLQuery" c:type="GstGLQuery*"/>
        </return-value>
        <parameters>
          <parameter name="context" transfer-ownership="none">
            <type name="GLContext" c:type="GstGLContext*"/>
          </parameter>
          <parameter name="query_type" transfer-ownership="none">
            <type name="GLQueryType" c:type="GstGLQueryType"/>
          </parameter>
        </parameters>
      </function>
    </record>
    <enumeration name="GLQueryType" c:type="GstGLQueryType">
      <member name="none" value="0" c:identifier="GST_GL_QUERY_NONE">
      </member>
      <member name="time_elapsed"
              value="1"
              c:identifier="GST_GL_QUERY_TIME_ELAPSED">
      </member>
      <member name="timestamp" value="2" c:identifier="GST_GL_QUERY_TIMESTAMP">
      </member>
    </enumeration>
    <enumeration name="GLSLError"
                 c:type="GstGLSLError"
                 glib:error-domain="gst-glsl-error">
      <member name="compile" value="0" c:identifier="GST_GLSL_ERROR_COMPILE">
      </member>
      <member name="link" value="1" c:identifier="GST_GLSL_ERROR_LINK">
      </member>
      <member name="program" value="2" c:identifier="GST_GLSL_ERROR_PROGRAM">
      </member>
    </enumeration>
    <bitfield name="GLSLProfile" c:type="GstGLSLProfile">
      <member name="none" value="0" c:identifier="GST_GLSL_PROFILE_NONE">
      </member>
      <member name="es" value="1" c:identifier="GST_GLSL_PROFILE_ES">
      </member>
      <member name="core" value="2" c:identifier="GST_GLSL_PROFILE_CORE">
      </member>
      <member name="compatibility"
              value="4"
              c:identifier="GST_GLSL_PROFILE_COMPATIBILITY">
      </member>
      <member name="any" value="-1" c:identifier="GST_GLSL_PROFILE_ANY">
      </member>
    </bitfield>
    <class name="GLSLStage"
           c:symbol-prefix="glsl_stage"
           c:type="GstGLSLStage"
           parent="Gst.Object"
           glib:type-name="GstGLSLStage"
           glib:get-type="gst_glsl_stage_get_type"
           glib:type-struct="GLSLStageClass">
      <doc xml:space="preserve">#GstGLSLStage holds and represents a single OpenGL shader stage.</doc>
      <constructor name="new" c:identifier="gst_glsl_stage_new">
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new #GstGLSLStage of the specified @type</doc>
          <type name="GLSLStage" c:type="GstGLSLStage*"/>
        </return-value>
        <parameters>
          <parameter name="context" transfer-ownership="none">
            <doc xml:space="preserve">a #GstGLContext</doc>
            <type name="GLContext" c:type="GstGLContext*"/>
          </parameter>
          <parameter name="type" transfer-ownership="none">
            <doc xml:space="preserve">the GL enum shader stage type</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </constructor>
      <constructor name="new_default_fragment"
                   c:identifier="gst_glsl_stage_new_default_fragment">
        <return-value transfer-ownership="none">
          <type name="GLSLStage" c:type="GstGLSLStage*"/>
        </return-value>
        <parameters>
          <parameter name="context" transfer-ownership="none">
            <type name="GLContext" c:type="GstGLContext*"/>
          </parameter>
        </parameters>
      </constructor>
      <constructor name="new_default_vertex"
                   c:identifier="gst_glsl_stage_new_default_vertex">
        <return-value transfer-ownership="none">
          <type name="GLSLStage" c:type="GstGLSLStage*"/>
        </return-value>
        <parameters>
          <parameter name="context" transfer-ownership="none">
            <type name="GLContext" c:type="GstGLContext*"/>
          </parameter>
        </parameters>
      </constructor>
      <constructor name="new_with_string"
                   c:identifier="gst_glsl_stage_new_with_string">
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new #GstGLSLStage of the specified @type</doc>
          <type name="GLSLStage" c:type="GstGLSLStage*"/>
        </return-value>
        <parameters>
          <parameter name="context" transfer-ownership="none">
            <doc xml:space="preserve">a #GstGLContext</doc>
            <type name="GLContext" c:type="GstGLContext*"/>
          </parameter>
          <parameter name="type" transfer-ownership="none">
            <doc xml:space="preserve">the GL enum shader stage type</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="version" transfer-ownership="none">
            <doc xml:space="preserve">the #GstGLSLVersion</doc>
            <type name="GLSLVersion" c:type="GstGLSLVersion"/>
          </parameter>
          <parameter name="profile" transfer-ownership="none">
            <doc xml:space="preserve">the #GstGLSLProfile</doc>
            <type name="GLSLProfile" c:type="GstGLSLProfile"/>
          </parameter>
          <parameter name="str" transfer-ownership="none">
            <doc xml:space="preserve">a shader string</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </constructor>
      <constructor name="new_with_strings"
                   c:identifier="gst_glsl_stage_new_with_strings">
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new #GstGLSLStage of the specified @type</doc>
          <type name="GLSLStage" c:type="GstGLSLStage*"/>
        </return-value>
        <parameters>
          <parameter name="context" transfer-ownership="none">
            <doc xml:space="preserve">a #GstGLContext</doc>
            <type name="GLContext" c:type="GstGLContext*"/>
          </parameter>
          <parameter name="type" transfer-ownership="none">
            <doc xml:space="preserve">the GL enum shader stage type</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="version" transfer-ownership="none">
            <doc xml:space="preserve">the #GstGLSLVersion</doc>
            <type name="GLSLVersion" c:type="GstGLSLVersion"/>
          </parameter>
          <parameter name="profile" transfer-ownership="none">
            <doc xml:space="preserve">the #GstGLSLProfile</doc>
            <type name="GLSLProfile" c:type="GstGLSLProfile"/>
          </parameter>
          <parameter name="n_strings" transfer-ownership="none">
            <doc xml:space="preserve">the number of strings in @str</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="str" transfer-ownership="none">
            <doc xml:space="preserve">an array of strings concatted together to produce a shader</doc>
            <type name="utf8" c:type="const gchar**"/>
          </parameter>
        </parameters>
      </constructor>
      <method name="compile" c:identifier="gst_glsl_stage_compile" throws="1">
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">whether the compilation suceeded</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="stage" transfer-ownership="none">
            <doc xml:space="preserve">a #GstGLSLStage</doc>
            <type name="GLSLStage" c:type="GstGLSLStage*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_handle" c:identifier="gst_glsl_stage_get_handle">
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">The GL handle for this shader stage</doc>
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <instance-parameter name="stage" transfer-ownership="none">
            <doc xml:space="preserve">a #GstGLSLStage</doc>
            <type name="GLSLStage" c:type="GstGLSLStage*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_profile" c:identifier="gst_glsl_stage_get_profile">
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">The GLSL profile for the current shader stage</doc>
          <type name="GLSLProfile" c:type="GstGLSLProfile"/>
        </return-value>
        <parameters>
          <instance-parameter name="stage" transfer-ownership="none">
            <doc xml:space="preserve">a #GstGLSLStage</doc>
            <type name="GLSLStage" c:type="GstGLSLStage*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_shader_type"
              c:identifier="gst_glsl_stage_get_shader_type">
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">The GL shader type for this shader stage</doc>
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <instance-parameter name="stage" transfer-ownership="none">
            <doc xml:space="preserve">a #GstGLSLStage</doc>
            <type name="GLSLStage" c:type="GstGLSLStage*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_version" c:identifier="gst_glsl_stage_get_version">
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">The GLSL version for the current shader stage</doc>
          <type name="GLSLVersion" c:type="GstGLSLVersion"/>
        </return-value>
        <parameters>
          <instance-parameter name="stage" transfer-ownership="none">
            <doc xml:space="preserve">a #GstGLSLStage</doc>
            <type name="GLSLStage" c:type="GstGLSLStage*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set_strings" c:identifier="gst_glsl_stage_set_strings">
        <doc xml:space="preserve">Replaces the current shader string with @str.</doc>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="stage" transfer-ownership="none">
            <doc xml:space="preserve">a #GstGLSLStage</doc>
            <type name="GLSLStage" c:type="GstGLSLStage*"/>
          </instance-parameter>
          <parameter name="version" transfer-ownership="none">
            <doc xml:space="preserve">a #GstGLSLVersion</doc>
            <type name="GLSLVersion" c:type="GstGLSLVersion"/>
          </parameter>
          <parameter name="profile" transfer-ownership="none">
            <doc xml:space="preserve">a #GstGLSLProfile</doc>
            <type name="GLSLProfile" c:type="GstGLSLProfile"/>
          </parameter>
          <parameter name="n_strings" transfer-ownership="none">
            <doc xml:space="preserve">number of strings in @str</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="str" transfer-ownership="none">
            <doc xml:space="preserve">a GLSL shader string</doc>
            <type name="utf8" c:type="const gchar**"/>
          </parameter>
        </parameters>
      </method>
      <field name="parent" readable="0" private="1">
        <type name="Gst.Object" c:type="GstObject"/>
      </field>
      <field name="context" readable="0" private="1">
        <type name="GLContext" c:type="GstGLContext*"/>
      </field>
      <field name="priv" readable="0" private="1">
        <type name="GLSLStagePrivate" c:type="GstGLSLStagePrivate*"/>
      </field>
      <field name="_padding" readable="0" private="1">
        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
    </class>
    <record name="GLSLStageClass"
            c:type="GstGLSLStageClass"
            glib:is-gtype-struct-for="GLSLStage">
      <doc xml:space="preserve">Opaque #GstGLSLStageClass struct</doc>
      <field name="parent" readable="0" private="1">
        <type name="Gst.ObjectClass" c:type="GstObjectClass"/>
      </field>
    </record>
    <record name="GLSLStagePrivate" c:type="GstGLSLStagePrivate" disguised="1">
    </record>
    <enumeration name="GLSLVersion" c:type="GstGLSLVersion">
      <member name="none" value="0" c:identifier="GST_GLSL_VERSION_NONE">
      </member>
      <member name="100" value="100" c:identifier="GST_GLSL_VERSION_100">
      </member>
      <member name="110" value="110" c:identifier="GST_GLSL_VERSION_110">
      </member>
      <member name="120" value="120" c:identifier="GST_GLSL_VERSION_120">
      </member>
      <member name="130" value="130" c:identifier="GST_GLSL_VERSION_130">
      </member>
      <member name="140" value="140" c:identifier="GST_GLSL_VERSION_140">
      </member>
      <member name="150" value="150" c:identifier="GST_GLSL_VERSION_150">
      </member>
      <member name="300" value="300" c:identifier="GST_GLSL_VERSION_300">
      </member>
      <member name="310" value="310" c:identifier="GST_GLSL_VERSION_310">
      </member>
      <member name="320" value="320" c:identifier="GST_GLSL_VERSION_320">
      </member>
      <member name="330" value="330" c:identifier="GST_GLSL_VERSION_330">
      </member>
      <member name="400" value="400" c:identifier="GST_GLSL_VERSION_400">
      </member>
      <member name="410" value="410" c:identifier="GST_GLSL_VERSION_410">
      </member>
      <member name="420" value="420" c:identifier="GST_GLSL_VERSION_420">
      </member>
      <member name="430" value="430" c:identifier="GST_GLSL_VERSION_430">
      </member>
      <member name="440" value="440" c:identifier="GST_GLSL_VERSION_440">
      </member>
      <member name="450" value="450" c:identifier="GST_GLSL_VERSION_450">
      </member>
      <member name="any" value="-1" c:identifier="GST_GLSL_VERSION_ANY">
      </member>
    </enumeration>
    <class name="GLShader"
           c:symbol-prefix="gl_shader"
           c:type="GstGLShader"
           parent="Gst.Object"
           glib:type-name="GstGLShader"
           glib:get-type="gst_gl_shader_get_type"
           glib:type-struct="GLShaderClass">
      <constructor name="new" c:identifier="gst_gl_shader_new">
        <doc xml:space="preserve">Note: must be called in the GL thread</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new empty @shader</doc>
          <type name="GLShader" c:type="GstGLShader*"/>
        </return-value>
        <parameters>
          <parameter name="context" transfer-ownership="none">
            <doc xml:space="preserve">a #GstGLContext</doc>
            <type name="GLContext" c:type="GstGLContext*"/>
          </parameter>
        </parameters>
      </constructor>
      <constructor name="new_default"
                   c:identifier="gst_gl_shader_new_default"
                   version="1.8"
                   throws="1">
        <doc xml:space="preserve">Note: must be called in the GL thread</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a default @shader or %NULL on failure</doc>
          <type name="GLShader" c:type="GstGLShader*"/>
        </return-value>
        <parameters>
          <parameter name="context" transfer-ownership="none">
            <doc xml:space="preserve">a #GstGLContext</doc>
            <type name="GLContext" c:type="GstGLContext*"/>
          </parameter>
        </parameters>
      </constructor>
      <constructor name="new_link_with_stages"
                   c:identifier="gst_gl_shader_new_link_with_stages"
                   version="1.8"
                   introspectable="0">
        <doc xml:space="preserve">Each stage will attempt to be compiled and attached to @shader.  Then
the shader will be linked. On error, %NULL will be returned and @error will
contain the details of the error.

Note: must be called in the GL thread</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new @shader with the specified stages.</doc>
          <type name="GLShader" c:type="GstGLShader*"/>
        </return-value>
        <parameters>
          <parameter name="context" transfer-ownership="none">
            <doc xml:space="preserve">a #GstGLContext</doc>
            <type name="GLContext" c:type="GstGLContext*"/>
          </parameter>
          <parameter name="error" transfer-ownership="none">
            <doc xml:space="preserve">a #GError</doc>
            <type name="GLib.Error" c:type="GError**"/>
          </parameter>
          <parameter name="..." transfer-ownership="none">
            <doc xml:space="preserve">a NULL terminated list of #GstGLSLStage's</doc>
            <varargs/>
          </parameter>
        </parameters>
      </constructor>
      <constructor name="new_with_stages"
                   c:identifier="gst_gl_shader_new_with_stages"
                   version="1.8"
                   introspectable="0">
        <doc xml:space="preserve">Each stage will attempt to be compiled and attached to @shader.  On error,
%NULL will be returned and @error will contain the details of the error.

Note: must be called in the GL thread</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new @shader with the specified stages.</doc>
          <type name="GLShader" c:type="GstGLShader*"/>
        </return-value>
        <parameters>
          <parameter name="context" transfer-ownership="none">
            <doc xml:space="preserve">a #GstGLContext</doc>
            <type name="GLContext" c:type="GstGLContext*"/>
          </parameter>
          <parameter name="error" transfer-ownership="none">
            <doc xml:space="preserve">a #GError</doc>
            <type name="GLib.Error" c:type="GError**"/>
          </parameter>
          <parameter name="..." transfer-ownership="none">
            <doc xml:space="preserve">a NULL terminated list of #GstGLSLStage's</doc>
            <varargs/>
          </parameter>
        </parameters>
      </constructor>
      <method name="attach" c:identifier="gst_gl_shader_attach" version="1.8">
        <doc xml:space="preserve">Attaches @stage to @shader.  @stage must have been successfully compiled
with gst_glsl_stage_compile().

Note: must be called in the GL thread</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">whether @stage could be attached to @shader</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="shader" transfer-ownership="none">
            <doc xml:space="preserve">a #GstGLShader</doc>
            <type name="GLShader" c:type="GstGLShader*"/>
          </instance-parameter>
          <parameter name="stage" transfer-ownership="none">
            <doc xml:space="preserve">a #GstGLSLStage to attach</doc>
            <type name="GLSLStage" c:type="GstGLSLStage*"/>
          </parameter>
        </parameters>
      </method>
      <method name="attach_unlocked"
              c:identifier="gst_gl_shader_attach_unlocked"
              version="1.8">
        <doc xml:space="preserve">Attaches @stage to @shader.  @stage must have been successfully compiled
with gst_glsl_stage_compile().

Note: must be called in the GL thread</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">whether @stage could be attached to @shader</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="shader" transfer-ownership="none">
            <doc xml:space="preserve">a #GstGLShader</doc>
            <type name="GLShader" c:type="GstGLShader*"/>
          </instance-parameter>
          <parameter name="stage" transfer-ownership="none">
            <doc xml:space="preserve">a #GstGLSLStage to attach</doc>
            <type name="GLSLStage" c:type="GstGLSLStage*"/>
          </parameter>
        </parameters>
      </method>
      <method name="bind_attribute_location"
              c:identifier="gst_gl_shader_bind_attribute_location">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="shader" transfer-ownership="none">
            <type name="GLShader" c:type="GstGLShader*"/>
          </instance-parameter>
          <parameter name="index" transfer-ownership="none">
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="name" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="compile_attach_stage"
              c:identifier="gst_gl_shader_compile_attach_stage"
              version="1.8"
              throws="1">
        <doc xml:space="preserve">Compiles @stage and attaches it to @shader.

Note: must be called in the GL thread</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">whether @stage could be compiled and attached to @shader</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="shader" transfer-ownership="none">
            <doc xml:space="preserve">a #GstGLShader</doc>
            <type name="GLShader" c:type="GstGLShader*"/>
          </instance-parameter>
          <parameter name="stage" transfer-ownership="none">
            <doc xml:space="preserve">a #GstGLSLStage to attach</doc>
            <type name="GLSLStage" c:type="GstGLSLStage*"/>
          </parameter>
        </parameters>
      </method>
      <method name="detach" c:identifier="gst_gl_shader_detach" version="1.8">
        <doc xml:space="preserve">Detaches @stage from @shader.  @stage must have been successfully attached
to @shader with gst_gl_shader_attach() or gst_gl_shader_attach_unlocked().

Note: must be called in the GL thread</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="shader" transfer-ownership="none">
            <doc xml:space="preserve">a #GstGLShader</doc>
            <type name="GLShader" c:type="GstGLShader*"/>
          </instance-parameter>
          <parameter name="stage" transfer-ownership="none">
            <doc xml:space="preserve">a #GstGLSLStage to attach</doc>
            <type name="GLSLStage" c:type="GstGLSLStage*"/>
          </parameter>
        </parameters>
      </method>
      <method name="detach_unlocked"
              c:identifier="gst_gl_shader_detach_unlocked"
              version="1.8">
        <doc xml:space="preserve">Detaches @stage from @shader.  @stage must have been successfully attached
to @shader with gst_gl_shader_attach() or gst_gl_shader_attach_unlocked().

Note: must be called in the GL thread</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="shader" transfer-ownership="none">
            <doc xml:space="preserve">a #GstGLShader</doc>
            <type name="GLShader" c:type="GstGLShader*"/>
          </instance-parameter>
          <parameter name="stage" transfer-ownership="none">
            <doc xml:space="preserve">a #GstGLSLStage to attach</doc>
            <type name="GLSLStage" c:type="GstGLSLStage*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_attribute_location"
              c:identifier="gst_gl_shader_get_attribute_location">
        <return-value transfer-ownership="none">
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <instance-parameter name="shader" transfer-ownership="none">
            <type name="GLShader" c:type="GstGLShader*"/>
          </instance-parameter>
          <parameter name="name" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_program_handle"
              c:identifier="gst_gl_shader_get_program_handle"
              version="1.8">
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the GL program handle for this shader</doc>
          <type name="gint" c:type="int"/>
        </return-value>
        <parameters>
          <instance-parameter name="shader" transfer-ownership="none">
            <doc xml:space="preserve">a #GstGLShader</doc>
            <type name="GLShader" c:type="GstGLShader*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="is_linked"
              c:identifier="gst_gl_shader_is_linked"
              version="1.8">
        <doc xml:space="preserve">Note: must be called in the GL thread</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">whether @shader has been successfully linked</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="shader" transfer-ownership="none">
            <doc xml:space="preserve">a #GstGLShader</doc>
            <type name="GLShader" c:type="GstGLShader*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="link"
              c:identifier="gst_gl_shader_link"
              version="1.8"
              throws="1">
        <doc xml:space="preserve">Links the current list of #GstGLSLStage's in @shader.

Note: must be called in the GL thread</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">whether @shader could be linked together.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="shader" transfer-ownership="none">
            <doc xml:space="preserve">a #GstGLShader</doc>
            <type name="GLShader" c:type="GstGLShader*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="release"
              c:identifier="gst_gl_shader_release"
              version="1.8">
        <doc xml:space="preserve">Releases the shader and stages.

Note: must be called in the GL thread</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="shader" transfer-ownership="none">
            <doc xml:space="preserve">a #GstGLShader</doc>
            <type name="GLShader" c:type="GstGLShader*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="release_unlocked"
              c:identifier="gst_gl_shader_release_unlocked"
              version="1.8">
        <doc xml:space="preserve">Releases the shader and stages.

Note: must be called in the GL thread</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="shader" transfer-ownership="none">
            <doc xml:space="preserve">a #GstGLShader</doc>
            <type name="GLShader" c:type="GstGLShader*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set_uniform_1f"
              c:identifier="gst_gl_shader_set_uniform_1f">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="shader" transfer-ownership="none">
            <type name="GLShader" c:type="GstGLShader*"/>
          </instance-parameter>
          <parameter name="name" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="value" transfer-ownership="none">
            <type name="gfloat" c:type="gfloat"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_uniform_1fv"
              c:identifier="gst_gl_shader_set_uniform_1fv">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="shader" transfer-ownership="none">
            <type name="GLShader" c:type="GstGLShader*"/>
          </instance-parameter>
          <parameter name="name" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="count" transfer-ownership="none">
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="value" transfer-ownership="none">
            <type name="gfloat" c:type="gfloat*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_uniform_1i"
              c:identifier="gst_gl_shader_set_uniform_1i">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="shader" transfer-ownership="none">
            <type name="GLShader" c:type="GstGLShader*"/>
          </instance-parameter>
          <parameter name="name" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="value" transfer-ownership="none">
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_uniform_1iv"
              c:identifier="gst_gl_shader_set_uniform_1iv">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="shader" transfer-ownership="none">
            <type name="GLShader" c:type="GstGLShader*"/>
          </instance-parameter>
          <parameter name="name" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="count" transfer-ownership="none">
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="value" transfer-ownership="none">
            <type name="gint" c:type="gint*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_uniform_2f"
              c:identifier="gst_gl_shader_set_uniform_2f">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="shader" transfer-ownership="none">
            <type name="GLShader" c:type="GstGLShader*"/>
          </instance-parameter>
          <parameter name="name" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="v0" transfer-ownership="none">
            <type name="gfloat" c:type="gfloat"/>
          </parameter>
          <parameter name="v1" transfer-ownership="none">
            <type name="gfloat" c:type="gfloat"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_uniform_2fv"
              c:identifier="gst_gl_shader_set_uniform_2fv">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="shader" transfer-ownership="none">
            <type name="GLShader" c:type="GstGLShader*"/>
          </instance-parameter>
          <parameter name="name" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="count" transfer-ownership="none">
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="value" transfer-ownership="none">
            <type name="gfloat" c:type="gfloat*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_uniform_2i"
              c:identifier="gst_gl_shader_set_uniform_2i">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="shader" transfer-ownership="none">
            <type name="GLShader" c:type="GstGLShader*"/>
          </instance-parameter>
          <parameter name="name" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="v0" transfer-ownership="none">
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="v1" transfer-ownership="none">
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_uniform_2iv"
              c:identifier="gst_gl_shader_set_uniform_2iv">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="shader" transfer-ownership="none">
            <type name="GLShader" c:type="GstGLShader*"/>
          </instance-parameter>
          <parameter name="name" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="count" transfer-ownership="none">
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="value" transfer-ownership="none">
            <type name="gint" c:type="gint*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_uniform_3f"
              c:identifier="gst_gl_shader_set_uniform_3f">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="shader" transfer-ownership="none">
            <type name="GLShader" c:type="GstGLShader*"/>
          </instance-parameter>
          <parameter name="name" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="v0" transfer-ownership="none">
            <type name="gfloat" c:type="gfloat"/>
          </parameter>
          <parameter name="v1" transfer-ownership="none">
            <type name="gfloat" c:type="gfloat"/>
          </parameter>
          <parameter name="v2" transfer-ownership="none">
            <type name="gfloat" c:type="gfloat"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_uniform_3fv"
              c:identifier="gst_gl_shader_set_uniform_3fv">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="shader" transfer-ownership="none">
            <type name="GLShader" c:type="GstGLShader*"/>
          </instance-parameter>
          <parameter name="name" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="count" transfer-ownership="none">
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="value" transfer-ownership="none">
            <type name="gfloat" c:type="gfloat*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_uniform_3i"
              c:identifier="gst_gl_shader_set_uniform_3i">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="shader" transfer-ownership="none">
            <type name="GLShader" c:type="GstGLShader*"/>
          </instance-parameter>
          <parameter name="name" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="v0" transfer-ownership="none">
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="v1" transfer-ownership="none">
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="v2" transfer-ownership="none">
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_uniform_3iv"
              c:identifier="gst_gl_shader_set_uniform_3iv">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="shader" transfer-ownership="none">
            <type name="GLShader" c:type="GstGLShader*"/>
          </instance-parameter>
          <parameter name="name" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="count" transfer-ownership="none">
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="value" transfer-ownership="none">
            <type name="gint" c:type="gint*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_uniform_4f"
              c:identifier="gst_gl_shader_set_uniform_4f">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="shader" transfer-ownership="none">
            <type name="GLShader" c:type="GstGLShader*"/>
          </instance-parameter>
          <parameter name="name" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="v0" transfer-ownership="none">
            <type name="gfloat" c:type="gfloat"/>
          </parameter>
          <parameter name="v1" transfer-ownership="none">
            <type name="gfloat" c:type="gfloat"/>
          </parameter>
          <parameter name="v2" transfer-ownership="none">
            <type name="gfloat" c:type="gfloat"/>
          </parameter>
          <parameter name="v3" transfer-ownership="none">
            <type name="gfloat" c:type="gfloat"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_uniform_4fv"
              c:identifier="gst_gl_shader_set_uniform_4fv">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="shader" transfer-ownership="none">
            <type name="GLShader" c:type="GstGLShader*"/>
          </instance-parameter>
          <parameter name="name" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="count" transfer-ownership="none">
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="value" transfer-ownership="none">
            <type name="gfloat" c:type="gfloat*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_uniform_4i"
              c:identifier="gst_gl_shader_set_uniform_4i">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="shader" transfer-ownership="none">
            <type name="GLShader" c:type="GstGLShader*"/>
          </instance-parameter>
          <parameter name="name" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="v0" transfer-ownership="none">
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="v1" transfer-ownership="none">
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="v2" transfer-ownership="none">
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="v3" transfer-ownership="none">
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_uniform_4iv"
              c:identifier="gst_gl_shader_set_uniform_4iv">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="shader" transfer-ownership="none">
            <type name="GLShader" c:type="GstGLShader*"/>
          </instance-parameter>
          <parameter name="name" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="count" transfer-ownership="none">
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="value" transfer-ownership="none">
            <type name="gint" c:type="gint*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_uniform_matrix_2fv"
              c:identifier="gst_gl_shader_set_uniform_matrix_2fv">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="shader" transfer-ownership="none">
            <type name="GLShader" c:type="GstGLShader*"/>
          </instance-parameter>
          <parameter name="name" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="count" transfer-ownership="none">
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="transpose" transfer-ownership="none">
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
          <parameter name="value" transfer-ownership="none">
            <type name="gfloat" c:type="const gfloat*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_uniform_matrix_3fv"
              c:identifier="gst_gl_shader_set_uniform_matrix_3fv">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="shader" transfer-ownership="none">
            <type name="GLShader" c:type="GstGLShader*"/>
          </instance-parameter>
          <parameter name="name" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="count" transfer-ownership="none">
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="transpose" transfer-ownership="none">
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
          <parameter name="value" transfer-ownership="none">
            <type name="gfloat" c:type="const gfloat*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_uniform_matrix_4fv"
              c:identifier="gst_gl_shader_set_uniform_matrix_4fv">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="shader" transfer-ownership="none">
            <type name="GLShader" c:type="GstGLShader*"/>
          </instance-parameter>
          <parameter name="name" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="count" transfer-ownership="none">
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="transpose" transfer-ownership="none">
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
          <parameter name="value" transfer-ownership="none">
            <type name="gfloat" c:type="const gfloat*"/>
          </parameter>
        </parameters>
      </method>
      <method name="use" c:identifier="gst_gl_shader_use">
        <doc xml:space="preserve">Mark's @shader as being used for the next GL draw command.

Note: must be called in the GL thread and @shader must have been linked.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="shader" transfer-ownership="none">
            <doc xml:space="preserve">a #GstGLShader</doc>
            <type name="GLShader" c:type="GstGLShader*"/>
          </instance-parameter>
        </parameters>
      </method>
      <property name="linked" transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <field name="parent" readable="0" private="1">
        <type name="Gst.Object" c:type="GstObject"/>
      </field>
      <field name="context" readable="0" private="1">
        <type name="GLContext" c:type="GstGLContext*"/>
      </field>
      <field name="priv" readable="0" private="1">
        <type name="GLShaderPrivate" c:type="GstGLShaderPrivate*"/>
      </field>
      <field name="_padding" readable="0" private="1">
        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
    </class>
    <record name="GLShaderClass"
            c:type="GstGLShaderClass"
            glib:is-gtype-struct-for="GLShader">
      <field name="parent_class" readable="0" private="1">
        <type name="Gst.ObjectClass" c:type="GstObjectClass"/>
      </field>
    </record>
    <record name="GLShaderPrivate" c:type="GstGLShaderPrivate" disguised="1">
    </record>
    <enumeration name="GLStereoDownmix"
                 glib:type-name="GstGLStereoDownmix"
                 glib:get-type="gst_gl_stereo_downmix_mode_get_type"
                 c:type="GstGLStereoDownmix">
      <member name="green_magenta_dubois"
              value="0"
              c:identifier="Dubois optimised Green-Magenta anaglyph"
              glib:nick="green-magenta-dubois">
      </member>
      <member name="red_cyan_dubois"
              value="1"
              c:identifier="Dubois optimised Red-Cyan anaglyph"
              glib:nick="red-cyan-dubois">
      </member>
      <member name="amber_blue_dubois"
              value="2"
              c:identifier="Dubois optimised Amber-Blue anaglyph"
              glib:nick="amber-blue-dubois">
      </member>
    </enumeration>
    <record name="GLSyncMeta" c:type="GstGLSyncMeta">
      <field name="parent" writable="1">
        <type name="Gst.Meta" c:type="GstMeta"/>
      </field>
      <field name="context" writable="1">
        <type name="GLContext" c:type="GstGLContext*"/>
      </field>
      <field name="data" writable="1">
        <type name="gpointer" c:type="gpointer"/>
      </field>
      <field name="set_sync">
        <callback name="set_sync">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="sync" transfer-ownership="none">
              <type name="GLSyncMeta" c:type="GstGLSyncMeta*"/>
            </parameter>
            <parameter name="context" transfer-ownership="none">
              <type name="GLContext" c:type="GstGLContext*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="set_sync_gl">
        <callback name="set_sync_gl">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="sync" transfer-ownership="none">
              <type name="GLSyncMeta" c:type="GstGLSyncMeta*"/>
            </parameter>
            <parameter name="context" transfer-ownership="none">
              <type name="GLContext" c:type="GstGLContext*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="wait">
        <callback name="wait">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="sync" transfer-ownership="none">
              <type name="GLSyncMeta" c:type="GstGLSyncMeta*"/>
            </parameter>
            <parameter name="context" transfer-ownership="none">
              <type name="GLContext" c:type="GstGLContext*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="wait_gl">
        <callback name="wait_gl">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="sync" transfer-ownership="none">
              <type name="GLSyncMeta" c:type="GstGLSyncMeta*"/>
            </parameter>
            <parameter name="context" transfer-ownership="none">
              <type name="GLContext" c:type="GstGLContext*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="wait_cpu">
        <callback name="wait_cpu">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="sync" transfer-ownership="none">
              <type name="GLSyncMeta" c:type="GstGLSyncMeta*"/>
            </parameter>
            <parameter name="context" transfer-ownership="none">
              <type name="GLContext" c:type="GstGLContext*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="wait_cpu_gl">
        <callback name="wait_cpu_gl">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="sync" transfer-ownership="none">
              <type name="GLSyncMeta" c:type="GstGLSyncMeta*"/>
            </parameter>
            <parameter name="context" transfer-ownership="none">
              <type name="GLContext" c:type="GstGLContext*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="copy">
        <callback name="copy">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="src" transfer-ownership="none">
              <type name="GLSyncMeta" c:type="GstGLSyncMeta*"/>
            </parameter>
            <parameter name="sbuffer" transfer-ownership="none">
              <type name="Gst.Buffer" c:type="GstBuffer*"/>
            </parameter>
            <parameter name="dest" transfer-ownership="none">
              <type name="GLSyncMeta" c:type="GstGLSyncMeta*"/>
            </parameter>
            <parameter name="dbuffer" transfer-ownership="none">
              <type name="Gst.Buffer" c:type="GstBuffer*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="free">
        <callback name="free">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="sync" transfer-ownership="none">
              <type name="GLSyncMeta" c:type="GstGLSyncMeta*"/>
            </parameter>
            <parameter name="context" transfer-ownership="none">
              <type name="GLContext" c:type="GstGLContext*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="free_gl">
        <callback name="free_gl">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="sync" transfer-ownership="none">
              <type name="GLSyncMeta" c:type="GstGLSyncMeta*"/>
            </parameter>
            <parameter name="context" transfer-ownership="none">
              <type name="GLContext" c:type="GstGLContext*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <method name="set_sync_point"
              c:identifier="gst_gl_sync_meta_set_sync_point">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="sync" transfer-ownership="none">
            <type name="GLSyncMeta" c:type="GstGLSyncMeta*"/>
          </instance-parameter>
          <parameter name="context" transfer-ownership="none">
            <type name="GLContext" c:type="GstGLContext*"/>
          </parameter>
        </parameters>
      </method>
      <method name="wait" c:identifier="gst_gl_sync_meta_wait">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="sync" transfer-ownership="none">
            <type name="GLSyncMeta" c:type="GstGLSyncMeta*"/>
          </instance-parameter>
          <parameter name="context" transfer-ownership="none">
            <type name="GLContext" c:type="GstGLContext*"/>
          </parameter>
        </parameters>
      </method>
      <method name="wait_cpu" c:identifier="gst_gl_sync_meta_wait_cpu">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="sync" transfer-ownership="none">
            <type name="GLSyncMeta" c:type="GstGLSyncMeta*"/>
          </instance-parameter>
          <parameter name="context" transfer-ownership="none">
            <type name="GLContext" c:type="GstGLContext*"/>
          </parameter>
        </parameters>
      </method>
      <function name="get_info" c:identifier="gst_gl_sync_meta_get_info">
        <return-value transfer-ownership="none">
          <type name="Gst.MetaInfo" c:type="const GstMetaInfo*"/>
        </return-value>
      </function>
    </record>
    <enumeration name="GLTextureTarget"
                 version="1.8"
                 c:type="GstGLTextureTarget">
      <member name="none" value="0" c:identifier="GST_GL_TEXTURE_TARGET_NONE">
        <doc xml:space="preserve">no texture target</doc>
      </member>
      <member name="2d" value="1" c:identifier="GST_GL_TEXTURE_TARGET_2D">
        <doc xml:space="preserve">2D texture target</doc>
      </member>
      <member name="rectangle"
              value="2"
              c:identifier="GST_GL_TEXTURE_TARGET_RECTANGLE">
        <doc xml:space="preserve">rectangle texture target</doc>
      </member>
      <member name="external_oes"
              value="3"
              c:identifier="GST_GL_TEXTURE_TARGET_EXTERNAL_OES">
        <doc xml:space="preserve">external oes texture target</doc>
      </member>
    </enumeration>
    <class name="GLUpload"
           c:symbol-prefix="gl_upload"
           c:type="GstGLUpload"
           parent="Gst.Object"
           glib:type-name="GstGLUpload"
           glib:get-type="gst_gl_upload_get_type"
           glib:type-struct="GLUploadClass">
      <doc xml:space="preserve">#GstGLUpload is an object that uploads data from system memory into GL textures.

A #GstGLUpload can be created with gst_gl_upload_new()</doc>
      <constructor name="new" c:identifier="gst_gl_upload_new">
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">a new #GstGLUpload object</doc>
          <type name="GLUpload" c:type="GstGLUpload*"/>
        </return-value>
        <parameters>
          <parameter name="context" transfer-ownership="none">
            <doc xml:space="preserve">a #GstGLContext</doc>
            <type name="GLContext" c:type="GstGLContext*"/>
          </parameter>
        </parameters>
      </constructor>
      <function name="get_input_template_caps"
                c:identifier="gst_gl_upload_get_input_template_caps">
        <return-value transfer-ownership="full">
          <type name="Gst.Caps" c:type="GstCaps*"/>
        </return-value>
      </function>
      <function name="transform_caps"
                c:identifier="gst_gl_upload_transform_caps">
        <return-value transfer-ownership="full">
          <type name="Gst.Caps" c:type="GstCaps*"/>
        </return-value>
        <parameters>
          <parameter name="context" transfer-ownership="none">
            <type name="GLContext" c:type="GstGLContext*"/>
          </parameter>
          <parameter name="direction" transfer-ownership="none">
            <type name="Gst.PadDirection" c:type="GstPadDirection"/>
          </parameter>
          <parameter name="caps" transfer-ownership="none">
            <type name="Gst.Caps" c:type="GstCaps*"/>
          </parameter>
          <parameter name="filter" transfer-ownership="none">
            <type name="Gst.Caps" c:type="GstCaps*"/>
          </parameter>
        </parameters>
      </function>
      <method name="get_caps" c:identifier="gst_gl_upload_get_caps">
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">The #GstCaps set by gst_gl_upload_set_caps()</doc>
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="upload" transfer-ownership="none">
            <doc xml:space="preserve">a #GstGLUpload</doc>
            <type name="GLUpload" c:type="GstGLUpload*"/>
          </instance-parameter>
          <parameter name="in_caps"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve">the input #GstCaps</doc>
            <type name="Gst.Caps" c:type="GstCaps**"/>
          </parameter>
          <parameter name="out_caps"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve">the output #GstCaps</doc>
            <type name="Gst.Caps" c:type="GstCaps**"/>
          </parameter>
        </parameters>
      </method>
      <method name="perform_with_buffer"
              c:identifier="gst_gl_upload_perform_with_buffer">
        <doc xml:space="preserve">Uploads @buffer using the transformation specified by
gst_gl_upload_set_caps() creating a new #GstBuffer in @outbuf_ptr.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">whether the upload was successful</doc>
          <type name="GLUploadReturn" c:type="GstGLUploadReturn"/>
        </return-value>
        <parameters>
          <instance-parameter name="upload" transfer-ownership="none">
            <doc xml:space="preserve">a #GstGLUpload</doc>
            <type name="GLUpload" c:type="GstGLUpload*"/>
          </instance-parameter>
          <parameter name="buffer" transfer-ownership="none">
            <doc xml:space="preserve">input #GstBuffer</doc>
            <type name="Gst.Buffer" c:type="GstBuffer*"/>
          </parameter>
          <parameter name="outbuf_ptr" transfer-ownership="none">
            <doc xml:space="preserve">resulting #GstBuffer</doc>
            <type name="Gst.Buffer" c:type="GstBuffer**"/>
          </parameter>
        </parameters>
      </method>
      <method name="propose_allocation"
              c:identifier="gst_gl_upload_propose_allocation">
        <doc xml:space="preserve">Adds the required allocation parameters to support uploading.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="upload" transfer-ownership="none">
            <doc xml:space="preserve">a #GstGLUpload</doc>
            <type name="GLUpload" c:type="GstGLUpload*"/>
          </instance-parameter>
          <parameter name="decide_query"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">a #GstQuery from a decide allocation</doc>
            <type name="Gst.Query" c:type="GstQuery*"/>
          </parameter>
          <parameter name="query" transfer-ownership="none">
            <doc xml:space="preserve">the proposed allocation query</doc>
            <type name="Gst.Query" c:type="GstQuery*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_caps" c:identifier="gst_gl_upload_set_caps">
        <doc xml:space="preserve">Initializes @upload with the information required for upload.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">whether @in_caps and @out_caps could be set on @upload</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="upload" transfer-ownership="none">
            <doc xml:space="preserve">a #GstGLUpload</doc>
            <type name="GLUpload" c:type="GstGLUpload*"/>
          </instance-parameter>
          <parameter name="in_caps" transfer-ownership="none">
            <doc xml:space="preserve">input #GstCaps</doc>
            <type name="Gst.Caps" c:type="GstCaps*"/>
          </parameter>
          <parameter name="out_caps" transfer-ownership="none">
            <doc xml:space="preserve">output #GstCaps</doc>
            <type name="Gst.Caps" c:type="GstCaps*"/>
          </parameter>
        </parameters>
      </method>
      <field name="parent" readable="0" private="1">
        <type name="Gst.Object" c:type="GstObject"/>
      </field>
      <field name="context" readable="0" private="1">
        <type name="GLContext" c:type="GstGLContext*"/>
      </field>
      <field name="priv" readable="0" private="1">
        <type name="GLUploadPrivate" c:type="GstGLUploadPrivate*"/>
      </field>
      <field name="_reserved" readable="0" private="1">
        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
    </class>
    <record name="GLUploadClass"
            c:type="GstGLUploadClass"
            glib:is-gtype-struct-for="GLUpload">
      <doc xml:space="preserve">The #GstGLUploadClass struct only contains private data</doc>
      <field name="object_class">
        <type name="Gst.ObjectClass" c:type="GstObjectClass"/>
      </field>
    </record>
    <record name="GLUploadPrivate" c:type="GstGLUploadPrivate" disguised="1">
    </record>
    <enumeration name="GLUploadReturn" c:type="GstGLUploadReturn">
      <member name="done" value="1" c:identifier="GST_GL_UPLOAD_DONE">
        <doc xml:space="preserve">No further processing required</doc>
      </member>
      <member name="error" value="-1" c:identifier="GST_GL_UPLOAD_ERROR">
        <doc xml:space="preserve">An unspecified error occured</doc>
      </member>
      <member name="unsupported"
              value="-2"
              c:identifier="GST_GL_UPLOAD_UNSUPPORTED">
        <doc xml:space="preserve">The configuration is unsupported.</doc>
      </member>
    </enumeration>
    <record name="GLVideoAllocationParams" c:type="GstGLVideoAllocationParams">
      <field name="parent" writable="1">
        <type name="GLAllocationParams" c:type="GstGLAllocationParams"/>
      </field>
      <field name="v_info" introspectable="0" writable="1">
        <type c:type="GstVideoInfo*"/>
      </field>
      <field name="plane" writable="1">
        <type name="guint" c:type="guint"/>
      </field>
      <field name="valign" introspectable="0" writable="1">
        <type c:type="GstVideoAlignment*"/>
      </field>
      <field name="target" writable="1">
        <type name="GLTextureTarget" c:type="GstGLTextureTarget"/>
      </field>
      <method name="copy_data"
              c:identifier="gst_gl_video_allocation_params_copy_data"
              version="1.8">
        <doc xml:space="preserve">Copy and set any dynamically allocated resources in @dest_vid.  Intended
for subclass usage only to chain up at the end of a subclass copy function.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="src_vid" transfer-ownership="none">
            <doc xml:space="preserve">source #GstGLVideoAllocationParams to copy from</doc>
            <type name="GLVideoAllocationParams"
                  c:type="GstGLVideoAllocationParams*"/>
          </instance-parameter>
          <parameter name="dest_vid" transfer-ownership="none">
            <doc xml:space="preserve">destination #GstGLVideoAllocationParams to copy into</doc>
            <type name="GLVideoAllocationParams"
                  c:type="GstGLVideoAllocationParams*"/>
          </parameter>
        </parameters>
      </method>
      <method name="free_data"
              c:identifier="gst_gl_video_allocation_params_free_data"
              version="1.8">
        <doc xml:space="preserve">Unset and free any dynamically allocated resources.  Intended for subclass
usage only to chain up at the end of a subclass free function.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="params" transfer-ownership="none">
            <doc xml:space="preserve">a #GstGLVideoAllocationParams</doc>
            <type name="GLVideoAllocationParams"
                  c:type="GstGLVideoAllocationParams*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="init_full"
              c:identifier="gst_gl_video_allocation_params_init_full"
              version="1.8"
              introspectable="0">
        <doc xml:space="preserve">Intended for subclass usage</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">initializes @params with the parameters specified</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="params" transfer-ownership="none">
            <doc xml:space="preserve">a #GstGLVideoAllocationParams to initialize</doc>
            <type name="GLVideoAllocationParams"
                  c:type="GstGLVideoAllocationParams*"/>
          </instance-parameter>
          <parameter name="struct_size" transfer-ownership="none">
            <doc xml:space="preserve">the size of the struct in @params</doc>
            <type name="gsize" c:type="gsize"/>
          </parameter>
          <parameter name="alloc_flags" transfer-ownership="none">
            <doc xml:space="preserve">some allocation flags</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="copy" transfer-ownership="none">
            <doc xml:space="preserve">a copy function</doc>
            <type name="GLAllocationParamsCopyFunc"
                  c:type="GstGLAllocationParamsCopyFunc"/>
          </parameter>
          <parameter name="free"
                     transfer-ownership="none"
                     scope="notified"
                     closure="12"
                     destroy="13">
            <doc xml:space="preserve">a free function</doc>
            <type name="GLAllocationParamsFreeFunc"
                  c:type="GstGLAllocationParamsFreeFunc"/>
          </parameter>
          <parameter name="context" transfer-ownership="none">
            <doc xml:space="preserve">a #GstGLContext</doc>
            <type name="GLContext" c:type="GstGLContext*"/>
          </parameter>
          <parameter name="alloc_params"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">the #GstAllocationParams for @wrapped_data</doc>
            <type name="Gst.AllocationParams" c:type="GstAllocationParams*"/>
          </parameter>
          <parameter name="v_info" transfer-ownership="none">
            <doc xml:space="preserve">the #GstVideoInfo for @wrapped_data</doc>
            <type c:type="GstVideoInfo*"/>
          </parameter>
          <parameter name="plane" transfer-ownership="none">
            <doc xml:space="preserve">the video plane @wrapped_data represents</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="valign"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">any #GstVideoAlignment applied to symem mappings of @wrapped_data</doc>
            <type c:type="GstVideoAlignment*"/>
          </parameter>
          <parameter name="target" transfer-ownership="none">
            <doc xml:space="preserve">the #GstGLTextureTarget</doc>
            <type name="GLTextureTarget" c:type="GstGLTextureTarget"/>
          </parameter>
          <parameter name="wrapped_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">the optional data pointer to wrap</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
          <parameter name="gl_handle" transfer-ownership="none">
            <doc xml:space="preserve">the optional OpenGL handle to wrap or 0</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">user data to call @notify with</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
          <parameter name="notify"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async">
            <doc xml:space="preserve">a #GDestroyNotify</doc>
            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
          </parameter>
        </parameters>
      </method>
      <function name="new"
                c:identifier="gst_gl_video_allocation_params_new"
                version="1.8"
                introspectable="0">
        <return-value>
          <doc xml:space="preserve">a new #GstGLVideoAllocationParams for allocating #GstGLMemory's</doc>
          <type name="GLVideoAllocationParams"
                c:type="GstGLVideoAllocationParams*"/>
        </return-value>
        <parameters>
          <parameter name="context" transfer-ownership="none">
            <doc xml:space="preserve">a #GstGLContext</doc>
            <type name="GLContext" c:type="GstGLContext*"/>
          </parameter>
          <parameter name="alloc_params"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">the #GstAllocationParams for @wrapped_data</doc>
            <type name="Gst.AllocationParams" c:type="GstAllocationParams*"/>
          </parameter>
          <parameter name="v_info" transfer-ownership="none">
            <doc xml:space="preserve">the #GstVideoInfo for @wrapped_data</doc>
            <type c:type="GstVideoInfo*"/>
          </parameter>
          <parameter name="plane" transfer-ownership="none">
            <doc xml:space="preserve">the video plane @wrapped_data represents</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="valign"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">any #GstVideoAlignment applied to symem mappings of @wrapped_data</doc>
            <type c:type="GstVideoAlignment*"/>
          </parameter>
          <parameter name="target" transfer-ownership="none">
            <doc xml:space="preserve">the #GstGLTextureTarget for @wrapped_data</doc>
            <type name="GLTextureTarget" c:type="GstGLTextureTarget"/>
          </parameter>
        </parameters>
      </function>
      <function name="new_wrapped_data"
                c:identifier="gst_gl_video_allocation_params_new_wrapped_data"
                version="1.8"
                introspectable="0">
        <return-value>
          <doc xml:space="preserve">a new #GstGLVideoAllocationParams for wrapping @wrapped_data</doc>
          <type name="GLVideoAllocationParams"
                c:type="GstGLVideoAllocationParams*"/>
        </return-value>
        <parameters>
          <parameter name="context" transfer-ownership="none">
            <doc xml:space="preserve">a #GstGLContext</doc>
            <type name="GLContext" c:type="GstGLContext*"/>
          </parameter>
          <parameter name="alloc_params"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">the #GstAllocationParams for @wrapped_data</doc>
            <type name="Gst.AllocationParams" c:type="GstAllocationParams*"/>
          </parameter>
          <parameter name="v_info" transfer-ownership="none">
            <doc xml:space="preserve">the #GstVideoInfo for @wrapped_data</doc>
            <type c:type="GstVideoInfo*"/>
          </parameter>
          <parameter name="plane" transfer-ownership="none">
            <doc xml:space="preserve">the video plane @wrapped_data represents</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="valign"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">any #GstVideoAlignment applied to symem mappings of @wrapped_data</doc>
            <type c:type="GstVideoAlignment*"/>
          </parameter>
          <parameter name="target" transfer-ownership="none">
            <doc xml:space="preserve">the #GstGLTextureTarget for @wrapped_data</doc>
            <type name="GLTextureTarget" c:type="GstGLTextureTarget"/>
          </parameter>
          <parameter name="wrapped_data" transfer-ownership="none">
            <doc xml:space="preserve">the data pointer to wrap</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">user data to call @notify with</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
          <parameter name="notify"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async">
            <doc xml:space="preserve">a #GDestroyNotify</doc>
            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
          </parameter>
        </parameters>
      </function>
      <function name="new_wrapped_texture"
                c:identifier="gst_gl_video_allocation_params_new_wrapped_texture"
                version="1.8"
                introspectable="0">
        <return-value>
          <doc xml:space="preserve">a new #GstGLVideoAllocationParams for wrapping @tex_id</doc>
          <type name="GLVideoAllocationParams"
                c:type="GstGLVideoAllocationParams*"/>
        </return-value>
        <parameters>
          <parameter name="context" transfer-ownership="none">
            <doc xml:space="preserve">a #GstGLContext</doc>
            <type name="GLContext" c:type="GstGLContext*"/>
          </parameter>
          <parameter name="alloc_params"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">the #GstAllocationParams for @tex_id</doc>
            <type name="Gst.AllocationParams" c:type="GstAllocationParams*"/>
          </parameter>
          <parameter name="v_info" transfer-ownership="none">
            <doc xml:space="preserve">the #GstVideoInfo for @tex_id</doc>
            <type c:type="GstVideoInfo*"/>
          </parameter>
          <parameter name="plane" transfer-ownership="none">
            <doc xml:space="preserve">the video plane @tex_id represents</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="valign"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">any #GstVideoAlignment applied to symem mappings of @tex_id</doc>
            <type c:type="GstVideoAlignment*"/>
          </parameter>
          <parameter name="target" transfer-ownership="none">
            <doc xml:space="preserve">the #GstGLTextureTarget for @tex_id</doc>
            <type name="GLTextureTarget" c:type="GstGLTextureTarget"/>
          </parameter>
          <parameter name="tex_id" transfer-ownership="none">
            <doc xml:space="preserve">the GL texture to wrap</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">user data to call @notify with</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
          <parameter name="notify"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async">
            <doc xml:space="preserve">a #GDestroyNotify</doc>
            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
          </parameter>
        </parameters>
      </function>
    </record>
    <class name="GLViewConvert"
           c:symbol-prefix="gl_view_convert"
           c:type="GstGLViewConvert"
           parent="Gst.Object"
           glib:type-name="GstGLViewConvert"
           glib:get-type="gst_gl_view_convert_get_type"
           glib:type-struct="GLViewConvertClass">
      <doc xml:space="preserve">Convert stereoscopic/multiview video using fragment shaders.</doc>
      <constructor name="new" c:identifier="gst_gl_view_convert_new">
        <return-value transfer-ownership="none">
          <type name="GLViewConvert" c:type="GstGLViewConvert*"/>
        </return-value>
      </constructor>
      <method name="fixate_caps"
              c:identifier="gst_gl_view_convert_fixate_caps">
        <return-value transfer-ownership="full">
          <type name="Gst.Caps" c:type="GstCaps*"/>
        </return-value>
        <parameters>
          <instance-parameter name="viewconvert" transfer-ownership="none">
            <type name="GLViewConvert" c:type="GstGLViewConvert*"/>
          </instance-parameter>
          <parameter name="direction" transfer-ownership="none">
            <type name="Gst.PadDirection" c:type="GstPadDirection"/>
          </parameter>
          <parameter name="caps" transfer-ownership="none">
            <type name="Gst.Caps" c:type="GstCaps*"/>
          </parameter>
          <parameter name="othercaps" transfer-ownership="none">
            <type name="Gst.Caps" c:type="GstCaps*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_output" c:identifier="gst_gl_view_convert_get_output">
        <return-value transfer-ownership="none">
          <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
        </return-value>
        <parameters>
          <instance-parameter name="viewconvert" transfer-ownership="none">
            <type name="GLViewConvert" c:type="GstGLViewConvert*"/>
          </instance-parameter>
          <parameter name="outbuf_ptr" transfer-ownership="none">
            <type name="Gst.Buffer" c:type="GstBuffer**"/>
          </parameter>
        </parameters>
      </method>
      <method name="perform" c:identifier="gst_gl_view_convert_perform">
        <return-value transfer-ownership="full">
          <type name="Gst.Buffer" c:type="GstBuffer*"/>
        </return-value>
        <parameters>
          <instance-parameter name="viewconvert" transfer-ownership="none">
            <type name="GLViewConvert" c:type="GstGLViewConvert*"/>
          </instance-parameter>
          <parameter name="inbuf" transfer-ownership="none">
            <type name="Gst.Buffer" c:type="GstBuffer*"/>
          </parameter>
        </parameters>
      </method>
      <method name="reset" c:identifier="gst_gl_view_convert_reset">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="viewconvert" transfer-ownership="none">
            <type name="GLViewConvert" c:type="GstGLViewConvert*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set_caps" c:identifier="gst_gl_view_convert_set_caps">
        <doc xml:space="preserve">Initializes @viewconvert with the information required for conversion.</doc>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="viewconvert" transfer-ownership="none">
            <doc xml:space="preserve">a #GstGLViewConvert</doc>
            <type name="GLViewConvert" c:type="GstGLViewConvert*"/>
          </instance-parameter>
          <parameter name="in_caps" transfer-ownership="none">
            <doc xml:space="preserve">input #GstCaps</doc>
            <type name="Gst.Caps" c:type="GstCaps*"/>
          </parameter>
          <parameter name="out_caps" transfer-ownership="none">
            <doc xml:space="preserve">output #GstCaps</doc>
            <type name="Gst.Caps" c:type="GstCaps*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_context"
              c:identifier="gst_gl_view_convert_set_context">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="viewconvert" transfer-ownership="none">
            <type name="GLViewConvert" c:type="GstGLViewConvert*"/>
          </instance-parameter>
          <parameter name="context" transfer-ownership="none">
            <type name="GLContext" c:type="GstGLContext*"/>
          </parameter>
        </parameters>
      </method>
      <method name="submit_input_buffer"
              c:identifier="gst_gl_view_convert_submit_input_buffer">
        <return-value transfer-ownership="none">
          <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
        </return-value>
        <parameters>
          <instance-parameter name="viewconvert" transfer-ownership="none">
            <type name="GLViewConvert" c:type="GstGLViewConvert*"/>
          </instance-parameter>
          <parameter name="is_discont" transfer-ownership="none">
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
          <parameter name="input" transfer-ownership="none">
            <type name="Gst.Buffer" c:type="GstBuffer*"/>
          </parameter>
        </parameters>
      </method>
      <method name="transform_caps"
              c:identifier="gst_gl_view_convert_transform_caps">
        <return-value transfer-ownership="full">
          <type name="Gst.Caps" c:type="GstCaps*"/>
        </return-value>
        <parameters>
          <instance-parameter name="viewconvert" transfer-ownership="none">
            <type name="GLViewConvert" c:type="GstGLViewConvert*"/>
          </instance-parameter>
          <parameter name="direction" transfer-ownership="none">
            <type name="Gst.PadDirection" c:type="GstPadDirection"/>
          </parameter>
          <parameter name="caps" transfer-ownership="none">
            <type name="Gst.Caps" c:type="GstCaps*"/>
          </parameter>
          <parameter name="filter" transfer-ownership="none">
            <type name="Gst.Caps" c:type="GstCaps*"/>
          </parameter>
        </parameters>
      </method>
      <property name="downmix-mode" writable="1" transfer-ownership="none">
        <type name="GLStereoDownmix"/>
      </property>
      <property name="input-flags-override"
                introspectable="0"
                writable="1"
                transfer-ownership="none">
        <type/>
      </property>
      <property name="input-mode-override"
                introspectable="0"
                writable="1"
                transfer-ownership="none">
        <type/>
      </property>
      <property name="output-flags-override"
                introspectable="0"
                writable="1"
                transfer-ownership="none">
        <type/>
      </property>
      <property name="output-mode-override"
                introspectable="0"
                writable="1"
                transfer-ownership="none">
        <type/>
      </property>
      <field name="object">
        <type name="Gst.Object" c:type="GstObject"/>
      </field>
      <field name="context">
        <type name="GLContext" c:type="GstGLContext*"/>
      </field>
      <field name="shader">
        <type name="GLShader" c:type="GstGLShader*"/>
      </field>
      <field name="input_mode_override" introspectable="0">
        <type c:type="GstVideoMultiviewMode"/>
      </field>
      <field name="input_flags_override" introspectable="0">
        <type c:type="GstVideoMultiviewFlags"/>
      </field>
      <field name="output_mode_override" introspectable="0">
        <type c:type="GstVideoMultiviewMode"/>
      </field>
      <field name="output_flags_override" introspectable="0">
        <type c:type="GstVideoMultiviewFlags"/>
      </field>
      <field name="downmix_mode">
        <type name="GLStereoDownmix" c:type="GstGLStereoDownmix"/>
      </field>
      <field name="in_info" introspectable="0">
        <type c:type="GstVideoInfo"/>
      </field>
      <field name="out_info" introspectable="0">
        <type c:type="GstVideoInfo"/>
      </field>
      <field name="from_texture_target">
        <type name="GLTextureTarget" c:type="GstGLTextureTarget"/>
      </field>
      <field name="to_texture_target">
        <type name="GLTextureTarget" c:type="GstGLTextureTarget"/>
      </field>
      <field name="caps_passthrough">
        <type name="gboolean" c:type="gboolean"/>
      </field>
      <field name="initted">
        <type name="gboolean" c:type="gboolean"/>
      </field>
      <field name="reconfigure">
        <type name="gboolean" c:type="gboolean"/>
      </field>
      <field name="fbo" introspectable="0">
        <type c:type="GLuint"/>
      </field>
      <field name="depth_buffer" introspectable="0">
        <type c:type="GLuint"/>
      </field>
      <field name="priv">
        <type name="GLViewConvertPrivate" c:type="GstGLViewConvertPrivate*"/>
      </field>
    </class>
    <record name="GLViewConvertClass"
            c:type="GstGLViewConvertClass"
            glib:is-gtype-struct-for="GLViewConvert">
      <field name="object_class">
        <type name="Gst.ObjectClass" c:type="GstObjectClass"/>
      </field>
    </record>
    <record name="GLViewConvertPrivate"
            c:type="GstGLViewConvertPrivate"
            disguised="1">
    </record>
    <class name="GLWindow"
           c:symbol-prefix="gl_window"
           c:type="GstGLWindow"
           parent="Gst.Object"
           abstract="1"
           glib:type-name="GstGLWindow"
           glib:get-type="gst_gl_window_get_type"
           glib:type-struct="GLWindowClass">
      <doc xml:space="preserve">GstGLWindow represents a window that elements can render into.  A window can
either be a user visible window (onscreen) or hidden (offscreen).</doc>
      <constructor name="new" c:identifier="gst_gl_window_new" version="1.4">
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new #GstGLWindow using @display's connection</doc>
          <type name="GLWindow" c:type="GstGLWindow*"/>
        </return-value>
        <parameters>
          <parameter name="display" transfer-ownership="none">
            <doc xml:space="preserve">a #GstGLDisplay</doc>
            <type name="GLDisplay" c:type="GstGLDisplay*"/>
          </parameter>
        </parameters>
      </constructor>
      <function name="error_quark" c:identifier="gst_gl_window_error_quark">
        <return-value transfer-ownership="none">
          <type name="GLib.Quark" c:type="GQuark"/>
        </return-value>
      </function>
      <virtual-method name="close">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="window" transfer-ownership="none">
            <type name="GLWindow" c:type="GstGLWindow*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="draw" invoker="draw" version="1.4">
        <doc xml:space="preserve">Redraw the window contents.  Implementations should invoke the draw callback.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="window" transfer-ownership="none">
            <doc xml:space="preserve">a #GstGLWindow</doc>
            <type name="GLWindow" c:type="GstGLWindow*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_display" invoker="get_display" version="1.4">
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the windowing system display handle for this @window</doc>
          <type name="guintptr" c:type="guintptr"/>
        </return-value>
        <parameters>
          <instance-parameter name="window" transfer-ownership="none">
            <doc xml:space="preserve">a #GstGLWindow</doc>
            <type name="GLWindow" c:type="GstGLWindow*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_window_handle"
                      invoker="get_window_handle"
                      version="1.4">
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the window handle we are currently rendering into</doc>
          <type name="guintptr" c:type="guintptr"/>
        </return-value>
        <parameters>
          <instance-parameter name="window" transfer-ownership="none">
            <doc xml:space="preserve">a #GstGLWindow</doc>
            <type name="GLWindow" c:type="GstGLWindow*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="handle_events" invoker="handle_events">
        <doc xml:space="preserve">Tell a @window that it should handle events from the window system. These
events are forwarded upstream as navigation events. In some window systems
events are not propagated in the window hierarchy if a client is listening
for them. This method allows you to disable events handling completely
from the @window.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="window" transfer-ownership="none">
            <doc xml:space="preserve">a #GstGLWindow</doc>
            <type name="GLWindow" c:type="GstGLWindow*"/>
          </instance-parameter>
          <parameter name="handle_events" transfer-ownership="none">
            <doc xml:space="preserve">a #gboolean indicating if events should be handled or not.</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="open" throws="1">
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="window" transfer-ownership="none">
            <type name="GLWindow" c:type="GstGLWindow*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="queue_resize" invoker="queue_resize">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="window" transfer-ownership="none">
            <type name="GLWindow" c:type="GstGLWindow*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="quit" invoker="quit" version="1.4">
        <doc xml:space="preserve">Quit the runloop's execution.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="window" transfer-ownership="none">
            <doc xml:space="preserve">a #GstGLWindow</doc>
            <type name="GLWindow" c:type="GstGLWindow*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="run" invoker="run" version="1.4">
        <doc xml:space="preserve">Start the execution of the runloop.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="window" transfer-ownership="none">
            <doc xml:space="preserve">a #GstGLWindow</doc>
            <type name="GLWindow" c:type="GstGLWindow*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="send_message" invoker="send_message" version="1.4">
        <doc xml:space="preserve">Invoke @callback with data on the window thread.  @callback is guarenteed to
have executed when this function returns.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="window" transfer-ownership="none">
            <doc xml:space="preserve">a #GstGLWindow</doc>
            <type name="GLWindow" c:type="GstGLWindow*"/>
          </instance-parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     scope="async"
                     closure="1">
            <doc xml:space="preserve">function to invoke</doc>
            <type name="GLWindowCB" c:type="GstGLWindowCB"/>
          </parameter>
          <parameter name="data" transfer-ownership="none">
            <doc xml:space="preserve">data to invoke @callback with</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="send_message_async"
                      invoker="send_message_async"
                      version="1.4">
        <doc xml:space="preserve">Invoke @callback with @data on the window thread.  The callback may not
have been executed when this function returns.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="window" transfer-ownership="none">
            <doc xml:space="preserve">a #GstGLWindow</doc>
            <type name="GLWindow" c:type="GstGLWindow*"/>
          </instance-parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     scope="notified"
                     closure="1"
                     destroy="2">
            <doc xml:space="preserve">function to invoke</doc>
            <type name="GLWindowCB" c:type="GstGLWindowCB"/>
          </parameter>
          <parameter name="data" transfer-ownership="none">
            <doc xml:space="preserve">data to invoke @callback with</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
          <parameter name="destroy" transfer-ownership="none" scope="async">
            <doc xml:space="preserve">called when @data is not needed anymore</doc>
            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="set_preferred_size"
                      invoker="set_preferred_size"
                      version="1.6">
        <doc xml:space="preserve">Set the preferred width and height of the window.  Implementations are free
to ignore this information.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="window" transfer-ownership="none">
            <doc xml:space="preserve">a #GstGLWindow</doc>
            <type name="GLWindow" c:type="GstGLWindow*"/>
          </instance-parameter>
          <parameter name="width" transfer-ownership="none">
            <doc xml:space="preserve">new preferred width</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="height" transfer-ownership="none">
            <doc xml:space="preserve">new preferred height</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="set_render_rectangle"
                      invoker="set_render_rectangle">
        <doc xml:space="preserve">Tell a @window that it should render into a specific region of the window
according to the #GstVideoOverlay interface.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">whether the specified region could be set</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="window" transfer-ownership="none">
            <doc xml:space="preserve">a #GstGLWindow</doc>
            <type name="GLWindow" c:type="GstGLWindow*"/>
          </instance-parameter>
          <parameter name="x" transfer-ownership="none">
            <doc xml:space="preserve">x position</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="y" transfer-ownership="none">
            <doc xml:space="preserve">y position</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="width" transfer-ownership="none">
            <doc xml:space="preserve">width</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="height" transfer-ownership="none">
            <doc xml:space="preserve">height</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="set_window_handle"
                      invoker="set_window_handle"
                      version="1.4">
        <doc xml:space="preserve">Sets the window that this @window should render into.  Some implementations
require this to be called with a valid handle before drawing can commence.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="window" transfer-ownership="none">
            <doc xml:space="preserve">a #GstGLWindow</doc>
            <type name="GLWindow" c:type="GstGLWindow*"/>
          </instance-parameter>
          <parameter name="id" transfer-ownership="none">
            <type name="guintptr" c:type="guintptr"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="show" invoker="show" version="1.6">
        <doc xml:space="preserve">Present the window to the screen.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="window" transfer-ownership="none">
            <doc xml:space="preserve">a #GstGLWindow</doc>
            <type name="GLWindow" c:type="GstGLWindow*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <method name="draw" c:identifier="gst_gl_window_draw" version="1.4">
        <doc xml:space="preserve">Redraw the window contents.  Implementations should invoke the draw callback.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="window" transfer-ownership="none">
            <doc xml:space="preserve">a #GstGLWindow</doc>
            <type name="GLWindow" c:type="GstGLWindow*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_context"
              c:identifier="gst_gl_window_get_context"
              version="1.4">
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">the #GstGLContext associated with this @window</doc>
          <type name="GLContext" c:type="GstGLContext*"/>
        </return-value>
        <parameters>
          <instance-parameter name="window" transfer-ownership="none">
            <doc xml:space="preserve">a #GstGLWindow</doc>
            <type name="GLWindow" c:type="GstGLWindow*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_display"
              c:identifier="gst_gl_window_get_display"
              version="1.4">
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the windowing system display handle for this @window</doc>
          <type name="guintptr" c:type="guintptr"/>
        </return-value>
        <parameters>
          <instance-parameter name="window" transfer-ownership="none">
            <doc xml:space="preserve">a #GstGLWindow</doc>
            <type name="GLWindow" c:type="GstGLWindow*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_surface_dimensions"
              c:identifier="gst_gl_window_get_surface_dimensions"
              version="1.6">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="window" transfer-ownership="none">
            <doc xml:space="preserve">a #GstGLWindow</doc>
            <type name="GLWindow" c:type="GstGLWindow*"/>
          </instance-parameter>
          <parameter name="width"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">resulting surface width</doc>
            <type name="guint" c:type="guint*"/>
          </parameter>
          <parameter name="height"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">resulting surface height</doc>
            <type name="guint" c:type="guint*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_window_handle"
              c:identifier="gst_gl_window_get_window_handle"
              version="1.4">
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the window handle we are currently rendering into</doc>
          <type name="guintptr" c:type="guintptr"/>
        </return-value>
        <parameters>
          <instance-parameter name="window" transfer-ownership="none">
            <doc xml:space="preserve">a #GstGLWindow</doc>
            <type name="GLWindow" c:type="GstGLWindow*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="handle_events" c:identifier="gst_gl_window_handle_events">
        <doc xml:space="preserve">Tell a @window that it should handle events from the window system. These
events are forwarded upstream as navigation events. In some window systems
events are not propagated in the window hierarchy if a client is listening
for them. This method allows you to disable events handling completely
from the @window.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="window" transfer-ownership="none">
            <doc xml:space="preserve">a #GstGLWindow</doc>
            <type name="GLWindow" c:type="GstGLWindow*"/>
          </instance-parameter>
          <parameter name="handle_events" transfer-ownership="none">
            <doc xml:space="preserve">a #gboolean indicating if events should be handled or not.</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <method name="is_running"
              c:identifier="gst_gl_window_is_running"
              version="1.4">
        <doc xml:space="preserve">Whether the runloop is running</doc>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="window" transfer-ownership="none">
            <doc xml:space="preserve">a #GstGLWindow</doc>
            <type name="GLWindow" c:type="GstGLWindow*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="queue_resize" c:identifier="gst_gl_window_queue_resize">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="window" transfer-ownership="none">
            <type name="GLWindow" c:type="GstGLWindow*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="quit" c:identifier="gst_gl_window_quit" version="1.4">
        <doc xml:space="preserve">Quit the runloop's execution.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="window" transfer-ownership="none">
            <doc xml:space="preserve">a #GstGLWindow</doc>
            <type name="GLWindow" c:type="GstGLWindow*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="resize" c:identifier="gst_gl_window_resize">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="window" transfer-ownership="none">
            <type name="GLWindow" c:type="GstGLWindow*"/>
          </instance-parameter>
          <parameter name="width" transfer-ownership="none">
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="height" transfer-ownership="none">
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </method>
      <method name="run" c:identifier="gst_gl_window_run" version="1.4">
        <doc xml:space="preserve">Start the execution of the runloop.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="window" transfer-ownership="none">
            <doc xml:space="preserve">a #GstGLWindow</doc>
            <type name="GLWindow" c:type="GstGLWindow*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="send_key_event"
              c:identifier="gst_gl_window_send_key_event">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="window" transfer-ownership="none">
            <type name="GLWindow" c:type="GstGLWindow*"/>
          </instance-parameter>
          <parameter name="event_type" transfer-ownership="none">
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="key_str" transfer-ownership="none">
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="send_key_event_async"
              c:identifier="gst_gl_window_send_key_event_async">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="window" transfer-ownership="none">
            <type name="GLWindow" c:type="GstGLWindow*"/>
          </instance-parameter>
          <parameter name="event_type" transfer-ownership="none">
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="key_str" transfer-ownership="none">
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="send_message"
              c:identifier="gst_gl_window_send_message"
              version="1.4">
        <doc xml:space="preserve">Invoke @callback with data on the window thread.  @callback is guarenteed to
have executed when this function returns.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="window" transfer-ownership="none">
            <doc xml:space="preserve">a #GstGLWindow</doc>
            <type name="GLWindow" c:type="GstGLWindow*"/>
          </instance-parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     scope="async"
                     closure="1">
            <doc xml:space="preserve">function to invoke</doc>
            <type name="GLWindowCB" c:type="GstGLWindowCB"/>
          </parameter>
          <parameter name="data" transfer-ownership="none">
            <doc xml:space="preserve">data to invoke @callback with</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="send_message_async"
              c:identifier="gst_gl_window_send_message_async"
              version="1.4">
        <doc xml:space="preserve">Invoke @callback with @data on the window thread.  The callback may not
have been executed when this function returns.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="window" transfer-ownership="none">
            <doc xml:space="preserve">a #GstGLWindow</doc>
            <type name="GLWindow" c:type="GstGLWindow*"/>
          </instance-parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     scope="notified"
                     closure="1"
                     destroy="2">
            <doc xml:space="preserve">function to invoke</doc>
            <type name="GLWindowCB" c:type="GstGLWindowCB"/>
          </parameter>
          <parameter name="data" transfer-ownership="none">
            <doc xml:space="preserve">data to invoke @callback with</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
          <parameter name="destroy" transfer-ownership="none" scope="async">
            <doc xml:space="preserve">called when @data is not needed anymore</doc>
            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
          </parameter>
        </parameters>
      </method>
      <method name="send_mouse_event"
              c:identifier="gst_gl_window_send_mouse_event">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="window" transfer-ownership="none">
            <type name="GLWindow" c:type="GstGLWindow*"/>
          </instance-parameter>
          <parameter name="event_type" transfer-ownership="none">
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="button" transfer-ownership="none">
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="posx" transfer-ownership="none">
            <type name="gdouble" c:type="double"/>
          </parameter>
          <parameter name="posy" transfer-ownership="none">
            <type name="gdouble" c:type="double"/>
          </parameter>
        </parameters>
      </method>
      <method name="send_mouse_event_async"
              c:identifier="gst_gl_window_send_mouse_event_async">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="window" transfer-ownership="none">
            <type name="GLWindow" c:type="GstGLWindow*"/>
          </instance-parameter>
          <parameter name="event_type" transfer-ownership="none">
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="button" transfer-ownership="none">
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="posx" transfer-ownership="none">
            <type name="gdouble" c:type="double"/>
          </parameter>
          <parameter name="posy" transfer-ownership="none">
            <type name="gdouble" c:type="double"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_close_callback"
              c:identifier="gst_gl_window_set_close_callback"
              version="1.4">
        <doc xml:space="preserve">Sets the callback called when the window is about to close.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="window" transfer-ownership="none">
            <doc xml:space="preserve">a #GstGLWindow</doc>
            <type name="GLWindow" c:type="GstGLWindow*"/>
          </instance-parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     scope="notified"
                     closure="1"
                     destroy="2">
            <doc xml:space="preserve">function to invoke</doc>
            <type name="GLWindowCB" c:type="GstGLWindowCB"/>
          </parameter>
          <parameter name="data" transfer-ownership="none">
            <doc xml:space="preserve">data to invoke @callback with</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
          <parameter name="destroy_notify"
                     transfer-ownership="none"
                     scope="async">
            <doc xml:space="preserve">called when @data is not needed any more</doc>
            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_draw_callback"
              c:identifier="gst_gl_window_set_draw_callback"
              version="1.4">
        <doc xml:space="preserve">Sets the draw callback called everytime gst_gl_window_draw() is called</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="window" transfer-ownership="none">
            <doc xml:space="preserve">a #GstGLWindow</doc>
            <type name="GLWindow" c:type="GstGLWindow*"/>
          </instance-parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     scope="notified"
                     closure="1"
                     destroy="2">
            <doc xml:space="preserve">function to invoke</doc>
            <type name="GLWindowCB" c:type="GstGLWindowCB"/>
          </parameter>
          <parameter name="data" transfer-ownership="none">
            <doc xml:space="preserve">data to invoke @callback with</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
          <parameter name="destroy_notify"
                     transfer-ownership="none"
                     scope="async">
            <doc xml:space="preserve">called when @data is not needed any more</doc>
            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_preferred_size"
              c:identifier="gst_gl_window_set_preferred_size"
              version="1.6">
        <doc xml:space="preserve">Set the preferred width and height of the window.  Implementations are free
to ignore this information.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="window" transfer-ownership="none">
            <doc xml:space="preserve">a #GstGLWindow</doc>
            <type name="GLWindow" c:type="GstGLWindow*"/>
          </instance-parameter>
          <parameter name="width" transfer-ownership="none">
            <doc xml:space="preserve">new preferred width</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="height" transfer-ownership="none">
            <doc xml:space="preserve">new preferred height</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_render_rectangle"
              c:identifier="gst_gl_window_set_render_rectangle">
        <doc xml:space="preserve">Tell a @window that it should render into a specific region of the window
according to the #GstVideoOverlay interface.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">whether the specified region could be set</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="window" transfer-ownership="none">
            <doc xml:space="preserve">a #GstGLWindow</doc>
            <type name="GLWindow" c:type="GstGLWindow*"/>
          </instance-parameter>
          <parameter name="x" transfer-ownership="none">
            <doc xml:space="preserve">x position</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="y" transfer-ownership="none">
            <doc xml:space="preserve">y position</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="width" transfer-ownership="none">
            <doc xml:space="preserve">width</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="height" transfer-ownership="none">
            <doc xml:space="preserve">height</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_resize_callback"
              c:identifier="gst_gl_window_set_resize_callback"
              version="1.4">
        <doc xml:space="preserve">Sets the resize callback called everytime a resize of the window occurs.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="window" transfer-ownership="none">
            <doc xml:space="preserve">a #GstGLWindow</doc>
            <type name="GLWindow" c:type="GstGLWindow*"/>
          </instance-parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     scope="notified"
                     closure="1"
                     destroy="2">
            <doc xml:space="preserve">function to invoke</doc>
            <type name="GLWindowResizeCB" c:type="GstGLWindowResizeCB"/>
          </parameter>
          <parameter name="data" transfer-ownership="none">
            <doc xml:space="preserve">data to invoke @callback with</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
          <parameter name="destroy_notify"
                     transfer-ownership="none"
                     scope="async">
            <doc xml:space="preserve">called when @data is not needed any more</doc>
            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_window_handle"
              c:identifier="gst_gl_window_set_window_handle"
              version="1.4">
        <doc xml:space="preserve">Sets the window that this @window should render into.  Some implementations
require this to be called with a valid handle before drawing can commence.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="window" transfer-ownership="none">
            <doc xml:space="preserve">a #GstGLWindow</doc>
            <type name="GLWindow" c:type="GstGLWindow*"/>
          </instance-parameter>
          <parameter name="handle" transfer-ownership="none">
            <doc xml:space="preserve">handle to the window</doc>
            <type name="guintptr" c:type="guintptr"/>
          </parameter>
        </parameters>
      </method>
      <method name="show" c:identifier="gst_gl_window_show" version="1.6">
        <doc xml:space="preserve">Present the window to the screen.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="window" transfer-ownership="none">
            <doc xml:space="preserve">a #GstGLWindow</doc>
            <type name="GLWindow" c:type="GstGLWindow*"/>
          </instance-parameter>
        </parameters>
      </method>
      <field name="parent" readable="0" private="1">
        <type name="Gst.Object" c:type="GstObject"/>
      </field>
      <field name="lock" readable="0" private="1">
        <type name="GLib.Mutex" c:type="GMutex"/>
      </field>
      <field name="display" readable="0" private="1">
        <type name="GLDisplay" c:type="GstGLDisplay*"/>
      </field>
      <field name="context_ref" readable="0" private="1">
        <type name="GObject.WeakRef" c:type="GWeakRef"/>
      </field>
      <field name="external_gl_context" readable="0" private="1">
        <type name="guintptr" c:type="guintptr"/>
      </field>
      <field name="is_drawing" readable="0" private="1">
        <type name="gboolean" c:type="gboolean"/>
      </field>
      <field name="draw" readable="0" private="1">
        <type name="GLWindowCB" c:type="GstGLWindowCB"/>
      </field>
      <field name="draw_data" readable="0" private="1">
        <type name="gpointer" c:type="gpointer"/>
      </field>
      <field name="draw_notify" readable="0" private="1">
        <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
      </field>
      <field name="close" readable="0" private="1">
        <type name="GLWindowCB" c:type="GstGLWindowCB"/>
      </field>
      <field name="close_data" readable="0" private="1">
        <type name="gpointer" c:type="gpointer"/>
      </field>
      <field name="close_notify" readable="0" private="1">
        <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
      </field>
      <field name="resize" readable="0" private="1">
        <type name="GLWindowResizeCB" c:type="GstGLWindowResizeCB"/>
      </field>
      <field name="resize_data" readable="0" private="1">
        <type name="gpointer" c:type="gpointer"/>
      </field>
      <field name="resize_notify" readable="0" private="1">
        <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
      </field>
      <field name="queue_resize" readable="0" private="1">
        <type name="gboolean" c:type="gboolean"/>
      </field>
      <field name="priv" readable="0" private="1">
        <type name="GLWindowPrivate" c:type="GstGLWindowPrivate*"/>
      </field>
      <field name="_reserved" readable="0" private="1">
        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
      <glib:signal name="key-event" when="last" version="1.6">
        <doc xml:space="preserve">Will be emitted when a key event is received by the GstGLwindow.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="id" transfer-ownership="none">
            <doc xml:space="preserve">the name of the event</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
          <parameter name="key" transfer-ownership="none">
            <doc xml:space="preserve">the id of the key pressed</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="mouse-event" when="last" version="1.6">
        <doc xml:space="preserve">Will be emitted when a mouse event is received by the GstGLwindow.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="id" transfer-ownership="none">
            <doc xml:space="preserve">the name of the event</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
          <parameter name="button" transfer-ownership="none">
            <doc xml:space="preserve">the id of the button</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="x" transfer-ownership="none">
            <doc xml:space="preserve">the x coordinate of the mouse event</doc>
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
          <parameter name="y" transfer-ownership="none">
            <doc xml:space="preserve">the y coordinate of the mouse event</doc>
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
        </parameters>
      </glib:signal>
    </class>
    <callback name="GLWindowCB" c:type="GstGLWindowCB">
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="data" transfer-ownership="none">
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
      </parameters>
    </callback>
    <record name="GLWindowClass"
            c:type="GstGLWindowClass"
            glib:is-gtype-struct-for="GLWindow">
      <field name="parent_class">
        <doc xml:space="preserve">Parent class</doc>
        <type name="Gst.ObjectClass" c:type="GstObjectClass"/>
      </field>
      <field name="get_display">
        <callback name="get_display">
          <return-value transfer-ownership="none">
            <doc xml:space="preserve">the windowing system display handle for this @window</doc>
            <type name="guintptr" c:type="guintptr"/>
          </return-value>
          <parameters>
            <parameter name="window" transfer-ownership="none">
              <doc xml:space="preserve">a #GstGLWindow</doc>
              <type name="GLWindow" c:type="GstGLWindow*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="set_window_handle">
        <callback name="set_window_handle">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="window" transfer-ownership="none">
              <doc xml:space="preserve">a #GstGLWindow</doc>
              <type name="GLWindow" c:type="GstGLWindow*"/>
            </parameter>
            <parameter name="id" transfer-ownership="none">
              <type name="guintptr" c:type="guintptr"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_window_handle">
        <callback name="get_window_handle">
          <return-value transfer-ownership="none">
            <doc xml:space="preserve">the window handle we are currently rendering into</doc>
            <type name="guintptr" c:type="guintptr"/>
          </return-value>
          <parameters>
            <parameter name="window" transfer-ownership="none">
              <doc xml:space="preserve">a #GstGLWindow</doc>
              <type name="GLWindow" c:type="GstGLWindow*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="draw">
        <callback name="draw">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="window" transfer-ownership="none">
              <doc xml:space="preserve">a #GstGLWindow</doc>
              <type name="GLWindow" c:type="GstGLWindow*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="run">
        <callback name="run">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="window" transfer-ownership="none">
              <doc xml:space="preserve">a #GstGLWindow</doc>
              <type name="GLWindow" c:type="GstGLWindow*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="quit">
        <callback name="quit">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="window" transfer-ownership="none">
              <doc xml:space="preserve">a #GstGLWindow</doc>
              <type name="GLWindow" c:type="GstGLWindow*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="send_message">
        <callback name="send_message">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="window" transfer-ownership="none">
              <doc xml:space="preserve">a #GstGLWindow</doc>
              <type name="GLWindow" c:type="GstGLWindow*"/>
            </parameter>
            <parameter name="callback"
                       transfer-ownership="none"
                       scope="async"
                       closure="2">
              <doc xml:space="preserve">function to invoke</doc>
              <type name="GLWindowCB" c:type="GstGLWindowCB"/>
            </parameter>
            <parameter name="data" transfer-ownership="none">
              <doc xml:space="preserve">data to invoke @callback with</doc>
              <type name="gpointer" c:type="gpointer"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="send_message_async">
        <callback name="send_message_async">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="window" transfer-ownership="none">
              <doc xml:space="preserve">a #GstGLWindow</doc>
              <type name="GLWindow" c:type="GstGLWindow*"/>
            </parameter>
            <parameter name="callback"
                       transfer-ownership="none"
                       scope="notified"
                       closure="2"
                       destroy="3">
              <doc xml:space="preserve">function to invoke</doc>
              <type name="GLWindowCB" c:type="GstGLWindowCB"/>
            </parameter>
            <parameter name="data" transfer-ownership="none">
              <doc xml:space="preserve">data to invoke @callback with</doc>
              <type name="gpointer" c:type="gpointer"/>
            </parameter>
            <parameter name="destroy" transfer-ownership="none" scope="async">
              <doc xml:space="preserve">called when @data is not needed anymore</doc>
              <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="open">
        <callback name="open" throws="1">
          <return-value transfer-ownership="none">
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="window" transfer-ownership="none">
              <type name="GLWindow" c:type="GstGLWindow*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="close">
        <callback name="close">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="window" transfer-ownership="none">
              <type name="GLWindow" c:type="GstGLWindow*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="handle_events">
        <callback name="handle_events">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="window" transfer-ownership="none">
              <doc xml:space="preserve">a #GstGLWindow</doc>
              <type name="GLWindow" c:type="GstGLWindow*"/>
            </parameter>
            <parameter name="handle_events" transfer-ownership="none">
              <doc xml:space="preserve">a #gboolean indicating if events should be handled or not.</doc>
              <type name="gboolean" c:type="gboolean"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="set_preferred_size">
        <callback name="set_preferred_size">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="window" transfer-ownership="none">
              <doc xml:space="preserve">a #GstGLWindow</doc>
              <type name="GLWindow" c:type="GstGLWindow*"/>
            </parameter>
            <parameter name="width" transfer-ownership="none">
              <doc xml:space="preserve">new preferred width</doc>
              <type name="gint" c:type="gint"/>
            </parameter>
            <parameter name="height" transfer-ownership="none">
              <doc xml:space="preserve">new preferred height</doc>
              <type name="gint" c:type="gint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="show">
        <callback name="show">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="window" transfer-ownership="none">
              <doc xml:space="preserve">a #GstGLWindow</doc>
              <type name="GLWindow" c:type="GstGLWindow*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="set_render_rectangle">
        <callback name="set_render_rectangle">
          <return-value transfer-ownership="none">
            <doc xml:space="preserve">whether the specified region could be set</doc>
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="window" transfer-ownership="none">
              <doc xml:space="preserve">a #GstGLWindow</doc>
              <type name="GLWindow" c:type="GstGLWindow*"/>
            </parameter>
            <parameter name="x" transfer-ownership="none">
              <doc xml:space="preserve">x position</doc>
              <type name="gint" c:type="gint"/>
            </parameter>
            <parameter name="y" transfer-ownership="none">
              <doc xml:space="preserve">y position</doc>
              <type name="gint" c:type="gint"/>
            </parameter>
            <parameter name="width" transfer-ownership="none">
              <doc xml:space="preserve">width</doc>
              <type name="gint" c:type="gint"/>
            </parameter>
            <parameter name="height" transfer-ownership="none">
              <doc xml:space="preserve">height</doc>
              <type name="gint" c:type="gint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="queue_resize">
        <callback name="queue_resize">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="window" transfer-ownership="none">
              <type name="GLWindow" c:type="GstGLWindow*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="_reserved" readable="0" private="1">
        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
    </record>
    <enumeration name="GLWindowError" c:type="GstGLWindowError">
      <member name="failed"
              value="0"
              c:identifier="GST_GL_WINDOW_ERROR_FAILED">
      </member>
      <member name="old_libs"
              value="1"
              c:identifier="GST_GL_WINDOW_ERROR_OLD_LIBS">
      </member>
      <member name="resource_unavailable"
              value="2"
              c:identifier="GST_GL_WINDOW_ERROR_RESOURCE_UNAVAILABLE">
      </member>
    </enumeration>
    <record name="GLWindowPrivate" c:type="GstGLWindowPrivate" disguised="1">
    </record>
    <callback name="GLWindowResizeCB" c:type="GstGLWindowResizeCB">
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="data" transfer-ownership="none">
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
        <parameter name="width" transfer-ownership="none">
          <type name="guint" c:type="guint"/>
        </parameter>
        <parameter name="height" transfer-ownership="none">
          <type name="guint" c:type="guint"/>
        </parameter>
      </parameters>
    </callback>
    <constant name="GL_ALLOCATION_PARAMS_ALLOC_FLAG_ALLOC"
              value="1"
              c:type="GST_GL_ALLOCATION_PARAMS_ALLOC_FLAG_ALLOC">
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="GL_ALLOCATION_PARAMS_ALLOC_FLAG_BUFFER"
              value="16"
              c:type="GST_GL_ALLOCATION_PARAMS_ALLOC_FLAG_BUFFER">
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="GL_ALLOCATION_PARAMS_ALLOC_FLAG_USER"
              value="65536"
              c:type="GST_GL_ALLOCATION_PARAMS_ALLOC_FLAG_USER">
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="GL_ALLOCATION_PARAMS_ALLOC_FLAG_VIDEO"
              value="8"
              c:type="GST_GL_ALLOCATION_PARAMS_ALLOC_FLAG_VIDEO">
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="GL_ALLOCATION_PARAMS_ALLOC_FLAG_WRAP_GPU_HANDLE"
              value="4"
              c:type="GST_GL_ALLOCATION_PARAMS_ALLOC_FLAG_WRAP_GPU_HANDLE">
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="GL_ALLOCATION_PARAMS_ALLOC_FLAG_WRAP_SYSMEM"
              value="2"
              c:type="GST_GL_ALLOCATION_PARAMS_ALLOC_FLAG_WRAP_SYSMEM">
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="GL_API_GLES1_NAME"
              value="gles1"
              c:type="GST_GL_API_GLES1_NAME">
      <doc xml:space="preserve">The name for %GST_GL_API_GLES1 used in various places</doc>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="GL_API_GLES2_NAME"
              value="gles2"
              c:type="GST_GL_API_GLES2_NAME">
      <doc xml:space="preserve">The name for %GST_GL_API_GLES2 used in various places</doc>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="GL_API_OPENGL3_NAME"
              value="opengl3"
              c:type="GST_GL_API_OPENGL3_NAME">
      <doc xml:space="preserve">The name for %GST_GL_API_OPENGL3 used in various places</doc>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="GL_API_OPENGL_NAME"
              value="opengl"
              c:type="GST_GL_API_OPENGL_NAME">
      <doc xml:space="preserve">The name for %GST_GL_API_OPENGL used in various places</doc>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="GL_BASE_MEMORY_ALLOCATOR_NAME"
              value="GLBaseMemory"
              c:type="GST_GL_BASE_MEMORY_ALLOCATOR_NAME"
              version="1.8">
      <doc xml:space="preserve">The name of the GL buffer allocator</doc>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="GL_BUFFER_ALLOCATOR_NAME"
              value="GLBuffer"
              c:type="GST_GL_BUFFER_ALLOCATOR_NAME">
      <doc xml:space="preserve">The name of the GL buffer allocator</doc>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="GL_COLOR_CONVERT_FORMATS"
              value="{ RGBA, RGB, RGBx, BGR, BGRx, BGRA, xRGB, xBGR, ARGB, ABGR, Y444, I420, YV12, Y42B, Y41B, NV12, NV21, YUY2, UYVY, AYUV, GRAY8, GRAY16_LE, GRAY16_BE, RGB16, BGR16 }"
              c:type="GST_GL_COLOR_CONVERT_FORMATS">
      <doc xml:space="preserve">The currently supported formats that can be converted</doc>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="GL_COLOR_CONVERT_VIDEO_CAPS"
              value="video/x-raw("
              c:type="GST_GL_COLOR_CONVERT_VIDEO_CAPS">
      <doc xml:space="preserve">The currently supported #GstCaps that can be converted</doc>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="GL_CONTEXT_TYPE_CGL"
              value="gst.gl.context.CGL"
              c:type="GST_GL_CONTEXT_TYPE_CGL">
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="GL_CONTEXT_TYPE_EAGL"
              value="gst.gl.context.EAGL"
              c:type="GST_GL_CONTEXT_TYPE_EAGL">
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="GL_CONTEXT_TYPE_EGL"
              value="gst.gl.context.EGL"
              c:type="GST_GL_CONTEXT_TYPE_EGL">
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="GL_CONTEXT_TYPE_GLX"
              value="gst.gl.context.GLX"
              c:type="GST_GL_CONTEXT_TYPE_GLX">
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="GL_CONTEXT_TYPE_WGL"
              value="gst.gl.context.WGL"
              c:type="GST_GL_CONTEXT_TYPE_WGL">
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="GL_DISPLAY_CONTEXT_TYPE"
              value="gst.gl.GLDisplay"
              c:type="GST_GL_DISPLAY_CONTEXT_TYPE">
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="GL_MEMORY_ALLOCATOR_NAME"
              value="GLMemory"
              c:type="GST_GL_MEMORY_ALLOCATOR_NAME">
      <doc xml:space="preserve">The name of the GL memory allocator</doc>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="GL_MEMORY_PBO_ALLOCATOR_NAME"
              value="GLMemoryPBO"
              c:type="GST_GL_MEMORY_PBO_ALLOCATOR_NAME">
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="GL_MEMORY_VIDEO_FORMATS_STR"
              value="{ RGBA, BGRA, RGBx, BGRx, ARGB, ABGR, xRGB, xBGR, RGB, BGR, RGB16, BGR16, AYUV, I420, YV12, NV12, NV21, YUY2, UYVY, Y41B, Y42B, Y444, GRAY8, GRAY16_LE, GRAY16_BE }"
              c:type="GST_GL_MEMORY_VIDEO_FORMATS_STR">
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="GL_TEXTURE_TARGET_2D_STR"
              value="2D"
              c:type="GST_GL_TEXTURE_TARGET_2D_STR">
      <doc xml:space="preserve">String used for %GST_GL_TEXTURE_TARGET_2D in things like caps values</doc>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="GL_TEXTURE_TARGET_EXTERNAL_OES_STR"
              value="external-oes"
              c:type="GST_GL_TEXTURE_TARGET_EXTERNAL_OES_STR">
      <doc xml:space="preserve">String used for %GST_GL_TEXTURE_TARGET_EXTERNAL_OES in things like caps values</doc>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="GL_TEXTURE_TARGET_RECTANGLE_STR"
              value="rectangle"
              c:type="GST_GL_TEXTURE_TARGET_RECTANGLE_STR">
      <doc xml:space="preserve">String used for %GST_GL_TEXTURE_TARGET_RECTANGLE in things like caps values</doc>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="MAP_GL" value="0" c:type="GST_MAP_GL">
      <doc xml:space="preserve">Flag indicating that we should map the GL object instead of to system memory.

Combining #GST_MAP_GL with #GST_MAP_WRITE has the same semantics as though
you are writing to OpenGL. Conversely, combining #GST_MAP_GL with
#GST_MAP_READ has the same semantics as though you are reading from OpenGL.</doc>
      <type name="gint" c:type="gint"/>
    </constant>
    <function name="buffer_add_gl_sync_meta"
              c:identifier="gst_buffer_add_gl_sync_meta"
              introspectable="0">
      <return-value>
        <type name="GLSyncMeta" c:type="GstGLSyncMeta*"/>
      </return-value>
      <parameters>
        <parameter name="context" transfer-ownership="none">
          <type name="GLContext" c:type="GstGLContext*"/>
        </parameter>
        <parameter name="buffer" transfer-ownership="none">
          <type name="Gst.Buffer" c:type="GstBuffer*"/>
        </parameter>
      </parameters>
    </function>
    <function name="buffer_add_gl_sync_meta_full"
              c:identifier="gst_buffer_add_gl_sync_meta_full"
              introspectable="0">
      <return-value>
        <type name="GLSyncMeta" c:type="GstGLSyncMeta*"/>
      </return-value>
      <parameters>
        <parameter name="context" transfer-ownership="none">
          <type name="GLContext" c:type="GstGLContext*"/>
        </parameter>
        <parameter name="buffer" transfer-ownership="none">
          <type name="Gst.Buffer" c:type="GstBuffer*"/>
        </parameter>
        <parameter name="data" transfer-ownership="none">
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
      </parameters>
    </function>
    <function name="buffer_pool_config_get_gl_allocation_params"
              c:identifier="gst_buffer_pool_config_get_gl_allocation_params">
      <return-value transfer-ownership="full">
        <doc xml:space="preserve">the currently set #GstGLAllocationParams or %NULL</doc>
        <type name="GLAllocationParams" c:type="GstGLAllocationParams*"/>
      </return-value>
      <parameters>
        <parameter name="config" transfer-ownership="none">
          <doc xml:space="preserve">a buffer pool config</doc>
          <type name="Gst.Structure" c:type="GstStructure*"/>
        </parameter>
      </parameters>
    </function>
    <function name="buffer_pool_config_set_gl_allocation_params"
              c:identifier="gst_buffer_pool_config_set_gl_allocation_params">
      <doc xml:space="preserve">Sets @params on @config</doc>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="config" transfer-ownership="none">
          <doc xml:space="preserve">a buffer pool config</doc>
          <type name="Gst.Structure" c:type="GstStructure*"/>
        </parameter>
        <parameter name="params" transfer-ownership="none">
          <doc xml:space="preserve">a #GstGLAllocationParams</doc>
          <type name="GLAllocationParams" c:type="GstGLAllocationParams*"/>
        </parameter>
      </parameters>
    </function>
    <function name="context_get_gl_display"
              c:identifier="gst_context_get_gl_display"
              version="1.4">
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">Whether @display was in @context</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="context" transfer-ownership="none">
          <doc xml:space="preserve">a #GstContext</doc>
          <type name="Gst.Context" c:type="GstContext*"/>
        </parameter>
        <parameter name="display" transfer-ownership="none">
          <doc xml:space="preserve">resulting #GstGLDisplay</doc>
          <type name="GLDisplay" c:type="GstGLDisplay**"/>
        </parameter>
      </parameters>
    </function>
    <function name="context_set_gl_display"
              c:identifier="gst_context_set_gl_display"
              version="1.4">
      <doc xml:space="preserve">Sets @display on @context</doc>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="context" transfer-ownership="none">
          <doc xml:space="preserve">a #GstContext</doc>
          <type name="Gst.Context" c:type="GstContext*"/>
        </parameter>
        <parameter name="display" transfer-ownership="none">
          <doc xml:space="preserve">resulting #GstGLDisplay</doc>
          <type name="GLDisplay" c:type="GstGLDisplay*"/>
        </parameter>
      </parameters>
    </function>
    <function name="gl_api_from_string" c:identifier="gst_gl_api_from_string">
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">The #GstGLAPI represented by @api_s</doc>
        <type name="GLAPI" c:type="GstGLAPI"/>
      </return-value>
      <parameters>
        <parameter name="api_s" transfer-ownership="none">
          <doc xml:space="preserve">a space seperated string of OpenGL apis</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="gl_api_to_string" c:identifier="gst_gl_api_to_string">
      <return-value transfer-ownership="full">
        <doc xml:space="preserve">A space seperated string of the OpenGL api's enabled in @api</doc>
        <type name="utf8" c:type="gchar*"/>
      </return-value>
      <parameters>
        <parameter name="api" transfer-ownership="none">
          <doc xml:space="preserve">a #GstGLAPI to stringify</doc>
          <type name="GLAPI" c:type="GstGLAPI"/>
        </parameter>
      </parameters>
    </function>
    <function name="gl_base_memory_error_quark"
              c:identifier="gst_gl_base_memory_error_quark"
              moved-to="GLBaseMemory.error_quark">
      <return-value transfer-ownership="none">
        <type name="GLib.Quark" c:type="GQuark"/>
      </return-value>
    </function>
    <function name="gl_base_memory_init_once"
              c:identifier="gst_gl_base_memory_init_once"
              moved-to="GLBaseMemory.init_once"
              version="1.8">
      <doc xml:space="preserve">Initializes the GL Base Memory allocator. It is safe to call this function
multiple times.  This must be called before any other GstGLBaseMemory operation.</doc>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
    </function>
    <function name="gl_buffer_init_once"
              c:identifier="gst_gl_buffer_init_once"
              moved-to="GLBuffer.init_once"
              version="1.8">
      <doc xml:space="preserve">Initializes the GL Buffer allocator. It is safe to call this function
multiple times.  This must be called before any other #GstGLBuffer operation.</doc>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
    </function>
    <function name="gl_caps_replace_all_caps_features"
              c:identifier="gst_gl_caps_replace_all_caps_features">
      <return-value transfer-ownership="full">
        <type name="Gst.Caps" c:type="GstCaps*"/>
      </return-value>
      <parameters>
        <parameter name="caps" transfer-ownership="none">
          <type name="Gst.Caps" c:type="const GstCaps*"/>
        </parameter>
        <parameter name="feature_name" transfer-ownership="none">
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="gl_check_extension" c:identifier="gst_gl_check_extension">
      <return-value transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="name" transfer-ownership="none">
          <type name="utf8" c:type="const char*"/>
        </parameter>
        <parameter name="ext" transfer-ownership="none">
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="gl_ensure_element_data"
              c:identifier="gst_gl_ensure_element_data">
      <return-value transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="element" transfer-ownership="none">
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
        <parameter name="display_ptr" transfer-ownership="none">
          <type name="GLDisplay" c:type="GstGLDisplay**"/>
        </parameter>
        <parameter name="other_context_ptr" transfer-ownership="none">
          <type name="GLContext" c:type="GstGLContext**"/>
        </parameter>
      </parameters>
    </function>
    <function name="gl_format_from_gl_texture_type"
              c:identifier="gst_gl_format_from_gl_texture_type"
              introspectable="0">
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">the OpenGL format specified by @tex_format</doc>
        <type name="guint" c:type="guint"/>
      </return-value>
      <parameters>
        <parameter name="tex_format" transfer-ownership="none">
          <doc xml:space="preserve">a #GstVideoGLTextureType</doc>
          <type c:type="GstVideoGLTextureType"/>
        </parameter>
      </parameters>
    </function>
    <function name="gl_format_type_n_bytes"
              c:identifier="gst_gl_format_type_n_bytes">
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">the number of bytes the specified @format, @type combination takes
per pixel</doc>
        <type name="guint" c:type="guint"/>
      </return-value>
      <parameters>
        <parameter name="format" transfer-ownership="none">
          <doc xml:space="preserve">the OpenGL format, %GL_RGBA, %GL_LUMINANCE, etc</doc>
          <type name="guint" c:type="guint"/>
        </parameter>
        <parameter name="type" transfer-ownership="none">
          <doc xml:space="preserve">the OpenGL type, %GL_UNSIGNED_BYTE, %GL_FLOAT, etc</doc>
          <type name="guint" c:type="guint"/>
        </parameter>
      </parameters>
    </function>
    <function name="gl_generate_texture_full"
              c:identifier="gst_gl_generate_texture_full"
              introspectable="0">
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="context" transfer-ownership="none">
          <type name="GLContext" c:type="GstGLContext*"/>
        </parameter>
        <parameter name="info" transfer-ownership="none">
          <type c:type="const GstVideoInfo*"/>
        </parameter>
        <parameter name="comp" transfer-ownership="none">
          <type name="guint" c:type="const guint"/>
        </parameter>
        <parameter name="stride" transfer-ownership="none">
          <type name="gint" c:type="gint"/>
        </parameter>
        <parameter name="offset" transfer-ownership="none">
          <type name="gsize" c:type="gsize"/>
        </parameter>
        <parameter name="size" transfer-ownership="none">
          <type name="gsize" c:type="gsize"/>
        </parameter>
        <parameter name="pTexture" transfer-ownership="none">
          <type c:type="GLuint*"/>
        </parameter>
      </parameters>
    </function>
    <function name="gl_get_plane_data_size"
              c:identifier="gst_gl_get_plane_data_size"
              introspectable="0">
      <return-value transfer-ownership="none">
        <type name="gsize" c:type="gsize"/>
      </return-value>
      <parameters>
        <parameter name="info" transfer-ownership="none">
          <type c:type="GstVideoInfo*"/>
        </parameter>
        <parameter name="align" transfer-ownership="none">
          <type c:type="GstVideoAlignment*"/>
        </parameter>
        <parameter name="plane" transfer-ownership="none">
          <type name="guint" c:type="guint"/>
        </parameter>
      </parameters>
    </function>
    <function name="gl_get_plane_start"
              c:identifier="gst_gl_get_plane_start"
              introspectable="0">
      <return-value transfer-ownership="none">
        <type name="gsize" c:type="gsize"/>
      </return-value>
      <parameters>
        <parameter name="info" transfer-ownership="none">
          <type c:type="GstVideoInfo*"/>
        </parameter>
        <parameter name="valign" transfer-ownership="none">
          <type c:type="GstVideoAlignment*"/>
        </parameter>
        <parameter name="plane" transfer-ownership="none">
          <type name="guint" c:type="guint"/>
        </parameter>
      </parameters>
    </function>
    <function name="gl_handle_context_query"
              c:identifier="gst_gl_handle_context_query">
      <return-value transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="element" transfer-ownership="none">
          <type name="Gst.Element" c:type="GstElement*"/>
        </parameter>
        <parameter name="query" transfer-ownership="none">
          <type name="Gst.Query" c:type="GstQuery*"/>
        </parameter>
        <parameter name="display" transfer-ownership="none">
          <type name="GLDisplay" c:type="GstGLDisplay**"/>
        </parameter>
        <parameter name="other_context" transfer-ownership="none">
          <type name="GLContext" c:type="GstGLContext**"/>
        </parameter>
      </parameters>
    </function>
    <function name="gl_handle_set_context"
              c:identifier="gst_gl_handle_set_context">
      <return-value transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="element" transfer-ownership="none">
          <type name="Gst.Element" c:type="GstElement*"/>
        </parameter>
        <parameter name="context" transfer-ownership="none">
          <type name="Gst.Context" c:type="GstContext*"/>
        </parameter>
        <parameter name="display" transfer-ownership="none">
          <type name="GLDisplay" c:type="GstGLDisplay**"/>
        </parameter>
        <parameter name="other_context" transfer-ownership="none">
          <type name="GLContext" c:type="GstGLContext**"/>
        </parameter>
      </parameters>
    </function>
    <function name="gl_insert_debug_marker"
              c:identifier="gst_gl_insert_debug_marker"
              version="1.8"
              introspectable="0">
      <doc xml:space="preserve">Inserts a marker into a GL debug stream.  Requires the 'gldebugmarker'
debug category to be at least %GST_LEVEL_FIXME.</doc>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="context" transfer-ownership="none">
          <doc xml:space="preserve">a #GstGLContext</doc>
          <type name="GLContext" c:type="GstGLContext*"/>
        </parameter>
        <parameter name="format" transfer-ownership="none">
          <doc xml:space="preserve">a printf-style format string</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="..." transfer-ownership="none">
          <doc xml:space="preserve">arguments form @format</doc>
          <varargs/>
        </parameter>
      </parameters>
    </function>
    <function name="gl_memory_init_once"
              c:identifier="gst_gl_memory_init_once"
              moved-to="GLMemory.init_once"
              version="1.4">
      <doc xml:space="preserve">Initializes the GL Base Texture allocator. It is safe to call this function
multiple times.  This must be called before any other GstGLMemory operation.</doc>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
    </function>
    <function name="gl_memory_pbo_init_once"
              c:identifier="gst_gl_memory_pbo_init_once"
              moved-to="GLMemoryPBO.init_once">
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
    </function>
    <function name="gl_memory_setup_buffer"
              c:identifier="gst_gl_memory_setup_buffer"
              moved-to="GLMemory.setup_buffer"
              version="1.8">
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">whether the buffer was correctly setup</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="allocator" transfer-ownership="none">
          <doc xml:space="preserve">the @GstGLMemoryAllocator to allocate from</doc>
          <type name="GLMemoryAllocator" c:type="GstGLMemoryAllocator*"/>
        </parameter>
        <parameter name="buffer" transfer-ownership="none">
          <doc xml:space="preserve">a #GstBuffer to setup</doc>
          <type name="Gst.Buffer" c:type="GstBuffer*"/>
        </parameter>
        <parameter name="params" transfer-ownership="none">
          <doc xml:space="preserve">the #GstGLVideoAllocationParams to allocate with</doc>
          <type name="GLVideoAllocationParams"
                c:type="GstGLVideoAllocationParams*"/>
        </parameter>
      </parameters>
    </function>
    <function name="gl_object_add_control_binding_proxy"
              c:identifier="gst_gl_object_add_control_binding_proxy">
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="object" transfer-ownership="none">
          <type name="Gst.Object" c:type="GstObject*"/>
        </parameter>
        <parameter name="ref_object" transfer-ownership="none">
          <type name="Gst.Object" c:type="GstObject*"/>
        </parameter>
        <parameter name="prop" transfer-ownership="none">
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="gl_platform_from_string"
              c:identifier="gst_gl_platform_from_string">
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">The #GstGLPlatform represented by @platform_s</doc>
        <type name="GLPlatform" c:type="GstGLPlatform"/>
      </return-value>
      <parameters>
        <parameter name="platform_s" transfer-ownership="none">
          <doc xml:space="preserve">a space seperated string of OpenGL platformss</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="gl_platform_to_string"
              c:identifier="gst_gl_platform_to_string">
      <return-value transfer-ownership="full">
        <doc xml:space="preserve">A space seperated string of the OpenGL platforms enabled in @platform</doc>
        <type name="utf8" c:type="gchar*"/>
      </return-value>
      <parameters>
        <parameter name="platform" transfer-ownership="none">
          <doc xml:space="preserve">a #GstGLPlatform to stringify</doc>
          <type name="GLPlatform" c:type="GstGLPlatform"/>
        </parameter>
      </parameters>
    </function>
    <function name="gl_run_query" c:identifier="gst_gl_run_query">
      <return-value transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="element" transfer-ownership="none">
          <type name="Gst.Element" c:type="GstElement*"/>
        </parameter>
        <parameter name="query" transfer-ownership="none">
          <type name="Gst.Query" c:type="GstQuery*"/>
        </parameter>
        <parameter name="direction" transfer-ownership="none">
          <type name="Gst.PadDirection" c:type="GstPadDirection"/>
        </parameter>
      </parameters>
    </function>
    <function name="gl_sized_gl_format_from_gl_format_type"
              c:identifier="gst_gl_sized_gl_format_from_gl_format_type">
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">the sized internal format specified by @format and @type that can
         be used in @context</doc>
        <type name="guint" c:type="guint"/>
      </return-value>
      <parameters>
        <parameter name="context" transfer-ownership="none">
          <doc xml:space="preserve">a #GstGLContext</doc>
          <type name="GLContext" c:type="GstGLContext*"/>
        </parameter>
        <parameter name="format" transfer-ownership="none">
          <doc xml:space="preserve">an OpenGL format, %GL_RGBA, %GL_LUMINANCE, etc</doc>
          <type name="guint" c:type="guint"/>
        </parameter>
        <parameter name="type" transfer-ownership="none">
          <doc xml:space="preserve">an OpenGL type, %GL_UNSIGNED_BYTE, %GL_FLOAT, etc</doc>
          <type name="guint" c:type="guint"/>
        </parameter>
      </parameters>
    </function>
    <function name="gl_sync_meta_api_get_type"
              c:identifier="gst_gl_sync_meta_api_get_type">
      <return-value transfer-ownership="none">
        <type name="GType" c:type="GType"/>
      </return-value>
    </function>
    <function name="gl_sync_meta_get_info"
              c:identifier="gst_gl_sync_meta_get_info"
              moved-to="GLSyncMeta.get_info">
      <return-value transfer-ownership="none">
        <type name="Gst.MetaInfo" c:type="const GstMetaInfo*"/>
      </return-value>
    </function>
    <function name="gl_texture_target_from_gl"
              c:identifier="gst_gl_texture_target_from_gl">
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">the #GstGLTextureTarget that's equiavalant to @target or
         %GST_GL_TEXTURE_TARGET_NONE</doc>
        <type name="GLTextureTarget" c:type="GstGLTextureTarget"/>
      </return-value>
      <parameters>
        <parameter name="target" transfer-ownership="none">
          <doc xml:space="preserve">an OpenGL texture binding target</doc>
          <type name="guint" c:type="guint"/>
        </parameter>
      </parameters>
    </function>
    <function name="gl_texture_target_from_string"
              c:identifier="gst_gl_texture_target_from_string">
      <return-value transfer-ownership="none">
        <type name="GLTextureTarget" c:type="GstGLTextureTarget"/>
      </return-value>
      <parameters>
        <parameter name="str" transfer-ownership="none">
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="gl_texture_target_to_buffer_pool_option"
              c:identifier="gst_gl_texture_target_to_buffer_pool_option">
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">a string representing the @GstBufferPoolOption specified by @target</doc>
        <type name="utf8" c:type="const gchar*"/>
      </return-value>
      <parameters>
        <parameter name="target" transfer-ownership="none">
          <doc xml:space="preserve">a #GstGLTextureTarget</doc>
          <type name="GLTextureTarget" c:type="GstGLTextureTarget"/>
        </parameter>
      </parameters>
    </function>
    <function name="gl_texture_target_to_gl"
              c:identifier="gst_gl_texture_target_to_gl">
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">the OpenGL value for binding the @target with glBindTexture() and
         similar functions or 0</doc>
        <type name="guint" c:type="guint"/>
      </return-value>
      <parameters>
        <parameter name="target" transfer-ownership="none">
          <doc xml:space="preserve">a #GstGLTextureTarget</doc>
          <type name="GLTextureTarget" c:type="GstGLTextureTarget"/>
        </parameter>
      </parameters>
    </function>
    <function name="gl_texture_target_to_string"
              c:identifier="gst_gl_texture_target_to_string">
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">the #GstGLTextureTarget represented by @str or
         %GST_GL_TEXTURE_TARGET_NONE</doc>
        <type name="utf8" c:type="const gchar*"/>
      </return-value>
      <parameters>
        <parameter name="target" transfer-ownership="none">
          <type name="GLTextureTarget" c:type="GstGLTextureTarget"/>
        </parameter>
      </parameters>
    </function>
    <function name="gl_texture_type_from_format"
              c:identifier="gst_gl_texture_type_from_format"
              introspectable="0">
      <return-value>
        <doc xml:space="preserve">the #GstVideoGLTextureType for the specified @format and @plane
         that can be allocated using @context</doc>
        <type c:type="GstVideoGLTextureType"/>
      </return-value>
      <parameters>
        <parameter name="context" transfer-ownership="none">
          <doc xml:space="preserve">a #GstGLContext</doc>
          <type name="GLContext" c:type="GstGLContext*"/>
        </parameter>
        <parameter name="v_format" transfer-ownership="none">
          <doc xml:space="preserve">a #GstVideoFormat</doc>
          <type c:type="GstVideoFormat"/>
        </parameter>
        <parameter name="plane" transfer-ownership="none">
          <doc xml:space="preserve">the plane number (starting from 0)</doc>
          <type name="guint" c:type="guint"/>
        </parameter>
      </parameters>
    </function>
    <function name="gl_texture_type_n_bytes"
              c:identifier="gst_gl_texture_type_n_bytes"
              introspectable="0">
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">the number of bytes @tex_format used per pixel</doc>
        <type name="guint" c:type="guint"/>
      </return-value>
      <parameters>
        <parameter name="tex_format" transfer-ownership="none">
          <doc xml:space="preserve">a #GstVideoGLTextureType</doc>
          <type c:type="GstVideoGLTextureType"/>
        </parameter>
      </parameters>
    </function>
    <function name="gl_value_get_texture_target_mask"
              c:identifier="gst_gl_value_get_texture_target_mask">
      <doc xml:space="preserve">See gst_gl_value_set_texture_target_from_mask() for what entails a mask</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">the mask of #GstGLTextureTarget's in @value</doc>
        <type name="GLTextureTarget" c:type="GstGLTextureTarget"/>
      </return-value>
      <parameters>
        <parameter name="value" transfer-ownership="none">
          <doc xml:space="preserve">an initialized #GValue of type G_TYPE_STRING</doc>
          <type name="GObject.Value" c:type="const GValue*"/>
        </parameter>
      </parameters>
    </function>
    <function name="gl_value_set_texture_target"
              c:identifier="gst_gl_value_set_texture_target">
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">whether the @target could be set on @value</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="value" transfer-ownership="none">
          <doc xml:space="preserve">an initialized #GValue of type G_TYPE_STRING</doc>
          <type name="GObject.Value" c:type="GValue*"/>
        </parameter>
        <parameter name="target" transfer-ownership="none">
          <doc xml:space="preserve">a #GstGLTextureTarget's</doc>
          <type name="GLTextureTarget" c:type="GstGLTextureTarget"/>
        </parameter>
      </parameters>
    </function>
    <function name="gl_value_set_texture_target_from_mask"
              c:identifier="gst_gl_value_set_texture_target_from_mask">
      <doc xml:space="preserve">A mask is a bitwise OR of (1 &lt;&lt; target) where target is a valid
#GstGLTextureTarget</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">whether the @target_mask could be set on @value</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="value" transfer-ownership="none">
          <doc xml:space="preserve">an uninitialized #GValue</doc>
          <type name="GObject.Value" c:type="GValue*"/>
        </parameter>
        <parameter name="target_mask" transfer-ownership="none">
          <doc xml:space="preserve">a bitwise mask of #GstGLTextureTarget's</doc>
          <type name="GLTextureTarget" c:type="GstGLTextureTarget"/>
        </parameter>
      </parameters>
    </function>
    <function name="gl_version_to_glsl_version"
              c:identifier="gst_gl_version_to_glsl_version">
      <return-value transfer-ownership="none">
        <type name="GLSLVersion" c:type="GstGLSLVersion"/>
      </return-value>
      <parameters>
        <parameter name="gl_api" transfer-ownership="none">
          <type name="GLAPI" c:type="GstGLAPI"/>
        </parameter>
        <parameter name="maj" transfer-ownership="none">
          <type name="gint" c:type="gint"/>
        </parameter>
        <parameter name="min" transfer-ownership="none">
          <type name="gint" c:type="gint"/>
        </parameter>
      </parameters>
    </function>
    <function name="glsl_error_quark" c:identifier="gst_glsl_error_quark">
      <return-value transfer-ownership="none">
        <type name="GLib.Quark" c:type="GQuark"/>
      </return-value>
    </function>
    <function name="glsl_profile_from_string"
              c:identifier="gst_glsl_profile_from_string">
      <return-value transfer-ownership="none">
        <type name="GLSLProfile" c:type="GstGLSLProfile"/>
      </return-value>
      <parameters>
        <parameter name="string" transfer-ownership="none">
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="glsl_profile_to_string"
              c:identifier="gst_glsl_profile_to_string">
      <return-value transfer-ownership="none">
        <type name="utf8" c:type="const gchar*"/>
      </return-value>
      <parameters>
        <parameter name="profile" transfer-ownership="none">
          <type name="GLSLProfile" c:type="GstGLSLProfile"/>
        </parameter>
      </parameters>
    </function>
    <function name="glsl_string_get_version_profile"
              c:identifier="gst_glsl_string_get_version_profile">
      <return-value transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="s" transfer-ownership="none">
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="version" transfer-ownership="none">
          <type name="GLSLVersion" c:type="GstGLSLVersion*"/>
        </parameter>
        <parameter name="profile" transfer-ownership="none">
          <type name="GLSLProfile" c:type="GstGLSLProfile*"/>
        </parameter>
      </parameters>
    </function>
    <function name="glsl_version_from_string"
              c:identifier="gst_glsl_version_from_string">
      <return-value transfer-ownership="none">
        <type name="GLSLVersion" c:type="GstGLSLVersion"/>
      </return-value>
      <parameters>
        <parameter name="string" transfer-ownership="none">
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="glsl_version_profile_from_string"
              c:identifier="gst_glsl_version_profile_from_string">
      <return-value transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="string" transfer-ownership="none">
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="version" transfer-ownership="none">
          <type name="GLSLVersion" c:type="GstGLSLVersion*"/>
        </parameter>
        <parameter name="profile" transfer-ownership="none">
          <type name="GLSLProfile" c:type="GstGLSLProfile*"/>
        </parameter>
      </parameters>
    </function>
    <function name="glsl_version_profile_to_string"
              c:identifier="gst_glsl_version_profile_to_string">
      <return-value transfer-ownership="full">
        <type name="utf8" c:type="gchar*"/>
      </return-value>
      <parameters>
        <parameter name="version" transfer-ownership="none">
          <type name="GLSLVersion" c:type="GstGLSLVersion"/>
        </parameter>
        <parameter name="profile" transfer-ownership="none">
          <type name="GLSLProfile" c:type="GstGLSLProfile"/>
        </parameter>
      </parameters>
    </function>
    <function name="glsl_version_to_string"
              c:identifier="gst_glsl_version_to_string">
      <return-value transfer-ownership="none">
        <type name="utf8" c:type="const gchar*"/>
      </return-value>
      <parameters>
        <parameter name="version" transfer-ownership="none">
          <type name="GLSLVersion" c:type="GstGLSLVersion"/>
        </parameter>
      </parameters>
    </function>
    <function name="is_gl_base_memory"
              c:identifier="gst_is_gl_base_memory"
              version="1.8">
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">whether the memory at @mem is a #GstGLBaseMemory</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="mem" transfer-ownership="none">
          <doc xml:space="preserve">a #GstMemory</doc>
          <type name="Gst.Memory" c:type="GstMemory*"/>
        </parameter>
      </parameters>
    </function>
    <function name="is_gl_buffer"
              c:identifier="gst_is_gl_buffer"
              version="1.8">
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">whether the memory at @mem is a #GstGLBuffer</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="mem" transfer-ownership="none">
          <doc xml:space="preserve">a #GstMemory</doc>
          <type name="Gst.Memory" c:type="GstMemory*"/>
        </parameter>
      </parameters>
    </function>
    <function name="is_gl_memory"
              c:identifier="gst_is_gl_memory"
              version="1.4">
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">whether the memory at @mem is a #GstGLMemory</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="mem" transfer-ownership="none">
          <doc xml:space="preserve">a #GstMemory</doc>
          <type name="Gst.Memory" c:type="GstMemory*"/>
        </parameter>
      </parameters>
    </function>
    <function name="is_gl_memory_pbo"
              c:identifier="gst_is_gl_memory_pbo"
              version="1.8">
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">whether the memory at @mem is a #GstGLMemoryPBO</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="mem" transfer-ownership="none">
          <doc xml:space="preserve">a #GstMemory</doc>
          <type name="Gst.Memory" c:type="GstMemory*"/>
        </parameter>
      </parameters>
    </function>
  </namespace>
</repository>
