<?xml version="1.0"?>
<!-- This file was automatically generated from C sources - DO NOT EDIT!
To affect the contents of this file, edit the original C definitions,
and/or use gtk-doc annotations.  -->
<repository version="1.2"
            xmlns="http://www.gtk.org/introspection/core/1.0"
            xmlns:c="http://www.gtk.org/introspection/c/1.0"
            xmlns:glib="http://www.gtk.org/introspection/glib/1.0">
  <include name="Gst" version="0.10"/>
  <include name="GstBase" version="0.10"/>
  <package name="gstreamer-video-0.10"/>
  <c:include name="gst/video/gstvideofilter.h"/>
  <c:include name="gst/video/gstvideosink.h"/>
  <c:include name="gst/video/video-enumtypes.h"/>
  <c:include name="gst/video/video-overlay-composition.h"/>
  <c:include name="gst/video/video.h"/>
  <namespace name="GstVideo"
             version="0.10"
             shared-library="libgstvideo-0.10.so.0"
             c:identifier-prefixes="Gst"
             c:symbol-prefixes="gst">
    <constant name="VIDEO_BYTE1_MASK_24"
              value="0x00FF0000"
              c:type="GST_VIDEO_BYTE1_MASK_24">
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="VIDEO_BYTE1_MASK_24_INT"
              value="16711680"
              c:type="GST_VIDEO_BYTE1_MASK_24_INT">
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="VIDEO_BYTE1_MASK_32"
              value="0xFF000000"
              c:type="GST_VIDEO_BYTE1_MASK_32">
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="VIDEO_BYTE1_MASK_32_INT"
              value="4278190080"
              c:type="GST_VIDEO_BYTE1_MASK_32_INT">
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="VIDEO_BYTE2_MASK_24"
              value="0x0000FF00"
              c:type="GST_VIDEO_BYTE2_MASK_24">
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="VIDEO_BYTE2_MASK_24_INT"
              value="65280"
              c:type="GST_VIDEO_BYTE2_MASK_24_INT">
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="VIDEO_BYTE2_MASK_32"
              value="0x00FF0000"
              c:type="GST_VIDEO_BYTE2_MASK_32">
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="VIDEO_BYTE2_MASK_32_INT"
              value="16711680"
              c:type="GST_VIDEO_BYTE2_MASK_32_INT">
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="VIDEO_BYTE3_MASK_24"
              value="0x000000FF"
              c:type="GST_VIDEO_BYTE3_MASK_24">
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="VIDEO_BYTE3_MASK_24_INT"
              value="255"
              c:type="GST_VIDEO_BYTE3_MASK_24_INT">
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="VIDEO_BYTE3_MASK_32"
              value="0x0000FF00"
              c:type="GST_VIDEO_BYTE3_MASK_32">
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="VIDEO_BYTE3_MASK_32_INT"
              value="65280"
              c:type="GST_VIDEO_BYTE3_MASK_32_INT">
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="VIDEO_BYTE4_MASK_32"
              value="0x000000FF"
              c:type="GST_VIDEO_BYTE4_MASK_32">
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="VIDEO_BYTE4_MASK_32_INT"
              value="255"
              c:type="GST_VIDEO_BYTE4_MASK_32_INT">
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="VIDEO_CAPS_GRAY8"
              value="video/x-raw-gray, bpp = (int) 8, depth = (int) 8, width = "
              c:type="GST_VIDEO_CAPS_GRAY8"
              version="0.10.29">
      <doc xml:space="preserve">Generic caps string for 8-bit grayscale video, for use in pad templates.</doc>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="VIDEO_CAPS_RGB8_PALETTED"
              value="video/x-raw-rgb, bpp = (int)8, depth = (int)8, width = "
              c:type="GST_VIDEO_CAPS_RGB8_PALETTED"
              version="0.10.32">
      <doc xml:space="preserve">Generic caps string for 8-bit paletted RGB video, for use in pad templates.</doc>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="VIDEO_CAPS_r210"
              value="video/x-raw-rgb, bpp = (int) 32, depth = (int) 30, endianness = (int) BIG_ENDIAN, red_mask = (int) 0x3ff00000, green_mask = (int) 0x000ffc00, blue_mask = (int) 0x000003ff, width = "
              c:type="GST_VIDEO_CAPS_r210">
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="VIDEO_COMP1_MASK_15"
              value="0x7c00"
              c:type="GST_VIDEO_COMP1_MASK_15">
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="VIDEO_COMP1_MASK_15_INT"
              value="31744"
              c:type="GST_VIDEO_COMP1_MASK_15_INT">
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="VIDEO_COMP1_MASK_16"
              value="0xf800"
              c:type="GST_VIDEO_COMP1_MASK_16">
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="VIDEO_COMP1_MASK_16_INT"
              value="63488"
              c:type="GST_VIDEO_COMP1_MASK_16_INT">
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="VIDEO_COMP2_MASK_15"
              value="0x03e0"
              c:type="GST_VIDEO_COMP2_MASK_15">
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="VIDEO_COMP2_MASK_15_INT"
              value="992"
              c:type="GST_VIDEO_COMP2_MASK_15_INT">
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="VIDEO_COMP2_MASK_16"
              value="0x07e0"
              c:type="GST_VIDEO_COMP2_MASK_16">
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="VIDEO_COMP2_MASK_16_INT"
              value="2016"
              c:type="GST_VIDEO_COMP2_MASK_16_INT">
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="VIDEO_COMP3_MASK_15"
              value="0x001f"
              c:type="GST_VIDEO_COMP3_MASK_15">
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="VIDEO_COMP3_MASK_15_INT"
              value="31"
              c:type="GST_VIDEO_COMP3_MASK_15_INT">
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="VIDEO_COMP3_MASK_16"
              value="0x001f"
              c:type="GST_VIDEO_COMP3_MASK_16">
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="VIDEO_COMP3_MASK_16_INT"
              value="31"
              c:type="GST_VIDEO_COMP3_MASK_16_INT">
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="VIDEO_FPS_RANGE"
              value="(fraction) [ 0, max ]"
              c:type="GST_VIDEO_FPS_RANGE">
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="VIDEO_SIZE_RANGE"
              value="(int) [ 1, max ]"
              c:type="GST_VIDEO_SIZE_RANGE">
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <callback name="VideoConvertFrameCallback"
              c:type="GstVideoConvertFrameCallback">
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="buf" transfer-ownership="none">
          <type name="Gst.Buffer" c:type="GstBuffer*"/>
        </parameter>
        <parameter name="error" transfer-ownership="none">
          <type name="GLib.Error" c:type="GError*"/>
        </parameter>
        <parameter name="user_data"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1"
                   closure="2">
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
      </parameters>
    </callback>
    <class name="VideoFilter"
           c:symbol-prefix="video_filter"
           c:type="GstVideoFilter"
           parent="GstBase.BaseTransform"
           abstract="1"
           glib:type-name="GstVideoFilter"
           glib:get-type="gst_video_filter_get_type"
           glib:type-struct="VideoFilterClass">
      <doc xml:space="preserve">&lt;refsect2&gt;
