<?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="Clutter" version="1.0"/>
  <include name="Cogl" version="1.0"/>
  <include name="GObject" version="2.0"/>
  <include name="GdkPixbuf" version="2.0"/>
  <include name="Gst" version="1.0"/>
  <include name="GstAudio" version="1.0"/>
  <include name="GstBase" version="1.0"/>
  <include name="GstPbutils" version="1.0"/>
  <include name="GstVideo" version="1.0"/>
  <package name="clutter-gst-3.0"/>
  <c:include name="clutter-gst/clutter-gst.h"/>
  <namespace name="ClutterGst"
             version="3.0"
             shared-library="libclutter-gst-3.0.so.0"
             c:identifier-prefixes="ClutterGst"
             c:symbol-prefixes="clutter_gst">
    <class name="Aspectratio"
           c:symbol-prefix="aspectratio"
           c:type="ClutterGstAspectratio"
           parent="Content"
           glib:type-name="ClutterGstAspectratio"
           glib:get-type="clutter_gst_aspectratio_get_type"
           glib:type-struct="AspectratioClass">
      <doc xml:space="preserve">Implementation of #ClutterGstContent that displays video streams
with respects to their aspect ratio.

The #ClutterGstAspectratio structure contains only private data and
should not be accessed directly.</doc>
      <implements name="Clutter.Content"/>
      <function name="new" c:identifier="clutter_gst_aspectratio_new">
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new #ClutterGstAspectratio instance</doc>
          <type name="Clutter.Content" c:type="ClutterContent*"/>
        </return-value>
      </function>
      <property name="fill-allocation"
                version="3.0"
                writable="1"
                transfer-ownership="none">
        <doc xml:space="preserve">Whether the content should fill its allocation with video rather
than adding borders.</doc>
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <property name="paint-borders"
                version="3.0"
                writable="1"
                transfer-ownership="none">
        <doc xml:space="preserve">Whether or not paint borders on the sides of the video</doc>
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <field name="parent" readable="0" private="1">
        <type name="Content" c:type="ClutterGstContent"/>
      </field>
      <field name="priv" readable="0" private="1">
        <type name="AspectratioPrivate"
              c:type="ClutterGstAspectratioPrivate*"/>
      </field>
    </class>
    <record name="AspectratioClass"
            c:type="ClutterGstAspectratioClass"
            glib:is-gtype-struct-for="Aspectratio">
      <doc xml:space="preserve">Base class for #ClutterGstAspectratio.</doc>
      <field name="parent_class" readable="0" private="1">
        <type name="ContentClass" c:type="ClutterGstContentClass"/>
      </field>
      <field name="_padding_dummy" readable="0" private="1">
        <array zero-terminated="0" c:type="void" fixed-size="8">
          <type name="gpointer" c:type="void*"/>
        </array>
      </field>
    </record>
    <record name="AspectratioPrivate"
            c:type="ClutterGstAspectratioPrivate"
            disguised="1">
    </record>
    <record name="Box"
            c:type="ClutterGstBox"
            version="3.0"
            glib:type-name="ClutterGstBox"
            glib:get-type="clutter_gst_box_get_type"
            c:symbol-prefix="box">
      <doc xml:space="preserve">Bounding box of an area in a video texture or actor's allocation.
Coordinates are usually expressed in the [0, 1] interval.</doc>
      <field name="x1" writable="1">
        <doc xml:space="preserve">X coordinate of the top left corner</doc>
        <type name="gfloat" c:type="gfloat"/>
      </field>
      <field name="y1" writable="1">
        <doc xml:space="preserve">Y coordinate of the top left corner</doc>
        <type name="gfloat" c:type="gfloat"/>
      </field>
      <field name="x2" writable="1">
        <doc xml:space="preserve">X coordinate of the bottom right corner</doc>
        <type name="gfloat" c:type="gfloat"/>
      </field>
      <field name="y2" writable="1">
        <doc xml:space="preserve">Y coordinate of the bottom right corner</doc>
        <type name="gfloat" c:type="gfloat"/>
      </field>
      <method name="get_height"
              c:identifier="clutter_gst_box_get_height"
              version="3.0">
        <doc xml:space="preserve">Retrieves the height of the @box</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the height of the box</doc>
          <type name="gfloat" c:type="gfloat"/>
        </return-value>
        <parameters>
          <instance-parameter name="box" transfer-ownership="none">
            <doc xml:space="preserve">a #ClutterGstBox</doc>
            <type name="Box" c:type="const ClutterGstBox*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_width"
              c:identifier="clutter_gst_box_get_width"
              version="3.0">
        <doc xml:space="preserve">Retrieves the width of the @box</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the width of the box</doc>
          <type name="gfloat" c:type="gfloat"/>
        </return-value>
        <parameters>
          <instance-parameter name="box" transfer-ownership="none">
            <doc xml:space="preserve">a #ClutterGstBox</doc>
            <type name="Box" c:type="const ClutterGstBox*"/>
          </instance-parameter>
        </parameters>
      </method>
    </record>
    <enumeration name="BufferingMode"
                 version="1.4"
                 glib:type-name="ClutterGstBufferingMode"
                 glib:get-type="clutter_gst_buffering_mode_get_type"
                 c:type="ClutterGstBufferingMode">
      <doc xml:space="preserve">Different buffering policies clutter-gst supports</doc>
      <member name="stream"
              value="0"
              c:identifier="CLUTTER_GST_BUFFERING_MODE_STREAM"
              glib:nick="stream">
        <doc xml:space="preserve">In-memory buffering</doc>
      </member>
      <member name="download"
              value="1"
              c:identifier="CLUTTER_GST_BUFFERING_MODE_DOWNLOAD"
              glib:nick="download">
        <doc xml:space="preserve">On-disk buffering</doc>
      </member>
    </enumeration>
    <class name="Camera"
           c:symbol-prefix="camera"
           c:type="ClutterGstCamera"
           parent="GObject.Object"
           glib:type-name="ClutterGstCamera"
           glib:get-type="clutter_gst_camera_get_type"
           glib:type-struct="CameraClass">
      <doc xml:space="preserve">Implementation of #ClutterGstPlayer that displays camera streams
using GStreamer.

The #ClutterGstCamera structure contains only private data and
should not be accessed directly.</doc>
      <implements name="Player"/>
      <constructor name="new" c:identifier="clutter_gst_camera_new">
        <doc xml:space="preserve">Create a camera actor.

&lt;note&gt;This function has to be called from Clutter's main thread. While
GStreamer will spawn threads to do its work, we want all the GL calls to
happen in the same thread. Clutter-gst knows which thread it is by
assuming this constructor is called from the Clutter thread.&lt;/note&gt;</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">the newly created camera actor</doc>
          <type name="Camera" c:type="ClutterGstCamera*"/>
        </return-value>
      </constructor>
      <virtual-method name="photo_saved">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Camera" c:type="ClutterGstCamera*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="photo_taken">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Camera" c:type="ClutterGstCamera*"/>
          </instance-parameter>
          <parameter name="pixbuf" transfer-ownership="none">
            <type name="GdkPixbuf.Pixbuf" c:type="GdkPixbuf*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="ready_for_capture">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Camera" c:type="ClutterGstCamera*"/>
          </instance-parameter>
          <parameter name="ready" transfer-ownership="none">
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="video_saved">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Camera" c:type="ClutterGstCamera*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <method name="get_brightness"
              c:identifier="clutter_gst_camera_get_brightness">
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Camera" c:type="ClutterGstCamera*"/>
          </instance-parameter>
          <parameter name="cur_value" transfer-ownership="none">
            <type name="gdouble" c:type="gdouble*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_brightness_range"
              c:identifier="clutter_gst_camera_get_brightness_range">
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Camera" c:type="ClutterGstCamera*"/>
          </instance-parameter>
          <parameter name="min_value" transfer-ownership="none">
            <type name="gdouble" c:type="gdouble*"/>
          </parameter>
          <parameter name="max_value" transfer-ownership="none">
            <type name="gdouble" c:type="gdouble*"/>
          </parameter>
          <parameter name="default_value" transfer-ownership="none">
            <type name="gdouble" c:type="gdouble*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_camera_device"
              c:identifier="clutter_gst_camera_get_camera_device">
        <doc xml:space="preserve">Retrieve the current selected camera device.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">The currently selected camera device</doc>
          <type name="CameraDevice" c:type="ClutterGstCameraDevice*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">a #ClutterGstCamera</doc>
            <type name="Camera" c:type="ClutterGstCamera*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_color_balance_property"
              c:identifier="clutter_gst_camera_get_color_balance_property">
        <doc xml:space="preserve">Retrieve the current value for the color balance property @property,

This method will return FALSE if @property does not exist or color balance is not
supported on @self.
See clutter_gst_camera_supports_color_balance().</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">a #ClutterGstCamera</doc>
            <type name="Camera" c:type="ClutterGstCamera*"/>
          </instance-parameter>
          <parameter name="property" transfer-ownership="none">
            <doc xml:space="preserve">Property name</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="cur_value" transfer-ownership="none">
            <doc xml:space="preserve">Pointer to store the current value of @property</doc>
            <type name="gdouble" c:type="gdouble*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_color_balance_property_range"
              c:identifier="clutter_gst_camera_get_color_balance_property_range">
        <doc xml:space="preserve">Retrieve the minimum, maximum and default values for the color balance property @property,

This method will return FALSE if @property does not exist or color balance is not
supported on @self.
See clutter_gst_camera_supports_color_balance().</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">a #ClutterGstCamera</doc>
            <type name="Camera" c:type="ClutterGstCamera*"/>
          </instance-parameter>
          <parameter name="property" transfer-ownership="none">
            <doc xml:space="preserve">Property name</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="min_value" transfer-ownership="none">
            <doc xml:space="preserve">Pointer to store the minimum value of @property, or %NULL</doc>
            <type name="gdouble" c:type="gdouble*"/>
          </parameter>
          <parameter name="max_value" transfer-ownership="none">
            <doc xml:space="preserve">Pointer to store the maximum value of @property, or %NULL</doc>
            <type name="gdouble" c:type="gdouble*"/>
          </parameter>
          <parameter name="default_value" transfer-ownership="none">
            <doc xml:space="preserve">Pointer to store the default value of @property, or %NULL</doc>
            <type name="gdouble" c:type="gdouble*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_contrast"
              c:identifier="clutter_gst_camera_get_contrast">
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Camera" c:type="ClutterGstCamera*"/>
          </instance-parameter>
          <parameter name="cur_value" transfer-ownership="none">
            <type name="gdouble" c:type="gdouble*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_contrast_range"
              c:identifier="clutter_gst_camera_get_contrast_range">
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Camera" c:type="ClutterGstCamera*"/>
          </instance-parameter>
          <parameter name="min_value" transfer-ownership="none">
            <type name="gdouble" c:type="gdouble*"/>
          </parameter>
          <parameter name="max_value" transfer-ownership="none">
            <type name="gdouble" c:type="gdouble*"/>
          </parameter>
          <parameter name="default_value" transfer-ownership="none">
            <type name="gdouble" c:type="gdouble*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_filter" c:identifier="clutter_gst_camera_get_filter">
        <doc xml:space="preserve">Retrieve the current filter being used.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">The current filter or %NULL if none is set</doc>
          <type name="Gst.Element" c:type="GstElement*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">a #ClutterGstCamera</doc>
            <type name="Camera" c:type="ClutterGstCamera*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_gamma" c:identifier="clutter_gst_camera_get_gamma">
        <doc xml:space="preserve">Retrieve the current gamma value.

This method will return FALSE if gamma correction is not
supported on @self.
See clutter_gst_camera_supports_gamma_correction().</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">a #ClutterGstCamera</doc>
            <type name="Camera" c:type="ClutterGstCamera*"/>
          </instance-parameter>
          <parameter name="cur_value" transfer-ownership="none">
            <doc xml:space="preserve">Pointer to store the current gamma value</doc>
            <type name="gdouble" c:type="gdouble*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_gamma_range"
              c:identifier="clutter_gst_camera_get_gamma_range">
        <doc xml:space="preserve">Retrieve the minimum, maximum and default gamma values.

This method will return FALSE if gamma correction is not
supported on @self.
See clutter_gst_camera_supports_gamma_correction().</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">a #ClutterGstCamera</doc>
            <type name="Camera" c:type="ClutterGstCamera*"/>
          </instance-parameter>
          <parameter name="min_value" transfer-ownership="none">
            <doc xml:space="preserve">Pointer to store the minimum gamma value, or %NULL</doc>
            <type name="gdouble" c:type="gdouble*"/>
          </parameter>
          <parameter name="max_value" transfer-ownership="none">
            <doc xml:space="preserve">Pointer to store the maximum gamma value, or %NULL</doc>
            <type name="gdouble" c:type="gdouble*"/>
          </parameter>
          <parameter name="default_value" transfer-ownership="none">
            <doc xml:space="preserve">Pointer to store the default gamma value, or %NULL</doc>
            <type name="gdouble" c:type="gdouble*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_hue" c:identifier="clutter_gst_camera_get_hue">
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Camera" c:type="ClutterGstCamera*"/>
          </instance-parameter>
          <parameter name="cur_value" transfer-ownership="none">
            <type name="gdouble" c:type="gdouble*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_hue_range"
              c:identifier="clutter_gst_camera_get_hue_range">
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Camera" c:type="ClutterGstCamera*"/>
          </instance-parameter>
          <parameter name="min_value" transfer-ownership="none">
            <type name="gdouble" c:type="gdouble*"/>
          </parameter>
          <parameter name="max_value" transfer-ownership="none">
            <type name="gdouble" c:type="gdouble*"/>
          </parameter>
          <parameter name="default_value" transfer-ownership="none">
            <type name="gdouble" c:type="gdouble*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_saturation"
              c:identifier="clutter_gst_camera_get_saturation">
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Camera" c:type="ClutterGstCamera*"/>
          </instance-parameter>
          <parameter name="cur_value" transfer-ownership="none">
            <type name="gdouble" c:type="gdouble*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_saturation_range"
              c:identifier="clutter_gst_camera_get_saturation_range">
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Camera" c:type="ClutterGstCamera*"/>
          </instance-parameter>
          <parameter name="min_value" transfer-ownership="none">
            <type name="gdouble" c:type="gdouble*"/>
          </parameter>
          <parameter name="max_value" transfer-ownership="none">
            <type name="gdouble" c:type="gdouble*"/>
          </parameter>
          <parameter name="default_value" transfer-ownership="none">
            <type name="gdouble" c:type="gdouble*"/>
          </parameter>
        </parameters>
      </method>
      <method name="is_ready_for_capture"
              c:identifier="clutter_gst_camera_is_ready_for_capture">
        <doc xml:space="preserve">Check whether the @self is ready for video/photo capture.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if @self is ready for capture, %FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">a #ClutterGstCamera</doc>
            <type name="Camera" c:type="ClutterGstCamera*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="is_recording_video"
              c:identifier="clutter_gst_camera_is_recording_video">
        <doc xml:space="preserve">Check whether the @self is recording video.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if @self is recording video, %FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">a #ClutterGstCamera</doc>
            <type name="Camera" c:type="ClutterGstCamera*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="remove_filter"
              c:identifier="clutter_gst_camera_remove_filter">
        <doc xml:space="preserve">Remove the current filter, if any.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE on success, %FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">a #ClutterGstCamera</doc>
            <type name="Camera" c:type="ClutterGstCamera*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set_brightness"
              c:identifier="clutter_gst_camera_set_brightness">
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Camera" c:type="ClutterGstCamera*"/>
          </instance-parameter>
          <parameter name="value" transfer-ownership="none">
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_camera_device"
              c:identifier="clutter_gst_camera_set_camera_device">
        <doc xml:space="preserve">Set the new active camera device.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE on success, %FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">a #ClutterGstCamera</doc>
            <type name="Camera" c:type="ClutterGstCamera*"/>
          </instance-parameter>
          <parameter name="device" transfer-ownership="none">
            <doc xml:space="preserve">a #ClutterGstCameraDevice</doc>
            <type name="CameraDevice" c:type="ClutterGstCameraDevice*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_color_balance_property"
              c:identifier="clutter_gst_camera_set_color_balance_property">
        <doc xml:space="preserve">Set the value for the color balance property @property to @value.
Allowed values can be retrieved with
clutter_gst_camera_get_color_balance_property_range().

This method will return FALSE if @property does not exist or color balance is not
supported on @self.
See clutter_gst_camera_supports_color_balance().</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">a #ClutterGstCamera</doc>
            <type name="Camera" c:type="ClutterGstCamera*"/>
          </instance-parameter>
          <parameter name="property" transfer-ownership="none">
            <doc xml:space="preserve">Property name</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="value" transfer-ownership="none">
            <doc xml:space="preserve">The value to set</doc>
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_contrast"
              c:identifier="clutter_gst_camera_set_contrast">
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Camera" c:type="ClutterGstCamera*"/>
          </instance-parameter>
          <parameter name="value" transfer-ownership="none">
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_filter" c:identifier="clutter_gst_camera_set_filter">
        <doc xml:space="preserve">Set the filter element to be used.
Filters can be used for effects, image processing, etc.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE on success, %FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">a #ClutterGstCamera</doc>
            <type name="Camera" c:type="ClutterGstCamera*"/>
          </instance-parameter>
          <parameter name="filter" transfer-ownership="none">
            <doc xml:space="preserve">a #GstElement for the filter</doc>
            <type name="Gst.Element" c:type="GstElement*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_gamma" c:identifier="clutter_gst_camera_set_gamma">
        <doc xml:space="preserve">Set the gamma value.
Allowed values can be retrieved with
clutter_gst_camera_get_gamma_range().

This method will return FALSE if gamma correction is not
supported on @self.
See clutter_gst_camera_supports_gamma_correction().</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">a #ClutterGstCamera</doc>
            <type name="Camera" c:type="ClutterGstCamera*"/>
          </instance-parameter>
          <parameter name="value" transfer-ownership="none">
            <doc xml:space="preserve">The value to set</doc>
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_hue" c:identifier="clutter_gst_camera_set_hue">
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Camera" c:type="ClutterGstCamera*"/>
          </instance-parameter>
          <parameter name="value" transfer-ownership="none">
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_photo_profile"
              c:identifier="clutter_gst_camera_set_photo_profile">
        <doc xml:space="preserve">Set the encoding profile to be used for photo captures.
The default profile saves photos as JPEG images.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">a #ClutterGstCamera</doc>
            <type name="Camera" c:type="ClutterGstCamera*"/>
          </instance-parameter>
          <parameter name="profile" transfer-ownership="none">
            <doc xml:space="preserve">A #GstEncodingProfile to be used for photo captures.</doc>
            <type name="GstPbutils.EncodingProfile"
                  c:type="GstEncodingProfile*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_saturation"
              c:identifier="clutter_gst_camera_set_saturation">
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Camera" c:type="ClutterGstCamera*"/>
          </instance-parameter>
          <parameter name="value" transfer-ownership="none">
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_video_profile"
              c:identifier="clutter_gst_camera_set_video_profile">
        <doc xml:space="preserve">Set the encoding profile to be used for video recording.
The default profile saves videos as Ogg/Theora videos.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">a #ClutterGstCamera</doc>
            <type name="Camera" c:type="ClutterGstCamera*"/>
          </instance-parameter>
          <parameter name="profile" transfer-ownership="none">
            <doc xml:space="preserve">A #GstEncodingProfile to be used for video recording.</doc>
            <type name="GstPbutils.EncodingProfile"
                  c:type="GstEncodingProfile*"/>
          </parameter>
        </parameters>
      </method>
      <method name="start_video_recording"
              c:identifier="clutter_gst_camera_start_video_recording">
        <doc xml:space="preserve">Start a video recording with the @self and save it to @filename.
This method requires that @self is playing and ready for capture.

The ::video-saved signal will be emitted when the video is saved.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if the video recording was successfully started, %FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">a #ClutterGstCamera</doc>
            <type name="Camera" c:type="ClutterGstCamera*"/>
          </instance-parameter>
          <parameter name="filename" transfer-ownership="none">
            <doc xml:space="preserve">the name of the video file to where the
recording will be saved</doc>
            <type name="filename" c:type="gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="stop_video_recording"
              c:identifier="clutter_gst_camera_stop_video_recording">
        <doc xml:space="preserve">Stop recording video on the @self.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">a #ClutterGstCamera</doc>
            <type name="Camera" c:type="ClutterGstCamera*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="supports_color_balance"
              c:identifier="clutter_gst_camera_supports_color_balance">
        <doc xml:space="preserve">Check whether the @self supports color balance.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if @self supports color balance, %FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">a #ClutterGstCamera</doc>
            <type name="Camera" c:type="ClutterGstCamera*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="supports_gamma_correction"
              c:identifier="clutter_gst_camera_supports_gamma_correction">
        <doc xml:space="preserve">Check whether the @self supports gamma correction.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if @self supports gamma correction, %FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">a #ClutterGstCamera</doc>
            <type name="Camera" c:type="ClutterGstCamera*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="take_photo" c:identifier="clutter_gst_camera_take_photo">
        <doc xml:space="preserve">Take a photo with the @self and save it to @filename.
This method requires that @self is playing and ready for capture.

The ::photo-saved signal will be emitted when the video is saved.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if the photo was successfully captured, %FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">a #ClutterGstCamera</doc>
            <type name="Camera" c:type="ClutterGstCamera*"/>
          </instance-parameter>
          <parameter name="filename" transfer-ownership="none">
            <doc xml:space="preserve">the name of the file to where the
photo will be saved</doc>
            <type name="filename" c:type="gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="take_photo_pixbuf"
              c:identifier="clutter_gst_camera_take_photo_pixbuf">
        <doc xml:space="preserve">Take a photo with the @self and emit it in the ::photo-taken signal as a