&lt;para&gt;
Provides useful functions and a base class for video filters.
&lt;/para&gt;
&lt;para&gt;
The videofilter will by default enable QoS on the parent GstBaseTransform
to implement frame dropping.
&lt;/para&gt;
&lt;/refsect2&gt;</doc>
      <field name="element">
        <type name="GstBase.BaseTransform" c:type="GstBaseTransform"/>
      </field>
      <field name="inited">
        <type name="gboolean" c:type="gboolean"/>
      </field>
    </class>
    <record name="VideoFilterClass"
            c:type="GstVideoFilterClass"
            glib:is-gtype-struct-for="VideoFilter">
      <doc xml:space="preserve">The video filter class structure.</doc>
      <field name="parent_class">
        <doc xml:space="preserve">the parent class structure</doc>
        <type name="GstBase.BaseTransformClass"
              c:type="GstBaseTransformClass"/>
      </field>
    </record>
    <enumeration name="VideoFormat"
                 glib:type-name="GstVideoFormat"
                 glib:get-type="gst_video_format_get_type"
                 c:type="GstVideoFormat">
      <doc xml:space="preserve">Enum value describing the most common video formats.</doc>
      <member name="unknown"
              value="0"
              c:identifier="GST_VIDEO_FORMAT_UNKNOWN"
              glib:nick="unknown">
        <doc xml:space="preserve">Unknown or unset video format id</doc>
      </member>
      <member name="i420"
              value="1"
              c:identifier="GST_VIDEO_FORMAT_I420"
              glib:nick="i420">
        <doc xml:space="preserve">planar 4:2:0 YUV</doc>
      </member>
      <member name="yv12"
              value="2"
              c:identifier="GST_VIDEO_FORMAT_YV12"
              glib:nick="yv12">
        <doc xml:space="preserve">planar 4:2:0 YVU (like I420 but UV planes swapped)</doc>
      </member>
      <member name="yuy2"
              value="3"
              c:identifier="GST_VIDEO_FORMAT_YUY2"
              glib:nick="yuy2">
        <doc xml:space="preserve">packed 4:2:2 YUV (Y0-U0-Y1-V0 Y2-U2-Y3-V2 Y4 ...)</doc>
      </member>
      <member name="uyvy"
              value="4"
              c:identifier="GST_VIDEO_FORMAT_UYVY"
              glib:nick="uyvy">
        <doc xml:space="preserve">packed 4:2:2 YUV (U0-Y0-V0-Y1 U2-Y2-V2-Y3 U4 ...)</doc>
      </member>
      <member name="ayuv"
              value="5"
              c:identifier="GST_VIDEO_FORMAT_AYUV"
              glib:nick="ayuv">
        <doc xml:space="preserve">packed 4:4:4 YUV with alpha channel (A0-Y0-U0-V0 ...)</doc>
      </member>
      <member name="rgbx"
              value="6"
              c:identifier="GST_VIDEO_FORMAT_RGBx"
              glib:nick="rgbx">
        <doc xml:space="preserve">sparse rgb packed into 32 bit, space last</doc>
      </member>
      <member name="bgrx"
              value="7"
              c:identifier="GST_VIDEO_FORMAT_BGRx"
              glib:nick="bgrx">
        <doc xml:space="preserve">sparse reverse rgb packed into 32 bit, space last</doc>
      </member>
      <member name="xrgb"
              value="8"
              c:identifier="GST_VIDEO_FORMAT_xRGB"
              glib:nick="xrgb">
        <doc xml:space="preserve">sparse rgb packed into 32 bit, space first</doc>
      </member>
      <member name="xbgr"
              value="9"
              c:identifier="GST_VIDEO_FORMAT_xBGR"
              glib:nick="xbgr">
        <doc xml:space="preserve">sparse reverse rgb packed into 32 bit, space first</doc>
      </member>
      <member name="rgba"
              value="10"
              c:identifier="GST_VIDEO_FORMAT_RGBA"
              glib:nick="rgba">
        <doc xml:space="preserve">rgb with alpha channel last</doc>
      </member>
      <member name="bgra"
              value="11"
              c:identifier="GST_VIDEO_FORMAT_BGRA"
              glib:nick="bgra">
        <doc xml:space="preserve">reverse rgb with alpha channel last</doc>
      </member>
      <member name="argb"
              value="12"
              c:identifier="GST_VIDEO_FORMAT_ARGB"
              glib:nick="argb">
        <doc xml:space="preserve">rgb with alpha channel first</doc>
      </member>
      <member name="abgr"
              value="13"
              c:identifier="GST_VIDEO_FORMAT_ABGR"
              glib:nick="abgr">
        <doc xml:space="preserve">reverse rgb with alpha channel first</doc>
      </member>
      <member name="rgb"
              value="14"
              c:identifier="GST_VIDEO_FORMAT_RGB"
              glib:nick="rgb">
        <doc xml:space="preserve">rgb</doc>
      </member>
      <member name="bgr"
              value="15"
              c:identifier="GST_VIDEO_FORMAT_BGR"
              glib:nick="bgr">
        <doc xml:space="preserve">reverse rgb</doc>
      </member>
      <member name="y41b"
              value="16"
              c:identifier="GST_VIDEO_FORMAT_Y41B"
              glib:nick="y41b">
        <doc xml:space="preserve">planar 4:1:1 YUV (Since: 0.10.18)</doc>
      </member>
      <member name="y42b"
              value="17"
              c:identifier="GST_VIDEO_FORMAT_Y42B"
              glib:nick="y42b">
        <doc xml:space="preserve">planar 4:2:2 YUV (Since: 0.10.18)</doc>
      </member>
      <member name="yvyu"
              value="18"
              c:identifier="GST_VIDEO_FORMAT_YVYU"
              glib:nick="yvyu">
        <doc xml:space="preserve">packed 4:2:2 YUV (Y0-V0-Y1-U0 Y2-V2-Y3-U2 Y4 ...) (Since: 0.10.23)</doc>
      </member>
      <member name="y444"
              value="19"
              c:identifier="GST_VIDEO_FORMAT_Y444"
              glib:nick="y444">
        <doc xml:space="preserve">planar 4:4:4 YUV (Since: 0.10.24)</doc>
      </member>
      <member name="v210"
              value="20"
              c:identifier="GST_VIDEO_FORMAT_v210"
              glib:nick="v210">
        <doc xml:space="preserve">packed 4:2:2 10-bit YUV, complex format (Since: 0.10.24)</doc>
      </member>
      <member name="v216"
              value="21"
              c:identifier="GST_VIDEO_FORMAT_v216"
              glib:nick="v216">
        <doc xml:space="preserve">packed 4:2:2 16-bit YUV, Y0-U0-Y1-V1 order (Since: 0.10.24)</doc>
      </member>
      <member name="nv12"
              value="22"
              c:identifier="GST_VIDEO_FORMAT_NV12"
              glib:nick="nv12">
        <doc xml:space="preserve">planar 4:2:0 YUV with interleaved UV plane (Since: 0.10.26)</doc>
      </member>
      <member name="nv21"
              value="23"
              c:identifier="GST_VIDEO_FORMAT_NV21"
              glib:nick="nv21">
        <doc xml:space="preserve">planar 4:2:0 YUV with interleaved VU plane (Since: 0.10.26)</doc>
      </member>
      <member name="gray8"
              value="24"
              c:identifier="GST_VIDEO_FORMAT_GRAY8"
              glib:nick="gray8">
        <doc xml:space="preserve">8-bit grayscale (Since: 0.10.29)</doc>
      </member>
      <member name="gray16_be"
              value="25"
              c:identifier="GST_VIDEO_FORMAT_GRAY16_BE"
              glib:nick="gray16-be">
        <doc xml:space="preserve">16-bit grayscale, most significant byte first (Since: 0.10.29)</doc>
      </member>
      <member name="gray16_le"
              value="26"
              c:identifier="GST_VIDEO_FORMAT_GRAY16_LE"
              glib:nick="gray16-le">
        <doc xml:space="preserve">16-bit grayscale, least significant byte first (Since: 0.10.29)</doc>
      </member>
      <member name="v308"
              value="27"
              c:identifier="GST_VIDEO_FORMAT_v308"
              glib:nick="v308">
        <doc xml:space="preserve">packed 4:4:4 YUV (Since: 0.10.29)</doc>
      </member>
      <member name="y800"
              value="28"
              c:identifier="GST_VIDEO_FORMAT_Y800"
              glib:nick="y800">
        <doc xml:space="preserve">same as GST_VIDEO_FORMAT_GRAY8 (Since: 0.10.30)</doc>
      </member>
      <member name="y16"
              value="29"
              c:identifier="GST_VIDEO_FORMAT_Y16"
              glib:nick="y16">
        <doc xml:space="preserve">same as GST_VIDEO_FORMAT_GRAY16_LE (Since: 0.10.30)</doc>
      </member>
      <member name="rgb16"
              value="30"
              c:identifier="GST_VIDEO_FORMAT_RGB16"
              glib:nick="rgb16">
        <doc xml:space="preserve">rgb 5-6-5 bits per component (Since: 0.10.30)</doc>
      </member>
      <member name="bgr16"
              value="31"
              c:identifier="GST_VIDEO_FORMAT_BGR16"
              glib:nick="bgr16">
        <doc xml:space="preserve">reverse rgb 5-6-5 bits per component (Since: 0.10.30)</doc>
      </member>
      <member name="rgb15"
              value="32"
              c:identifier="GST_VIDEO_FORMAT_RGB15"
              glib:nick="rgb15">
        <doc xml:space="preserve">rgb 5-5-5 bits per component (Since: 0.10.30)</doc>
      </member>
      <member name="bgr15"
              value="33"
              c:identifier="GST_VIDEO_FORMAT_BGR15"
              glib:nick="bgr15">
        <doc xml:space="preserve">reverse rgb 5-5-5 bits per component (Since: 0.10.30)</doc>
      </member>
      <member name="uyvp"
              value="34"
              c:identifier="GST_VIDEO_FORMAT_UYVP"
              glib:nick="uyvp">
        <doc xml:space="preserve">packed 10-bit 4:2:2 YUV (U0-Y0-V0-Y1 U2-Y2-V2-Y3 U4 ...) (Since: 0.10.31)</doc>
      </member>
      <member name="a420"
              value="35"
              c:identifier="GST_VIDEO_FORMAT_A420"
              glib:nick="a420">
        <doc xml:space="preserve">planar 4:4:2:0 AYUV (Since: 0.10.31)</doc>
      </member>
      <member name="rgb8_paletted"
              value="36"
              c:identifier="GST_VIDEO_FORMAT_RGB8_PALETTED"
              glib:nick="rgb8-paletted">
        <doc xml:space="preserve">8-bit paletted RGB (Since: 0.10.32)</doc>
      </member>
      <member name="yuv9"
              value="37"
              c:identifier="GST_VIDEO_FORMAT_YUV9"
              glib:nick="yuv9">
        <doc xml:space="preserve">planar 4:1:0 YUV (Since: 0.10.32)</doc>
      </member>
      <member name="yvu9"
              value="38"
              c:identifier="GST_VIDEO_FORMAT_YVU9"
              glib:nick="yvu9">
        <doc xml:space="preserve">planar 4:1:0 YUV (like YUV9 but UV planes swapped) (Since: 0.10.32)</doc>
      </member>
      <member name="iyu1"
              value="39"
              c:identifier="GST_VIDEO_FORMAT_IYU1"
              glib:nick="iyu1">
        <doc xml:space="preserve">packed 4:1:1 YUV (Cb-Y0-Y1-Cr-Y2-Y3 ...) (Since: 0.10.32)</doc>
      </member>
      <member name="argb64"
              value="40"
              c:identifier="GST_VIDEO_FORMAT_ARGB64"
              glib:nick="argb64">
        <doc xml:space="preserve">rgb with alpha channel first, 16 bits per channel (Since: 0.10.33)</doc>
      </member>
      <member name="ayuv64"
              value="41"
              c:identifier="GST_VIDEO_FORMAT_AYUV64"
              glib:nick="ayuv64">
        <doc xml:space="preserve">packed 4:4:4 YUV with alpha channel, 16 bits per channel (A0-Y0-U0-V0 ...) (Since: 0.10.33)</doc>
      </member>
      <member name="r210"
              value="42"
              c:identifier="GST_VIDEO_FORMAT_r210"
              glib:nick="r210">
        <doc xml:space="preserve">packed 4:4:4 RGB, 10 bits per channel (Since: 0.10.33)</doc>
      </member>
      <function name="convert"
                c:identifier="gst_video_format_convert"
                version="0.10.16">
        <doc xml:space="preserve">Converts among various #GstFormat types.  This function handles
GST_FORMAT_BYTES, GST_FORMAT_TIME, and GST_FORMAT_DEFAULT.  For
raw video, GST_FORMAT_DEFAULT corresponds to video frames.  This
function can be to handle pad queries of the type GST_QUERY_CONVERT.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">TRUE if the conversion was successful.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="format" transfer-ownership="none">
            <doc xml:space="preserve">a #GstVideoFormat</doc>
            <type name="VideoFormat" c:type="GstVideoFormat"/>
          </parameter>
          <parameter name="width" transfer-ownership="none">
            <doc xml:space="preserve">the width of video</doc>
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="height" transfer-ownership="none">
            <doc xml:space="preserve">the height of video</doc>
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="fps_n" transfer-ownership="none">
            <doc xml:space="preserve">frame rate numerator</doc>
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="fps_d" transfer-ownership="none">
            <doc xml:space="preserve">frame rate denominator</doc>
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="src_format" transfer-ownership="none">
            <doc xml:space="preserve">#GstFormat of the @src_value</doc>
            <type name="Gst.Format" c:type="GstFormat"/>
          </parameter>
          <parameter name="src_value" transfer-ownership="none">
            <doc xml:space="preserve">value to convert</doc>
            <type name="gint64" c:type="gint64"/>
          </parameter>
          <parameter name="dest_format" transfer-ownership="none">
            <doc xml:space="preserve">#GstFormat of the @dest_value</doc>
            <type name="Gst.Format" c:type="GstFormat"/>
          </parameter>
          <parameter name="dest_value" transfer-ownership="none">
            <doc xml:space="preserve">pointer to destination value</doc>
            <type name="gint64" c:type="gint64*"/>
          </parameter>
        </parameters>
      </function>
      <function name="from_fourcc"
                c:identifier="gst_video_format_from_fourcc"
                version="0.10.16">
        <doc xml:space="preserve">Converts a FOURCC value into the corresponding #GstVideoFormat.
If the FOURCC cannot be represented by #GstVideoFormat,
#GST_VIDEO_FORMAT_UNKNOWN is returned.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the #GstVideoFormat describing the FOURCC value</doc>
          <type name="VideoFormat" c:type="GstVideoFormat"/>
        </return-value>
        <parameters>
          <parameter name="fourcc" transfer-ownership="none">
            <doc xml:space="preserve">a FOURCC value representing raw YUV video</doc>
            <type name="guint32" c:type="guint32"/>
          </parameter>
        </parameters>
      </function>
      <function name="get_component_depth"
                c:identifier="gst_video_format_get_component_depth"
                version="0.10.33">
        <doc xml:space="preserve">Returns the number of bits used to encode an individual pixel of
a given @component.  Typically this is 8, although higher and lower
values are possible for some formats.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">depth of component</doc>
          <type name="gint" c:type="int"/>
        </return-value>
        <parameters>
          <parameter name="format" transfer-ownership="none">
            <doc xml:space="preserve">a #GstVideoFormat</doc>
            <type name="VideoFormat" c:type="GstVideoFormat"/>
          </parameter>
          <parameter name="component" transfer-ownership="none">
            <doc xml:space="preserve">the video component (e.g. 0 for 'R' in RGB)</doc>
            <type name="gint" c:type="int"/>
          </parameter>
        </parameters>
      </function>
      <function name="get_component_height"
                c:identifier="gst_video_format_get_component_height"
                version="0.10.16">
        <doc xml:space="preserve">Calculates the height of the component.  See
@gst_video_format_get_row_stride for a description
of the component index.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">height of component @component</doc>
          <type name="gint" c:type="int"/>
        </return-value>
        <parameters>
          <parameter name="format" transfer-ownership="none">
            <doc xml:space="preserve">a #GstVideoFormat</doc>
            <type name="VideoFormat" c:type="GstVideoFormat"/>
          </parameter>
          <parameter name="component" transfer-ownership="none">
            <doc xml:space="preserve">the component index</doc>
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="height" transfer-ownership="none">
            <doc xml:space="preserve">the height of video</doc>
            <type name="gint" c:type="int"/>
          </parameter>
        </parameters>
      </function>
      <function name="get_component_offset"
                c:identifier="gst_video_format_get_component_offset"
                version="0.10.16">
        <doc xml:space="preserve">Calculates the offset (in bytes) of the first pixel of the component
with index @component.  For packed formats, this will typically be a
small integer (0, 1, 2, 3).  For planar formats, this will be a
(relatively) large offset to the beginning of the second or third
component planes.  See @gst_video_format_get_row_stride for a description
of the component index.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">offset of component @component</doc>
          <type name="gint" c:type="int"/>
        </return-value>
        <parameters>
          <parameter name="format" transfer-ownership="none">
            <doc xml:space="preserve">a #GstVideoFormat</doc>
            <type name="VideoFormat" c:type="GstVideoFormat"/>
          </parameter>
          <parameter name="component" transfer-ownership="none">
            <doc xml:space="preserve">the component index</doc>
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="width" transfer-ownership="none">
            <doc xml:space="preserve">the width of video</doc>
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="height" transfer-ownership="none">
            <doc xml:space="preserve">the height of video</doc>
            <type name="gint" c:type="int"/>
          </parameter>
        </parameters>
      </function>
      <function name="get_component_width"
                c:identifier="gst_video_format_get_component_width"
                version="0.10.16">
        <doc xml:space="preserve">Calculates the width of the component.  See