#GdkPixbuf.
This method requires that @self is playing and ready for capture.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if the photo was successfully captured, %FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">a #ClutterGstCamera</doc>
            <type name="Camera" c:type="ClutterGstCamera*"/>
          </instance-parameter>
        </parameters>
      </method>
      <property name="device" writable="1" transfer-ownership="none">
        <type name="CameraDevice"/>
      </property>
      <field name="parent" readable="0" private="1">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
      <field name="priv" readable="0" private="1">
        <type name="CameraPrivate" c:type="ClutterGstCameraPrivate*"/>
      </field>
      <glib:signal name="photo-saved" when="last" action="1">
        <doc xml:space="preserve">The ::photo-saved signal is emitted when a photo was saved to disk.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </glib:signal>
      <glib:signal name="photo-taken" when="last" action="1">
        <doc xml:space="preserve">The ::photo-taken signal is emitted when a photo was taken.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="pixbuf" transfer-ownership="none">
            <doc xml:space="preserve">the photo taken as a #GdkPixbuf</doc>
            <type name="GdkPixbuf.Pixbuf"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="ready-for-capture" when="last">
        <doc xml:space="preserve">The ::ready-for-capture signal is emitted whenever the value of
clutter_gst_camera_is_ready_for_capture changes.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="ready" transfer-ownership="none">
            <doc xml:space="preserve">whether the @self is ready for a new capture</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="video-saved" when="last" action="1">
        <doc xml:space="preserve">The ::video-saved signal is emitted when a video was saved to disk.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </glib:signal>
    </class>
    <record name="CameraClass"
            c:type="ClutterGstCameraClass"
            glib:is-gtype-struct-for="Camera">
      <doc xml:space="preserve">Base class for #ClutterGstCamera.</doc>
      <field name="parent_class" readable="0" private="1">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
      <field name="ready_for_capture">
        <callback name="ready_for_capture">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <type name="Camera" c:type="ClutterGstCamera*"/>
            </parameter>
            <parameter name="ready" transfer-ownership="none">
              <type name="gboolean" c:type="gboolean"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="photo_saved">
        <callback name="photo_saved">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <type name="Camera" c:type="ClutterGstCamera*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="photo_taken">
        <callback name="photo_taken">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <type name="Camera" c:type="ClutterGstCamera*"/>
            </parameter>
            <parameter name="pixbuf" transfer-ownership="none">
              <type name="GdkPixbuf.Pixbuf" c:type="GdkPixbuf*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="video_saved">
        <callback name="video_saved">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <type name="Camera" c:type="ClutterGstCamera*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="_clutter_reserved1" introspectable="0">
        <callback name="_clutter_reserved1">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_clutter_reserved2" introspectable="0">
        <callback name="_clutter_reserved2">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_clutter_reserved3" introspectable="0">
        <callback name="_clutter_reserved3">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_clutter_reserved4" introspectable="0">
        <callback name="_clutter_reserved4">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_clutter_reserved5" introspectable="0">
        <callback name="_clutter_reserved5">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_clutter_reserved6" introspectable="0">
        <callback name="_clutter_reserved6">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
    </record>
    <class name="CameraDevice"
           c:symbol-prefix="camera_device"
           c:type="ClutterGstCameraDevice"
           parent="GObject.Object"
           glib:type-name="ClutterGstCameraDevice"
           glib:get-type="clutter_gst_camera_device_get_type"
           glib:type-struct="CameraDeviceClass">
      <doc xml:space="preserve">GObject representing a camera device using GStreamer.

The #ClutterGstCameraDevice structure contains only private data and
should not be accessed directly.</doc>
      <virtual-method name="capture_resolution_changed">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="device" transfer-ownership="none">
            <type name="CameraDevice" c:type="ClutterGstCameraDevice*"/>
          </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>
        </parameters>
      </virtual-method>
      <method name="get_capture_resolution"
              c:identifier="clutter_gst_camera_device_get_capture_resolution">
        <doc xml:space="preserve">Retrieve the current capture resolution being used by @device.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="device" transfer-ownership="none">
            <doc xml:space="preserve">a #ClutterGstCameraDevice</doc>
            <type name="CameraDevice" c:type="ClutterGstCameraDevice*"/>
          </instance-parameter>
          <parameter name="width"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">Pointer to store the current capture resolution width</doc>
            <type name="gint" c:type="gint*"/>
          </parameter>
          <parameter name="height"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">Pointer to store the current capture resolution height</doc>
            <type name="gint" c:type="gint*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_name"
              c:identifier="clutter_gst_camera_device_get_name">
        <doc xml:space="preserve">Retrieve the name of the @device.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the device name.</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="device" transfer-ownership="none">
            <doc xml:space="preserve">a #ClutterGstCameraDevice</doc>
            <type name="CameraDevice" c:type="ClutterGstCameraDevice*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_node"
              c:identifier="clutter_gst_camera_device_get_node">
        <doc xml:space="preserve">Retrieve the node (location) of the @device.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the device node.</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="device" transfer-ownership="none">
            <doc xml:space="preserve">a #ClutterGstCameraDevice</doc>
            <type name="CameraDevice" c:type="ClutterGstCameraDevice*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_supported_resolutions"
              c:identifier="clutter_gst_camera_device_get_supported_resolutions">
        <doc xml:space="preserve">Retrieve the supported resolutions of the @device.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">an array of #ClutterGstVideoResolution with the
                               supported resolutions.</doc>
          <array name="GLib.PtrArray" c:type="const GPtrArray*">
            <type name="VideoResolution"/>
          </array>
        </return-value>
        <parameters>
          <instance-parameter name="device" transfer-ownership="none">
            <doc xml:space="preserve">a #ClutterGstCameraDevice</doc>
            <type name="CameraDevice" c:type="ClutterGstCameraDevice*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set_capture_resolution"
              c:identifier="clutter_gst_camera_device_set_capture_resolution">
        <doc xml:space="preserve">Set the capture resolution to be used by @device.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="device" transfer-ownership="none">
            <doc xml:space="preserve">a #ClutterGstCameraDevice</doc>
            <type name="CameraDevice" c:type="ClutterGstCameraDevice*"/>
          </instance-parameter>
          <parameter name="width" transfer-ownership="none">
            <doc xml:space="preserve">The new capture resolution width to use</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="height" transfer-ownership="none">
            <doc xml:space="preserve">The new capture resolution height to use</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <property name="element-factory"
                writable="1"
                construct-only="1"
                transfer-ownership="none">
        <doc xml:space="preserve">The GstElementFactory for this device.</doc>
        <type name="Gst.ElementFactory"/>
      </property>
      <property name="name"
                writable="1"
                construct-only="1"
                transfer-ownership="none">
        <doc xml:space="preserve">The device name.</doc>
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="node"
                writable="1"
                construct-only="1"
                transfer-ownership="none">
        <doc xml:space="preserve">The device node.</doc>
        <type name="utf8" c:type="gchar*"/>
      </property>
      <field name="parent" readable="0" private="1">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
      <field name="priv" readable="0" private="1">
        <type name="CameraDevicePrivate"
              c:type="ClutterGstCameraDevicePrivate*"/>
      </field>
      <glib:signal name="capture-resolution-changed" when="last">
        <doc xml:space="preserve">The ::capture-resolution-changed signal is emitted whenever the value of
clutter_gst_camera_device_get_capture_resolution changes.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="width" transfer-ownership="none">
            <doc xml:space="preserve">The new width</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="height" transfer-ownership="none">
            <doc xml:space="preserve">The new height</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </glib:signal>
    </class>
    <record name="CameraDeviceClass"
            c:type="ClutterGstCameraDeviceClass"
            glib:is-gtype-struct-for="CameraDevice">
      <doc xml:space="preserve">Base class for #ClutterGstCameraDevice.</doc>
      <field name="parent_class" readable="0" private="1">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
      <field name="capture_resolution_changed">
        <callback name="capture_resolution_changed">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="device" transfer-ownership="none">
              <type name="CameraDevice" c:type="ClutterGstCameraDevice*"/>
            </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>
        </callback>
      </field>
      <field name="_clutter_reserved1" introspectable="0">
        <callback name="_clutter_reserved1">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_clutter_reserved2" introspectable="0">
        <callback name="_clutter_reserved2">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_clutter_reserved3" introspectable="0">
        <callback name="_clutter_reserved3">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_clutter_reserved4" introspectable="0">
        <callback name="_clutter_reserved4">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_clutter_reserved5" introspectable="0">
        <callback name="_clutter_reserved5">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_clutter_reserved6" introspectable="0">
        <callback name="_clutter_reserved6">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
    </record>
    <record name="CameraDevicePrivate"
            c:type="ClutterGstCameraDevicePrivate"
            disguised="1">
    </record>
    <class name="CameraManager"
           c:symbol-prefix="camera_manager"
           c:type="ClutterGstCameraManager"
           parent="GObject.Object"
           glib:type-name="ClutterGstCameraManager"
           glib:get-type="clutter_gst_camera_manager_get_type"
           glib:type-struct="CameraManagerClass">
      <doc xml:space="preserve">An object to list available cameras on the system.

The #ClutterGstCameraManager structure contains only private data and
should not be accessed directly.</doc>
      <function name="get_default"
                c:identifier="clutter_gst_camera_manager_get_default">
        <doc xml:space="preserve">Get the camera manager.

&lt;note&gt;This function has to be called from Clutter's main
thread.&lt;/note&gt;</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the default camera manager.</doc>
          <type name="CameraManager" c:type="ClutterGstCameraManager*"/>
        </return-value>
      </function>
      <method name="get_camera_devices"
              c:identifier="clutter_gst_camera_manager_get_camera_devices">
        <doc xml:space="preserve">Retrieve an array of supported camera devices.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">An array of #ClutterGstCameraDevice representing
                               the supported camera devices</doc>
          <array name="GLib.PtrArray" c:type="const GPtrArray*">
            <type name="CameraDevice"/>
          </array>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">a #ClutterGstCameraManager</doc>
            <type name="CameraManager" c:type="ClutterGstCameraManager*"/>
          </instance-parameter>
        </parameters>
      </method>
      <field name="parent" readable="0" private="1">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
      <field name="priv" readable="0" private="1">
        <type name="CameraManagerPrivate"
              c:type="ClutterGstCameraManagerPrivate*"/>
      </field>
      <glib:signal name="camera-added" when="last">
        <doc xml:space="preserve">The ::camera-added signal is emitted whenever a new camera device
is available.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="camera_device" transfer-ownership="none">
            <doc xml:space="preserve">a camera device added</doc>
            <type name="CameraDevice"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="camera-removed" when="last">
        <doc xml:space="preserve">The ::camera-removed signal is emitted whenever a camera device
is unplugged/removed from the system.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="camera_device" transfer-ownership="none">
            <doc xml:space="preserve">a camera device</doc>
            <type name="CameraDevice"/>
          </parameter>
        </parameters>
      </glib:signal>
    </class>
    <record name="CameraManagerClass"
            c:type="ClutterGstCameraManagerClass"
            glib:is-gtype-struct-for="CameraManager">
      <doc xml:space="preserve">Base class for #ClutterGstCamera.</doc>
      <field name="parent_class" readable="0" private="1">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
    </record>
    <record name="CameraManagerPrivate"
            c:type="ClutterGstCameraManagerPrivate"
            disguised="1">
    </record>
    <record name="CameraPrivate"
            c:type="ClutterGstCameraPrivate"
            disguised="1">
    </record>
    <class name="Content"
           c:symbol-prefix="content"
           c:type="ClutterGstContent"
           version="0.0"
           parent="GObject.Object"
           glib:type-name="ClutterGstContent"
           glib:get-type="clutter_gst_content_get_type"
           glib:type-struct="ContentClass">
      <doc xml:space="preserve">The #ClutterGstContent structure contains only private data
and should be accessed using the provided API</doc>
      <implements name="Clutter.Content"/>
      <function name="new" c:identifier="clutter_gst_content_new">
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new #ClutterGstContent instance</doc>
          <type name="Clutter.Content" c:type="ClutterContent*"/>
        </return-value>
      </function>
      <function name="new_with_sink"
                c:identifier="clutter_gst_content_new_with_sink"
                version="3.0">
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new #ClutterGstContent instance</doc>
          <type name="Clutter.Content" c:type="ClutterContent*"/>
        </return-value>
        <parameters>
          <parameter name="sink" transfer-ownership="none">
            <doc xml:space="preserve">A #ClutterGstVideoSink</doc>
            <type name="VideoSink" c:type="ClutterGstVideoSink*"/>
          </parameter>
        </parameters>
      </function>
      <virtual-method name="has_painting_content">
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Content" c:type="ClutterGstContent*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <method name="get_frame"
              c:identifier="clutter_gst_content_get_frame"
              version="3.0">
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">The #ClutterGstFrame currently attached to @self.</doc>
          <type name="Frame" c:type="ClutterGstFrame*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">A #ClutterGstContent</doc>
            <type name="Content" c:type="ClutterGstContent*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_overlays"
              c:identifier="clutter_gst_content_get_overlays"
              version="3.0">
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">The #ClutterGstOverlays currently attached to @self.</doc>
          <type name="Overlays" c:type="ClutterGstOverlays*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">A #ClutterGstContent</doc>
            <type name="Content" c:type="ClutterGstContent*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_player"
              c:identifier="clutter_gst_content_get_player"
              version="3.0">
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">The #ClutterGstPlayer currently attached to @self.</doc>
          <type name="Player" c:type="ClutterGstPlayer*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">A #ClutterGstContent</doc>
            <type name="Content" c:type="ClutterGstContent*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_sink"
              c:identifier="clutter_gst_content_get_sink"
              version="3.0">
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">The #ClutterGstVideoSink currently attached to @self.</doc>
          <type name="VideoSink" c:type="ClutterGstVideoSink*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">A #ClutterGstContent</doc>
            <type name="Content" c:type="ClutterGstContent*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set_frame"
              c:identifier="clutter_gst_content_set_frame"
              version="3.0">
        <doc xml:space="preserve">Set the current frame.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">A #ClutterGstContent</doc>
            <type name="Content" c:type="ClutterGstContent*"/>
          </instance-parameter>
          <parameter name="frame" transfer-ownership="none">
            <doc xml:space="preserve">A #ClutterGstFrame</doc>
            <type name="Frame" c:type="ClutterGstFrame*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_player"
              c:identifier="clutter_gst_content_set_player"
              version="3.0">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">A #ClutterGstContent</doc>
            <type name="Content" c:type="ClutterGstContent*"/>
          </instance-parameter>
          <parameter name="player" transfer-ownership="none">
            <doc xml:space="preserve">A #ClutterGstPlayer or %NULL</doc>
            <type name="Player" c:type="ClutterGstPlayer*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_sink"
              c:identifier="clutter_gst_content_set_sink"
              version="3.0">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">A #ClutterGstContent</doc>
            <type name="Content" c:type="ClutterGstContent*"/>
          </instance-parameter>
          <parameter name="sink" transfer-ownership="none">
            <doc xml:space="preserve">A #ClutterGstVideoSink or %NULL</doc>
            <type name="VideoSink" c:type="ClutterGstVideoSink*"/>
          </parameter>
        </parameters>
      </method>
      <property name="frame" writable="1" transfer-ownership="none">
        <type name="Frame"/>
      </property>
      <property name="paint-frame" writable="1" transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <property name="paint-overlays" writable="1" transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <property name="player" writable="1" transfer-ownership="none">
        <type name="GObject.Object"/>
      </property>
      <property name="sink" writable="1" transfer-ownership="none">
        <type name="VideoSink"/>
      </property>
      <field name="parent" readable="0" private="1">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
      <field name="priv" readable="0" private="1">
        <type name="ContentPrivate" c:type="ClutterGstContentPrivate*"/>
      </field>
      <glib:signal name="size-change" when="last">
        <doc xml:space="preserve">The ::size-change signal is emitted each time the video size changes.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="width" transfer-ownership="none">
            <doc xml:space="preserve">new width of the frames</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="height" transfer-ownership="none">
            <doc xml:space="preserve">new height of the frames</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </glib:signal>
    </class>
    <record name="ContentClass"
            c:type="ClutterGstContentClass"
            glib:is-gtype-struct-for="Content"
            version="0.0">
      <doc xml:space="preserve">The #ClutterGstContentClass structure contains only private data
and should be accessed using the provided API</doc>
      <field name="parent_class" readable="0" private="1">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
      <field name="has_painting_content">
        <callback name="has_painting_content">
          <return-value transfer-ownership="none">
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <type name="Content" c:type="ClutterGstContent*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="_padding_dummy" readable="0" private="1">
        <array zero-terminated="0" c:type="void" fixed-size="10">
          <type name="gpointer" c:type="void*"/>
        </array>
      </field>
    </record>
    <record name="ContentPrivate"
            c:type="ClutterGstContentPrivate"
            disguised="1">
    </record>
    <class name="Crop"
           c:symbol-prefix="crop"
           c:type="ClutterGstCrop"
           parent="Content"
           glib:type-name="ClutterGstCrop"
           glib:get-type="clutter_gst_crop_get_type"
           glib:type-struct="CropClass">
      <doc xml:space="preserve">Implementation of #ClutterGstContent that displays a sub region of
video streams.

The #ClutterGstCrop structure contains only private data and
should not be accessed directly.</doc>
      <implements name="Clutter.Content"/>
      <constructor name="new" c:identifier="clutter_gst_crop_new">
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new #ClutterGstCrop instance</doc>
          <type name="Clutter.Actor" c:type="ClutterActor*"/>
        </return-value>
      </constructor>
      <property name="cull-backface"
                version="3.0"
                writable="1"
                transfer-ownership="none">
        <doc xml:space="preserve">Whether to cull the backface of the actor</doc>
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <property name="input-region"
                version="3.0"
                writable="1"
                transfer-ownership="none">
        <doc xml:space="preserve">Input region in the video frame (all values between 0 and 1).</doc>
        <type name="Box"/>
      </property>
      <property name="output-region"
                version="3.0"
                writable="1"
                transfer-ownership="none">
        <doc xml:space="preserve">Output region in the actor's allocation (all values between 0 and 1).</doc>
        <type name="Box"/>
      </property>
      <property name="paint-borders"
                version="3.0"
                writable="1"
                transfer-ownership="none">
        <doc xml:space="preserve">Whether or not paint borders on the sides of the video</doc>
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <field name="parent" readable="0" private="1">
        <type name="Content" c:type="ClutterGstContent"/>
      </field>
      <field name="priv" readable="0" private="1">
        <type name="CropPrivate" c:type="ClutterGstCropPrivate*"/>
      </field>
    </class>
    <record name="CropClass"
            c:type="ClutterGstCropClass"
            glib:is-gtype-struct-for="Crop">
      <doc xml:space="preserve">Base class for #ClutterGstCrop.</doc>
      <field name="parent_class" readable="0" private="1">
        <type name="ContentClass" c:type="ClutterGstContentClass"/>
      </field>
      <field name="_padding_dummy" readable="0" private="1">
        <array zero-terminated="0" c:type="void" fixed-size="8">
          <type name="gpointer" c:type="void*"/>
        </array>
      </field>
    </record>
    <record name="CropPrivate" c:type="ClutterGstCropPrivate" disguised="1">
    </record>
    <record name="Frame"
            c:type="ClutterGstFrame"
            version="3.0"
            glib:type-name="ClutterGstFrame"
            glib:get-type="clutter_gst_frame_get_type"
            c:symbol-prefix="frame">
      <doc xml:space="preserve">Represents a frame outputted by the #ClutterGstVideoSink.</doc>
      <field name="resolution" writable="1">
        <doc xml:space="preserve">a #ClutterGstVideoResolution</doc>
        <type name="VideoResolution" c:type="ClutterGstVideoResolution"/>
      </field>
      <field name="pipeline" introspectable="0" writable="1">
        <doc xml:space="preserve">a #CoglPipeline to paint a frame</doc>
        <type c:type="CoglPipeline*"/>
      </field>
    </record>
    <constant name="MAJOR_VERSION"
              value="3"
              c:type="CLUTTER_GST_MAJOR_VERSION">
      <doc xml:space="preserve">ClutterGst major version (e.g. "1", if %CLUTTER_GST_VERSION is "1.2.3")</doc>
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="MICRO_VERSION"
              value="18"
              c:type="CLUTTER_GST_MICRO_VERSION">
      <doc xml:space="preserve">ClutterGst micro version (e.g. "3", if %CLUTTER_GST_VERSION is "1.2.3")</doc>
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="MINOR_VERSION"
              value="0"
              c:type="CLUTTER_GST_MINOR_VERSION">
      <doc xml:space="preserve">ClutterGst minor version (e.g. "2", if %CLUTTER_GST_VERSION is "1.2.3")</doc>
      <type name="gint" c:type="gint"/>
    </constant>
    <record name="Overlay"
            c:type="ClutterGstOverlay"
            version="3.0"
            glib:type-name="ClutterGstOverlay"
            glib:get-type="clutter_gst_overlay_get_type"
            c:symbol-prefix="overlay">
      <doc xml:space="preserve">Represents a video overlay outputted by the #ClutterGstVideoSink.</doc>
      <field name="position" writable="1">
        <doc xml:space="preserve">a #ClutterGstBox representing the position of the
           overlay within a #ClutterGstFrame.</doc>
        <type name="Box" c:type="ClutterGstBox"/>
      </field>
      <field name="pipeline" introspectable="0" writable="1">
        <doc xml:space="preserve">a #CoglPipeline to paint an overlay</doc>
        <type c:type="CoglPipeline*"/>
      </field>
    </record>
    <record name="Overlays"
            c:type="ClutterGstOverlays"
            version="3.0"
            glib:type-name="ClutterGstOverlays"
            glib:get-type="clutter_gst_overlays_get_type"
            c:symbol-prefix="overlays">
      <field name="overlays" writable="1">
        <doc xml:space="preserve">an array of #ClutterGstOverlay</doc>
        <array name="GLib.PtrArray" c:type="GPtrArray*">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
    </record>
    <class name="Playback"
           c:symbol-prefix="playback"
           c:type="ClutterGstPlayback"
           parent="GObject.Object"
           glib:type-name="ClutterGstPlayback"
           glib:get-type="clutter_gst_playback_get_type"
           glib:type-struct="PlaybackClass">
      <doc xml:space="preserve">Implementation of #ClutterGstPlayback that displays media streams