@gst_video_format_get_row_stride for a description
of the component index.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">width of component @component</doc>
          <type name="gint" c:type="int"/>
        </return-value>
        <parameters>
          <parameter name="format" transfer-ownership="none">
            <doc xml:space="preserve">a #GstVideoFormat</doc>
            <type name="VideoFormat" c:type="GstVideoFormat"/>
          </parameter>
          <parameter name="component" transfer-ownership="none">
            <doc xml:space="preserve">the component index</doc>
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="width" transfer-ownership="none">
            <doc xml:space="preserve">the width of video</doc>
            <type name="gint" c:type="int"/>
          </parameter>
        </parameters>
      </function>
      <function name="get_pixel_stride"
                c:identifier="gst_video_format_get_pixel_stride"
                version="0.10.16">
        <doc xml:space="preserve">Calculates the pixel stride (number of bytes from one pixel to the
pixel to its immediate left) for the video component with an index
of @component.  See @gst_video_format_get_row_stride for a description
of the component index.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">pixel stride of component @component</doc>
          <type name="gint" c:type="int"/>
        </return-value>
        <parameters>
          <parameter name="format" transfer-ownership="none">
            <doc xml:space="preserve">a #GstVideoFormat</doc>
            <type name="VideoFormat" c:type="GstVideoFormat"/>
          </parameter>
          <parameter name="component" transfer-ownership="none">
            <doc xml:space="preserve">the component index</doc>
            <type name="gint" c:type="int"/>
          </parameter>
        </parameters>
      </function>
      <function name="get_row_stride"
                c:identifier="gst_video_format_get_row_stride"
                version="0.10.16">
        <doc xml:space="preserve">Calculates the row stride (number of bytes from one row of pixels to
the next) for the video component with an index of @component.  For
YUV video, Y, U, and V have component indices of 0, 1, and 2,
respectively.  For RGB video, R, G, and B have component indicies of
0, 1, and 2, respectively.  Alpha channels, if present, have a component
index of 3.  The @width parameter always represents the width of the
video, not the component.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">row stride of component @component</doc>
          <type name="gint" c:type="int"/>
        </return-value>
        <parameters>
          <parameter name="format" transfer-ownership="none">
            <doc xml:space="preserve">a #GstVideoFormat</doc>
            <type name="VideoFormat" c:type="GstVideoFormat"/>
          </parameter>
          <parameter name="component" transfer-ownership="none">
            <doc xml:space="preserve">the component index</doc>
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="width" transfer-ownership="none">
            <doc xml:space="preserve">the width of video</doc>
            <type name="gint" c:type="int"/>
          </parameter>
        </parameters>
      </function>
      <function name="get_size"
                c:identifier="gst_video_format_get_size"
                version="0.10.16">
        <doc xml:space="preserve">Calculates the total number of bytes in the raw video format.  This
number should be used when allocating a buffer for raw video.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">size (in bytes) of raw video format</doc>
          <type name="gint" c:type="int"/>
        </return-value>
        <parameters>
          <parameter name="format" transfer-ownership="none">
            <doc xml:space="preserve">a #GstVideoFormat</doc>
            <type name="VideoFormat" c:type="GstVideoFormat"/>
          </parameter>
          <parameter name="width" transfer-ownership="none">
            <doc xml:space="preserve">the width of video</doc>
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="height" transfer-ownership="none">
            <doc xml:space="preserve">the height of video</doc>
            <type name="gint" c:type="int"/>
          </parameter>
        </parameters>
      </function>
      <function name="has_alpha"
                c:identifier="gst_video_format_has_alpha"
                version="0.10.16">
        <doc xml:space="preserve">Returns TRUE or FALSE depending on if the video format provides an
alpha channel.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">TRUE if @format has an alpha channel</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="format" transfer-ownership="none">
            <doc xml:space="preserve">a #GstVideoFormat</doc>
            <type name="VideoFormat" c:type="GstVideoFormat"/>
          </parameter>
        </parameters>
      </function>
      <function name="is_gray"
                c:identifier="gst_video_format_is_gray"
                version="0.10.29">
        <doc xml:space="preserve">Determine whether the video format is a grayscale format.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">TRUE if @format represents grayscale video</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="format" transfer-ownership="none">
            <doc xml:space="preserve">a #GstVideoFormat</doc>
            <type name="VideoFormat" c:type="GstVideoFormat"/>
          </parameter>
        </parameters>
      </function>
      <function name="is_rgb"
                c:identifier="gst_video_format_is_rgb"
                version="0.10.16">
        <doc xml:space="preserve">Determine whether the video format is an RGB format.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">TRUE if @format represents RGB video</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="format" transfer-ownership="none">
            <doc xml:space="preserve">a #GstVideoFormat</doc>
            <type name="VideoFormat" c:type="GstVideoFormat"/>
          </parameter>
        </parameters>
      </function>
      <function name="is_yuv"
                c:identifier="gst_video_format_is_yuv"
                version="0.10.16">
        <doc xml:space="preserve">Determine whether the video format is a YUV format.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">TRUE if @format represents YUV video</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="format" transfer-ownership="none">
            <doc xml:space="preserve">a #GstVideoFormat</doc>
            <type name="VideoFormat" c:type="GstVideoFormat"/>
          </parameter>
        </parameters>
      </function>
      <function name="new_caps"
                c:identifier="gst_video_format_new_caps"
                version="0.10.16">
        <doc xml:space="preserve">Creates a new #GstCaps object based on the parameters provided.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new #GstCaps object, or NULL if there was an error</doc>
          <type name="Gst.Caps" c:type="GstCaps*"/>
        </return-value>
        <parameters>
          <parameter name="format" transfer-ownership="none">
            <doc xml:space="preserve">the #GstVideoFormat describing the raw video format</doc>
            <type name="VideoFormat" c:type="GstVideoFormat"/>
          </parameter>
          <parameter name="width" transfer-ownership="none">
            <doc xml:space="preserve">width of video</doc>
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="height" transfer-ownership="none">
            <doc xml:space="preserve">height of video</doc>
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="framerate_n" transfer-ownership="none">
            <doc xml:space="preserve">numerator of frame rate</doc>
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="framerate_d" transfer-ownership="none">
            <doc xml:space="preserve">denominator of frame rate</doc>
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="par_n" transfer-ownership="none">
            <doc xml:space="preserve">numerator of pixel aspect ratio</doc>
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="par_d" transfer-ownership="none">
            <doc xml:space="preserve">denominator of pixel aspect ratio</doc>
            <type name="gint" c:type="int"/>
          </parameter>
        </parameters>
      </function>
      <function name="new_caps_interlaced"
                c:identifier="gst_video_format_new_caps_interlaced"
                version="0.10.23">
        <doc xml:space="preserve">Creates a new #GstCaps object based on the parameters provided.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new #GstCaps object, or NULL if there was an error</doc>
          <type name="Gst.Caps" c:type="GstCaps*"/>
        </return-value>
        <parameters>
          <parameter name="format" transfer-ownership="none">
            <doc xml:space="preserve">the #GstVideoFormat describing the raw video format</doc>
            <type name="VideoFormat" c:type="GstVideoFormat"/>
          </parameter>
          <parameter name="width" transfer-ownership="none">
            <doc xml:space="preserve">width of video</doc>
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="height" transfer-ownership="none">
            <doc xml:space="preserve">height of video</doc>
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="framerate_n" transfer-ownership="none">
            <doc xml:space="preserve">numerator of frame rate</doc>
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="framerate_d" transfer-ownership="none">
            <doc xml:space="preserve">denominator of frame rate</doc>
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="par_n" transfer-ownership="none">
            <doc xml:space="preserve">numerator of pixel aspect ratio</doc>
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="par_d" transfer-ownership="none">
            <doc xml:space="preserve">denominator of pixel aspect ratio</doc>
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="interlaced" transfer-ownership="none">
            <doc xml:space="preserve">#TRUE if the format is interlaced</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </function>
      <function name="new_template_caps"
                c:identifier="gst_video_format_new_template_caps"
                version="0.10.33">
        <doc xml:space="preserve">Creates a new #GstCaps object based on the parameters provided.
Size, frame rate, and pixel aspect ratio are set to the full
range.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new #GstCaps object, or NULL if there was an error</doc>
          <type name="Gst.Caps" c:type="GstCaps*"/>
        </return-value>
        <parameters>
          <parameter name="format" transfer-ownership="none">
            <doc xml:space="preserve">the #GstVideoFormat describing the raw video format</doc>
            <type name="VideoFormat" c:type="GstVideoFormat"/>
          </parameter>
        </parameters>
      </function>
      <function name="parse_caps"
                c:identifier="gst_video_format_parse_caps"
                version="0.10.16">
        <doc xml:space="preserve">Determines the #GstVideoFormat of @caps and places it in the location
pointed to by @format.  Extracts the size of the video and places it
in the location pointed to by @width and @height.  If @caps does not
represent a video format or does not contain height and width, the
function will fail and return FALSE. If @caps does not represent a raw
video format listed in #GstVideoFormat, but still contains video caps,
this function will return TRUE and set @format to #GST_VIDEO_FORMAT_UNKNOWN.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">TRUE if @caps was parsed correctly.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="caps" transfer-ownership="none">
            <doc xml:space="preserve">the #GstCaps to parse</doc>
            <type name="Gst.Caps" c:type="const GstCaps*"/>
          </parameter>
          <parameter name="format" transfer-ownership="none">
            <doc xml:space="preserve">the #GstVideoFormat of the video represented by @caps (output)</doc>
            <type name="VideoFormat" c:type="GstVideoFormat*"/>
          </parameter>
          <parameter name="width" transfer-ownership="none">
            <doc xml:space="preserve">the width of the video represented by @caps, may be NULL (output)</doc>
            <type name="gint" c:type="int*"/>
          </parameter>
          <parameter name="height" transfer-ownership="none">
            <doc xml:space="preserve">the height of the video represented by @caps, may be NULL (output)</doc>
            <type name="gint" c:type="int*"/>
          </parameter>
        </parameters>
      </function>
      <function name="parse_caps_interlaced"
                c:identifier="gst_video_format_parse_caps_interlaced"
                version="0.10.23">
        <doc xml:space="preserve">Extracts whether the caps represents interlaced content or not and places it
in @interlaced.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">TRUE if @caps was parsed correctly.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="caps" transfer-ownership="none">
            <doc xml:space="preserve">the fixed #GstCaps to parse</doc>
            <type name="Gst.Caps" c:type="GstCaps*"/>
          </parameter>
          <parameter name="interlaced" transfer-ownership="none">
            <doc xml:space="preserve">whether @caps represents interlaced video or not, may be NULL (output)</doc>
            <type name="gboolean" c:type="gboolean*"/>
          </parameter>
        </parameters>
      </function>
      <function name="to_fourcc"
                c:identifier="gst_video_format_to_fourcc"
                version="0.10.16">
        <doc xml:space="preserve">Converts a #GstVideoFormat value into the corresponding FOURCC.  Only
a few YUV formats have corresponding FOURCC values.  If @format has
no corresponding FOURCC value, 0 is returned.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the FOURCC corresponding to @format</doc>
          <type name="guint32" c:type="guint32"/>
        </return-value>
        <parameters>
          <parameter name="format" transfer-ownership="none">
            <doc xml:space="preserve">a #GstVideoFormat video format</doc>
            <type name="VideoFormat" c:type="GstVideoFormat"/>
          </parameter>
        </parameters>
      </function>
    </enumeration>
    <class name="VideoOverlayComposition"
           c:symbol-prefix="video_overlay_composition"
           c:type="GstVideoOverlayComposition"
           version="0.10.36"
           parent="Gst.MiniObject"
           glib:type-name="GstVideoOverlayComposition"
           glib:get-type="gst_video_overlay_composition_get_type"
           glib:type-struct="VideoOverlayCompositionClass"
           glib:fundamental="1">
      <doc xml:space="preserve">&lt;refsect2&gt;