using GStreamer.

The #ClutterGstPlayback structure contains only private data and
should not be accessed directly.</doc>
      <implements name="Player"/>
      <constructor name="new" c:identifier="clutter_gst_playback_new">
        <return-value transfer-ownership="full">
          <type name="Playback" c:type="ClutterGstPlayback*"/>
        </return-value>
      </constructor>
      <virtual-method name="should_buffer">
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Playback" c:type="ClutterGstPlayback*"/>
          </instance-parameter>
          <parameter name="query" transfer-ownership="none">
            <type name="Gst.Query" c:type="GstQuery*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <method name="get_audio_stream"
              c:identifier="clutter_gst_playback_get_audio_stream"
              version="1.4">
        <doc xml:space="preserve">Get the current audio stream. The number returned in the index of the
audio stream playing in the list returned by
clutter_gst_playback_get_audio_streams().</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the index of the current audio stream, -1 if the media has no
audio stream</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">a #ClutterGstPlayback</doc>
            <type name="Playback" c:type="ClutterGstPlayback*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_audio_streams"
              c:identifier="clutter_gst_playback_get_audio_streams"
              version="1.4">
        <doc xml:space="preserve">Get the list of audio streams of the current media.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">a list of
strings describing the available audio streams</doc>
          <type name="GLib.List" c:type="GList*">
            <type name="utf8"/>
          </type>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">a #ClutterGstPlayback</doc>
            <type name="Playback" c:type="ClutterGstPlayback*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_buffer_duration"
              c:identifier="clutter_gst_playback_get_buffer_duration">
        <doc xml:space="preserve">Retrieves the buffer duration when buffering network streams.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">The buffer duration</doc>
          <type name="gint64" c:type="gint64"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">a #ClutterGstPlayback</doc>
            <type name="Playback" c:type="ClutterGstPlayback*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_buffer_fill"
              c:identifier="clutter_gst_playback_get_buffer_fill">
        <doc xml:space="preserve">Retrieves the amount of the stream that is buffered.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the fill level, between 0.0 and 1.0</doc>
          <type name="gdouble" c:type="gdouble"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">a #ClutterGstPlayback</doc>
            <type name="Playback" c:type="ClutterGstPlayback*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_buffer_size"
              c:identifier="clutter_gst_playback_get_buffer_size">
        <doc xml:space="preserve">Retrieves the buffer size when buffering network streams.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">The buffer size</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">a #ClutterGstPlayback</doc>
            <type name="Playback" c:type="ClutterGstPlayback*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_buffering_mode"
              c:identifier="clutter_gst_playback_get_buffering_mode"
              version="1.4">
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">a #ClutterGstBufferingMode</doc>
          <type name="BufferingMode" c:type="ClutterGstBufferingMode"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">a #ClutterGstPlayback</doc>
            <type name="Playback" c:type="ClutterGstPlayback*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_duration"
              c:identifier="clutter_gst_playback_get_duration">
        <doc xml:space="preserve">Retrieves the duration of the media stream that @self represents.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the duration of the media stream, in seconds</doc>
          <type name="gdouble" c:type="gdouble"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">a #ClutterGstPlayback</doc>
            <type name="Playback" c:type="ClutterGstPlayback*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_in_seek"
              c:identifier="clutter_gst_playback_get_in_seek"
              version="1.6">
        <doc xml:space="preserve">Whether the player is seeking.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">TRUE if the player is seeking, FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">a #ClutterGstPlayback</doc>
            <type name="Playback" c:type="ClutterGstPlayback*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_position"
              c:identifier="clutter_gst_playback_get_position">
        <doc xml:space="preserve">Retrieves the position in the media stream that @self represents.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the position in the media stream, in seconds</doc>
          <type name="gdouble" c:type="gdouble"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">a #ClutterGstPlayback</doc>
            <type name="Playback" c:type="ClutterGstPlayback*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_progress"
              c:identifier="clutter_gst_playback_get_progress">
        <doc xml:space="preserve">Retrieves the playback progress of @self.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the playback progress, between 0.0 and 1.0</doc>
          <type name="gdouble" c:type="gdouble"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">a #ClutterGstPlayback</doc>
            <type name="Playback" c:type="ClutterGstPlayback*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_seek_flags"
              c:identifier="clutter_gst_playback_get_seek_flags"
              version="1.4">
        <doc xml:space="preserve">Get the current value of the seek-flags property.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">a combination of #ClutterGstSeekFlags</doc>
          <type name="SeekFlags" c:type="ClutterGstSeekFlags"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">a #ClutterGstPlayback</doc>
            <type name="Playback" c:type="ClutterGstPlayback*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_subtitle_font_name"
              c:identifier="clutter_gst_playback_get_subtitle_font_name">
        <doc xml:space="preserve">Retrieves the font name currently used.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a string containing the font name. Use g_free()
  to free the returned string</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">a #ClutterGstPlayback</doc>
            <type name="Playback" c:type="ClutterGstPlayback*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_subtitle_track"
              c:identifier="clutter_gst_playback_get_subtitle_track"
              version="1.4">
        <doc xml:space="preserve">Get the current subtitles track. The number returned is the index of the
subtiles track in the list returned by
clutter_gst_playback_get_subtitle_tracks().</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the index of the current subtitlest track, -1 if the media has
no subtitles track or if the subtitles have been turned off</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">a #ClutterGstPlayback</doc>
            <type name="Playback" c:type="ClutterGstPlayback*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_subtitle_tracks"
              c:identifier="clutter_gst_playback_get_subtitle_tracks"
              version="1.4">
        <doc xml:space="preserve">Get the list of subtitles tracks of the current media.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">a list of
strings describing the available subtitles tracks</doc>
          <type name="GLib.List" c:type="GList*">
            <type name="utf8"/>
          </type>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">a #ClutterGstPlayback</doc>
            <type name="Playback" c:type="ClutterGstPlayback*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_subtitle_uri"
              c:identifier="clutter_gst_playback_get_subtitle_uri">
        <doc xml:space="preserve">Retrieves the URI of the subtitle file in use.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">the URI of the subtitle file. Use g_free()
  to free the returned string</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">a #ClutterGstPlayback</doc>
            <type name="Playback" c:type="ClutterGstPlayback*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_uri" c:identifier="clutter_gst_playback_get_uri">
        <doc xml:space="preserve">Retrieves the URI from @self.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">the URI of the media stream. Use g_free()
  to free the returned string</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">a #ClutterGstPlayback</doc>
            <type name="Playback" c:type="ClutterGstPlayback*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_user_agent"
              c:identifier="clutter_gst_playback_get_user_agent"
              version="1.4">
        <doc xml:space="preserve">Retrieves the user agent used when streaming.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">the user agent used. The returned string has to be freed with
g_free()</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">a #ClutterGstPlayback</doc>
            <type name="Playback" c:type="ClutterGstPlayback*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="is_live_media"
              c:identifier="clutter_gst_playback_is_live_media">
        <doc xml:space="preserve">Whether the player is using a live media.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">TRUE if the player is using a live media, FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">a #ClutterGstPlayback</doc>
            <type name="Playback" c:type="ClutterGstPlayback*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set_audio_stream"
              c:identifier="clutter_gst_playback_set_audio_stream"
              version="1.4">
        <doc xml:space="preserve">Set the audio stream to play. @index_ is the index of the stream
in the list returned by clutter_gst_playback_get_audio_streams().</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">a #ClutterGstPlayback</doc>
            <type name="Playback" c:type="ClutterGstPlayback*"/>
          </instance-parameter>
          <parameter name="index_" transfer-ownership="none">
            <doc xml:space="preserve">the index of the audio stream</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_buffer_duration"
              c:identifier="clutter_gst_playback_set_buffer_duration">
        <doc xml:space="preserve">Sets the buffer duration to be used when buffering network streams.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">a #ClutterGstPlayback</doc>
            <type name="Playback" c:type="ClutterGstPlayback*"/>
          </instance-parameter>
          <parameter name="duration" transfer-ownership="none">
            <doc xml:space="preserve">The new duration</doc>
            <type name="gint64" c:type="gint64"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_buffer_size"
              c:identifier="clutter_gst_playback_set_buffer_size">
        <doc xml:space="preserve">Sets the buffer size to be used when buffering network streams.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">a #ClutterGstPlayback</doc>
            <type name="Playback" c:type="ClutterGstPlayback*"/>
          </instance-parameter>
          <parameter name="size" transfer-ownership="none">
            <doc xml:space="preserve">The new size</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_buffering_mode"
              c:identifier="clutter_gst_playback_set_buffering_mode"
              version="1.4">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">a #ClutterGstPlayback</doc>
            <type name="Playback" c:type="ClutterGstPlayback*"/>
          </instance-parameter>
          <parameter name="mode" transfer-ownership="none">
            <doc xml:space="preserve">a #ClutterGstBufferingMode</doc>
            <type name="BufferingMode" c:type="ClutterGstBufferingMode"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_filename"
              c:identifier="clutter_gst_playback_set_filename">
        <doc xml:space="preserve">Sets the source of @self using a file path.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">a #ClutterGstPlayback</doc>
            <type name="Playback" c:type="ClutterGstPlayback*"/>
          </instance-parameter>
          <parameter name="filename" transfer-ownership="none">
            <doc xml:space="preserve">A filename</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_progress"
              c:identifier="clutter_gst_playback_set_progress">
        <doc xml:space="preserve">Sets the playback progress of @self. The @progress is
a normalized value between 0.0 (begin) and 1.0 (end).</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">a #ClutterGstPlayback</doc>
            <type name="Playback" c:type="ClutterGstPlayback*"/>
          </instance-parameter>
          <parameter name="progress" transfer-ownership="none">
            <doc xml:space="preserve">the progress of the playback, between 0.0 and 1.0</doc>
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_seek_flags"
              c:identifier="clutter_gst_playback_set_seek_flags"
              version="1.4">
        <doc xml:space="preserve">Seeking can be done with several trade-offs. Clutter-gst defaults
to %CLUTTER_GST_SEEK_FLAG_NONE.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">a #ClutterGstPlayback</doc>
            <type name="Playback" c:type="ClutterGstPlayback*"/>
          </instance-parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve">a combination of #ClutterGstSeekFlags</doc>
            <type name="SeekFlags" c:type="ClutterGstSeekFlags"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_subtitle_font_name"
              c:identifier="clutter_gst_playback_set_subtitle_font_name">
        <doc xml:space="preserve">Sets the font used by the subtitle renderer. The @font_name string must be
either %NULL, which means that the default font name of the underlying
implementation will be used; or must follow the grammar recognized by
pango_font_description_from_string() like:

|[
  clutter_gst_playback_set_subtitle_font_name (player, "Sans 24pt");
]|</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">a #ClutterGstPlayback</doc>
            <type name="Playback" c:type="ClutterGstPlayback*"/>
          </instance-parameter>
          <parameter name="font_name" transfer-ownership="none">
            <doc xml:space="preserve">a font name, or %NULL to set the default font name</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_subtitle_track"
              c:identifier="clutter_gst_playback_set_subtitle_track"
              version="1.4">
        <doc xml:space="preserve">Set the subtitles track to play. @index_ is the index of the stream
in the list returned by clutter_gst_playback_get_subtitle_tracks().

If @index_ is -1, the subtitles are turned off.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">a #ClutterGstPlayback</doc>
            <type name="Playback" c:type="ClutterGstPlayback*"/>
          </instance-parameter>
          <parameter name="index_" transfer-ownership="none">
            <doc xml:space="preserve">the index of the subtitles track</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_subtitle_uri"
              c:identifier="clutter_gst_playback_set_subtitle_uri">
        <doc xml:space="preserve">Sets the location of a subtitle file to display while playing @self.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">a #ClutterGstPlayback</doc>
            <type name="Playback" c:type="ClutterGstPlayback*"/>
          </instance-parameter>
          <parameter name="uri" transfer-ownership="none">
            <doc xml:space="preserve">the URI of a subtitle file</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_uri" c:identifier="clutter_gst_playback_set_uri">
        <doc xml:space="preserve">Sets the URI of @self to @uri.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">a #ClutterGstPlayback</doc>
            <type name="Playback" c:type="ClutterGstPlayback*"/>
          </instance-parameter>
          <parameter name="uri" transfer-ownership="none">
            <doc xml:space="preserve">the URI of the media stream</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_user_agent"
              c:identifier="clutter_gst_playback_set_user_agent"
              version="1.4">
        <doc xml:space="preserve">Sets the user agent to use when streaming.

When streaming content, you might want to set a custom user agent, eg. to
promote your software, make it appear in statistics or because the server
requires a special user agent you want to impersonate.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">a #ClutterGstPlayback</doc>
            <type name="Playback" c:type="ClutterGstPlayback*"/>
          </instance-parameter>
          <parameter name="user_agent" transfer-ownership="none">
            <doc xml:space="preserve">the user agent</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <property name="audio-stream"
                version="1.4"
                writable="1"
                transfer-ownership="none">
        <doc xml:space="preserve">Index of the current audio stream.</doc>
        <type name="gint" c:type="gint"/>
      </property>
      <property name="audio-streams" version="1.4" transfer-ownership="none">
        <doc xml:space="preserve">List of audio streams available on the current media.</doc>
        <type name="gpointer" c:type="gpointer"/>
      </property>
      <property name="buffer-fill" transfer-ownership="none">
        <doc xml:space="preserve">The fill level of the buffer for the current stream,
as a value between 0.0 and 1.0.</doc>
        <type name="gdouble" c:type="gdouble"/>
      </property>
      <property name="can-seek" transfer-ownership="none">
        <doc xml:space="preserve">Whether the current stream is seekable.</doc>
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <property name="duration" transfer-ownership="none">
        <doc xml:space="preserve">The duration of the current stream, in seconds</doc>
        <type name="gdouble" c:type="gdouble"/>
      </property>
      <property name="in-seek" version="1.6" transfer-ownership="none">
        <doc xml:space="preserve">Whether or not the stream is being seeked.</doc>
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <property name="progress" writable="1" transfer-ownership="none">
        <doc xml:space="preserve">The current progress of the playback, as a normalized
value between 0.0 and 1.0.</doc>
        <type name="gdouble" c:type="gdouble"/>
      </property>
      <property name="seek-flags"
                version="1.4"
                writable="1"
                transfer-ownership="none">
        <doc xml:space="preserve">Flags to use when seeking.</doc>
        <type name="SeekFlags"/>
      </property>
      <property name="subtitle-font-name"
                writable="1"
                transfer-ownership="none">
        <doc xml:space="preserve">The font used to display subtitles. The font description has to
follow the same grammar as the one recognized by
pango_font_description_from_string().</doc>
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="subtitle-track"
                version="1.4"
                writable="1"
                transfer-ownership="none">
        <doc xml:space="preserve">Current subtitle track being displayed.</doc>
        <type name="gint" c:type="gint"/>
      </property>
      <property name="subtitle-tracks" version="1.4" transfer-ownership="none">
        <doc xml:space="preserve">List of subtitle tracks available.</doc>
        <type name="gpointer" c:type="gpointer"/>
      </property>
      <property name="subtitle-uri" writable="1" transfer-ownership="none">
        <doc xml:space="preserve">The location of a subtitle file, expressed as a valid URI.</doc>
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="uri" writable="1" transfer-ownership="none">
        <doc xml:space="preserve">The location of a media file, expressed as a valid URI.</doc>
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="user-agent"
                version="1.4"
                writable="1"
                transfer-ownership="none">
        <doc xml:space="preserve">The User Agent used by #ClutterGstPlayback with network protocols.</doc>
        <type name="utf8" c:type="gchar*"/>
      </property>
      <field name="parent">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
      <field name="priv">
        <type name="PlaybackPrivate" c:type="ClutterGstPlaybackPrivate*"/>
      </field>
      <glib:signal name="should-buffer" when="last" version="1.4">
        <doc xml:space="preserve">The ::should-buffer signal is emitted every time the base class needs to
decide whether it should continue buffering in download-buffering mode.</doc>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="query" transfer-ownership="none">
            <doc xml:space="preserve">A gst buffering query of format bytes</doc>
            <type name="Gst.Query"/>
          </parameter>
        </parameters>
      </glib:signal>
    </class>
    <record name="PlaybackClass"
            c:type="ClutterGstPlaybackClass"
            glib:is-gtype-struct-for="Playback">
      <doc xml:space="preserve">Base class for #ClutterGstPlayback.</doc>
      <field name="parent_class" readable="0" private="1">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
      <field name="should_buffer">
        <callback name="should_buffer">
          <return-value transfer-ownership="none">
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <type name="Playback" c:type="ClutterGstPlayback*"/>
            </parameter>
            <parameter name="query" transfer-ownership="none">
              <type name="Gst.Query" c:type="GstQuery*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
    </record>
    <record name="PlaybackPrivate"
            c:type="ClutterGstPlaybackPrivate"
            disguised="1">
    </record>
    <interface name="Player"
               c:symbol-prefix="player"
               c:type="ClutterGstPlayer"
               version="1.4"
               glib:type-name="ClutterGstPlayer"
               glib:get-type="clutter_gst_player_get_type"
               glib:type-struct="PlayerIface">
      <doc xml:space="preserve">#ClutterGstPlayer is an opaque structure whose members cannot be
directly accessed</doc>
      <virtual-method name="eos">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Player" c:type="ClutterGstPlayer*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="error">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Player" c:type="ClutterGstPlayer*"/>
          </instance-parameter>
          <parameter name="error" transfer-ownership="none">
            <type name="GLib.Error" c:type="const GError*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_audio_volume"
                      invoker="get_audio_volume"
                      version="3.0">
        <doc xml:space="preserve">Retrieves the playback volume of @self.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">The playback volume between 0.0 and 1.0</doc>
          <type name="gdouble" c:type="gdouble"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">a #ClutterGstPlayer</doc>
            <type name="Player" c:type="ClutterGstPlayer*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_frame" invoker="get_frame" version="3.0">
        <doc xml:space="preserve">Retrieves the #ClutterGstFrame of the last frame produced by @self.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the #ClutterGstFrame of the last frame.</doc>
          <type name="Frame" c:type="ClutterGstFrame*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">a #ClutterGstPlayer</doc>
            <type name="Player" c:type="ClutterGstPlayer*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_idle" invoker="get_idle" version="3.0">
        <doc xml:space="preserve">Get the idle state of the pipeline.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">TRUE if the pipline is in idle mode, FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">a #ClutterGstPlayer</doc>
            <type name="Player" c:type="ClutterGstPlayer*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_pipeline" invoker="get_pipeline" version="3.0">
        <doc xml:space="preserve">Retrieves the #GstPipeline used by the @self, for direct use with
GStreamer API.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the #GstPipeline element used by the player</doc>
          <type name="Gst.Element" c:type="GstElement*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">a #ClutterGstPlayer</doc>
            <type name="Player" c:type="ClutterGstPlayer*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_playing" invoker="get_playing" version="3.0">
        <doc xml:space="preserve">Retrieves the playing status of @self.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if playing, %FALSE if stopped.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">A #ClutterGstPlayer object</doc>
            <type name="Player" c:type="ClutterGstPlayer*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_video_sink"
                      invoker="get_video_sink"
                      version="3.0">
        <doc xml:space="preserve">Retrieves the #ClutterGstVideoSink used by the @self.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the #ClutterGstVideoSink element used by the player</doc>
          <type name="VideoSink" c:type="ClutterGstVideoSink*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">a #ClutterGstPlayer</doc>
            <type name="Player" c:type="ClutterGstPlayer*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="new_frame">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Player" c:type="ClutterGstPlayer*"/>
          </instance-parameter>
          <parameter name="frame" transfer-ownership="none">
            <type name="Frame" c:type="ClutterGstFrame*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="ready">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Player" c:type="ClutterGstPlayer*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="set_audio_volume"
                      invoker="set_audio_volume"
                      version="3.0">
        <doc xml:space="preserve">Sets the playback volume of @self to @volume.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">a #ClutterGstPlayer</doc>
            <type name="Player" c:type="ClutterGstPlayer*"/>
          </instance-parameter>
          <parameter name="volume" transfer-ownership="none">
            <doc xml:space="preserve">the volume as a double between 0.0 and 1.0</doc>
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="set_playing" invoker="set_playing" version="3.0">
        <doc xml:space="preserve">Starts or stops playing of @self.

The implementation might be asynchronous, so the way to know whether
the actual playing state of the @self is to use the #GObject::notify
signal on the #ClutterGstPlayer:playing property and then retrieve the
current state with clutter_gst_player_get_playing(). ClutterGstVideoActor
in clutter-gst is an example of such an asynchronous implementation.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">a #ClutterGstPlayer</doc>
            <type name="Player" c:type="ClutterGstPlayer*"/>
          </instance-parameter>
          <parameter name="playing" transfer-ownership="none">
            <doc xml:space="preserve">%TRUE to start playing</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="size_change">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Player" c:type="ClutterGstPlayer*"/>
          </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>
        </parameters>
      </virtual-method>
      <method name="get_audio_volume"
              c:identifier="clutter_gst_player_get_audio_volume"
              version="3.0">
        <doc xml:space="preserve">Retrieves the playback volume of @self.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">The playback volume between 0.0 and 1.0</doc>
          <type name="gdouble" c:type="gdouble"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">a #ClutterGstPlayer</doc>
            <type name="Player" c:type="ClutterGstPlayer*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_frame"
              c:identifier="clutter_gst_player_get_frame"
              version="3.0">
        <doc xml:space="preserve">Retrieves the #ClutterGstFrame of the last frame produced by @self.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the #ClutterGstFrame of the last frame.</doc>
          <type name="Frame" c:type="ClutterGstFrame*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">a #ClutterGstPlayer</doc>
            <type name="Player" c:type="ClutterGstPlayer*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_idle"
              c:identifier="clutter_gst_player_get_idle"
              version="3.0">
        <doc xml:space="preserve">Get the idle state of the pipeline.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">TRUE if the pipline is in idle mode, FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">a #ClutterGstPlayer</doc>
            <type name="Player" c:type="ClutterGstPlayer*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_pipeline"
              c:identifier="clutter_gst_player_get_pipeline"
              version="3.0">
        <doc xml:space="preserve">Retrieves the #GstPipeline used by the @self, for direct use with