&lt;para&gt;
Functions to create and handle overlay compositions on video buffers.
&lt;/para&gt;
&lt;para&gt;
An overlay composition describes one or more overlay rectangles to be
blended on top of a video buffer.
&lt;/para&gt;
&lt;para&gt;
This API serves two main purposes:
&lt;itemizedlist&gt;
&lt;listitem&gt;
it can be used to attach overlay information (subtitles or logos)
to non-raw video buffers such as GL/VAAPI/VDPAU surfaces. The actual
blending of the overlay can then be done by e.g. the video sink that
processes these non-raw buffers.
&lt;/listitem&gt;
&lt;listitem&gt;
it can also be used to blend overlay rectangles on top of raw video
buffers, thus consolidating blending functionality for raw video in
one place.
&lt;/listitem&gt;
Together, this allows existing overlay elements to easily handle raw
and non-raw video as input in without major changes (once the overlays
have been put into a #GstOverlayComposition object anyway) - for raw
video the overlay can just use the blending function to blend the data
on top of the video, and for surface buffers it can just attach them to
the buffer and let the sink render the overlays.
&lt;/itemizedlist&gt;
&lt;/para&gt;
&lt;/refsect2&gt;</doc>
      <constructor name="new"
                   c:identifier="gst_video_overlay_composition_new"
                   version="0.10.36">
        <doc xml:space="preserve">Creates a new video overlay composition object to hold one or more
overlay rectangles.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new #GstVideoOverlayComposition. Unref with
    gst_video_overlay_composition_unref() when no longer needed.</doc>
          <type name="VideoOverlayComposition"
                c:type="GstVideoOverlayComposition*"/>
        </return-value>
        <parameters>
          <parameter name="rectangle" transfer-ownership="none">
            <doc xml:space="preserve">a #GstVideoOverlayRectangle to add to the
    composition</doc>
            <type name="VideoOverlayRectangle"
                  c:type="GstVideoOverlayRectangle*"/>
          </parameter>
        </parameters>
      </constructor>
      <method name="add_rectangle"
              c:identifier="gst_video_overlay_composition_add_rectangle"
              version="0.10.36">
        <doc xml:space="preserve">Adds an overlay rectangle to an existing overlay composition object. This
must be done right after creating the overlay composition.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="comp" transfer-ownership="none">
            <doc xml:space="preserve">a #GstVideoOverlayComposition</doc>
            <type name="VideoOverlayComposition"
                  c:type="GstVideoOverlayComposition*"/>
          </instance-parameter>
          <parameter name="rectangle" transfer-ownership="none">
            <doc xml:space="preserve">a #GstVideoOverlayRectangle to add to the
    composition</doc>
            <type name="VideoOverlayRectangle"
                  c:type="GstVideoOverlayRectangle*"/>
          </parameter>
        </parameters>
      </method>
      <method name="blend"
              c:identifier="gst_video_overlay_composition_blend"
              version="0.10.36">
        <doc xml:space="preserve">Blends the overlay rectangles in @comp on top of the raw video data
contained in @video_buf. The data in @video_buf must be writable. If
needed, use gst_buffer_make_writable() before calling this function to
ensure a buffer is writable. @video_buf must also have valid raw video
caps set on it.</doc>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="comp" transfer-ownership="none">
            <doc xml:space="preserve">a #GstVideoOverlayComposition</doc>
            <type name="VideoOverlayComposition"
                  c:type="GstVideoOverlayComposition*"/>
          </instance-parameter>
          <parameter name="video_buf" transfer-ownership="none">
            <doc xml:space="preserve">a #GstBuffer containing raw video data in a supported format</doc>
            <type name="Gst.Buffer" c:type="GstBuffer*"/>
          </parameter>
        </parameters>
      </method>
      <method name="copy"
              c:identifier="gst_video_overlay_composition_copy"
              version="0.10.36">
        <doc xml:space="preserve">Makes a copy of @comp and all contained rectangles, so that it is possible
to modify the composition and contained rectangles (e.g. add additional
rectangles or change the render co-ordinates or render dimension). The
actual overlay pixel data buffers contained in the rectangles are not
copied.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new #GstVideoOverlayComposition equivalent
    to @comp.</doc>
          <type name="VideoOverlayComposition"
                c:type="GstVideoOverlayComposition*"/>
        </return-value>
        <parameters>
          <instance-parameter name="comp" transfer-ownership="none">
            <doc xml:space="preserve">a #GstVideoOverlayComposition to copy</doc>
            <type name="VideoOverlayComposition"
                  c:type="GstVideoOverlayComposition*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_rectangle"
              c:identifier="gst_video_overlay_composition_get_rectangle"
              version="0.10.36">
        <doc xml:space="preserve">Returns the @n-th #GstVideoOverlayRectangle contained in @comp.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the @n-th rectangle, or NULL if @n is out of
    bounds. Will not return a new reference, the caller will need to
    obtain her own reference using gst_video_overlay_rectangle_ref()
    if needed.</doc>
          <type name="VideoOverlayRectangle"
                c:type="GstVideoOverlayRectangle*"/>
        </return-value>
        <parameters>
          <instance-parameter name="comp" transfer-ownership="none">
            <doc xml:space="preserve">a #GstVideoOverlayComposition</doc>
            <type name="VideoOverlayComposition"
                  c:type="GstVideoOverlayComposition*"/>
          </instance-parameter>
          <parameter name="n" transfer-ownership="none">
            <doc xml:space="preserve">number of the rectangle to get</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_seqnum"
              c:identifier="gst_video_overlay_composition_get_seqnum"
              version="0.10.36">
        <doc xml:space="preserve">Returns the sequence number of this composition. Sequence numbers are
monotonically increasing and unique for overlay compositions and rectangles
(meaning there will never be a rectangle with the same sequence number as
a composition).</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the sequence number of @comp</doc>
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <instance-parameter name="comp" transfer-ownership="none">
            <doc xml:space="preserve">a #GstVideoOverlayComposition</doc>
            <type name="VideoOverlayComposition"
                  c:type="GstVideoOverlayComposition*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="make_writable"
              c:identifier="gst_video_overlay_composition_make_writable"
              version="0.10.36">
        <doc xml:space="preserve">Takes ownership of @comp and returns a version of @comp that is writable
(i.e. can be modified). Will either return @comp right away, or create a
new writable copy of @comp and unref @comp itself. All the contained
rectangles will also be copied, but the actual overlay pixel data buffers
contained in the rectangles are not copied.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a writable #GstVideoOverlayComposition
    equivalent to @comp.</doc>
          <type name="VideoOverlayComposition"
                c:type="GstVideoOverlayComposition*"/>
        </return-value>
        <parameters>
          <instance-parameter name="comp" transfer-ownership="full">
            <doc xml:space="preserve">a #GstVideoOverlayComposition to copy</doc>
            <type name="VideoOverlayComposition"
                  c:type="GstVideoOverlayComposition*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="n_rectangles"
              c:identifier="gst_video_overlay_composition_n_rectangles"
              version="0.10.36">
        <doc xml:space="preserve">Returns the number of #GstVideoOverlayRectangle&lt;!-- --&gt;s contained in @comp.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the number of rectangles</doc>
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <instance-parameter name="comp" transfer-ownership="none">
            <doc xml:space="preserve">a #GstVideoOverlayComposition</doc>
            <type name="VideoOverlayComposition"
                  c:type="GstVideoOverlayComposition*"/>
          </instance-parameter>
        </parameters>
      </method>
    </class>
    <record name="VideoOverlayCompositionClass"
            c:type="GstVideoOverlayCompositionClass"
            disguised="1"
            glib:is-gtype-struct-for="VideoOverlayComposition">
    </record>
    <enumeration name="VideoOverlayFormatFlags"
                 version="0.10.36"
                 c:type="GstVideoOverlayFormatFlags">
      <doc xml:space="preserve">Overlay format flags.</doc>
      <member name="video_overlay_format_flag_none"
              value="0"
              c:identifier="GST_VIDEO_OVERLAY_FORMAT_FLAG_NONE">
        <doc xml:space="preserve">no flags</doc>
      </member>
    </enumeration>
    <class name="VideoOverlayRectangle"
           c:symbol-prefix="video_overlay_rectangle"
           c:type="GstVideoOverlayRectangle"
           version="0.10.36"
           parent="Gst.MiniObject"
           glib:type-name="GstVideoOverlayRectangle"
           glib:get-type="gst_video_overlay_rectangle_get_type"
           glib:type-struct="VideoOverlayRectangleClass"
           glib:fundamental="1">
      <doc xml:space="preserve">An opaque video overlay rectangle object. A rectangle contains a single
overlay rectangle which can be added to a composition.</doc>
      <constructor name="new_argb"
                   c:identifier="gst_video_overlay_rectangle_new_argb"
                   version="0.10.36">
        <doc xml:space="preserve">Creates a new video overlay rectangle with ARGB pixel data. The layout
of the components in memory is B-G-R-A on little-endian platforms
(corresponding to #GST_VIDEO_FORMAT_BGRA) and A-R-G-B on big-endian
platforms (corresponding to #GST_VIDEO_FORMAT_ARGB). In other words,
pixels are treated as 32-bit words and the lowest 8 bits then contain
the blue component value and the highest 8 bits contain the alpha
component value. The RGB values are non-premultiplied. This is the
format that is used by most hardware, and also many rendering libraries
such as Cairo, for example.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new #GstVideoOverlayRectangle. Unref with
    gst_video_overlay_rectangle_unref() when no longer needed.</doc>
          <type name="VideoOverlayRectangle"
                c:type="GstVideoOverlayRectangle*"/>
        </return-value>
        <parameters>
          <parameter name="pixels" transfer-ownership="none">
            <doc xml:space="preserve">a #GstBuffer pointing to the pixel memory</doc>
            <type name="Gst.Buffer" c:type="GstBuffer*"/>
          </parameter>
          <parameter name="width" transfer-ownership="none">
            <doc xml:space="preserve">the width of the rectangle in @pixels</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="height" transfer-ownership="none">
            <doc xml:space="preserve">the height of the rectangle in @pixels</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="stride" transfer-ownership="none">
            <doc xml:space="preserve">the stride of the rectangle in @pixels in bytes (&amp;gt;= 4*width)</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="render_x" transfer-ownership="none">
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="render_y" transfer-ownership="none">
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="render_width" transfer-ownership="none">
            <doc xml:space="preserve">the render width of this rectangle on the video</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="render_height" transfer-ownership="none">
            <doc xml:space="preserve">the render height of this rectangle on the video</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve">flags (currently unused)</doc>
            <type name="VideoOverlayFormatFlags"
                  c:type="GstVideoOverlayFormatFlags"/>
          </parameter>
        </parameters>
      </constructor>
      <method name="copy"
              c:identifier="gst_video_overlay_rectangle_copy"
              version="0.10.36">
        <doc xml:space="preserve">Makes a copy of @rectangle, so that it is possible to modify it
(e.g. to change the render co-ordinates or render dimension). The
actual overlay pixel data buffers contained in the rectangle are not
copied.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new #GstVideoOverlayRectangle equivalent
    to @rectangle.</doc>
          <type name="VideoOverlayRectangle"
                c:type="GstVideoOverlayRectangle*"/>
        </return-value>
        <parameters>
          <instance-parameter name="rectangle" transfer-ownership="none">
            <doc xml:space="preserve">a #GstVideoOverlayRectangle to copy</doc>
            <type name="VideoOverlayRectangle"
                  c:type="GstVideoOverlayRectangle*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_pixels_argb"
              c:identifier="gst_video_overlay_rectangle_get_pixels_argb"
              version="0.10.36">
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">a #GstBuffer holding the ARGB pixel data with
   row stride @stride and width and height of the render dimensions as per
   gst_video_overlay_rectangle_get_render_rectangle(). This function does
   not return a reference, the caller should obtain a reference of her own
   with gst_buffer_ref() if needed.</doc>
          <type name="Gst.Buffer" c:type="GstBuffer*"/>
        </return-value>
        <parameters>
          <instance-parameter name="rectangle" transfer-ownership="none">
            <doc xml:space="preserve">a #GstVideoOverlayRectangle</doc>
            <type name="VideoOverlayRectangle"
                  c:type="GstVideoOverlayRectangle*"/>
          </instance-parameter>
          <parameter name="stride"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve">address of guint variable where to store the
   row stride of the ARGB pixel data in the buffer</doc>
            <type name="guint" c:type="guint*"/>
          </parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve">flags (unused)</doc>
            <type name="VideoOverlayFormatFlags"
                  c:type="GstVideoOverlayFormatFlags"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_pixels_unscaled_argb"
              c:identifier="gst_video_overlay_rectangle_get_pixels_unscaled_argb"
              version="0.10.36">
        <doc xml:space="preserve">Retrieves the pixel data as it is. This is useful if the caller can
do the scaling itself when handling the overlaying. The rectangle will
need to be scaled to the render dimensions, which can be retrieved using
gst_video_overlay_rectangle_get_render_rectangle().</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">a #GstBuffer holding the ARGB pixel data with
   row stride @stride. This function does not return a reference, the caller
   should obtain a reference of her own with gst_buffer_ref() if needed.</doc>
          <type name="Gst.Buffer" c:type="GstBuffer*"/>
        </return-value>
        <parameters>
          <instance-parameter name="rectangle" transfer-ownership="none">
            <doc xml:space="preserve">a #GstVideoOverlayRectangle</doc>
            <type name="VideoOverlayRectangle"
                  c:type="GstVideoOverlayRectangle*"/>
          </instance-parameter>
          <parameter name="width"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">address where to store the height of the unscaled
   rectangle in pixels</doc>
            <type name="guint" c:type="guint*"/>
          </parameter>
          <parameter name="height" transfer-ownership="none">
            <type name="guint" c:type="guint*"/>
          </parameter>
          <parameter name="stride"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">address of guint variable where to store the row
   stride of the ARGB pixel data in the buffer</doc>
            <type name="guint" c:type="guint*"/>
          </parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve">flags for future use (unused)</doc>
            <type name="VideoOverlayFormatFlags"
                  c:type="GstVideoOverlayFormatFlags"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_render_rectangle"
              c:identifier="gst_video_overlay_rectangle_get_render_rectangle"
              version="0.10.36">
        <doc xml:space="preserve">Retrieves the render position and render dimension of the overlay
rectangle on the video.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">TRUE if valid render dimensions were retrieved.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="rectangle" transfer-ownership="none">
            <doc xml:space="preserve">a #GstVideoOverlayRectangle</doc>
            <type name="VideoOverlayRectangle"
                  c:type="GstVideoOverlayRectangle*"/>
          </instance-parameter>
          <parameter name="render_x"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve">address where to store the X render offset</doc>
            <type name="gint" c:type="gint*"/>
          </parameter>
          <parameter name="render_y"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve">address where to store the Y render offset</doc>
            <type name="gint" c:type="gint*"/>
          </parameter>
          <parameter name="render_width"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve">address where to store the render width</doc>
            <type name="guint" c:type="guint*"/>
          </parameter>
          <parameter name="render_height"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve">address where to store the render height</doc>
            <type name="guint" c:type="guint*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_seqnum"
              c:identifier="gst_video_overlay_rectangle_get_seqnum"
              version="0.10.36">
        <doc xml:space="preserve">Returns the sequence number of this rectangle. Sequence numbers are
monotonically increasing and unique for overlay compositions and rectangles
(meaning there will never be a rectangle with the same sequence number as
a composition).</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the sequence number of @rectangle</doc>
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <instance-parameter name="rectangle" transfer-ownership="none">
            <doc xml:space="preserve">a #GstVideoOverlayRectangle</doc>
            <type name="VideoOverlayRectangle"
                  c:type="GstVideoOverlayRectangle*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set_render_rectangle"
              c:identifier="gst_video_overlay_rectangle_set_render_rectangle"
              version="0.10.36">
        <doc xml:space="preserve">Sets the render position and dimensions of the rectangle on the video.
This function is mainly for elements that modify the size of the video
in some way (e.g. through scaling or cropping) and need to adjust the
details of any overlays to match the operation that changed the size.

@rectangle must be writable, meaning its refcount must be 1. You can
make the rectangles inside a #GstVideoOverlayComposition writable using
gst_video_overlay_composition_make_writable() or
gst_video_overlay_composition_copy().</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="rectangle" transfer-ownership="none">
            <doc xml:space="preserve">a #GstVideoOverlayRectangle</doc>
            <type name="VideoOverlayRectangle"
                  c:type="GstVideoOverlayRectangle*"/>
          </instance-parameter>
          <parameter name="render_x" transfer-ownership="none">
            <doc xml:space="preserve">render X position of rectangle on video</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="render_y" transfer-ownership="none">
            <doc xml:space="preserve">render Y position of rectangle on video</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="render_width" transfer-ownership="none">
            <doc xml:space="preserve">render width of rectangle</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="render_height" transfer-ownership="none">
            <doc xml:space="preserve">render height of rectangle</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </method>
    </class>
    <record name="VideoOverlayRectangleClass"
            c:type="GstVideoOverlayRectangleClass"
            disguised="1"
            glib:is-gtype-struct-for="VideoOverlayRectangle">
    </record>
    <record name="VideoRectangle" c:type="GstVideoRectangle">
      <doc xml:space="preserve">Helper structure representing a rectangular area.</doc>
      <field name="x" writable="1">
        <doc xml:space="preserve">X coordinate of rectangle's top-left point</doc>
        <type name="gint" c:type="gint"/>
      </field>
      <field name="y" writable="1">
        <doc xml:space="preserve">Y coordinate of rectangle's top-left point</doc>
        <type name="gint" c:type="gint"/>
      </field>
      <field name="w" writable="1">
        <doc xml:space="preserve">width of the rectangle</doc>
        <type name="gint" c:type="gint"/>
      </field>
      <field name="h" writable="1">
        <doc xml:space="preserve">height of the rectangle</doc>
        <type name="gint" c:type="gint"/>
      </field>
    </record>
    <class name="VideoSink"
           c:symbol-prefix="video_sink"
           c:type="GstVideoSink"
           parent="GstBase.BaseSink"
           glib:type-name="GstVideoSink"
           glib:get-type="gst_video_sink_get_type"
           glib:type-struct="VideoSinkClass">
      <doc xml:space="preserve">&lt;refsect2&gt;
&lt;para&gt;
Provides useful functions and a base class for video sinks.
&lt;/para&gt;
&lt;para&gt;
GstVideoSink will configure the default base sink to drop frames that
arrive later than 20ms as this is considered the default threshold for
observing out-of-sync frames.
&lt;/para&gt;
&lt;/refsect2&gt;</doc>
      <function name="center_rect" c:identifier="gst_video_sink_center_rect">
        <doc xml:space="preserve">Takes @src rectangle and position it at the center of @dst rectangle with or
without @scaling. It handles clipping if the @src rectangle is bigger than
the @dst one and @scaling is set to FALSE.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="src" transfer-ownership="none">
            <doc xml:space="preserve">the #GstVideoRectangle describing the source area</doc>
            <type name="VideoRectangle" c:type="GstVideoRectangle"/>
          </parameter>
          <parameter name="dst" transfer-ownership="none">
            <doc xml:space="preserve">the #GstVideoRectangle describing the destination area</doc>
            <type name="VideoRectangle" c:type="GstVideoRectangle"/>
          </parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to a #GstVideoRectangle which will receive the result area</doc>
            <type name="VideoRectangle" c:type="GstVideoRectangle*"/>
          </parameter>
          <parameter name="scaling" transfer-ownership="none">
            <doc xml:space="preserve">a #gboolean indicating if scaling should be applied or not</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </function>
      <virtual-method name="show_frame">
        <return-value transfer-ownership="none">
          <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
        </return-value>
        <parameters>
          <instance-parameter name="video_sink" transfer-ownership="none">
            <type name="VideoSink" c:type="GstVideoSink*"/>
          </instance-parameter>
          <parameter name="buf" transfer-ownership="none">
            <type name="Gst.Buffer" c:type="GstBuffer*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <property name="show-preroll-frame"
                version="0.10.25"
                writable="1"
                construct="1"
                transfer-ownership="none">
        <doc xml:space="preserve">Whether to show video frames during preroll. If set to #FALSE, video
frames will only be rendered in PLAYING state.</doc>
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <field name="element">
        <type name="GstBase.BaseSink" c:type="GstBaseSink"/>
      </field>
      <field name="width">
        <doc xml:space="preserve">video width (derived class needs to set this)</doc>
        <type name="gint" c:type="gint"/>
      </field>
      <field name="height">
        <doc xml:space="preserve">video height (derived class needs to set this)</doc>
        <type name="gint" c:type="gint"/>
      </field>
      <field name="priv" readable="0" private="1">
        <type name="VideoSinkPrivate" c:type="GstVideoSinkPrivate*"/>
      </field>
      <field name="_gst_reserved" readable="0" private="1">
        <array zero-terminated="0" c:type="gpointer" fixed-size="3">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
    </class>
    <record name="VideoSinkClass"
            c:type="GstVideoSinkClass"
            glib:is-gtype-struct-for="VideoSink">
      <doc xml:space="preserve">The video sink class structure. Derived classes should override the
@show_frame virtual function.</doc>
      <field name="parent_class">
        <doc xml:space="preserve">the parent class structure</doc>
        <type name="GstBase.BaseSinkClass" c:type="GstBaseSinkClass"/>
      </field>
      <field name="show_frame">
        <callback name="show_frame">
          <return-value transfer-ownership="none">
            <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
          </return-value>
          <parameters>
            <parameter name="video_sink" transfer-ownership="none">
              <type name="VideoSink" c:type="GstVideoSink*"/>
            </parameter>
            <parameter name="buf" transfer-ownership="none">
              <type name="Gst.Buffer" c:type="GstBuffer*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="_gst_reserved" readable="0" private="1">
        <array zero-terminated="0" c:type="gpointer" fixed-size="3">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
    </record>
    <record name="VideoSinkPrivate" c:type="GstVideoSinkPrivate" disguised="1">
    </record>
    <function name="video_buffer_get_overlay_composition"
              c:identifier="gst_video_buffer_get_overlay_composition"
              version="0.10.36">
      <doc xml:space="preserve">Get the overlay composition that has previously been attached to a buffer
with gst_video_buffer_get_overlay_composition(), usually by another element
upstream.</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">the #GstVideoOverlayComposition attached to
   this buffer, or NULL. Does not return a reference to the composition,
   caller must obtain her own ref via gst_video_overlay_composition_ref()
   if needed.</doc>
        <type name="VideoOverlayComposition"
              c:type="GstVideoOverlayComposition*"/>
      </return-value>
      <parameters>
        <parameter name="buf" transfer-ownership="none">
          <doc xml:space="preserve">a #GstBuffer</doc>
          <type name="Gst.Buffer" c:type="GstBuffer*"/>
        </parameter>
      </parameters>
    </function>
    <function name="video_buffer_set_overlay_composition"
              c:identifier="gst_video_buffer_set_overlay_composition"
              version="0.10.36">
      <doc xml:space="preserve">Sets an overlay composition on a buffer. The buffer will obtain its own
reference to the composition, meaning this function does not take ownership
of @comp.</doc>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="buf" transfer-ownership="none">
          <doc xml:space="preserve">a #GstBuffer</doc>
          <type name="Gst.Buffer" c:type="GstBuffer*"/>
        </parameter>
        <parameter name="comp"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve">a #GstVideoOverlayComposition, or NULL to clear a
    previously-set composition</doc>
          <type name="VideoOverlayComposition"
                c:type="GstVideoOverlayComposition*"/>
        </parameter>
      </parameters>
    </function>
    <function name="video_calculate_display_ratio"
              c:identifier="gst_video_calculate_display_ratio"
              version="0.10.7">
      <doc xml:space="preserve">Given the Pixel Aspect Ratio and size of an input video frame, and the
pixel aspect ratio of the intended display device, calculates the actual
display ratio the video will be rendered with.</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">A boolean indicating success and a calculated Display Ratio in the
dar_n and dar_d parameters.
The return value is FALSE in the case of integer overflow or other error.</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="dar_n" transfer-ownership="none">
          <doc xml:space="preserve">Numerator of the calculated display_ratio</doc>
          <type name="guint" c:type="guint*"/>
        </parameter>
        <parameter name="dar_d" transfer-ownership="none">
          <doc xml:space="preserve">Denominator of the calculated display_ratio</doc>
          <type name="guint" c:type="guint*"/>
        </parameter>
        <parameter name="video_width" transfer-ownership="none">
          <doc xml:space="preserve">Width of the video frame in pixels</doc>
          <type name="guint" c:type="guint"/>
        </parameter>
        <parameter name="video_height" transfer-ownership="none">
          <doc xml:space="preserve">Height of the video frame in pixels</doc>
          <type name="guint" c:type="guint"/>
        </parameter>
        <parameter name="video_par_n" transfer-ownership="none">
          <doc xml:space="preserve">Numerator of the pixel aspect ratio of the input video.</doc>
          <type name="guint" c:type="guint"/>
        </parameter>
        <parameter name="video_par_d" transfer-ownership="none">
          <doc xml:space="preserve">Denominator of the pixel aspect ratio of the input video.</doc>
          <type name="guint" c:type="guint"/>
        </parameter>
        <parameter name="display_par_n" transfer-ownership="none">
          <doc xml:space="preserve">Numerator of the pixel aspect ratio of the display device</doc>
          <type name="guint" c:type="guint"/>
        </parameter>
        <parameter name="display_par_d" transfer-ownership="none">
          <doc xml:space="preserve">Denominator of the pixel aspect ratio of the display device</doc>
          <type name="guint" c:type="guint"/>
        </parameter>
      </parameters>
    </function>
    <function name="video_convert_frame"
              c:identifier="gst_video_convert_frame"
              version="0.10.31"
              introspectable="0"
              throws="1">
      <doc xml:space="preserve">Converts a raw video buffer into the specified output caps.

The output caps can be any raw video formats or any image formats (jpeg, png, ...).

The width, height and pixel-aspect-ratio can also be specified in the output caps.</doc>
      <return-value>
        <doc xml:space="preserve">The converted #GstBuffer, or %NULL if an error happened (in which case @err
will point to the #GError).</doc>
        <type name="Gst.Buffer" c:type="GstBuffer*"/>
      </return-value>
      <parameters>
        <parameter name="buf" transfer-ownership="none">
          <doc xml:space="preserve">a #GstBuffer</doc>
          <type name="Gst.Buffer" c:type="GstBuffer*"/>
        </parameter>
        <parameter name="to_caps" transfer-ownership="none">
          <doc xml:space="preserve">the #GstCaps to convert to</doc>
          <type name="Gst.Caps" c:type="const GstCaps*"/>
        </parameter>
        <parameter name="timeout" transfer-ownership="none">
          <doc xml:space="preserve">the maximum amount of time allowed for the processing.</doc>
          <type name="Gst.ClockTime" c:type="GstClockTime"/>
        </parameter>
      </parameters>
    </function>
    <function name="video_convert_frame_async"
              c:identifier="gst_video_convert_frame_async"
              version="0.10.31">
      <doc xml:space="preserve">Converts a raw video buffer into the specified output caps.

The output caps can be any raw video formats or any image formats (jpeg, png, ...).

The width, height and pixel-aspect-ratio can also be specified in the output caps.

@callback will be called after conversion, when an error occured or if conversion didn't
finish after @timeout. @callback will always be called from the thread default
%GMainContext, see g_main_context_get_thread_default(). If GLib before 2.22 is used,
this will always be the global default main context.

@destroy_notify will be called after the callback was called and @user_data is not needed
anymore.</doc>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="buf" transfer-ownership="none">
          <doc xml:space="preserve">a #GstBuffer</doc>
          <type name="Gst.Buffer" c:type="GstBuffer*"/>
        </parameter>
        <parameter name="to_caps" transfer-ownership="none">
          <doc xml:space="preserve">the #GstCaps to convert to</doc>
          <type name="Gst.Caps" c:type="const GstCaps*"/>
        </parameter>
        <parameter name="timeout" transfer-ownership="none">
          <doc xml:space="preserve">the maximum amount of time allowed for the processing.</doc>
          <type name="Gst.ClockTime" c:type="GstClockTime"/>
        </parameter>
        <parameter name="callback"
                   transfer-ownership="none"
                   scope="notified"
                   closure="4"
                   destroy="5">
          <doc xml:space="preserve">%GstVideoConvertFrameCallback that will be called after conversion.</doc>
          <type name="VideoConvertFrameCallback"
                c:type="GstVideoConvertFrameCallback"/>
        </parameter>
        <parameter name="user_data"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve">extra data that will be passed to the @callback</doc>
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
        <parameter name="destroy_notify"
                   transfer-ownership="none"
                   scope="async">
          <doc xml:space="preserve">%GDestroyNotify to be called after @user_data is not needed anymore</doc>
          <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
        </parameter>
      </parameters>
    </function>
    <function name="video_event_is_force_key_unit"
              c:identifier="gst_video_event_is_force_key_unit"
              version="0.10.36">
      <doc xml:space="preserve">Checks if an event is a force key unit event. Returns true for both upstream
and downstream force key unit events.</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">%TRUE if the event is a valid force key unit event</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="event" transfer-ownership="none">
          <doc xml:space="preserve">A #GstEvent to check</doc>
          <type name="Gst.Event" c:type="GstEvent*"/>
        </parameter>
      </parameters>
    </function>
    <function name="video_event_new_downstream_force_key_unit"
              c:identifier="gst_video_event_new_downstream_force_key_unit"
              version="0.10.36"
              introspectable="0">
      <doc xml:space="preserve">Creates a new downstream force key unit event. A downstream force key unit
event can be sent down the pipeline to request downstream elements to produce
a key unit. A downstream force key unit event must also be sent when handling
an upstream force key unit event to notify downstream that the latter has been
handled.

To parse an event created by gst_video_event_new_downstream_force_key_unit() use
gst_video_event_parse_downstream_force_key_unit().</doc>
      <return-value>
        <doc xml:space="preserve">The new GstEvent</doc>
        <type name="Gst.Event" c:type="GstEvent*"/>
      </return-value>
      <parameters>
        <parameter name="timestamp" transfer-ownership="none">
          <doc xml:space="preserve">the timestamp of the buffer that starts a new key unit</doc>
          <type name="Gst.ClockTime" c:type="GstClockTime"/>
        </parameter>
        <parameter name="streamtime" transfer-ownership="none">
          <type name="Gst.ClockTime" c:type="GstClockTime"/>
        </parameter>
        <parameter name="runningtime" transfer-ownership="none">
          <type name="Gst.ClockTime" c:type="GstClockTime"/>
        </parameter>
        <parameter name="all_headers" transfer-ownership="none">
          <doc xml:space="preserve">%TRUE to produce headers when starting a new key unit</doc>
          <type name="gboolean" c:type="gboolean"/>
        </parameter>
        <parameter name="count" transfer-ownership="none">
          <doc xml:space="preserve">integer that can be used to number key units</doc>
          <type name="guint" c:type="guint"/>
        </parameter>
      </parameters>
    </function>
    <function name="video_event_new_still_frame"
              c:identifier="gst_video_event_new_still_frame"
              version="0.10.26"
              introspectable="0">
      <doc xml:space="preserve">Creates a new Still Frame event. If @in_still is %TRUE, then the event
represents the start of a still frame sequence. If it is %FALSE, then
the event ends a still frame sequence.

To parse an event created by gst_video_event_new_still_frame() use
gst_video_event_parse_still_frame().</doc>
      <return-value>
        <doc xml:space="preserve">The new GstEvent</doc>
        <type name="Gst.Event" c:type="GstEvent*"/>
      </return-value>
      <parameters>
        <parameter name="in_still" transfer-ownership="none">
          <doc xml:space="preserve">boolean value for the still-frame state of the event.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </parameter>
      </parameters>
    </function>
    <function name="video_event_new_upstream_force_key_unit"
              c:identifier="gst_video_event_new_upstream_force_key_unit"
              version="0.10.36"
              introspectable="0">
      <doc xml:space="preserve">Creates a new upstream force key unit event. An upstream force key unit event
can be sent to request upstream elements to produce a key unit.

@running_time can be set to request a new key unit at a specific
running_time. If set to GST_CLOCK_TIME_NONE, upstream elements will produce a
new key unit as soon as possible.

To parse an event created by gst_video_event_new_downstream_force_key_unit() use
gst_video_event_parse_downstream_force_key_unit().</doc>
      <return-value>
        <doc xml:space="preserve">The new GstEvent</doc>
        <type name="Gst.Event" c:type="GstEvent*"/>
      </return-value>
      <parameters>
        <parameter name="running_time" transfer-ownership="none">
          <doc xml:space="preserve">the running_time at which a new key unit should be produced</doc>
          <type name="Gst.ClockTime" c:type="GstClockTime"/>
        </parameter>
        <parameter name="all_headers" transfer-ownership="none">
          <doc xml:space="preserve">%TRUE to produce headers when starting a new key unit</doc>
          <type name="gboolean" c:type="gboolean"/>
        </parameter>
        <parameter name="count" transfer-ownership="none">
          <doc xml:space="preserve">integer that can be used to number key units</doc>
          <type name="guint" c:type="guint"/>
        </parameter>
      </parameters>
    </function>
    <function name="video_event_parse_downstream_force_key_unit"
              c:identifier="gst_video_event_parse_downstream_force_key_unit"
              version="0.10.36">
      <doc xml:space="preserve">Get timestamp, stream-time, running-time, all-headers and count in the force
key unit event. See gst_video_event_new_downstream_force_key_unit() for a
full description of the downstream force key unit event.</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">%TRUE if the event is a valid downstream force key unit event.</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="event" transfer-ownership="none">
          <doc xml:space="preserve">A #GstEvent to parse</doc>
          <type name="Gst.Event" c:type="GstEvent*"/>
        </parameter>
        <parameter name="timestamp"
                   direction="out"
                   caller-allocates="0"
                   transfer-ownership="full">
          <doc xml:space="preserve">A pointer to the timestamp in the event</doc>
          <type name="Gst.ClockTime" c:type="GstClockTime*"/>
        </parameter>
        <parameter name="streamtime" transfer-ownership="none">
          <type name="Gst.ClockTime" c:type="GstClockTime*"/>
        </parameter>
        <parameter name="runningtime" transfer-ownership="none">
          <type name="Gst.ClockTime" c:type="GstClockTime*"/>
        </parameter>
        <parameter name="all_headers"
                   direction="out"
                   caller-allocates="0"
                   transfer-ownership="full">
          <doc xml:space="preserve">A pointer to the all_headers flag in the event</doc>
          <type name="gboolean" c:type="gboolean*"/>
        </parameter>
        <parameter name="count"
                   direction="out"
                   caller-allocates="0"
                   transfer-ownership="full">
          <doc xml:space="preserve">A pointer to the count field of the event</doc>
          <type name="guint" c:type="guint*"/>
        </parameter>
      </parameters>
    </function>
    <function name="video_event_parse_still_frame"
              c:identifier="gst_video_event_parse_still_frame"
              version="0.10.26">
      <doc xml:space="preserve">Parse a #GstEvent, identify if it is a Still Frame event, and
return the still-frame state from the event if it is.
If the event represents the start of a still frame, the in_still
variable will be set to TRUE, otherwise FALSE. It is OK to pass NULL for the
in_still variable order to just check whether the event is a valid still-frame
event.

Create a still frame event using gst_video_event_new_still_frame()</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">%TRUE if the event is a valid still-frame event. %FALSE if not</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="event" transfer-ownership="none">
          <doc xml:space="preserve">A #GstEvent to parse</doc>
          <type name="Gst.Event" c:type="GstEvent*"/>
        </parameter>
        <parameter name="in_still" transfer-ownership="none">
          <doc xml:space="preserve">A boolean to receive the still-frame status from the event, or NULL</doc>
          <type name="gboolean" c:type="gboolean*"/>
        </parameter>
      </parameters>
    </function>
    <function name="video_event_parse_upstream_force_key_unit"
              c:identifier="gst_video_event_parse_upstream_force_key_unit"
              version="0.10.36">
      <doc xml:space="preserve">Get running-time, all-headers and count in the force key unit event. See
gst_video_event_new_upstream_force_key_unit() for a full description of the
upstream force key unit event.

Create an upstream force key unit event using  gst_video_event_new_upstream_force_key_unit()</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">%TRUE if the event is a valid upstream force-key-unit event. %FALSE if not</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="event" transfer-ownership="none">
          <doc xml:space="preserve">A #GstEvent to parse</doc>
          <type name="Gst.Event" c:type="GstEvent*"/>
        </parameter>
        <parameter name="running_time"
                   direction="out"
                   caller-allocates="0"
                   transfer-ownership="full">
          <doc xml:space="preserve">A pointer to the running_time in the event</doc>
          <type name="Gst.ClockTime" c:type="GstClockTime*"/>
        </parameter>
        <parameter name="all_headers"
                   direction="out"
                   caller-allocates="0"
                   transfer-ownership="full">
          <doc xml:space="preserve">A pointer to the all_headers flag in the event</doc>
          <type name="gboolean" c:type="gboolean*"/>
        </parameter>
        <parameter name="count"
                   direction="out"
                   caller-allocates="0"
                   transfer-ownership="full">
          <doc xml:space="preserve">A pointer to the count field in the event</doc>
          <type name="guint" c:type="guint*"/>
        </parameter>
      </parameters>
    </function>
    <function name="video_format_convert"
              c:identifier="gst_video_format_convert"
              moved-to="VideoFormat.convert"
              version="0.10.16">
      <doc xml:space="preserve">Converts among various #GstFormat types.  This function handles
GST_FORMAT_BYTES, GST_FORMAT_TIME, and GST_FORMAT_DEFAULT.  For
raw video, GST_FORMAT_DEFAULT corresponds to video frames.  This
function can be to handle pad queries of the type GST_QUERY_CONVERT.</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">TRUE if the conversion was successful.</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="format" transfer-ownership="none">
          <doc xml:space="preserve">a #GstVideoFormat</doc>
          <type name="VideoFormat" c:type="GstVideoFormat"/>
        </parameter>
        <parameter name="width" transfer-ownership="none">
          <doc xml:space="preserve">the width of video</doc>
          <type name="gint" c:type="int"/>
        </parameter>
        <parameter name="height" transfer-ownership="none">
          <doc xml:space="preserve">the height of video</doc>
          <type name="gint" c:type="int"/>
        </parameter>
        <parameter name="fps_n" transfer-ownership="none">
          <doc xml:space="preserve">frame rate numerator</doc>
          <type name="gint" c:type="int"/>
        </parameter>
        <parameter name="fps_d" transfer-ownership="none">
          <doc xml:space="preserve">frame rate denominator</doc>
          <type name="gint" c:type="int"/>
        </parameter>
        <parameter name="src_format" transfer-ownership="none">
          <doc xml:space="preserve">#GstFormat of the @src_value</doc>
          <type name="Gst.Format" c:type="GstFormat"/>
        </parameter>
        <parameter name="src_value" transfer-ownership="none">
          <doc xml:space="preserve">value to convert</doc>
          <type name="gint64" c:type="gint64"/>
        </parameter>
        <parameter name="dest_format" transfer-ownership="none">
          <doc xml:space="preserve">#GstFormat of the @dest_value</doc>
          <type name="Gst.Format" c:type="GstFormat"/>
        </parameter>
        <parameter name="dest_value" transfer-ownership="none">
          <doc xml:space="preserve">pointer to destination value</doc>
          <type name="gint64" c:type="gint64*"/>
        </parameter>
      </parameters>
    </function>
    <function name="video_format_from_fourcc"
              c:identifier="gst_video_format_from_fourcc"
              moved-to="VideoFormat.from_fourcc"
              version="0.10.16">
      <doc xml:space="preserve">Converts a FOURCC value into the corresponding #GstVideoFormat.
If the FOURCC cannot be represented by #GstVideoFormat,
#GST_VIDEO_FORMAT_UNKNOWN is returned.</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">the #GstVideoFormat describing the FOURCC value</doc>
        <type name="VideoFormat" c:type="GstVideoFormat"/>
      </return-value>
      <parameters>
        <parameter name="fourcc" transfer-ownership="none">
          <doc xml:space="preserve">a FOURCC value representing raw YUV video</doc>
          <type name="guint32" c:type="guint32"/>
        </parameter>
      </parameters>
    </function>
    <function name="video_format_get_component_depth"
              c:identifier="gst_video_format_get_component_depth"
              moved-to="VideoFormat.get_component_depth"
              version="0.10.33">
      <doc xml:space="preserve">Returns the number of bits used to encode an individual pixel of
a given @component.  Typically this is 8, although higher and lower
values are possible for some formats.</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">depth of component</doc>
        <type name="gint" c:type="int"/>
      </return-value>
      <parameters>
        <parameter name="format" transfer-ownership="none">
          <doc xml:space="preserve">a #GstVideoFormat</doc>
          <type name="VideoFormat" c:type="GstVideoFormat"/>
        </parameter>
        <parameter name="component" transfer-ownership="none">
          <doc xml:space="preserve">the video component (e.g. 0 for 'R' in RGB)</doc>
          <type name="gint" c:type="int"/>
        </parameter>
      </parameters>
    </function>
    <function name="video_format_get_component_height"
              c:identifier="gst_video_format_get_component_height"
              moved-to="VideoFormat.get_component_height"
              version="0.10.16">
      <doc xml:space="preserve">Calculates the height of the component.  See
@gst_video_format_get_row_stride for a description
of the component index.</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">height of component @component</doc>
        <type name="gint" c:type="int"/>
      </return-value>
      <parameters>
        <parameter name="format" transfer-ownership="none">
          <doc xml:space="preserve">a #GstVideoFormat</doc>
          <type name="VideoFormat" c:type="GstVideoFormat"/>
        </parameter>
        <parameter name="component" transfer-ownership="none">
          <doc xml:space="preserve">the component index</doc>
          <type name="gint" c:type="int"/>
        </parameter>
        <parameter name="height" transfer-ownership="none">
          <doc xml:space="preserve">the height of video</doc>
          <type name="gint" c:type="int"/>
        </parameter>
      </parameters>
    </function>
    <function name="video_format_get_component_offset"
              c:identifier="gst_video_format_get_component_offset"
              moved-to="VideoFormat.get_component_offset"
              version="0.10.16">
      <doc xml:space="preserve">Calculates the offset (in bytes) of the first pixel of the component
with index @component.  For packed formats, this will typically be a
small integer (0, 1, 2, 3).  For planar formats, this will be a
(relatively) large offset to the beginning of the second or third
component planes.  See @gst_video_format_get_row_stride for a description
of the component index.</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">offset of component @component</doc>
        <type name="gint" c:type="int"/>
      </return-value>
      <parameters>
        <parameter name="format" transfer-ownership="none">
          <doc xml:space="preserve">a #GstVideoFormat</doc>
          <type name="VideoFormat" c:type="GstVideoFormat"/>
        </parameter>
        <parameter name="component" transfer-ownership="none">
          <doc xml:space="preserve">the component index</doc>
          <type name="gint" c:type="int"/>
        </parameter>
        <parameter name="width" transfer-ownership="none">
          <doc xml:space="preserve">the width of video</doc>
          <type name="gint" c:type="int"/>
        </parameter>
        <parameter name="height" transfer-ownership="none">
          <doc xml:space="preserve">the height of video</doc>
          <type name="gint" c:type="int"/>
        </parameter>
      </parameters>
    </function>
    <function name="video_format_get_component_width"
              c:identifier="gst_video_format_get_component_width"
              moved-to="VideoFormat.get_component_width"
              version="0.10.16">
      <doc xml:space="preserve">Calculates the width of the component.  See
@gst_video_format_get_row_stride for a description
of the component index.</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">width of component @component</doc>
        <type name="gint" c:type="int"/>
      </return-value>
      <parameters>
        <parameter name="format" transfer-ownership="none">
          <doc xml:space="preserve">a #GstVideoFormat</doc>
          <type name="VideoFormat" c:type="GstVideoFormat"/>
        </parameter>
        <parameter name="component" transfer-ownership="none">
          <doc xml:space="preserve">the component index</doc>
          <type name="gint" c:type="int"/>
        </parameter>
        <parameter name="width" transfer-ownership="none">
          <doc xml:space="preserve">the width of video</doc>
          <type name="gint" c:type="int"/>
        </parameter>
      </parameters>
    </function>
    <function name="video_format_get_pixel_stride"
              c:identifier="gst_video_format_get_pixel_stride"
              moved-to="VideoFormat.get_pixel_stride"
              version="0.10.16">
      <doc xml:space="preserve">Calculates the pixel stride (number of bytes from one pixel to the
pixel to its immediate left) for the video component with an index
of @component.  See @gst_video_format_get_row_stride for a description
of the component index.</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">pixel stride of component @component</doc>
        <type name="gint" c:type="int"/>
      </return-value>
      <parameters>
        <parameter name="format" transfer-ownership="none">
          <doc xml:space="preserve">a #GstVideoFormat</doc>
          <type name="VideoFormat" c:type="GstVideoFormat"/>
        </parameter>
        <parameter name="component" transfer-ownership="none">
          <doc xml:space="preserve">the component index</doc>
          <type name="gint" c:type="int"/>
        </parameter>
      </parameters>
    </function>
    <function name="video_format_get_row_stride"
              c:identifier="gst_video_format_get_row_stride"
              moved-to="VideoFormat.get_row_stride"
              version="0.10.16">
      <doc xml:space="preserve">Calculates the row stride (number of bytes from one row of pixels to
the next) for the video component with an index of @component.  For
YUV video, Y, U, and V have component indices of 0, 1, and 2,
respectively.  For RGB video, R, G, and B have component indicies of
0, 1, and 2, respectively.  Alpha channels, if present, have a component
index of 3.  The @width parameter always represents the width of the
video, not the component.</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">row stride of component @component</doc>
        <type name="gint" c:type="int"/>
      </return-value>
      <parameters>
        <parameter name="format" transfer-ownership="none">
          <doc xml:space="preserve">a #GstVideoFormat</doc>
          <type name="VideoFormat" c:type="GstVideoFormat"/>
        </parameter>
        <parameter name="component" transfer-ownership="none">
          <doc xml:space="preserve">the component index</doc>
          <type name="gint" c:type="int"/>
        </parameter>
        <parameter name="width" transfer-ownership="none">
          <doc xml:space="preserve">the width of video</doc>
          <type name="gint" c:type="int"/>
        </parameter>
      </parameters>
    </function>
    <function name="video_format_get_size"
              c:identifier="gst_video_format_get_size"
              moved-to="VideoFormat.get_size"
              version="0.10.16">
      <doc xml:space="preserve">Calculates the total number of bytes in the raw video format.  This
number should be used when allocating a buffer for raw video.</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">size (in bytes) of raw video format</doc>
        <type name="gint" c:type="int"/>
      </return-value>
      <parameters>
        <parameter name="format" transfer-ownership="none">
          <doc xml:space="preserve">a #GstVideoFormat</doc>
          <type name="VideoFormat" c:type="GstVideoFormat"/>
        </parameter>
        <parameter name="width" transfer-ownership="none">
          <doc xml:space="preserve">the width of video</doc>
          <type name="gint" c:type="int"/>
        </parameter>
        <parameter name="height" transfer-ownership="none">
          <doc xml:space="preserve">the height of video</doc>
          <type name="gint" c:type="int"/>
        </parameter>
      </parameters>
    </function>
    <function name="video_format_has_alpha"
              c:identifier="gst_video_format_has_alpha"
              moved-to="VideoFormat.has_alpha"
              version="0.10.16">
      <doc xml:space="preserve">Returns TRUE or FALSE depending on if the video format provides an
alpha channel.</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">TRUE if @format has an alpha channel</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="format" transfer-ownership="none">
          <doc xml:space="preserve">a #GstVideoFormat</doc>
          <type name="VideoFormat" c:type="GstVideoFormat"/>
        </parameter>
      </parameters>
    </function>
    <function name="video_format_is_gray"
              c:identifier="gst_video_format_is_gray"
              moved-to="VideoFormat.is_gray"
              version="0.10.29">
      <doc xml:space="preserve">Determine whether the video format is a grayscale format.</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">TRUE if @format represents grayscale video</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="format" transfer-ownership="none">
          <doc xml:space="preserve">a #GstVideoFormat</doc>
          <type name="VideoFormat" c:type="GstVideoFormat"/>
        </parameter>
      </parameters>
    </function>
    <function name="video_format_is_rgb"
              c:identifier="gst_video_format_is_rgb"
              moved-to="VideoFormat.is_rgb"
              version="0.10.16">
      <doc xml:space="preserve">Determine whether the video format is an RGB format.</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">TRUE if @format represents RGB video</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="format" transfer-ownership="none">
          <doc xml:space="preserve">a #GstVideoFormat</doc>
          <type name="VideoFormat" c:type="GstVideoFormat"/>
        </parameter>
      </parameters>
    </function>
    <function name="video_format_is_yuv"
              c:identifier="gst_video_format_is_yuv"
              moved-to="VideoFormat.is_yuv"
              version="0.10.16">
      <doc xml:space="preserve">Determine whether the video format is a YUV format.</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">TRUE if @format represents YUV video</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="format" transfer-ownership="none">
          <doc xml:space="preserve">a #GstVideoFormat</doc>
          <type name="VideoFormat" c:type="GstVideoFormat"/>
        </parameter>
      </parameters>
    </function>
    <function name="video_format_new_caps"
              c:identifier="gst_video_format_new_caps"
              moved-to="VideoFormat.new_caps"
              version="0.10.16">
      <doc xml:space="preserve">Creates a new #GstCaps object based on the parameters provided.</doc>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve">a new #GstCaps object, or NULL if there was an error</doc>
        <type name="Gst.Caps" c:type="GstCaps*"/>
      </return-value>
      <parameters>
        <parameter name="format" transfer-ownership="none">
          <doc xml:space="preserve">the #GstVideoFormat describing the raw video format</doc>
          <type name="VideoFormat" c:type="GstVideoFormat"/>
        </parameter>
        <parameter name="width" transfer-ownership="none">
          <doc xml:space="preserve">width of video</doc>
          <type name="gint" c:type="int"/>
        </parameter>
        <parameter name="height" transfer-ownership="none">
          <doc xml:space="preserve">height of video</doc>
          <type name="gint" c:type="int"/>
        </parameter>
        <parameter name="framerate_n" transfer-ownership="none">
          <doc xml:space="preserve">numerator of frame rate</doc>
          <type name="gint" c:type="int"/>
        </parameter>
        <parameter name="framerate_d" transfer-ownership="none">
          <doc xml:space="preserve">denominator of frame rate</doc>
          <type name="gint" c:type="int"/>
        </parameter>
        <parameter name="par_n" transfer-ownership="none">
          <doc xml:space="preserve">numerator of pixel aspect ratio</doc>
          <type name="gint" c:type="int"/>
        </parameter>
        <parameter name="par_d" transfer-ownership="none">
          <doc xml:space="preserve">denominator of pixel aspect ratio</doc>
          <type name="gint" c:type="int"/>
        </parameter>
      </parameters>
    </function>
    <function name="video_format_new_caps_interlaced"
              c:identifier="gst_video_format_new_caps_interlaced"
              moved-to="VideoFormat.new_caps_interlaced"
              version="0.10.23">
      <doc xml:space="preserve">Creates a new #GstCaps object based on the parameters provided.</doc>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve">a new #GstCaps object, or NULL if there was an error</doc>
        <type name="Gst.Caps" c:type="GstCaps*"/>
      </return-value>
      <parameters>
        <parameter name="format" transfer-ownership="none">
          <doc xml:space="preserve">the #GstVideoFormat describing the raw video format</doc>
          <type name="VideoFormat" c:type="GstVideoFormat"/>
        </parameter>
        <parameter name="width" transfer-ownership="none">
          <doc xml:space="preserve">width of video</doc>
          <type name="gint" c:type="int"/>
        </parameter>
        <parameter name="height" transfer-ownership="none">
          <doc xml:space="preserve">height of video</doc>
          <type name="gint" c:type="int"/>
        </parameter>
        <parameter name="framerate_n" transfer-ownership="none">
          <doc xml:space="preserve">numerator of frame rate</doc>
          <type name="gint" c:type="int"/>
        </parameter>
        <parameter name="framerate_d" transfer-ownership="none">
          <doc xml:space="preserve">denominator of frame rate</doc>
          <type name="gint" c:type="int"/>
        </parameter>
        <parameter name="par_n" transfer-ownership="none">
          <doc xml:space="preserve">numerator of pixel aspect ratio</doc>
          <type name="gint" c:type="int"/>
        </parameter>
        <parameter name="par_d" transfer-ownership="none">
          <doc xml:space="preserve">denominator of pixel aspect ratio</doc>
          <type name="gint" c:type="int"/>
        </parameter>
        <parameter name="interlaced" transfer-ownership="none">
          <doc xml:space="preserve">#TRUE if the format is interlaced</doc>
          <type name="gboolean" c:type="gboolean"/>
        </parameter>
      </parameters>
    </function>
    <function name="video_format_new_template_caps"
              c:identifier="gst_video_format_new_template_caps"
              moved-to="VideoFormat.new_template_caps"
              version="0.10.33">
      <doc xml:space="preserve">Creates a new #GstCaps object based on the parameters provided.
Size, frame rate, and pixel aspect ratio are set to the full
range.</doc>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve">a new #GstCaps object, or NULL if there was an error</doc>
        <type name="Gst.Caps" c:type="GstCaps*"/>
      </return-value>
      <parameters>
        <parameter name="format" transfer-ownership="none">
          <doc xml:space="preserve">the #GstVideoFormat describing the raw video format</doc>
          <type name="VideoFormat" c:type="GstVideoFormat"/>
        </parameter>
      </parameters>
    </function>
    <function name="video_format_parse_caps"
              c:identifier="gst_video_format_parse_caps"
              moved-to="VideoFormat.parse_caps"
              version="0.10.16">
      <doc xml:space="preserve">Determines the #GstVideoFormat of @caps and places it in the location
pointed to by @format.  Extracts the size of the video and places it
in the location pointed to by @width and @height.  If @caps does not
represent a video format or does not contain height and width, the
function will fail and return FALSE. If @caps does not represent a raw
video format listed in #GstVideoFormat, but still contains video caps,
this function will return TRUE and set @format to #GST_VIDEO_FORMAT_UNKNOWN.</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">TRUE if @caps was parsed correctly.</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="caps" transfer-ownership="none">
          <doc xml:space="preserve">the #GstCaps to parse</doc>
          <type name="Gst.Caps" c:type="const GstCaps*"/>
        </parameter>
        <parameter name="format" transfer-ownership="none">
          <doc xml:space="preserve">the #GstVideoFormat of the video represented by @caps (output)</doc>
          <type name="VideoFormat" c:type="GstVideoFormat*"/>
        </parameter>
        <parameter name="width" transfer-ownership="none">
          <doc xml:space="preserve">the width of the video represented by @caps, may be NULL (output)</doc>
          <type name="gint" c:type="int*"/>
        </parameter>
        <parameter name="height" transfer-ownership="none">
          <doc xml:space="preserve">the height of the video represented by @caps, may be NULL (output)</doc>
          <type name="gint" c:type="int*"/>
        </parameter>
      </parameters>
    </function>
    <function name="video_format_parse_caps_interlaced"
              c:identifier="gst_video_format_parse_caps_interlaced"
              moved-to="VideoFormat.parse_caps_interlaced"
              version="0.10.23">
      <doc xml:space="preserve">Extracts whether the caps represents interlaced content or not and places it
in @interlaced.</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">TRUE if @caps was parsed correctly.</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="caps" transfer-ownership="none">
          <doc xml:space="preserve">the fixed #GstCaps to parse</doc>
          <type name="Gst.Caps" c:type="GstCaps*"/>
        </parameter>
        <parameter name="interlaced" transfer-ownership="none">
          <doc xml:space="preserve">whether @caps represents interlaced video or not, may be NULL (output)</doc>
          <type name="gboolean" c:type="gboolean*"/>
        </parameter>
      </parameters>
    </function>
    <function name="video_format_to_fourcc"
              c:identifier="gst_video_format_to_fourcc"
              moved-to="VideoFormat.to_fourcc"
              version="0.10.16">
      <doc xml:space="preserve">Converts a #GstVideoFormat value into the corresponding FOURCC.  Only
a few YUV formats have corresponding FOURCC values.  If @format has
no corresponding FOURCC value, 0 is returned.</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">the FOURCC corresponding to @format</doc>
        <type name="guint32" c:type="guint32"/>
      </return-value>
      <parameters>
        <parameter name="format" transfer-ownership="none">
          <doc xml:space="preserve">a #GstVideoFormat video format</doc>
          <type name="VideoFormat" c:type="GstVideoFormat"/>
        </parameter>
      </parameters>
    </function>
    <function name="video_frame_rate" c:identifier="gst_video_frame_rate">
      <doc xml:space="preserve">A convenience function to retrieve a GValue holding the framerate
from the caps on a pad.

The pad needs to have negotiated caps containing a framerate property.</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">NULL if the pad has no configured caps or the configured caps
do not contain a framerate.</doc>
        <type name="GObject.Value" c:type="const GValue*"/>
      </return-value>
      <parameters>
        <parameter name="pad" transfer-ownership="none">
          <doc xml:space="preserve">pointer to a #GstPad</doc>
          <type name="Gst.Pad" c:type="GstPad*"/>
        </parameter>
      </parameters>
    </function>
    <function name="video_get_size" c:identifier="gst_video_get_size">
      <doc xml:space="preserve">Inspect the caps of the provided pad and retrieve the width and height of
the video frames it is configured for.

The pad needs to have negotiated caps containing width and height properties.</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">TRUE if the width and height could be retrieved.</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="pad" transfer-ownership="none">
          <doc xml:space="preserve">pointer to a #GstPad</doc>
          <type name="Gst.Pad" c:type="GstPad*"/>
        </parameter>
        <parameter name="width" transfer-ownership="none">
          <doc xml:space="preserve">pointer to integer to hold pixel width of the video frames (output)</doc>
          <type name="gint" c:type="gint*"/>
        </parameter>
        <parameter name="height" transfer-ownership="none">
          <doc xml:space="preserve">pointer to integer to hold pixel height of the video frames (output)</doc>
          <type name="gint" c:type="gint*"/>
        </parameter>
      </parameters>
    </function>
    <function name="video_get_size_from_caps"
              c:identifier="gst_video_get_size_from_caps"
              version="0.10.36">
      <doc xml:space="preserve">Calculates the total number of bytes in the raw video format for the given
caps.  This number should be used when allocating a buffer for raw video.</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">%TRUE if the size could be calculated from the caps</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="caps" transfer-ownership="none">
          <doc xml:space="preserve">a pointer to #GstCaps</doc>
          <type name="Gst.Caps" c:type="const GstCaps*"/>
        </parameter>
        <parameter name="size" transfer-ownership="none">
          <doc xml:space="preserve">a pointer to a gint that will be assigned the size (in bytes) of a video frame with the given caps</doc>
          <type name="gint" c:type="gint*"/>
        </parameter>
      </parameters>
    </function>
    <function name="video_parse_caps_chroma_site"
              c:identifier="gst_video_parse_caps_chroma_site"
              version="0.10.29">
      <doc xml:space="preserve">Extracts the chroma site used by the caps.  Possible values are
"mpeg2" for MPEG-2 style chroma siting (co-sited horizontally,
halfway-sited vertically), "jpeg" for JPEG and Theora style
chroma siting (halfway-sited both horizontally and vertically).
Other chroma site values are possible, but uncommon.

When no chroma site is specified in the caps, it should be assumed
to be "mpeg2".</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">a chroma site string, or NULL if no chroma site could be
    determined.</doc>
        <type name="utf8" c:type="const char*"/>
      </return-value>
      <parameters>
        <parameter name="caps" transfer-ownership="none">
          <doc xml:space="preserve">the fixed #GstCaps to parse</doc>
          <type name="Gst.Caps" c:type="GstCaps*"/>
        </parameter>
      </parameters>
    </function>
    <function name="video_parse_caps_color_matrix"
              c:identifier="gst_video_parse_caps_color_matrix"
              version="0.10.29">
      <doc xml:space="preserve">Extracts the color matrix used by the caps.  Possible values are
"sdtv" for the standard definition color matrix (as specified in
Rec. ITU-R BT.470-6) or "hdtv" for the high definition color
matrix (as specified in Rec. ITU-R BT.709)</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">a color matrix string, or NULL if no color matrix could be
    determined.</doc>
        <type name="utf8" c:type="const char*"/>
      </return-value>
      <parameters>
        <parameter name="caps" transfer-ownership="none">
          <doc xml:space="preserve">the fixed #GstCaps to parse</doc>
          <type name="Gst.Caps" c:type="GstCaps*"/>
        </parameter>
      </parameters>
    </function>
    <function name="video_parse_caps_framerate"
              c:identifier="gst_video_parse_caps_framerate"
              version="0.10.16">
      <doc xml:space="preserve">Extracts the frame rate from @caps and places the values in the locations
pointed to by @fps_n and @fps_d.  Returns TRUE if the values could be
parsed correctly, FALSE if not.

This function can be used with #GstCaps that have any media type; it
is not limited to formats handled by #GstVideoFormat.</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">TRUE if @caps was parsed correctly.</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="caps" transfer-ownership="none">
          <doc xml:space="preserve">pointer to a #GstCaps instance</doc>
          <type name="Gst.Caps" c:type="GstCaps*"/>
        </parameter>
        <parameter name="fps_n" transfer-ownership="none">
          <doc xml:space="preserve">pointer to integer to hold numerator of frame rate (output)</doc>
          <type name="gint" c:type="int*"/>
        </parameter>
        <parameter name="fps_d" transfer-ownership="none">
          <doc xml:space="preserve">pointer to integer to hold denominator of frame rate (output)</doc>
          <type name="gint" c:type="int*"/>
        </parameter>
      </parameters>
    </function>
    <function name="video_parse_caps_palette"
              c:identifier="gst_video_parse_caps_palette"
              version="0.10.32"
              introspectable="0">
      <doc xml:space="preserve">Returns the palette data from the caps as a #GstBuffer. For
#GST_VIDEO_FORMAT_RGB8_PALETTED this is containing 256 #guint32
values, each containing ARGB colors in native endianness.</doc>
      <return-value>
        <doc xml:space="preserve">a #GstBuffer containing the palette data. Unref after usage.</doc>
        <type name="Gst.Buffer" c:type="GstBuffer*"/>
      </return-value>
      <parameters>
        <parameter name="caps" transfer-ownership="none">
          <doc xml:space="preserve">#GstCaps to parse</doc>
          <type name="Gst.Caps" c:type="GstCaps*"/>
        </parameter>
      </parameters>
    </function>
    <function name="video_parse_caps_pixel_aspect_ratio"
              c:identifier="gst_video_parse_caps_pixel_aspect_ratio"
              version="0.10.16">
      <doc xml:space="preserve">Extracts the pixel aspect ratio from @caps and places the values in
the locations pointed to by @par_n and @par_d.  Returns TRUE if the
values could be parsed correctly, FALSE if not.

This function can be used with #GstCaps that have any media type; it
is not limited to formats handled by #GstVideoFormat.</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">TRUE if @caps was parsed correctly.</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="caps" transfer-ownership="none">
          <doc xml:space="preserve">pointer to a #GstCaps instance</doc>
          <type name="Gst.Caps" c:type="GstCaps*"/>
        </parameter>
        <parameter name="par_n" transfer-ownership="none">
          <doc xml:space="preserve">pointer to numerator of pixel aspect ratio (output)</doc>
          <type name="gint" c:type="int*"/>
        </parameter>
        <parameter name="par_d" transfer-ownership="none">
          <doc xml:space="preserve">pointer to denominator of pixel aspect ratio (output)</doc>
          <type name="gint" c:type="int*"/>
        </parameter>
      </parameters>
    </function>
  </namespace>
</repository>