GStreamer API.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the #GstPipeline element used by the player</doc>
          <type name="Gst.Element" c:type="GstElement*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">a #ClutterGstPlayer</doc>
            <type name="Player" c:type="ClutterGstPlayer*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_playing"
              c:identifier="clutter_gst_player_get_playing"
              version="3.0">
        <doc xml:space="preserve">Retrieves the playing status of @self.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if playing, %FALSE if stopped.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">A #ClutterGstPlayer object</doc>
            <type name="Player" c:type="ClutterGstPlayer*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_video_sink"
              c:identifier="clutter_gst_player_get_video_sink"
              version="3.0">
        <doc xml:space="preserve">Retrieves the #ClutterGstVideoSink used by the @self.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the #ClutterGstVideoSink element used by the player</doc>
          <type name="VideoSink" c:type="ClutterGstVideoSink*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">a #ClutterGstPlayer</doc>
            <type name="Player" c:type="ClutterGstPlayer*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set_audio_volume"
              c:identifier="clutter_gst_player_set_audio_volume"
              version="3.0">
        <doc xml:space="preserve">Sets the playback volume of @self to @volume.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">a #ClutterGstPlayer</doc>
            <type name="Player" c:type="ClutterGstPlayer*"/>
          </instance-parameter>
          <parameter name="volume" transfer-ownership="none">
            <doc xml:space="preserve">the volume as a double between 0.0 and 1.0</doc>
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_playing"
              c:identifier="clutter_gst_player_set_playing"
              version="3.0">
        <doc xml:space="preserve">Starts or stops playing of @self.

The implementation might be asynchronous, so the way to know whether
the actual playing state of the @self is to use the #GObject::notify
signal on the #ClutterGstPlayer:playing property and then retrieve the
current state with clutter_gst_player_get_playing(). ClutterGstVideoActor
in clutter-gst is an example of such an asynchronous implementation.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">a #ClutterGstPlayer</doc>
            <type name="Player" c:type="ClutterGstPlayer*"/>
          </instance-parameter>
          <parameter name="playing" transfer-ownership="none">
            <doc xml:space="preserve">%TRUE to start playing</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <property name="audio-volume" writable="1" transfer-ownership="none">
        <doc xml:space="preserve">The volume of the audio, as a normalized value between
0.0 and 1.0.</doc>
        <type name="gdouble" c:type="gdouble"/>
      </property>
      <property name="idle" version="1.4" transfer-ownership="none">
        <doc xml:space="preserve">Whether the #ClutterGstPlayer is in idle mode.</doc>
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <property name="playing" writable="1" transfer-ownership="none">
        <doc xml:space="preserve">Whether the #ClutterGstPlayer actor is playing.</doc>
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <glib:signal name="eos" when="last">
        <doc xml:space="preserve">The ::eos signal is emitted each time the media stream ends.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </glib:signal>
      <glib:signal name="error" when="last">
        <doc xml:space="preserve">The ::error signal is emitted each time an error occurred.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="error" transfer-ownership="none">
            <doc xml:space="preserve">the #GError</doc>
            <type name="GLib.Error"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="new-frame" when="last">
        <doc xml:space="preserve">The ::new-frame signal is emitted each time a frame is received
from the video sink.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="frame" transfer-ownership="none">
            <doc xml:space="preserve">the #ClutterGstFrame newly received from the video sink</doc>
            <type name="Frame"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="ready" when="last">
        <doc xml:space="preserve">The ::ready signal is emitted each time the gstreamer pipeline
becomes ready.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </glib:signal>
      <glib:signal name="size-change" when="last">
        <doc xml:space="preserve">The ::size-change signal is emitted each time the new frame
has different dimensions to the previous frame.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="width" transfer-ownership="none">
            <doc xml:space="preserve">new width of the frames</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="height" transfer-ownership="none">
            <doc xml:space="preserve">new height of the frames</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </glib:signal>
    </interface>
    <record name="PlayerIface"
            c:type="ClutterGstPlayerIface"
            glib:is-gtype-struct-for="Player"
            version="1.4">
      <doc xml:space="preserve">Interface vtable for #ClutterGstPlayer implementations</doc>
      <field name="base_iface" readable="0" private="1">
        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
      </field>
      <field name="priv" readable="0" private="1">
        <type name="PlayerIfacePrivate"
              c:type="ClutterGstPlayerIfacePrivate*"/>
      </field>
      <field name="get_frame">
        <callback name="get_frame">
          <return-value transfer-ownership="none">
            <doc xml:space="preserve">the #ClutterGstFrame of the last frame.</doc>
            <type name="Frame" c:type="ClutterGstFrame*"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve">a #ClutterGstPlayer</doc>
              <type name="Player" c:type="ClutterGstPlayer*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_pipeline">
        <callback name="get_pipeline">
          <return-value transfer-ownership="none">
            <doc xml:space="preserve">the #GstPipeline element used by the player</doc>
            <type name="Gst.Element" c:type="GstElement*"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve">a #ClutterGstPlayer</doc>
              <type name="Player" c:type="ClutterGstPlayer*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_video_sink">
        <callback name="get_video_sink">
          <return-value transfer-ownership="none">
            <doc xml:space="preserve">the #ClutterGstVideoSink element used by the player</doc>
            <type name="VideoSink" c:type="ClutterGstVideoSink*"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve">a #ClutterGstPlayer</doc>
              <type name="Player" c:type="ClutterGstPlayer*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_idle">
        <callback name="get_idle">
          <return-value transfer-ownership="none">
            <doc xml:space="preserve">TRUE if the pipline is in idle mode, FALSE otherwise.</doc>
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve">a #ClutterGstPlayer</doc>
              <type name="Player" c:type="ClutterGstPlayer*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_audio_volume">
        <callback name="get_audio_volume">
          <return-value transfer-ownership="none">
            <doc xml:space="preserve">The playback volume between 0.0 and 1.0</doc>
            <type name="gdouble" c:type="gdouble"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve">a #ClutterGstPlayer</doc>
              <type name="Player" c:type="ClutterGstPlayer*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="set_audio_volume">
        <callback name="set_audio_volume">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve">a #ClutterGstPlayer</doc>
              <type name="Player" c:type="ClutterGstPlayer*"/>
            </parameter>
            <parameter name="volume" transfer-ownership="none">
              <doc xml:space="preserve">the volume as a double between 0.0 and 1.0</doc>
              <type name="gdouble" c:type="gdouble"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_playing">
        <callback name="get_playing">
          <return-value transfer-ownership="none">
            <doc xml:space="preserve">%TRUE if playing, %FALSE if stopped.</doc>
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve">A #ClutterGstPlayer object</doc>
              <type name="Player" c:type="ClutterGstPlayer*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="set_playing">
        <callback name="set_playing">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve">a #ClutterGstPlayer</doc>
              <type name="Player" c:type="ClutterGstPlayer*"/>
            </parameter>
            <parameter name="playing" transfer-ownership="none">
              <doc xml:space="preserve">%TRUE to start playing</doc>
              <type name="gboolean" c:type="gboolean"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="_padding_vfuncs" readable="0" private="1">
        <array zero-terminated="0" c:type="gpointer" fixed-size="16">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
      <field name="new_frame">
        <callback name="new_frame">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <type name="Player" c:type="ClutterGstPlayer*"/>
            </parameter>
            <parameter name="frame" transfer-ownership="none">
              <type name="Frame" c:type="ClutterGstFrame*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="ready">
        <callback name="ready">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <type name="Player" c:type="ClutterGstPlayer*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="eos">
        <callback name="eos">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <type name="Player" c:type="ClutterGstPlayer*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="error">
        <callback name="error">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <type name="Player" c:type="ClutterGstPlayer*"/>
            </parameter>
            <parameter name="error" transfer-ownership="none">
              <type name="GLib.Error" c:type="const GError*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="size_change">
        <callback name="size_change">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <type name="Player" c:type="ClutterGstPlayer*"/>
            </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>
        </callback>
      </field>
      <field name="_padding_signals" readable="0" private="1">
        <array zero-terminated="0" c:type="gpointer" fixed-size="8">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
    </record>
    <record name="PlayerIfacePrivate"
            c:type="ClutterGstPlayerIfacePrivate"
            disguised="1">
    </record>
    <bitfield name="SeekFlags"
              version="1.4"
              glib:type-name="ClutterGstSeekFlags"
              glib:get-type="clutter_gst_seek_flags_get_type"
              c:type="ClutterGstSeekFlags">
      <doc xml:space="preserve">Flags that can be given to clutter_gst_player_set_seek_flags().</doc>
      <member name="none"
              value="0"
              c:identifier="CLUTTER_GST_SEEK_FLAG_NONE"
              glib:nick="none">
        <doc xml:space="preserve">Fast seeks (key frame boundaries, default)</doc>
      </member>
      <member name="accurate"
              value="1"
              c:identifier="CLUTTER_GST_SEEK_FLAG_ACCURATE"
              glib:nick="accurate">
        <doc xml:space="preserve">Accurate seeks (potentially slower)</doc>
      </member>
    </bitfield>
    <constant name="VERSION_HEX" value="0" c:type="CLUTTER_GST_VERSION_HEX">
      <doc xml:space="preserve">ClutterGst full version, encoded as an hexadecimal value.</doc>
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="VERSION_S" value="3.0.18" c:type="CLUTTER_GST_VERSION_S">
      <doc xml:space="preserve">ClutterGst full version, encoded as a string.</doc>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <record name="VideoResolution"
            c:type="ClutterGstVideoResolution"
            version="3.0">
      <doc xml:space="preserve">A video resolution.</doc>
      <field name="width" writable="1">
        <doc xml:space="preserve">the width, in pixels</doc>
        <type name="gint" c:type="gint"/>
      </field>
      <field name="height" writable="1">
        <doc xml:space="preserve">the height, in pixels</doc>
        <type name="gint" c:type="gint"/>
      </field>
      <field name="par_n" writable="1">
        <type name="gint" c:type="gint"/>
      </field>
      <field name="par_d" writable="1">
        <type name="gint" c:type="gint"/>
      </field>
    </record>
    <class name="VideoSink"
           c:symbol-prefix="video_sink"
           c:type="ClutterGstVideoSink"
           version="3.0"
           parent="GstVideo.VideoSink"
           glib:type-name="ClutterGstVideoSink"
           glib:get-type="clutter_gst_video_sink_get_type"
           glib:type-struct="VideoSinkClass">
      <doc xml:space="preserve">The #ClutterGstVideoSink structure contains only private data and
should be accessed using the provided API.</doc>
      <implements name="GstVideo.ColorBalance"/>
      <implements name="GstVideo.Navigation"/>
      <constructor name="new"
                   c:identifier="clutter_gst_video_sink_new"
                   version="3.0">
        <doc xml:space="preserve">Creates a new #ClutterGstVideoSink</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new #ClutterGstVideoSink</doc>
          <type name="VideoSink" c:type="ClutterGstVideoSink*"/>
        </return-value>
      </constructor>
      <virtual-method name="new_frame">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="sink" transfer-ownership="none">
            <type name="VideoSink" c:type="ClutterGstVideoSink*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="new_overlays">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="sink" transfer-ownership="none">
            <type name="VideoSink" c:type="ClutterGstVideoSink*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="pipeline_ready">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="sink" transfer-ownership="none">
            <type name="VideoSink" c:type="ClutterGstVideoSink*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <method name="get_frame"
              c:identifier="clutter_gst_video_sink_get_frame"
              version="3.0">
        <doc xml:space="preserve">Returns a #ClutterGstFrame object suitable to render the current
frame of the given video sink. An application is free to make a
copy of this pipeline and modify it for custom rendering.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">A #ClutterGstFrame or NULL if there
  isn't a frame to be displayed yet.</doc>
          <type name="Frame" c:type="ClutterGstFrame*"/>
        </return-value>
        <parameters>
          <instance-parameter name="sink" transfer-ownership="none">
            <doc xml:space="preserve">The #ClutterGstVideoSink</doc>
            <type name="VideoSink" c:type="ClutterGstVideoSink*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_overlays"
              c:identifier="clutter_gst_video_sink_get_overlays">
        <return-value transfer-ownership="full">
          <type name="Overlays" c:type="ClutterGstOverlays*"/>
        </return-value>
        <parameters>
          <instance-parameter name="sink" transfer-ownership="none">
            <type name="VideoSink" c:type="ClutterGstVideoSink*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_pipeline"
              c:identifier="clutter_gst_video_sink_get_pipeline"
              version="3.0"
              introspectable="0">
        <doc xml:space="preserve">Returns a pipeline suitable for rendering the current frame of the
given video sink. The pipeline will already have the textures for
the frame attached. For simple rendering, an application will
typically call this function immediately before it paints the
video. It can then just paint a rectangle using the returned
pipeline.

An application is free to make a copy of this
pipeline and modify it for custom rendering.

Note: it is considered an error to call this function before the
#ClutterGstVideoSink::pipeline-ready signal is emitted.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the pipeline for rendering the
  current frame</doc>
          <type c:type="CoglPipeline*"/>
        </return-value>
        <parameters>
          <instance-parameter name="sink" transfer-ownership="none">
            <doc xml:space="preserve">The #ClutterGstVideoSink</doc>
            <type name="VideoSink" c:type="ClutterGstVideoSink*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="is_ready"
              c:identifier="clutter_gst_video_sink_is_ready"
              version="3.0">
        <doc xml:space="preserve">Returns whether the pipeline is ready and so
clutter_gst_video_sink_get_pipeline() and
clutter_gst_video_sink_setup_pipeline() can be called without causing error.

Note: Normally an application will wait until the
#ClutterGstVideoSink::pipeline-ready signal is emitted instead of
polling the ready status with this api, but sometimes when a sink
is passed between components that didn't have an opportunity to
connect a signal handler this can be useful.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if the sink is ready, else %FALSE</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="sink" transfer-ownership="none">
            <doc xml:space="preserve">The #ClutterGstVideoSink</doc>
            <type name="VideoSink" c:type="ClutterGstVideoSink*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="setup_pipeline"
              c:identifier="clutter_gst_video_sink_setup_pipeline"
              version="3.0"
              introspectable="0">
        <doc xml:space="preserve">Configures the given pipeline so that will be able to render the
video for the @sink. This should only be used if the application
wants to perform some custom rendering using its own pipeline.
Typically an application will call this in response to the
#ClutterGstVideoSink::pipeline-ready signal.

Note: it is considered an error to call this function before the
#ClutterGstVideoSink::pipeline-ready signal is emitted.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="sink" transfer-ownership="none">
            <doc xml:space="preserve">The #ClutterGstVideoSink</doc>
            <type name="VideoSink" c:type="ClutterGstVideoSink*"/>
          </instance-parameter>
          <parameter name="pipeline" transfer-ownership="none">
            <doc xml:space="preserve">A #CoglPipeline</doc>
            <type c:type="CoglPipeline*"/>
          </parameter>
        </parameters>
      </method>
      <property name="update-priority" writable="1" transfer-ownership="none">
        <type name="gint" c:type="gint"/>
      </property>
      <field name="parent" readable="0" private="1">
        <type name="GstVideo.VideoSink" c:type="GstVideoSink"/>
      </field>
      <field name="priv" readable="0" private="1">
        <type name="VideoSinkPrivate" c:type="ClutterGstVideoSinkPrivate*"/>
      </field>
      <glib:signal name="new-frame" when="last" version="3.0">
        <doc xml:space="preserve">The sink will emit this signal whenever there are new textures
available for a new frame of the video. After this signal is
emitted, an application can call clutter_gst_video_sink_get_pipeline()
to get a pipeline suitable for rendering the frame. If the
application is using a custom pipeline it can alternatively call
clutter_gst_video_sink_attach_frame() to attach the textures.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </glib:signal>
      <glib:signal name="new-overlays" when="last" version="3.0">
        <doc xml:space="preserve">The sink will emit this signal whenever there are new textures
available for set of overlays on the video. After this signal is
emitted, an application can call
clutter_gst_video_sink_get_overlays() to get a set of pipelines
suitable for rendering overlays on a video frame.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </glib:signal>
      <glib:signal name="pipeline-ready" when="last" version="3.0">
        <doc xml:space="preserve">The sink will emit this signal as soon as it has gathered enough
information from the video to configure a pipeline. If the
application wants to do some customized rendering, it can setup its
pipeline after this signal is emitted. The application's pipeline
will typically either be a copy of the one returned by
clutter_gst_video_sink_get_pipeline() or it can be a completely custom
pipeline which is setup using clutter_gst_video_sink_setup_pipeline().

Note that it is an error to call either of those functions before
this signal is emitted. The #ClutterGstVideoSink::new-frame signal
will only be emitted after the pipeline is ready so the application
could also create its pipeline in the handler for that.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </glib:signal>
    </class>
    <record name="VideoSinkClass"
            c:type="ClutterGstVideoSinkClass"
            glib:is-gtype-struct-for="VideoSink"
            version="3.0">
      <field name="parent_class" readable="0" private="1">
        <type name="GstVideo.VideoSinkClass" c:type="GstVideoSinkClass"/>
      </field>
      <field name="new_frame">
        <callback name="new_frame">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="sink" transfer-ownership="none">
              <type name="VideoSink" c:type="ClutterGstVideoSink*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="pipeline_ready">
        <callback name="pipeline_ready">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="sink" transfer-ownership="none">
              <type name="VideoSink" c:type="ClutterGstVideoSink*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="new_overlays">
        <callback name="new_overlays">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="sink" transfer-ownership="none">
              <type name="VideoSink" c:type="ClutterGstVideoSink*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="_padding_dummy" readable="0" private="1">
        <array zero-terminated="0" c:type="void" fixed-size="8">
          <type name="gpointer" c:type="void*"/>
        </array>
      </field>
    </record>
    <record name="VideoSinkPrivate"
            c:type="ClutterGstVideoSinkPrivate"
            disguised="1">
    </record>
    <function name="create_video_sink"
              c:identifier="clutter_gst_create_video_sink"
              version="3.0">
      <doc xml:space="preserve">Creates a new #ClutterGstVideoSink initialized with Clutter's Cogl context.</doc>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve">the newly created #ClutterGstVideoSink.</doc>
        <type name="Gst.Element" c:type="GstElement*"/>
      </return-value>
    </function>
    <function name="init" c:identifier="clutter_gst_init">
      <doc xml:space="preserve">Utility function to initialize both Clutter and GStreamer.

This function should be called before calling any other GLib functions. If
this is not an option, your program must initialise the GLib thread system
using g_thread_init() before any other GLib functions are called.</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">A #ClutterInitError.</doc>
        <type name="Clutter.InitError" c:type="ClutterInitError"/>
      </return-value>
      <parameters>
        <parameter name="argc"
                   direction="inout"
                   caller-allocates="0"
                   transfer-ownership="full">
          <doc xml:space="preserve">The number of arguments in @argv</doc>
          <type name="gint" c:type="int*"/>
        </parameter>
        <parameter name="argv"
                   direction="inout"
                   caller-allocates="0"
                   transfer-ownership="full"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve">A pointer to an array</doc>
          <array length="0" zero-terminated="0" c:type="char***">
            <type name="utf8" c:type="char**"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="init_with_args"
              c:identifier="clutter_gst_init_with_args"
              version="1.0"
              throws="1">
      <doc xml:space="preserve">This function does the same work as clutter_gst_init(). Additionally, it
allows you to add your own command line options, and it automatically
generates nicely formatted --help output. Clutter's and GStreamer's
#GOptionGroup&lt;!-- --&gt;s are added to the set of available options.

Your program must initialise the GLib thread system using g_thread_init()
before any other GLib functions are called.</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">%CLUTTER_INIT_SUCCESS on success, a negative integer
  on failure.</doc>
        <type name="Clutter.InitError" c:type="ClutterInitError"/>
      </return-value>
      <parameters>
        <parameter name="argc"
                   direction="inout"
                   caller-allocates="0"
                   transfer-ownership="full">
          <doc xml:space="preserve">The number of arguments in @argv</doc>
          <type name="gint" c:type="int*"/>
        </parameter>
        <parameter name="argv"
                   direction="inout"
                   caller-allocates="0"
                   transfer-ownership="full"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve">A pointer to an array</doc>
          <array length="0" zero-terminated="0" c:type="char***">
            <type name="utf8" c:type="char**"/>
          </array>
        </parameter>
        <parameter name="parameter_string" transfer-ownership="none">
          <doc xml:space="preserve">a string which is displayed in
   the first line of &lt;option&gt;--help&lt;/option&gt; output, after
   &lt;literal&gt;&lt;replaceable&gt;programname&lt;/replaceable&gt; [OPTION...]&lt;/literal&gt;</doc>
          <type name="utf8" c:type="const char*"/>
        </parameter>
        <parameter name="entries" transfer-ownership="none">
          <doc xml:space="preserve">a %NULL-terminated array of #GOptionEntry&lt;!-- --&gt;s
   describing the options of your program</doc>
          <type name="GLib.OptionEntry" c:type="GOptionEntry*"/>
        </parameter>
        <parameter name="translation_domain" transfer-ownership="none">
          <doc xml:space="preserve">a translation domain to use for translating
   the &lt;option&gt;--help&lt;/option&gt; output for the options in @entries
   with gettext(), or %NULL</doc>
          <type name="utf8" c:type="const char*"/>
        </parameter>
      </parameters>
    </function>
  </namespace>
</repository>
