]> gitweb.factorcode.org Git - factor.git/commitdiff
Merge branch 'gtk' into gtk-image-loader
authorPhilipp Brüschweiler <blei42@gmail.com>
Mon, 26 Jul 2010 17:29:17 +0000 (19:29 +0200)
committerPhilipp Brüschweiler <blei42@gmail.com>
Mon, 26 Jul 2010 17:29:17 +0000 (19:29 +0200)
123 files changed:
basis/alien/c-types/c-types.factor
basis/calendar/calendar-tests.factor
basis/calendar/calendar.factor
basis/calendar/unix/unix.factor
basis/compiler/cfg/alias-analysis/alias-analysis.factor
basis/compiler/cfg/builder/alien/boxing/boxing.factor
basis/compiler/cfg/def-use/def-use.factor
basis/compiler/cfg/instructions/instructions.factor
basis/compiler/cfg/linear-scan/allocation/allocation.factor
basis/compiler/cfg/linear-scan/allocation/spilling/spilling.factor
basis/compiler/cfg/linear-scan/live-intervals/live-intervals.factor
basis/compiler/cfg/liveness/liveness-tests.factor
basis/compiler/cfg/save-contexts/save-contexts-tests.factor
basis/compiler/cfg/save-contexts/save-contexts.factor
basis/compiler/codegen/codegen.factor
basis/compiler/tests/alien.factor
basis/compiler/tests/low-level-ir.factor
basis/compiler/tree/finalization/finalization.factor
basis/cpu/architecture/architecture.factor
basis/cpu/x86/32/32.factor
basis/cpu/x86/64/64.factor
basis/cpu/x86/x86.factor
basis/gdk/ffi/ffi.factor
basis/glib/ffi/ffi.factor
basis/gobject-introspection/common/common.factor
basis/gobject-introspection/ffi/ffi.factor
basis/gobject-introspection/gobject-introspection.factor
basis/gobject/ffi/ffi.factor
basis/gstreamer/Gst-0.10.gir [deleted file]
basis/gstreamer/authors.txt [deleted file]
basis/gstreamer/ffi/ffi.factor [deleted file]
basis/gstreamer/gstreamer.factor [deleted file]
basis/gstreamer/summary.txt [deleted file]
basis/gstreamer/tags.txt [deleted file]
basis/io/files/unix/unix-tests.factor
basis/math/matrices/matrices-tests.factor
basis/math/matrices/matrices.factor
basis/math/vectors/simd/simd-tests.factor
basis/regexp/regexp-tests.factor
basis/regexp/regexp.factor
basis/ui/backend/gtk/gtk.factor
basis/ui/gadgets/labels/labels.factor
core/classes/tuple/tuple-tests.factor
extra/clutter/Clutter-1.0.gir [new file with mode: 0644]
extra/clutter/authors.txt [new file with mode: 0644]
extra/clutter/clutter.factor [new file with mode: 0644]
extra/clutter/cogl/Cogl-1.0.gir [new file with mode: 0644]
extra/clutter/cogl/cogl.factor [new file with mode: 0644]
extra/clutter/cogl/ffi/ffi.factor [new file with mode: 0644]
extra/clutter/ffi/ffi.factor [new file with mode: 0644]
extra/clutter/gtk/GtkClutter-0.10.gir [new file with mode: 0644]
extra/clutter/gtk/ffi/ffi.factor [new file with mode: 0644]
extra/clutter/gtk/gtk.factor [new file with mode: 0644]
extra/clutter/json/ClutterJson-1.0.gir [new file with mode: 0644]
extra/clutter/json/ffi/ffi.factor [new file with mode: 0644]
extra/clutter/json/json.factor [new file with mode: 0644]
extra/clutter/summary.txt [new file with mode: 0644]
extra/clutter/tags.txt [new file with mode: 0755]
extra/gdbm/gdbm-tests.factor
extra/gpu/demos/bunny/bunny.factor
extra/gstreamer/Gst-0.10.gir [new file with mode: 0644]
extra/gstreamer/app/GstApp-0.10.gir [new file with mode: 0644]
extra/gstreamer/app/app.factor [new file with mode: 0644]
extra/gstreamer/app/ffi/ffi.factor [new file with mode: 0644]
extra/gstreamer/audio/GstAudio-0.10.gir [new file with mode: 0644]
extra/gstreamer/audio/audio.factor [new file with mode: 0644]
extra/gstreamer/audio/ffi/ffi.factor [new file with mode: 0644]
extra/gstreamer/authors.txt [new file with mode: 0644]
extra/gstreamer/base/GstBase-0.10.gir [new file with mode: 0644]
extra/gstreamer/base/base.factor [new file with mode: 0644]
extra/gstreamer/base/ffi/ffi.factor [new file with mode: 0644]
extra/gstreamer/controller/GstController-0.10.gir [new file with mode: 0644]
extra/gstreamer/controller/controller.factor [new file with mode: 0644]
extra/gstreamer/controller/ffi/ffi.factor [new file with mode: 0644]
extra/gstreamer/ffi/ffi.factor [new file with mode: 0644]
extra/gstreamer/fft/GstFft-0.10.gir [new file with mode: 0644]
extra/gstreamer/fft/ffi/ffi.factor [new file with mode: 0644]
extra/gstreamer/fft/fft.factor [new file with mode: 0644]
extra/gstreamer/gstreamer.factor [new file with mode: 0644]
extra/gstreamer/interfaces/GstInterfaces-0.10.gir [new file with mode: 0644]
extra/gstreamer/interfaces/ffi/ffi.factor [new file with mode: 0644]
extra/gstreamer/interfaces/interfaces.factor [new file with mode: 0644]
extra/gstreamer/net/GstNet-0.10.gir [new file with mode: 0644]
extra/gstreamer/net/ffi/ffi.factor [new file with mode: 0644]
extra/gstreamer/net/net.factor [new file with mode: 0644]
extra/gstreamer/netbuffer/GstNetbuffer-0.10.gir [new file with mode: 0644]
extra/gstreamer/netbuffer/ffi/ffi.factor [new file with mode: 0644]
extra/gstreamer/netbuffer/netbuffer.factor [new file with mode: 0644]
extra/gstreamer/pbutils/GstPbutils-0.10.gir [new file with mode: 0644]
extra/gstreamer/pbutils/ffi/ffi.factor [new file with mode: 0644]
extra/gstreamer/pbutils/pbutils.factor [new file with mode: 0644]
extra/gstreamer/riff/GstRiff-0.10.gir [new file with mode: 0644]
extra/gstreamer/riff/ffi/ffi.factor [new file with mode: 0644]
extra/gstreamer/riff/riff.factor [new file with mode: 0644]
extra/gstreamer/rtp/GstRtp-0.10.gir [new file with mode: 0644]
extra/gstreamer/rtp/ffi/ffi.factor [new file with mode: 0644]
extra/gstreamer/rtp/rtp.factor [new file with mode: 0644]
extra/gstreamer/rtsp/GstRtsp-0.10.gir [new file with mode: 0644]
extra/gstreamer/rtsp/ffi/ffi.factor [new file with mode: 0644]
extra/gstreamer/rtsp/rtsp.factor [new file with mode: 0644]
extra/gstreamer/sdp/GstSdp-0.10.gir [new file with mode: 0644]
extra/gstreamer/sdp/ffi/ffi.factor [new file with mode: 0644]
extra/gstreamer/sdp/sdp.factor [new file with mode: 0644]
extra/gstreamer/summary.txt [new file with mode: 0644]
extra/gstreamer/tag/GstTag-0.10.gir [new file with mode: 0644]
extra/gstreamer/tag/ffi/ffi.factor [new file with mode: 0644]
extra/gstreamer/tag/tag.factor [new file with mode: 0644]
extra/gstreamer/tags.txt [new file with mode: 0755]
extra/gstreamer/video/GstVideo-0.10.gir [new file with mode: 0644]
extra/gstreamer/video/ffi/ffi.factor [new file with mode: 0644]
extra/gstreamer/video/video.factor [new file with mode: 0644]
extra/hello-ui/deploy.factor
vm/alien.cpp
vm/alien.hpp
vm/code_heap.cpp
vm/errors.cpp
vm/math.cpp
vm/math.hpp
vm/objects.cpp
vm/primitives.hpp
vm/quotations.cpp
vm/vm.hpp
vm/words.cpp

index 389883535fbf3296185390878984d4e03ef2f080..46c2209db94bbc8fe85311682f8244381cf671de 100644 (file)
@@ -258,7 +258,7 @@ M: pointer c-type
         2 >>align
         2 >>align-first
         "from_signed_2" >>boxer
-        "to_fixnum" >>unboxer
+        "to_signed_2" >>unboxer
         [ >fixnum ] >>unboxer-quot
     \ short define-primitive-type
 
@@ -271,7 +271,7 @@ M: pointer c-type
         2 >>align
         2 >>align-first
         "from_unsigned_2" >>boxer
-        "to_cell" >>unboxer
+        "to_unsigned_2" >>unboxer
         [ >fixnum ] >>unboxer-quot
     \ ushort define-primitive-type
 
@@ -284,7 +284,7 @@ M: pointer c-type
         1 >>align
         1 >>align-first
         "from_signed_1" >>boxer
-        "to_fixnum" >>unboxer
+        "to_signed_1" >>unboxer
         [ >fixnum ] >>unboxer-quot
     \ char define-primitive-type
 
@@ -297,7 +297,7 @@ M: pointer c-type
         1 >>align
         1 >>align-first
         "from_unsigned_1" >>boxer
-        "to_cell" >>unboxer
+        "to_unsigned_1" >>unboxer
         [ >fixnum ] >>unboxer-quot
     \ uchar define-primitive-type
 
@@ -338,7 +338,7 @@ M: pointer c-type
             4 >>align
             4 >>align-first
             "from_signed_4" >>boxer
-            "to_fixnum" >>unboxer
+            "to_signed_4" >>unboxer
             [ >fixnum ] >>unboxer-quot
         \ int define-primitive-type
     
@@ -351,7 +351,7 @@ M: pointer c-type
             4 >>align
             4 >>align-first
             "from_unsigned_4" >>boxer
-            "to_cell" >>unboxer
+            "to_unsigned_4" >>unboxer
             [ >fixnum ] >>unboxer-quot
         \ uint define-primitive-type
 
index 5cfb0426081ab7ac2a2f1a26ae1a1935553fb499..a79183b30978b590bc89186f985ee0eae99a160f 100644 (file)
@@ -185,3 +185,6 @@ IN: calendar.tests
     2008 1 29 <date> 1 months time+
     2008 2 29 <date> =
 ] unit-test
+
+[ 0 ]
+[ gmt gmt-offset>> duration>seconds ] unit-test
index d9a6dfb3702a37eff06c064ae5eb5f98b0921ba4..4e6b35161f80e9cf94afb87ee33b753dd279d724 100644 (file)
@@ -532,7 +532,7 @@ M: integer end-of-year 12 31 <date> ;
     dup midnight time- ;
 
 : since-1970 ( duration -- timestamp )
-    unix-1970 time+ >local-time ;
+    unix-1970 time+ ;
 
 : timestamp>unix-time ( timestamp -- seconds )
     unix-1970 time- second>> ;
index a1e83cc1c15e6d270f10a71df6c684a9ef9f37df..9f7d1659254630d0e2ce08a418b71f1e4d688cb1 100644 (file)
@@ -11,14 +11,14 @@ IN: calendar.unix
 : timeval>unix-time ( timeval -- timestamp )
     timeval>duration since-1970 ;
 
-: timespec>seconds ( timespec -- seconds )
+: timespec>duration ( timespec -- seconds )
     [ sec>> seconds ] [ nsec>> nanoseconds ] bi time+ ;
 
 : timespec>nanoseconds ( timespec -- seconds )
     [ sec>> 1000000000 * ] [ nsec>> ] bi + ;
 
 : timespec>unix-time ( timespec -- timestamp )
-    timespec>seconds since-1970 ;
+    timespec>duration since-1970 ;
 
 : get-time ( -- alien )
     f time <time_t> localtime ;
index dbceb249687a059ba8ed275ca4ace99fd92db2a9..5ba0bd1300a9b7e9e5f7be3caa082abc22bfa49c 100644 (file)
@@ -299,6 +299,7 @@ M: ##compare analyze-aliases
     \ ##alien-global set-new-ac ;
 
 M: factor-call-insn analyze-aliases
+    call-next-method
     heap-ac get ac>vregs [
         [ live-slots get at clear-assoc ]
         [ recent-stores get at clear-assoc ] bi
index abfad6a451c4863219480f020664928c502fb1d3..180b22e477347278d5dd976108c358e430066418 100644 (file)
@@ -6,6 +6,7 @@ sequences sequences.generalizations system
 compiler.cfg.builder.alien.params compiler.cfg.hats
 compiler.cfg.registers compiler.cfg.instructions
 compiler.cfg.intrinsics.allot cpu.architecture ;
+QUALIFIED-WITH: alien.c-types c
 IN: compiler.cfg.builder.alien.boxing
 
 SYMBOL: struct-return-area
@@ -49,9 +50,15 @@ M: c-type unbox
     [ rep>> ] [ unboxer>> ] bi
     [
         {
-            ! { "to_float" [ drop ] }
-            ! { "to_double" [ drop ] }
-            ! { "alien_offset" [ drop ^^unbox-any-c-ptr ] }
+            { "to_float" [ drop ] }
+            { "to_double" [ drop ] }
+            { "to_signed_1" [ drop ] }
+            { "to_unsigned_1" [ drop ] }
+            { "to_signed_2" [ drop ] }
+            { "to_unsigned_2" [ drop ] }
+            { "to_signed_4" [ drop ] }
+            { "to_unsigned_4" [ drop ] }
+            { "alien_offset" [ drop ^^unbox-any-c-ptr ] }
             [ swap ^^unbox ]
         } case 1array
     ]
@@ -107,9 +114,15 @@ GENERIC: box ( vregs reps c-type -- dst )
 M: c-type box
     [ [ first ] bi@ ] [ boxer>> ] bi*
     {
-        ! { "from_float" [ drop ] }
-        ! { "from_double" [ drop ] }
-        ! { "allot_alien" [ drop ^^box-alien ] }
+        { "from_float" [ drop ] }
+        { "from_double" [ drop ] }
+        { "from_signed_1" [ drop c:char ^^convert-integer ] }
+        { "from_unsigned_1" [ drop c:uchar ^^convert-integer ] }
+        { "from_signed_2" [ drop c:short ^^convert-integer ] }
+        { "from_unsigned_2" [ drop c:ushort ^^convert-integer ] }
+        { "from_signed_4" [ drop c:int ^^convert-integer ] }
+        { "from_unsigned_4" [ drop c:uint ^^convert-integer ] }
+        { "allot_alien" [ drop ^^box-alien ] }
         [ swap <gc-map> ^^box ]
     } case ;
 
index bfbf13e1a97e9a10e9fe4f9c37ad05a14e90efe1..99e87b277be16bcbfb8f73e67f72302dce80f8dd 100644 (file)
@@ -80,12 +80,9 @@ M: ##callback-outputs uses-vregs
     tri
 ] with-compilation-unit
 
-! Computing def-use chains.
-
-SYMBOLS: defs insns uses ;
+SYMBOLS: defs insns ;
 
 : def-of ( vreg -- node ) defs get at ;
-: uses-of ( vreg -- nodes ) uses get at ;
 : insn-of ( vreg -- insn ) insns get at ;
 
 : set-def-of ( obj insn assoc -- )
@@ -98,8 +95,7 @@ SYMBOLS: defs insns uses ;
                 _ set-def-of
             ] with each
         ] each-basic-block
-    ] keep
-    defs set ;
+    ] keep defs set ;
 
 : compute-insns ( cfg -- )
     H{ } clone [
index f78b77d2f0cc5771bf9bffe5e0472dc8393e9db9..5ce7124b4ee8ce6f578fde5fcceaf461f4af1598 100644 (file)
@@ -591,6 +591,12 @@ FOLDABLE-INSN: ##unbox-alien
 def: dst/int-rep
 use: src/tagged-rep ;
 
+! Zero-extending and sign-extending integers
+FOLDABLE-INSN: ##convert-integer
+def: dst/int-rep
+use: src/int-rep
+literal: c-type ;
+
 ! Raw memory accessors
 FLUSHABLE-INSN: ##load-memory
 def: dst
index 92f09c650ffed4d312797bdb2a88d42642146dcb..f102a6ae9ca1adc4c892858935e4495543f952e0 100644 (file)
@@ -48,52 +48,33 @@ IN: compiler.cfg.linear-scan.allocation
     2dup spill-at-sync-point?
     [ swap n>> spill f ] [ 2drop t ] if ;
 
-: handle-interval ( live-interval -- )
+GENERIC: handle ( obj -- )
+
+M: live-interval handle
     [ start>> deactivate-intervals ]
     [ start>> activate-intervals ]
     [ assign-register ]
     tri ;
 
-: (handle-sync-point) ( sync-point -- )
+: handle-sync-point ( sync-point -- )
     active-intervals get values
     [ [ spill-at-sync-point ] with filter! drop ] with each ;
 
-: handle-sync-point ( sync-point -- )
+M: sync-point handle ( sync-point -- )
     [ n>> deactivate-intervals ]
-    [ (handle-sync-point) ]
+    [ handle-sync-point ]
     [ n>> activate-intervals ]
     tri ;
 
+: smallest-heap ( heap1 heap2 -- heap )
+    [ [ heap-peek nip ] bi@ <= ] most ;
+
 :: (allocate-registers-step) ( unhandled-intervals unhandled-sync-points -- )
     {
-        {
-            [ unhandled-intervals heap-empty? ]
-            [ unhandled-sync-points heap-pop drop handle-sync-point ]
-        }
-        {
-            [ unhandled-sync-points heap-empty? ]
-            [ unhandled-intervals heap-pop drop handle-interval ]
-        }
-        [
-            unhandled-intervals heap-peek :> ( i ik )
-            unhandled-sync-points heap-peek :> ( s sk )
-            {
-                {
-                    [ ik sk < ]
-                    [ unhandled-intervals heap-pop* i handle-interval ]
-                }
-                {
-                    [ ik sk > ]
-                    [ unhandled-sync-points heap-pop* s handle-sync-point ]
-                }
-                [
-                    unhandled-intervals heap-pop*
-                    i handle-interval
-                    s (handle-sync-point)
-                ]
-            } cond
-        ]
-    } cond ;
+        { [ unhandled-intervals heap-empty? ] [ unhandled-sync-points ] }
+        { [ unhandled-sync-points heap-empty? ] [ unhandled-intervals ] }
+        [ unhandled-intervals unhandled-sync-points smallest-heap ]
+    } cond heap-pop drop handle ;
 
 : (allocate-registers) ( unhandled-intervals unhandled-sync-points -- )
     2dup [ heap-empty? ] both? [ 2drop ] [
index e773cb9e46e98606db812337e23c6f4e8981fe6f..bc1f538a5c921cc5a8b7eaf0a1ed85e100d1447f 100644 (file)
@@ -79,12 +79,13 @@ ERROR: bad-live-ranges interval ;
 : split-for-spill ( live-interval n -- before after )
     split-interval [ spill-before ] [ spill-after ] bi* ;
 
-: find-use-position ( live-interval new -- n )
-    [ uses>> ] [ start>> '[ n>> _ >= ] ] bi* find nip
+: find-next-use ( live-interval new -- n )
+    [ uses>> ] [ start>> ] bi*
+    '[ [ spill-slot?>> not ] [ n>> ] bi _ >= and ] find nip
     [ n>> ] [ 1/0. ] if* ;
 
 : find-use-positions ( live-intervals new assoc -- )
-    '[ [ _ find-use-position ] [ reg>> ] bi _ add-use-position ] each ;
+    '[ [ _ find-next-use ] [ reg>> ] bi _ add-use-position ] each ;
 
 : active-positions ( new assoc -- )
     [ [ active-intervals-for ] keep ] dip
index 665ffc324d525a75d7924e75a0d0171950a960ef..fbe0cd4507be86600267096ed42f7ef17af7221c 100644 (file)
@@ -16,7 +16,7 @@ TUPLE: live-range from to ;
 
 C: <live-range> live-range
 
-TUPLE: vreg-use n def-rep use-rep ;
+TUPLE: vreg-use n def-rep use-rep spill-slot? ;
 
 : <vreg-use> ( n -- vreg-use ) vreg-use new swap >>n ;
 
@@ -36,8 +36,10 @@ reg-class ;
 : last-use? ( insn# uses -- use/f )
     [ drop f ] [ last [ n>> = ] keep and ] if-empty ;
 
-: (add-use) ( insn# live-interval -- use )
-    uses>> 2dup last-use? dup [ 2nip ] [ drop new-use ] if ;
+:: (add-use) ( insn# live-interval spill-slot? -- use )
+    live-interval uses>> :> uses
+    insn# uses last-use? [ insn# uses new-use ] unless*
+    spill-slot? [ t >>spill-slot? ] when ;
 
 GENERIC: covers? ( insn# obj -- ? )
 
@@ -105,28 +107,42 @@ GENERIC: compute-live-intervals* ( insn -- )
 
 M: insn compute-live-intervals* drop ;
 
-:: record-def ( vreg n -- )
+:: record-def ( vreg n spill-slot? -- )
     vreg live-interval :> live-interval
 
     n live-interval shorten-range
-    n live-interval (add-use) vreg rep-of >>def-rep drop ;
+    n live-interval spill-slot? (add-use) vreg rep-of >>def-rep drop ;
 
-:: record-use ( vreg n -- )
+:: record-use ( vreg n spill-slot? -- )
     vreg live-interval :> live-interval
 
     from get n live-interval add-range
-    n live-interval (add-use) vreg rep-of >>use-rep drop ;
+    n live-interval spill-slot? (add-use) vreg rep-of >>use-rep drop ;
 
 :: record-temp ( vreg n -- )
     vreg live-interval :> live-interval
 
     n n live-interval add-range
-    n live-interval (add-use) vreg rep-of >>def-rep drop ;
+    n live-interval (add-use) vreg rep-of >>def-rep drop ;
 
 M: vreg-insn compute-live-intervals* ( insn -- )
     dup insn#>>
-    [ [ defs-vregs ] dip '[ _ record-def ] each ]
-    [ [ uses-vregs ] dip '[ _ record-use ] each ]
+    [ [ defs-vregs ] dip '[ _ f record-def ] each ]
+    [ [ uses-vregs ] dip '[ _ f record-use ] each ]
+    [ [ temp-vregs ] dip '[ _ record-temp ] each ]
+    2tri ;
+
+M: clobber-insn compute-live-intervals* ( insn -- )
+    dup insn#>>
+    [ [ defs-vregs ] dip '[ _ f record-def ] each ]
+    [ [ uses-vregs ] dip '[ _ t record-use ] each ]
+    [ [ temp-vregs ] dip '[ _ record-temp ] each ]
+    2tri ;
+
+M: hairy-clobber-insn compute-live-intervals* ( insn -- )
+    dup insn#>>
+    [ [ defs-vregs ] dip '[ _ t record-def ] each ]
+    [ [ uses-vregs ] dip '[ _ t record-use ] each ]
     [ [ temp-vregs ] dip '[ _ record-temp ] each ]
     2tri ;
 
index e4f5144e1f8a42122c229c922e9813ce7ce37112..b86f04b8b0ab94ad722b05cd365906d08261d747 100644 (file)
@@ -1,13 +1,19 @@
-USING: compiler.cfg.liveness compiler.cfg.debugger
-compiler.cfg.instructions compiler.cfg.predecessors
-compiler.cfg.registers compiler.cfg cpu.architecture
-accessors namespaces sequences kernel tools.test vectors ;
+USING: compiler.cfg.liveness compiler.cfg.liveness.ssa
+compiler.cfg.debugger compiler.cfg.instructions
+compiler.cfg.predecessors compiler.cfg.registers compiler.cfg
+cpu.architecture accessors namespaces sequences kernel
+tools.test vectors alien math compiler.cfg.comparisons
+cpu.x86.assembler.operands ;
 IN: compiler.cfg.liveness.tests
 
 : test-liveness ( -- )
     cfg new 1 get >>entry
     compute-live-sets ;
 
+: test-ssa-liveness ( -- )
+    cfg new 1 get >>entry
+    compute-ssa-live-sets ;
+
 ! Sanity check...
 
 V{
@@ -30,7 +36,7 @@ V{
 
 1 { 2 3 } edges
 
-test-liveness
+[ ] [ test-liveness ] unit-test
 
 [
     H{
@@ -56,6 +62,95 @@ V{
 
 1 2 edge
 
-test-liveness
+[ ] [ test-liveness ] unit-test
+
+[ H{ { 0 0 } } ] [ 2 get live-in ] unit-test
+
+! Regression
+V{
+    T{ ##prologue }
+    T{ ##branch }
+} 0 test-bb
+
+V{
+    T{ ##inc-r f 2 }
+    T{ ##inc-d f -2 }
+    T{ ##peek f 21 D -1 }
+    T{ ##peek f 22 D -2 }
+    T{ ##replace f 21 R 0 }
+    T{ ##replace f 22 R 1 }
+    T{ ##branch }
+} 1 test-bb
+
+V{
+    T{ ##call f >c-ptr }
+    T{ ##branch }
+} 2 test-bb
+
+V{
+    T{ ##inc-r f -1 }
+    T{ ##inc-d f 1 }
+    T{ ##peek f 25 R -1 }
+    T{ ##replace f 25 D 0 }
+    T{ ##branch }
+} 3 test-bb
+
+V{
+    T{ ##call f >float }
+    T{ ##branch }
+} 4 test-bb
+
+V{
+    T{ ##inc-r f -1 }
+    T{ ##inc-d f 2 }
+    T{ ##peek f 27 R -1 }
+    T{ ##peek f 28 D 2 }
+    T{ ##peek f 29 D 3 }
+    T{ ##load-integer f 30 1 }
+    T{ ##load-integer f 31 0 }
+    T{ ##compare-imm-branch f 27 f cc/= }
+} 5 test-bb
+
+V{
+    T{ ##inc-d f -1 }
+    T{ ##branch }
+} 6 test-bb
+
+V{
+    T{ ##inc-d f -1 }
+    T{ ##branch }
+} 7 test-bb
+
+V{
+    T{ ##phi f 36 H{ { 6 30 } { 7 31 } } }
+    T{ ##inc-d f -2 }
+    T{ ##unbox f 37 29 "alien_offset" int-rep }
+    T{ ##unbox f 38 28 "to_double" double-rep }
+    T{ ##unbox f 39 36 "to_cell" int-rep }
+    T{ ##alien-invoke f V{ } V{ { 37 int-rep 0 } { 38 double-rep 4 } { 39 int-rep 12 } } { { 40 int-rep EAX } } 0 16 "CFRunLoopRunInMode" f T{ gc-map } }
+    T{ ##box f 41 40 "from_signed_cell" int-rep T{ gc-map } }
+    T{ ##replace f 41 D 0 }
+    T{ ##branch }
+} 8 test-bb
+
+V{
+    T{ ##epilogue }
+    T{ ##return }
+} 9 test-bb
+
+0 1 edge
+1 2 edge
+2 3 edge
+3 4 edge
+4 5 edge
+5 { 6 7 } edges
+6 8 edge
+7 8 edge
+8 9 edge
+
+[ ] [ test-ssa-liveness ] unit-test
 
-[ H{ { 0 0 } } ] [ 2 get live-in ] unit-test
\ No newline at end of file
+[ H{ { 28 28 } { 29 29 } { 30 30 } { 31 31 } } ] [ 5 get live-out ] unit-test
+[ H{ { 28 28 } { 29 29 } { 30 30 } } ] [ 6 get live-in ] unit-test
+[ H{ { 28 28 } { 29 29 } { 31 31 } } ] [ 7 get live-in ] unit-test
+[ H{ { 30 30 } } ] [ 6 get 8 get edge-live-in ] unit-test
\ No newline at end of file
index e074d95b1a29fc4eb26df5c6af131bdd80d19c84..fe06d4c7de5b17098b4f8ee7d5eec541f07233a4 100644 (file)
@@ -62,3 +62,20 @@ V{
 ] [
     0 get instructions>>
 ] unit-test
+
+V{
+    T{ ##phi }
+    T{ ##box }
+} 0 test-bb
+
+0 get insert-save-context
+
+[
+    V{
+        T{ ##phi }
+        T{ ##save-context f 7 8 }
+        T{ ##box }
+    }
+] [
+    0 get instructions>>
+] unit-test
index e20cb680200444764c67b331cf67b3b99f1baa93..57691f1a4eb1c150403eb846effc143d31355d5d 100644 (file)
@@ -18,6 +18,7 @@ M: insn needs-save-context? drop f ;
 
 GENERIC: modifies-context? ( insn -- ? )
 
+M: ##phi modifies-context? drop t ;
 M: ##inc-d modifies-context? drop t ;
 M: ##inc-r modifies-context? drop t ;
 M: ##callback-inputs modifies-context? drop t ;
index e3746090cd85fa217eb129c6c468844984af0004..1d7f9eb14e62ac634a282a143231ecf4693a8703 100755 (executable)
@@ -236,6 +236,7 @@ CODEGEN: ##box-alien %box-alien
 CODEGEN: ##box-displaced-alien %box-displaced-alien
 CODEGEN: ##unbox-alien %unbox-alien
 CODEGEN: ##unbox-any-c-ptr %unbox-any-c-ptr
+CODEGEN: ##convert-integer %convert-integer
 CODEGEN: ##load-memory %load-memory
 CODEGEN: ##load-memory-imm %load-memory-imm
 CODEGEN: ##store-memory %store-memory
index f263e1e0f87f09da6c964eec95baaf7486b7588e..d2c51c23026280c0abd5c66c774553a1d04cc738 100755 (executable)
@@ -6,7 +6,7 @@ math memory namespaces namespaces.private parser
 quotations sequences specialized-arrays stack-checker
 stack-checker.errors system threads tools.test words
 alien.complex concurrency.promises alien.data
-byte-arrays classes ;
+byte-arrays classes compiler.test ;
 FROM: alien.c-types => float short ;
 SPECIALIZED-ARRAY: float
 SPECIALIZED-ARRAY: char
@@ -804,3 +804,20 @@ mingw? [
     ] with-out-parameters ;
 
 [ 12 ] [ 6 out-param-callback out-param-indirect ] unit-test
+
+! Alias analysis regression
+: aa-callback-1 ( -- c )
+    double { } cdecl [ 5.0 ] alien-callback ;
+
+: aa-indirect-1 ( c -- x )
+    double { } cdecl alien-indirect ; inline
+
+TUPLE: some-tuple x ;
+
+[ T{ some-tuple f 5.0 } ] [
+    [
+        some-tuple new
+        aa-callback-1
+        aa-indirect-1 >>x
+    ] compile-call
+] unit-test
index 6ec8791ad3bec0abf08c8186192adf1b74dd1b6f..473bd4788fd51f26909a8023bf612fe5967155a9 100644 (file)
@@ -105,3 +105,24 @@ IN: compiler.tests.low-level-ir
         T{ ##add-imm f 0 0 -16 }
     } compile-test-bb
 ] unit-test
+
+[ -1 ] [
+    V{
+        T{ ##load-tagged f 1 $[ -1 tag-fixnum ] }
+        T{ ##convert-integer f 0 1 char }
+    } compile-test-bb
+] unit-test
+
+[ -1 ] [
+    V{
+        T{ ##load-tagged f 1 $[ -1 9 2^ bitxor tag-fixnum ] }
+        T{ ##convert-integer f 0 1 char }
+    } compile-test-bb
+] unit-test
+
+[ $[ 255 tag-bits get neg shift ] ] [
+    V{
+        T{ ##load-tagged f 1 $[ -1 9 2^ bitxor tag-fixnum ] }
+        T{ ##convert-integer f 0 1 uchar }
+    } compile-test-bb
+] unit-test
index fca35a5653be68bbddb0da1c01572cfd8c9e32d3..72ea22422b987b9aba03ce00773ec19a2cfe6254 100644 (file)
@@ -1,8 +1,9 @@
-! Copyright (C) 2008, 2009 Slava Pestov.
+! Copyright (C) 2008, 2010 Slava Pestov.
 ! See http://factorcode.org/license.txt for BSD license.
 USING: kernel accessors sequences words memoize combinators
 classes classes.builtin classes.tuple classes.singleton
 math.partial-dispatch fry assocs combinators.short-circuit
+stack-checker.dependencies
 compiler.tree
 compiler.tree.combinators
 compiler.tree.propagation.info
@@ -26,6 +27,9 @@ GENERIC: finalize* ( node -- nodes )
 
 : splice-final ( quot -- nodes ) splice-quot finalize ;
 
+: splice-predicate ( word -- nodes )
+    [ depends-on-definition ] [ def>> splice-final ] bi ;
+
 M: #copy finalize* drop f ;
 
 M: #shuffle finalize*
@@ -44,8 +48,8 @@ GENERIC: finalize-word ( #call word -- nodes )
 M: predicate finalize-word
     "predicating" word-prop {
         { [ dup builtin-class? ] [ drop word>> cached-expansion ] }
-        { [ dup tuple-class? ] [ drop word>> def>> splice-final ] }
-        { [ dup singleton-class? ] [ drop word>> def>> splice-final ] }
+        { [ dup tuple-class? ] [ drop word>> splice-predicate ] }
+        { [ dup singleton-class? ] [ drop word>> splice-predicate ] }
         [ drop ]
     } cond ;
 
index e69a1cd283e5f98c74aa0d6f42ec38c2f22e08ce..d40450e2985379192e6401d2906d405efc780a61 100644 (file)
@@ -473,6 +473,8 @@ HOOK: %unbox-any-c-ptr cpu ( dst src -- )
 HOOK: %box-alien cpu ( dst src temp -- )
 HOOK: %box-displaced-alien cpu ( dst displacement base temp base-class -- )
 
+HOOK: %convert-integer cpu ( dst src c-type -- )
+
 HOOK: %load-memory cpu ( dst base displacement scale offset rep c-type -- )
 HOOK: %load-memory-imm cpu ( dst base offset rep c-type -- )
 HOOK: %store-memory cpu ( value base displacement scale offset rep c-type -- )
index 7ed80d1e3965f951fbcac57da837179d4ae688e8..3808fb47ba1b7ad61abf8349eebf50884a2c0177 100755 (executable)
@@ -209,6 +209,8 @@ M:: x86.32 %binary-float-function ( dst src1 src2 func -- )
     #! MINGW ABI incompatibility disaster
     [ large-struct? ] [ mingw eq? os windows? not or ] bi* and ;
 
+M: x86.32 %prepare-var-args ( -- ) ;
+
 M:: x86.32 stack-cleanup ( stack-size return abi -- n )
     #! a) Functions which are stdcall/fastcall/thiscall have to
     #! clean up the caller's stack frame.
index 0aad0382fd3eb128358e12bb05235d1c54114510..fad1a747e66fad93358690d372008907a5fe12df 100644 (file)
@@ -140,6 +140,8 @@ M:: x86.64 %binary-float-function ( dst src1 src2 func -- )
     func "libm" load-library f %c-invoke
     dst double-rep %load-return ;
 
+M: x86.64 %prepare-var-args ( -- ) RAX RAX XOR ;
+
 M: x86.64 stack-cleanup 3drop 0 ;
 
 M: x86.64 %cleanup 0 assert= ;
index c5fce25df037f52917eb9e4beef6ba0083215f8c..6442044d35fdc4af58292639b5c0e35027a21974 100644 (file)
@@ -345,6 +345,29 @@ M: x86.64 has-small-reg? 2drop t ;
         [ quot call ] with-save/restore
     ] if ; inline
 
+:: (%convert-integer) ( dst src bits quot -- )
+    dst { src } bits [| new-dst |
+        new-dst src int-rep %copy
+        new-dst dup bits n-bit-version-of quot call
+        dst new-dst int-rep %copy
+    ] with-small-register ; inline
+
+: %zero-extend ( dst src bits -- )
+    [ MOVZX ] (%convert-integer) ; inline
+
+: %sign-extend ( dst src bits -- )
+    [ MOVSX ] (%convert-integer) ; inline
+
+M: x86 %convert-integer ( dst src c-type -- )
+    {
+        { c:char   [ 8 %sign-extend ] }
+        { c:uchar  [ 8 %zero-extend ] }
+        { c:short  [ 16 %sign-extend ] }
+        { c:ushort [ 16 %zero-extend ] }
+        { c:int    [ 32 %sign-extend ] }
+        { c:uint   [ 32 [ 2drop ] (%convert-integer) ] }
+    } case ;
+
 :: %alien-integer-getter ( dst exclude address bits quot -- )
     dst exclude bits [| new-dst |
         new-dst dup bits n-bit-version-of dup address MOV
@@ -621,6 +644,7 @@ HOOK: %cleanup cpu ( n -- )
 :: emit-alien-insn ( reg-inputs stack-inputs reg-outputs cleanup stack-size quot -- )
     stack-inputs [ first3 %store-stack-param ] each
     reg-inputs [ first3 %store-reg-param ] each
+    %prepare-var-args
     quot call
     cleanup %cleanup
     reg-outputs [ first3 %load-reg-param ] each ; inline
index 11dbbc6fdb6efda957829ff1413e7c255f0d23a7..28a9f7be370088e346444c346b43da31cb3c8478 100644 (file)
@@ -18,6 +18,8 @@ TYPEDEF: guint32 GdkNativeWindow
 TYPEDEF: guint32 GdkWChar
 C-TYPE: GdkXEvent
 
+REPLACE-C-TYPE: any gpointer
+
 IMPLEMENT-STRUCTS: GdkEventAny GdkEventKey GdkEventButton
 GdkEventScroll GdkEventMotion GdkEventExpose GdkEventVisibility
 GdkEventCrossing GdkEventFocus GdkEventConfigure GdkEventProperty
index f5af540dfaf9a9f997453beb7d54dc20e6c6d0be..22b40f47adbecb8377ab0784b2bb8c623cbcb5a8 100644 (file)
@@ -14,8 +14,6 @@ IN: glib.ffi
 } cond
 >>
 
-<< double "long double" current-vocab create typedef >>
-
 TYPEDEF: char gchar
 TYPEDEF: uchar guchar
 TYPEDEF: short gshort
@@ -66,7 +64,9 @@ TYPEDEF: guint32 gunichar
 TYPEDEF: guint16 gunichar2
 
 TYPEDEF: gpointer pointer
-TYPEDEF: gpointer any
+
+REPLACE-C-TYPE: long\sdouble double
+REPLACE-C-TYPE: any gpointer
 
 IMPLEMENT-STRUCTS: GError GPollFD GSource GSourceFuncs ;
 
index 8bf2c7eb789bc965f3cb6a1ba40e0e8f5615c569..7ffca04bdec29c17c9e1b9f2cf5bb6a5c57ba43a 100644 (file)
@@ -14,4 +14,8 @@ SYMBOL: aliases
 aliases [ H{ } ] initialize
 
 SYMBOL: implement-structs
+implement-structs [ V{ } ] initialize
+
+SYMBOL: replaced-c-types
+replaced-c-types [ H{ } ] initialize
 
index 9af01865535af3c88fc0dd29cb8053492e828ae9..fb58ede1f6832acb1dbf0d1430cb6d5496f812a4 100644 (file)
@@ -1,6 +1,6 @@
 ! Copyright (C) 2009 Anton Gorenko.
 ! See http://factorcode.org/license.txt for BSD license.
-USING: accessors alien alien.c-types alien.parser arrays
+USING: accessors alien alien.c-types alien.parser arrays assocs
 classes.parser classes.struct combinators
 combinators.short-circuit definitions effects fry
 gobject-introspection.common gobject-introspection.types kernel
@@ -9,7 +9,9 @@ sequences.generalizations words words.constant ;
 IN: gobject-introspection.ffi
 
 : string>c-type ( str -- c-type )
-    parse-c-type ;
+    dup CHAR: * swap index [ cut ] [ "" ] if*
+    [ replaced-c-types get-global ?at drop ] dip
+    append parse-c-type ;
     
 : define-each ( nodes quot -- )
     '[ dup @ >>ffi drop ] each ; inline
index f0a5a982b2934b51c6972a31f466755665513e31..ae934ea76fffa1c5c2148d74f3cfcdadf7e6ed3e 100755 (executable)
@@ -1,8 +1,8 @@
 ! Copyright (C) 2009 Anton Gorenko.
 ! See http://factorcode.org/license.txt for BSD license.
 USING: accessors assocs combinators gobject-introspection.common
-gobject-introspection.ffi gobject-introspection.loader
-kernel lexer locals math namespaces sequences vocabs.parser xml ;
+gobject-introspection.ffi gobject-introspection.loader kernel lexer
+locals math namespaces sequences strings.parser vocabs.parser xml ;
 IN: gobject-introspection
 
 : with-child-vocab ( name quot -- )
@@ -19,9 +19,15 @@ IN: gobject-introspection
     {
         [ define-ffi-repository ]
     } cleave
-    f implement-structs set-global ;
+    V{ } clone implement-structs set-global
+    H{ } clone replaced-c-types set-global ;
 
 SYNTAX: GIR: scan define-gir-vocab ;
 
 SYNTAX: IMPLEMENT-STRUCTS:
-    ";" parse-tokens implement-structs set-global ;
+    ";" parse-tokens
+    implement-structs [ swap append! ] change-global ;
+
+SYNTAX: REPLACE-C-TYPE:
+    scan unescape-string scan swap
+    replaced-c-types get-global set-at ;
index 2904ceb833bdfca7634306a4286192c470c7ad1b..7e2c5eace6ad09efa981c3a272171a201a9aed60 100644 (file)
@@ -1,7 +1,7 @@
 ! Copyright (C) 2009 Anton Gorenko.
 ! See http://factorcode.org/license.txt for BSD license.
 USING: alien alien.syntax alien.destructors alien.libraries
-combinators kernel literals math system
+classes.struct combinators kernel literals math system
 gobject-introspection glib.ffi ;
 EXCLUDE: alien.c-types => pointer ;
 IN: gobject.ffi
@@ -18,12 +18,13 @@ TYPEDEF: void* GSignalCMarshaller
 TYPEDEF: void GStrv
 TYPEDEF: gchar* gchararray
 
-IMPLEMENT-STRUCTS: GValue ;
-
 GIR: vocab:gobject/GObject-2.0.gir
 
 IN: gobject.ffi
 
+FORGET: GValue
+STRUCT: GValue { g_type GType } { data guint64[2] } ;
+
 FORGET: GIOCondition
 FORGET: G_IO_IN
 FORGET: G_IO_OUT
diff --git a/basis/gstreamer/Gst-0.10.gir b/basis/gstreamer/Gst-0.10.gir
deleted file mode 100644 (file)
index d187fe1..0000000
+++ /dev/null
@@ -1,22063 +0,0 @@
-<?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.0"
-            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="GLib" version="2.0"/>
-  <include name="GModule" version="2.0"/>
-  <include name="GObject" version="2.0"/>
-  <include name="libxml2" version="2.0"/>
-  <package name="glib-2.0"/>
-  <package name="gmodule-no-export-2.0"/>
-  <package name="gobject-2.0"/>
-  <package name="gthread-2.0"/>
-  <package name="libxml-2.0"/>
-  <c:include name="gst/gst.h"/>
-  <namespace name="Gst"
-             version="0.10"
-             shared-library="libgstreamer-0.10.so.0"
-             c:prefix="Gst">
-    <alias name="ClockID" target="any" c:type="GstClockID"/>
-    <alias name="ClockTime" target="uint64" c:type="GstClockTime"/>
-    <alias name="ClockTimeDiff" target="int64" c:type="GstClockTimeDiff"/>
-    <enumeration name="ActivateMode"
-                 doc="The status of a GstPad. After activating a pad, which usually happens when the
-parent element goes from READY to PAUSED, the GstActivateMode defines if the
-pad operates in push or pull mode."
-                 c:type="GstActivateMode">
-      <member name="none" value="0" c:identifier="GST_ACTIVATE_NONE"/>
-      <member name="push" value="1" c:identifier="GST_ACTIVATE_PUSH"/>
-      <member name="pull" value="2" c:identifier="GST_ACTIVATE_PULL"/>
-    </enumeration>
-    <record name="AllocTrace"
-            c:type="GstAllocTrace"
-            doc="The main tracing object">
-      <field name="name" writable="1">
-        <type name="utf8" c:type="gchar*"/>
-      </field>
-      <field name="flags" writable="1">
-        <type name="int" c:type="gint"/>
-      </field>
-      <field name="live" writable="1">
-        <type name="int" c:type="gint"/>
-      </field>
-      <field name="mem_live" writable="1">
-        <type name="GLib.SList" c:type="GSList*"/>
-      </field>
-      <method name="print"
-              c:identifier="gst_alloc_trace_print"
-              doc="Print the status of the given GstAllocTrace.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-      </method>
-      <method name="set_flags"
-              c:identifier="gst_alloc_trace_set_flags"
-              doc="Enable the given features on the given GstAllocTrace object.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="flags" transfer-ownership="none">
-            <type name="AllocTraceFlags" c:type="GstAllocTraceFlags"/>
-          </parameter>
-        </parameters>
-      </method>
-    </record>
-    <bitfield name="AllocTraceFlags"
-              doc="Flags indicating which tracing feature to enable."
-              c:type="GstAllocTraceFlags">
-      <member name="live" value="1" c:identifier="GST_ALLOC_TRACE_LIVE"/>
-      <member name="mem_live"
-              value="2"
-              c:identifier="GST_ALLOC_TRACE_MEM_LIVE"/>
-    </bitfield>
-    <bitfield name="AssocFlags"
-              doc="that marks a place where one can randomly seek to.
-is one that marks a place where one can relatively seek to.
-Flags for an association entry."
-              c:type="GstAssocFlags">
-      <member name="none" value="0" c:identifier="GST_ASSOCIATION_FLAG_NONE"/>
-      <member name="key_unit"
-              value="1"
-              c:identifier="GST_ASSOCIATION_FLAG_KEY_UNIT"/>
-      <member name="delta_unit"
-              value="2"
-              c:identifier="GST_ASSOCIATION_FLAG_DELTA_UNIT"/>
-      <member name="last"
-              value="256"
-              c:identifier="GST_ASSOCIATION_FLAG_LAST"/>
-    </bitfield>
-    <constant name="BUFFER_COPY_ALL" value="0">
-      <type name="int"/>
-    </constant>
-    <constant name="BUFFER_OFFSET_NONE" value="-1">
-      <type name="int"/>
-    </constant>
-    <constant name="BUFFER_TRACE_NAME" value="GstBuffer">
-      <type name="utf8"/>
-    </constant>
-    <class name="Bin"
-           c:type="GstBin"
-           doc="The GstBin base class. Subclasses can access these fields provided
-the LOCK is taken."
-           parent="Element"
-           glib:type-name="GstBin"
-           glib:get-type="gst_bin_get_type"
-           glib:type-struct="BinClass">
-      <implements name="ChildProxy"/>
-      <constructor name="new"
-                   c:identifier="gst_bin_new"
-                   doc="Creates a new bin with the given name.">
-        <return-value transfer-ownership="full">
-          <type name="Bin" c:type="GstElement*"/>
-        </return-value>
-        <parameters>
-          <parameter name="name" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-        </parameters>
-      </constructor>
-      <virtual-method name="add_element">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="element" transfer-ownership="none">
-            <type name="Element" c:type="GstElement*"/>
-          </parameter>
-        </parameters>
-      </virtual-method>
-      <virtual-method name="remove_element">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="element" transfer-ownership="none">
-            <type name="Element" c:type="GstElement*"/>
-          </parameter>
-        </parameters>
-      </virtual-method>
-      <virtual-method name="handle_message">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="message" transfer-ownership="none">
-            <type name="Message" c:type="GstMessage*"/>
-          </parameter>
-        </parameters>
-      </virtual-method>
-      <method name="add"
-              c:identifier="gst_bin_add"
-              doc="Adds the given element to the bin.  Sets the element&apos;s parent, and thus
-takes ownership of the element. An element can only be added to one bin.
-If the element&apos;s pads are linked to other pads, the pads will be unlinked
-before the element is added to the bin.
-MT safe.
-the bin does not want to accept the element.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="element" transfer-ownership="none">
-            <type name="Element" c:type="GstElement*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="remove"
-              c:identifier="gst_bin_remove"
-              doc="Removes the element from the bin, unparenting it as well.
-Unparenting the element means that the element will be dereferenced,
-so if the bin holds the only reference to the element, the element
-will be freed in the process of removing it from the bin.  If you
-want the element to still exist after removing, you need to call
-gst_object_ref() before removing it from the bin.
-If the element&apos;s pads are linked to other pads, the pads will be unlinked
-before the element is removed from the bin.
-MT safe.
-the bin does not want to remove the element.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="element" transfer-ownership="none">
-            <type name="Element" c:type="GstElement*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_by_name"
-              c:identifier="gst_bin_get_by_name"
-              doc="Gets the element with the given name from a bin. This
-function recurses into child bins.
-Returns NULL if no element with the given name is found in the bin.
-MT safe.  Caller owns returned reference.">
-        <return-value transfer-ownership="full">
-          <type name="Element" c:type="GstElement*"/>
-        </return-value>
-        <parameters>
-          <parameter name="name" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_by_name_recurse_up"
-              c:identifier="gst_bin_get_by_name_recurse_up"
-              doc="Gets the element with the given name from this bin. If the
-element is not found, a recursion is performed on the parent bin.
-Returns NULL if:
-- no element with the given name is found in the bin
-MT safe.  Caller owns returned reference.">
-        <return-value transfer-ownership="full">
-          <type name="Element" c:type="GstElement*"/>
-        </return-value>
-        <parameters>
-          <parameter name="name" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_by_interface"
-              c:identifier="gst_bin_get_by_interface"
-              doc="Looks for an element inside the bin that implements the given
-interface. If such an element is found, it returns the element.
-You can cast this element to the given interface afterwards.  If you want
-all elements that implement the interface, use
-gst_bin_iterate_all_by_interface(). This function recurses into child bins.
-MT safe.  Caller owns returned reference.">
-        <return-value transfer-ownership="full">
-          <type name="Element" c:type="GstElement*"/>
-        </return-value>
-        <parameters>
-          <parameter name="iface" transfer-ownership="none">
-            <type name="GType" c:type="GType"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="iterate_elements"
-              c:identifier="gst_bin_iterate_elements"
-              doc="Gets an iterator for the elements in this bin.
-Each element yielded by the iterator will have its refcount increased, so
-unref after use.
-MT safe.  Caller owns returned value.">
-        <return-value transfer-ownership="full">
-          <type name="Iterator" c:type="GstIterator*"/>
-        </return-value>
-      </method>
-      <method name="iterate_sorted"
-              c:identifier="gst_bin_iterate_sorted"
-              doc="Gets an iterator for the elements in this bin in topologically
-sorted order. This means that the elements are returned from
-the most downstream elements (sinks) to the sources.
-This function is used internally to perform the state changes
-of the bin elements and for clock selection.
-Each element yielded by the iterator will have its refcount increased, so
-unref after use.
-MT safe.  Caller owns returned value.">
-        <return-value transfer-ownership="full">
-          <type name="Iterator" c:type="GstIterator*"/>
-        </return-value>
-      </method>
-      <method name="iterate_recurse"
-              c:identifier="gst_bin_iterate_recurse"
-              doc="Gets an iterator for the elements in this bin.
-This iterator recurses into GstBin children.
-Each element yielded by the iterator will have its refcount increased, so
-unref after use.
-MT safe.  Caller owns returned value.">
-        <return-value transfer-ownership="full">
-          <type name="Iterator" c:type="GstIterator*"/>
-        </return-value>
-      </method>
-      <method name="iterate_sinks"
-              c:identifier="gst_bin_iterate_sinks"
-              doc="Gets an iterator for all elements in the bin that have the
-#GST_ELEMENT_IS_SINK flag set.
-Each element yielded by the iterator will have its refcount increased, so
-unref after use.
-MT safe.  Caller owns returned value.">
-        <return-value transfer-ownership="full">
-          <type name="Iterator" c:type="GstIterator*"/>
-        </return-value>
-      </method>
-      <method name="iterate_sources"
-              c:identifier="gst_bin_iterate_sources"
-              doc="Gets an iterator for all elements in the bin that have no sinkpads and have
-the #GST_ELEMENT_IS_SINK flag unset.
-Each element yielded by the iterator will have its refcount increased, so
-unref after use.
-MT safe.  Caller owns returned value.">
-        <return-value transfer-ownership="full">
-          <type name="Iterator" c:type="GstIterator*"/>
-        </return-value>
-      </method>
-      <method name="iterate_all_by_interface"
-              c:identifier="gst_bin_iterate_all_by_interface"
-              doc="Looks for all elements inside the bin that implements the given
-interface. You can safely cast all returned elements to the given interface.
-The function recurses inside child bins. The iterator will yield a series
-of #GstElement that should be unreffed after use.
-Each element yielded by the iterator will have its refcount increased, so
-unref after use.
-MT safe.  Caller owns returned value.
-implementing the given interface, or NULL">
-        <return-value transfer-ownership="full">
-          <type name="Iterator" c:type="GstIterator*"/>
-        </return-value>
-        <parameters>
-          <parameter name="iface" transfer-ownership="none">
-            <type name="GType" c:type="GType"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="recalculate_latency"
-              c:identifier="gst_bin_recalculate_latency"
-              doc="Query @bin for the current latency using and reconfigures this latency to all the
-elements with a LATENCY event.
-This method is typically called on the pipeline when a #GST_MESSAGE_LATENCY
-is posted on the bus.
-This function simply emits the &apos;do-latency&apos; signal so any custom latency
-calculations will be performed."
-              version="0.10.22.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-      </method>
-      <method name="add_many"
-              c:identifier="gst_bin_add_many"
-              doc="Adds a NULL-terminated list of elements to a bin.  This function is
-equivalent to calling gst_bin_add() for each member of the list. The return
-value of each gst_bin_add() is ignored.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="element_1" transfer-ownership="none">
-            <type name="Element" c:type="GstElement*"/>
-          </parameter>
-          <parameter transfer-ownership="none">
-            <varargs>
-            </varargs>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="remove_many"
-              c:identifier="gst_bin_remove_many"
-              doc="Remove a list of elements from a bin. This function is equivalent
-to calling gst_bin_remove() with each member of the list.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="element_1" transfer-ownership="none">
-            <type name="Element" c:type="GstElement*"/>
-          </parameter>
-          <parameter transfer-ownership="none">
-            <varargs>
-            </varargs>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="find_unlinked_pad"
-              c:identifier="gst_bin_find_unlinked_pad"
-              doc="Recursively looks for elements with an unlinked pad of the given
-direction within the specified bin and returns an unlinked pad
-if one is found, or NULL otherwise. If a pad is found, the caller
-owns a reference to it and should use gst_object_unref() on the
-pad when it is not needed any longer."
-              version="0.10.20">
-        <return-value transfer-ownership="full">
-          <type name="Pad" c:type="GstPad*"/>
-        </return-value>
-        <parameters>
-          <parameter name="direction" transfer-ownership="none">
-            <type name="PadDirection" c:type="GstPadDirection"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="find_unconnected_pad"
-              c:identifier="gst_bin_find_unconnected_pad"
-              doc="Recursively looks for elements with an unlinked pad of the given
-direction within the specified bin and returns an unlinked pad
-if one is found, or NULL otherwise. If a pad is found, the caller
-owns a reference to it and should use gst_object_unref() on the
-pad when it is not needed any longer."
-              version="0.10.3"
-              deprecated="use gst_bin_find_unlinked_pad() instead.">
-        <return-value transfer-ownership="full">
-          <type name="Pad" c:type="GstPad*"/>
-        </return-value>
-        <parameters>
-          <parameter name="direction" transfer-ownership="none">
-            <type name="PadDirection" c:type="GstPadDirection"/>
-          </parameter>
-        </parameters>
-      </method>
-      <property name="async-handling" writable="1">
-        <type name="boolean" c:type="gboolean"/>
-      </property>
-      <field name="element">
-        <type name="Element" c:type="GstElement"/>
-      </field>
-      <field name="numchildren">
-        <type name="int" c:type="gint"/>
-      </field>
-      <field name="children">
-        <type name="GLib.List" c:type="GList*"/>
-      </field>
-      <field name="children_cookie">
-        <type name="uint32" c:type="guint32"/>
-      </field>
-      <field name="child_bus">
-        <type name="Bus" c:type="GstBus*"/>
-      </field>
-      <field name="messages">
-        <type name="GLib.List" c:type="GList*"/>
-      </field>
-      <field name="polling">
-        <type name="boolean" c:type="gboolean"/>
-      </field>
-      <field name="state_dirty">
-        <type name="boolean" c:type="gboolean"/>
-      </field>
-      <field name="clock_dirty">
-        <type name="boolean" c:type="gboolean"/>
-      </field>
-      <field name="provided_clock">
-        <type name="Clock" c:type="GstClock*"/>
-      </field>
-      <field name="clock_provider">
-        <type name="Element" c:type="GstElement*"/>
-      </field>
-      <field name="priv">
-        <type name="BinPrivate" c:type="GstBinPrivate*"/>
-      </field>
-      <field name="_gst_reserved">
-        <array zero-terminated="0" c:type="gpointer" fixed-size="3">
-          <type name="any"/>
-        </array>
-      </field>
-      <glib:signal name="do-latency"
-                   doc="Will be emitted when the bin needs to perform latency calculations. This
-signal is only emited for toplevel bins or when async-handling is
-enabled.
-Only one signal handler is invoked. If no signals are connected, the
-default handler is invoked, which will query and distribute the lowest
-possible latency to all sinks.
-Connect to this signal if the default latency calculations are not
-sufficient, like when you need different latencies for different sinks in
-the same pipeline."
-                   version="0.10.22">
-        <return-value transfer-ownership="full">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-      </glib:signal>
-      <glib:signal name="element-added"
-                   doc="Will be emitted after the element was added to the bin.">
-        <return-value transfer-ownership="full">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="element" transfer-ownership="none">
-            <type name="Element" c:type="GstElement"/>
-          </parameter>
-        </parameters>
-      </glib:signal>
-      <glib:signal name="element-removed"
-                   doc="Will be emitted after the element was removed from the bin.">
-        <return-value transfer-ownership="full">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="element" transfer-ownership="none">
-            <type name="Element" c:type="GstElement"/>
-          </parameter>
-        </parameters>
-      </glib:signal>
-    </class>
-    <record name="BinClass"
-            c:type="GstBinClass"
-            glib:is-gtype-struct-for="Bin"
-            doc="Subclasses can override the @add_element and @remove_element to
-update the list of children in the bin.
-The @handle_message method can be overridden to implement custom
-message handling.  @handle_message takes ownership of the message, just like
-#gst_element_post_message.">
-      <field name="parent_class">
-        <type name="ElementClass" c:type="GstElementClass"/>
-      </field>
-      <field name="pool">
-        <type name="GLib.ThreadPool" c:type="GThreadPool*"/>
-      </field>
-      <field name="element_added">
-        <callback name="element_added" c:type="element_added">
-          <return-value transfer-ownership="none">
-            <type name="none" c:type="void"/>
-          </return-value>
-          <parameters>
-            <parameter name="bin" transfer-ownership="none">
-              <type name="Bin" c:type="GstBin*"/>
-            </parameter>
-            <parameter name="child" transfer-ownership="none">
-              <type name="Element" c:type="GstElement*"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="element_removed">
-        <callback name="element_removed" c:type="element_removed">
-          <return-value transfer-ownership="none">
-            <type name="none" c:type="void"/>
-          </return-value>
-          <parameters>
-            <parameter name="bin" transfer-ownership="none">
-              <type name="Bin" c:type="GstBin*"/>
-            </parameter>
-            <parameter name="child" transfer-ownership="none">
-              <type name="Element" c:type="GstElement*"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="add_element">
-        <callback name="add_element" c:type="add_element">
-          <return-value transfer-ownership="none">
-            <type name="boolean" c:type="gboolean"/>
-          </return-value>
-          <parameters>
-            <parameter name="bin" transfer-ownership="none">
-              <type name="Bin" c:type="GstBin*"/>
-            </parameter>
-            <parameter name="element" transfer-ownership="none">
-              <type name="Element" c:type="GstElement*"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="remove_element">
-        <callback name="remove_element" c:type="remove_element">
-          <return-value transfer-ownership="none">
-            <type name="boolean" c:type="gboolean"/>
-          </return-value>
-          <parameters>
-            <parameter name="bin" transfer-ownership="none">
-              <type name="Bin" c:type="GstBin*"/>
-            </parameter>
-            <parameter name="element" transfer-ownership="none">
-              <type name="Element" c:type="GstElement*"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="handle_message">
-        <callback name="handle_message" c:type="handle_message">
-          <return-value transfer-ownership="none">
-            <type name="none" c:type="void"/>
-          </return-value>
-          <parameters>
-            <parameter name="bin" transfer-ownership="none">
-              <type name="Bin" c:type="GstBin*"/>
-            </parameter>
-            <parameter name="message" transfer-ownership="none">
-              <type name="Message" c:type="GstMessage*"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="do_latency">
-        <callback name="do_latency" c:type="do_latency">
-          <return-value transfer-ownership="none">
-            <type name="boolean" c:type="gboolean"/>
-          </return-value>
-          <parameters>
-            <parameter name="bin" transfer-ownership="none">
-              <type name="Bin" c:type="GstBin*"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="_gst_reserved">
-        <array zero-terminated="0" c:type="gpointer" fixed-size="3">
-          <type name="any"/>
-        </array>
-      </field>
-    </record>
-    <bitfield name="BinFlags"
-              doc="Derived classes can use this as first value in a list of flags.
-GstBinFlags are a set of flags specific to bins. Most are set/used
-internally. They can be checked using the GST_OBJECT_FLAG_IS_SET () macro,
-and (un)set using GST_OBJECT_FLAG_SET () and GST_OBJECT_FLAG_UNSET ()."
-              c:type="GstBinFlags">
-      <member name="bin_flag_last"
-              value="33554432"
-              c:identifier="GST_BIN_FLAG_LAST"/>
-    </bitfield>
-    <record name="BinPrivate" c:type="GstBinPrivate">
-    </record>
-    <record name="Buffer"
-            c:type="GstBuffer"
-            doc="timestamp is not known or relevant.
-when the duration is not known or relevant.
-For video frames, this is the frame number of this buffer.
-For audio samples, this is the offset of the first sample in this buffer.
-For file data or compressed data this is the byte offset of the first
-byte in this buffer.
-format as @offset.
-When the buffer is freed, this data will freed with @free_func.
-to g_free(). Since 0.10.22.
-The structure of a #GstBuffer. Use the associated macros to access the public
-variables.">
-      <field name="mini_object" writable="1">
-        <type name="MiniObject" c:type="GstMiniObject"/>
-      </field>
-      <field name="data" writable="1">
-        <type name="any" c:type="guint8*"/>
-      </field>
-      <field name="size" writable="1">
-        <type name="uint" c:type="guint"/>
-      </field>
-      <field name="timestamp" writable="1">
-        <type name="ClockTime" c:type="GstClockTime"/>
-      </field>
-      <field name="duration" writable="1">
-        <type name="ClockTime" c:type="GstClockTime"/>
-      </field>
-      <field name="caps" writable="1">
-        <type name="Caps" c:type="GstCaps*"/>
-      </field>
-      <field name="offset" writable="1">
-        <type name="uint64" c:type="guint64"/>
-      </field>
-      <field name="offset_end" writable="1">
-        <type name="uint64" c:type="guint64"/>
-      </field>
-      <field name="malloc_data" writable="1">
-        <type name="any" c:type="guint8*"/>
-      </field>
-      <field name="free_func" writable="1">
-        <type name="GLib.FreeFunc" c:type="GFreeFunc"/>
-      </field>
-      <field name="parent" writable="1">
-        <type name="Buffer" c:type="GstBuffer*"/>
-      </field>
-      <field name="_gst_reserved" writable="1">
-        <array zero-terminated="0" c:type="gpointer" fixed-size="2">
-          <type name="any"/>
-        </array>
-      </field>
-      <constructor name="new"
-                   c:identifier="gst_buffer_new"
-                   doc="Creates a newly allocated buffer without any data.
-MT safe.">
-        <return-value transfer-ownership="full">
-          <type name="Buffer" c:type="GstBuffer*"/>
-        </return-value>
-      </constructor>
-      <constructor name="new_and_alloc"
-                   c:identifier="gst_buffer_new_and_alloc"
-                   doc="Creates a newly allocated buffer with data of the given size.
-The buffer memory is not cleared. If the requested amount of
-memory can&apos;t be allocated, the program will abort. Use
-gst_buffer_try_new_and_alloc() if you want to handle this case
-gracefully or have gotten the size to allocate from an untrusted
-source such as a media stream.
-Note that when @size == 0, the buffer data pointer will be NULL.
-MT safe.">
-        <return-value transfer-ownership="full">
-          <type name="Buffer" c:type="GstBuffer*"/>
-        </return-value>
-        <parameters>
-          <parameter name="size" transfer-ownership="none">
-            <type name="uint" c:type="guint"/>
-          </parameter>
-        </parameters>
-      </constructor>
-      <method name="copy_metadata"
-              c:identifier="gst_buffer_copy_metadata"
-              doc="Copies the metadata from @src into @dest. The data, size and mallocdata
-fields are not copied.
-all the metadata fields.
-This function is typically called from a custom buffer copy function after
-creating @dest and setting the data, size, mallocdata."
-              version="0.10.13">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="src" transfer-ownership="none">
-            <type name="Buffer" c:type="GstBuffer*"/>
-          </parameter>
-          <parameter name="flags" transfer-ownership="none">
-            <type name="BufferCopyFlags" c:type="GstBufferCopyFlags"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="is_metadata_writable"
-              c:identifier="gst_buffer_is_metadata_writable"
-              doc="Similar to gst_buffer_is_writable, but this only ensures that the
-refcount of the buffer is 1, indicating that the caller is the sole
-owner and can change the buffer metadata, such as caps and timestamps.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-      </method>
-      <method name="make_metadata_writable"
-              c:identifier="gst_buffer_make_metadata_writable"
-              doc="Similar to gst_buffer_make_writable, but does not ensure that the buffer
-data array is writable. Instead, this just ensures that the returned buffer
-is solely owned by the caller, by creating a subbuffer of the original
-buffer if necessary.
-After calling this function, @buf should not be referenced anymore. The
-result of this function has guaranteed writable metadata.">
-        <return-value transfer-ownership="full">
-          <type name="Buffer" c:type="GstBuffer*"/>
-        </return-value>
-      </method>
-      <method name="get_caps"
-              c:identifier="gst_buffer_get_caps"
-              doc="Gets the media type of the buffer. This can be NULL if there
-is no media type attached to this buffer.
-Returns NULL if there were no caps on this buffer.">
-        <return-value transfer-ownership="full">
-          <type name="Caps" c:type="GstCaps*"/>
-        </return-value>
-      </method>
-      <method name="set_caps"
-              c:identifier="gst_buffer_set_caps"
-              doc="Sets the media type on the buffer. The refcount of the caps will
-be increased and any previous caps on the buffer will be
-unreffed.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="caps" transfer-ownership="none">
-            <type name="Caps" c:type="GstCaps*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="create_sub"
-              c:identifier="gst_buffer_create_sub"
-              doc="begins.
-Creates a sub-buffer from @parent at @offset and @size.
-This sub-buffer uses the actual memory space of the parent buffer.
-This function will copy the offset and timestamp fields when the
-offset is 0. If not, they will be set to #GST_CLOCK_TIME_NONE and
-#GST_BUFFER_OFFSET_NONE.
-If @offset equals 0 and @size equals the total size of @buffer, the
-duration and offset end fields are also copied. If not they will be set
-to #GST_CLOCK_TIME_NONE and #GST_BUFFER_OFFSET_NONE.
-MT safe.
-Returns NULL if the arguments were invalid.">
-        <return-value transfer-ownership="full">
-          <type name="Buffer" c:type="GstBuffer*"/>
-        </return-value>
-        <parameters>
-          <parameter name="offset" transfer-ownership="none">
-            <type name="uint" c:type="guint"/>
-          </parameter>
-          <parameter name="size" transfer-ownership="none">
-            <type name="uint" c:type="guint"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="is_span_fast"
-              c:identifier="gst_buffer_is_span_fast"
-              doc="Determines whether a gst_buffer_span() can be done without copying
-the contents, that is, whether the data areas are contiguous sub-buffers of
-the same buffer.
-MT safe.
-FALSE if a copy would be required.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="buf2" transfer-ownership="none">
-            <type name="Buffer" c:type="GstBuffer*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="span"
-              c:identifier="gst_buffer_span"
-              doc="buffer should start.
-Creates a new buffer that consists of part of buf1 and buf2.
-Logically, buf1 and buf2 are concatenated into a single larger
-buffer, and a new buffer is created at the given offset inside
-this space, with a given length.
-If the two source buffers are children of the same larger buffer,
-and are contiguous, the new buffer will be a child of the shared
-parent, and thus no copying is necessary. you can use
-gst_buffer_is_span_fast() to determine if a memcpy will be needed.
-MT safe.
-Returns NULL if the arguments are invalid.">
-        <return-value transfer-ownership="full">
-          <type name="Buffer" c:type="GstBuffer*"/>
-        </return-value>
-        <parameters>
-          <parameter name="offset" transfer-ownership="none">
-            <type name="uint32" c:type="guint32"/>
-          </parameter>
-          <parameter name="buf2" transfer-ownership="none">
-            <type name="Buffer" c:type="GstBuffer*"/>
-          </parameter>
-          <parameter name="len" transfer-ownership="none">
-            <type name="uint32" c:type="guint32"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="merge"
-              c:identifier="gst_buffer_merge"
-              doc="Create a new buffer that is the concatenation of the two source
-buffers.  The original source buffers will not be modified or
-unref&apos;d.  Make sure you unref the source buffers if they are not used
-anymore afterwards.
-If the buffers point to contiguous areas of memory, the buffer
-is created without copying the data.">
-        <return-value transfer-ownership="full">
-          <type name="Buffer" c:type="GstBuffer*"/>
-        </return-value>
-        <parameters>
-          <parameter name="buf2" transfer-ownership="none">
-            <type name="Buffer" c:type="GstBuffer*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="join"
-              c:identifier="gst_buffer_join"
-              doc="Create a new buffer that is the concatenation of the two source
-buffers, and unrefs the original source buffers.
-If the buffers point to contiguous areas of memory, the buffer
-is created without copying the data.
-This is a convenience function for C programmers. See also
-gst_buffer_merge(), which does the same thing without
-unreffing the input parameters. Language bindings without
-explicit reference counting should not wrap this function.">
-        <return-value transfer-ownership="full">
-          <type name="Buffer" c:type="GstBuffer*"/>
-        </return-value>
-        <parameters>
-          <parameter name="buf2" transfer-ownership="none">
-            <type name="Buffer" c:type="GstBuffer*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="stamp"
-              c:identifier="gst_buffer_stamp"
-              doc="Copies additional information (the timestamp, duration, and offset start
-and end) from one buffer to the other.
-This function does not copy any buffer flags or caps and is equivalent to
-gst_buffer_copy_metadata(@dest, @src, GST_BUFFER_COPY_TIMESTAMPS).
-control."
-              deprecated="use gst_buffer_copy_metadata() instead, it provides more">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="src" transfer-ownership="none">
-            <type name="Buffer" c:type="GstBuffer*"/>
-          </parameter>
-        </parameters>
-      </method>
-    </record>
-    <record name="BufferClass" c:type="GstBufferClass">
-      <field name="mini_object_class" writable="1">
-        <type name="MiniObjectClass" c:type="GstMiniObjectClass"/>
-      </field>
-    </record>
-    <bitfield name="BufferCopyFlags"
-              doc="offset and offset_end should be copied
-A set of flags that can be provided to the gst_buffer_copy_metadata()
-function to specify which metadata fields should be copied."
-              version="0.10.13"
-              c:type="GstBufferCopyFlags">
-      <member name="flags" value="1" c:identifier="GST_BUFFER_COPY_FLAGS"/>
-      <member name="timestamps"
-              value="2"
-              c:identifier="GST_BUFFER_COPY_TIMESTAMPS"/>
-      <member name="caps" value="4" c:identifier="GST_BUFFER_COPY_CAPS"/>
-    </bitfield>
-    <bitfield name="BufferFlag"
-              doc="the buffer should not be modified. The metadata might still be modified.
-displayed.
-This typically occurs after a seek or a dropped buffer from a live or
-network source.
-stream and contains media neutral data (elements can switch to optimized code
-path that ignores the buffer content).
-A set of buffer flags used to describe properties of a #GstBuffer."
-              c:type="GstBufferFlag">
-      <member name="readonly"
-              value="1"
-              c:identifier="GST_BUFFER_FLAG_READONLY"/>
-      <member name="preroll"
-              value="16"
-              c:identifier="GST_BUFFER_FLAG_PREROLL"/>
-      <member name="discont"
-              value="32"
-              c:identifier="GST_BUFFER_FLAG_DISCONT"/>
-      <member name="in_caps"
-              value="64"
-              c:identifier="GST_BUFFER_FLAG_IN_CAPS"/>
-      <member name="gap" value="128" c:identifier="GST_BUFFER_FLAG_GAP"/>
-      <member name="delta_unit"
-              value="256"
-              c:identifier="GST_BUFFER_FLAG_DELTA_UNIT"/>
-      <member name="media1" value="512" c:identifier="GST_BUFFER_FLAG_MEDIA1"/>
-      <member name="media2"
-              value="1024"
-              c:identifier="GST_BUFFER_FLAG_MEDIA2"/>
-      <member name="media3"
-              value="2048"
-              c:identifier="GST_BUFFER_FLAG_MEDIA3"/>
-      <member name="last" value="4096" c:identifier="GST_BUFFER_FLAG_LAST"/>
-    </bitfield>
-    <record name="BufferList"
-            c:type="GstBufferList"
-            doc="Opaque list of grouped buffers."
-            version="0.10.24">
-      <constructor name="new"
-                   c:identifier="gst_buffer_list_new"
-                   doc="Creates a new, empty #GstBufferList. The caller is responsible for unreffing
-the returned #GstBufferList."
-                   version="0.10.24">
-        <return-value transfer-ownership="full" doc="after usage.">
-          <type name="BufferList" c:type="GstBufferList*"/>
-        </return-value>
-      </constructor>
-      <method name="n_groups"
-              c:identifier="gst_buffer_list_n_groups"
-              doc="Returns the number of groups in @list."
-              version="0.10.24">
-        <return-value transfer-ownership="none">
-          <type name="uint" c:type="guint"/>
-        </return-value>
-      </method>
-      <method name="foreach"
-              c:identifier="gst_buffer_list_foreach"
-              doc="Call @func with @data for each buffer in @list.
-of @func define if this function returns or if the remaining buffers in a
-group should be skipped."
-              version="0.10.24">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="func"
-                     transfer-ownership="none"
-                     scope="call"
-                     closure="2">
-            <type name="BufferListFunc" c:type="GstBufferListFunc"/>
-          </parameter>
-          <parameter name="user_data" transfer-ownership="none">
-            <type name="any" c:type="gpointer"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get"
-              c:identifier="gst_buffer_list_get"
-              doc="Get the buffer at @idx in @group.
-Note that this function is not efficient for iterating over the entire list.
-Use an iterator or gst_buffer_list_foreach() instead.
-buffer remains valid as long as @list is valid."
-              version="0.10.24">
-        <return-value transfer-ownership="full">
-          <type name="Buffer" c:type="GstBuffer*"/>
-        </return-value>
-        <parameters>
-          <parameter name="group" transfer-ownership="none">
-            <type name="uint" c:type="guint"/>
-          </parameter>
-          <parameter name="idx" transfer-ownership="none">
-            <type name="uint" c:type="guint"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="iterate"
-              c:identifier="gst_buffer_list_iterate"
-              doc="Iterate the buffers in @list. The owner of the iterator must also be the
-owner of a reference to @list while the returned iterator is in use.
-gst_buffer_list_iterator_free() after usage"
-              version="0.10.24">
-        <return-value transfer-ownership="full">
-          <type name="BufferListIterator" c:type="GstBufferListIterator*"/>
-        </return-value>
-      </method>
-    </record>
-    <record name="BufferListClass" c:type="GstBufferListClass">
-    </record>
-    <callback name="BufferListDoFunction"
-              c:type="GstBufferListDoFunction"
-              doc="A function for accessing the last buffer returned by
-gst_buffer_list_iterator_next(). The function can leave @buffer in the list,
-replace @buffer in the list or remove @buffer from the list, depending on
-the return value. If the function returns NULL, @buffer will be removed from
-the list, otherwise @buffer will be replaced with the returned buffer.
-The last buffer returned by gst_buffer_list_iterator_next() will be replaced
-with the buffer returned from the function. The function takes ownership of
-unreffed. If NULL is returned, the buffer will be removed from the list. The
-list must be writable.
-from the list"
-              version="0.10.24">
-      <return-value transfer-ownership="full">
-        <type name="Buffer" c:type="GstBuffer*"/>
-      </return-value>
-      <parameters>
-        <parameter name="buffer" transfer-ownership="none">
-          <type name="Buffer" c:type="GstBuffer*"/>
-        </parameter>
-        <parameter name="user_data" transfer-ownership="none" closure="1">
-          <type name="any" c:type="gpointer"/>
-        </parameter>
-      </parameters>
-    </callback>
-    <callback name="BufferListFunc"
-              c:type="GstBufferListFunc"
-              doc="A function that will be called from gst_buffer_list_foreach(). The @buffer
-field will point to a the reference of the buffer at @idx in @group.
-When this function returns #GST_BUFFER_LIST_CONTINUE, the next buffer will be
-returned. When #GST_BUFFER_LIST_SKIP_GROUP is returned, all remaining buffers
-in the current group will be skipped and the first buffer of the next group
-is returned (if any). When GST_BUFFER_LIST_END is returned,
-gst_buffer_list_foreach() will return.
-When @buffer is set to NULL, the item will be removed from the bufferlist.
-When @buffer has been made writable, the new buffer reference can be assigned
-to @buffer. This function is responsible for unreffing the old buffer when
-removing or modifying."
-              version="0.10.24">
-      <return-value transfer-ownership="full">
-        <type name="BufferListItem" c:type="GstBufferListItem"/>
-      </return-value>
-      <parameters>
-        <parameter name="buffer" transfer-ownership="none">
-          <type name="Buffer" c:type="GstBuffer**"/>
-        </parameter>
-        <parameter name="group" transfer-ownership="none">
-          <type name="uint" c:type="guint"/>
-        </parameter>
-        <parameter name="idx" transfer-ownership="none">
-          <type name="uint" c:type="guint"/>
-        </parameter>
-        <parameter name="user_data" transfer-ownership="none" closure="3">
-          <type name="any" c:type="gpointer"/>
-        </parameter>
-      </parameters>
-    </callback>
-    <enumeration name="BufferListItem"
-                 doc="The result of the #GstBufferListFunc."
-                 version="0.10.24"
-                 c:type="GstBufferListItem">
-      <member name="continue"
-              value="0"
-              c:identifier="GST_BUFFER_LIST_CONTINUE"/>
-      <member name="skip_group"
-              value="1"
-              c:identifier="GST_BUFFER_LIST_SKIP_GROUP"/>
-      <member name="end" value="2" c:identifier="GST_BUFFER_LIST_END"/>
-    </enumeration>
-    <record name="BufferListIterator"
-            c:type="GstBufferListIterator"
-            doc="Opaque iterator for a #GstBufferList."
-            version="0.10.24">
-      <method name="free"
-              c:identifier="gst_buffer_list_iterator_free"
-              doc="Free the iterator."
-              version="0.10.24">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-      </method>
-      <method name="n_buffers"
-              c:identifier="gst_buffer_list_iterator_n_buffers"
-              doc="Returns the number of buffers left to iterate in the current group. I.e. the
-number of calls that can be made to gst_buffer_list_iterator_next() before
-it returns NULL.
-This function will not move the implicit cursor or in any other way affect
-the state of the iterator @it."
-              version="0.10.24">
-        <return-value transfer-ownership="none">
-          <type name="uint" c:type="guint"/>
-        </return-value>
-      </method>
-      <method name="next"
-              c:identifier="gst_buffer_list_iterator_next"
-              doc="Returns the next buffer in the list iterated with @it. If the iterator is at
-the end of a group, NULL will be returned. This function may be called
-repeatedly to iterate through the current group.
-The caller will not get a new ref to the returned #GstBuffer and must not
-unref it."
-              version="0.10.24">
-        <return-value transfer-ownership="full">
-          <type name="Buffer" c:type="GstBuffer*"/>
-        </return-value>
-      </method>
-      <method name="next_group"
-              c:identifier="gst_buffer_list_iterator_next_group"
-              doc="Advance the iterator @it to the first buffer in the next group. If the
-iterator is at the last group, FALSE will be returned. This function may be
-called repeatedly to iterate through the groups in a buffer list.
-the iterator was already at the last group"
-              version="0.10.24">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-      </method>
-      <method name="add"
-              c:identifier="gst_buffer_list_iterator_add"
-              doc="Inserts @buffer into the #GstBufferList iterated with @it. The buffer is
-inserted into the current group, immediately before the buffer that would be
-returned by gst_buffer_list_iterator_next(). The buffer is inserted before
-the implicit cursor, a subsequent call to gst_buffer_list_iterator_next()
-will return the buffer after the inserted buffer, if any.
-This function takes ownership of @buffer."
-              version="0.10.24">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="buffer" transfer-ownership="none">
-            <type name="Buffer" c:type="GstBuffer*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="add_group"
-              c:identifier="gst_buffer_list_iterator_add_group"
-              doc="Inserts a new, empty group into the #GstBufferList iterated with @it. The
-group is inserted immediately before the group that would be returned by
-gst_buffer_list_iterator_next_group(). A subsequent call to
-gst_buffer_list_iterator_next_group() will advance the iterator to the group
-after the inserted group, if any."
-              version="0.10.24">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-      </method>
-      <method name="remove"
-              c:identifier="gst_buffer_list_iterator_remove"
-              doc="Removes the last buffer returned by gst_buffer_list_iterator_next() from
-the #GstBufferList iterated with @it. gst_buffer_list_iterator_next() must
-have been called on @it before this function is called. This function can
-only be called once per call to gst_buffer_list_iterator_next().
-The removed buffer is unreffed."
-              version="0.10.24">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-      </method>
-      <method name="steal"
-              c:identifier="gst_buffer_list_iterator_steal"
-              doc="Returns the last buffer returned by gst_buffer_list_iterator_next() without
-modifying the refcount of the buffer."
-              version="0.10.24">
-        <return-value transfer-ownership="full">
-          <type name="Buffer" c:type="GstBuffer*"/>
-        </return-value>
-      </method>
-      <method name="take"
-              c:identifier="gst_buffer_list_iterator_take"
-              doc="Replaces the last buffer returned by gst_buffer_list_iterator_next() with
-this function is called. gst_buffer_list_iterator_remove() must not have been
-called since the last call to gst_buffer_list_iterator_next().
-This function unrefs the replaced buffer if it has not been stolen with
-gst_buffer_list_iterator_steal() and takes ownership of @buffer (i.e. the
-refcount of @buffer is not increased)."
-              version="0.10.24">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="buffer" transfer-ownership="none">
-            <type name="Buffer" c:type="GstBuffer*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="do"
-              c:identifier="gst_buffer_list_iterator_do"
-              doc="Calls the given function for the last buffer returned by
-gst_buffer_list_iterator_next(). gst_buffer_list_iterator_next() must have
-been called on @it before this function is called.
-gst_buffer_list_iterator_remove() and gst_buffer_list_iterator_steal() must
-not have been called since the last call to gst_buffer_list_iterator_next().
-See #GstBufferListDoFunction for more details."
-              version="0.10.24">
-        <return-value transfer-ownership="full">
-          <type name="Buffer" c:type="GstBuffer*"/>
-        </return-value>
-        <parameters>
-          <parameter name="do_func"
-                     transfer-ownership="none"
-                     scope="call"
-                     closure="2">
-            <type name="BufferListDoFunction"
-                  c:type="GstBufferListDoFunction"/>
-          </parameter>
-          <parameter name="user_data" transfer-ownership="none">
-            <type name="any" c:type="gpointer"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="merge_group"
-              c:identifier="gst_buffer_list_iterator_merge_group"
-              doc="Merge a buffer list group into a normal #GstBuffer by copying its metadata
-and memcpying its data into consecutive memory. All buffers in the current
-group after the implicit cursor will be merged into one new buffer. The
-metadata of the new buffer will be a copy of the metadata of the buffer that
-would be returned by gst_buffer_list_iterator_next(). If there is no buffer
-in the current group after the implicit cursor, NULL will be returned.
-This function will not move the implicit cursor or in any other way affect
-the state of the iterator @it or the list."
-              version="0.10.24">
-        <return-value transfer-ownership="full" doc="after usage, or NULL">
-          <type name="Buffer" c:type="GstBuffer*"/>
-        </return-value>
-      </method>
-    </record>
-    <enumeration name="BufferingMode"
-                 doc="The different types of buffering methods."
-                 c:type="GstBufferingMode">
-      <member name="stream" value="0" c:identifier="GST_BUFFERING_STREAM"/>
-      <member name="download" value="1" c:identifier="GST_BUFFERING_DOWNLOAD"/>
-      <member name="timeshift"
-              value="2"
-              c:identifier="GST_BUFFERING_TIMESHIFT"/>
-      <member name="live" value="3" c:identifier="GST_BUFFERING_LIVE"/>
-    </enumeration>
-    <class name="Bus"
-           c:type="GstBus"
-           doc="The opaque #GstBus data structure."
-           parent="Object"
-           glib:type-name="GstBus"
-           glib:get-type="gst_bus_get_type"
-           glib:type-struct="BusClass">
-      <constructor name="new"
-                   c:identifier="gst_bus_new"
-                   doc="Creates a new #GstBus instance.">
-        <return-value transfer-ownership="full">
-          <type name="Bus" c:type="GstBus*"/>
-        </return-value>
-      </constructor>
-      <method name="post"
-              c:identifier="gst_bus_post"
-              doc="Post a message on the given bus. Ownership of the message
-is taken by the bus.
-MT safe.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="message" transfer-ownership="none">
-            <type name="Message" c:type="GstMessage*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="have_pending"
-              c:identifier="gst_bus_have_pending"
-              doc="Check if there are pending messages on the bus that
-should be handled.
-otherwise.
-MT safe.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-      </method>
-      <method name="peek"
-              c:identifier="gst_bus_peek"
-              doc="Peek the message on the top of the bus&apos; queue. The message will remain
-on the bus&apos; message queue. A reference is returned, and needs to be unreffed
-by the caller.
-MT safe.">
-        <return-value transfer-ownership="full">
-          <type name="Message" c:type="GstMessage*"/>
-        </return-value>
-      </method>
-      <method name="pop"
-              c:identifier="gst_bus_pop"
-              doc="Get a message from the bus.
-The message is taken from the bus and needs to be unreffed with
-gst_message_unref() after usage.
-MT safe.">
-        <return-value transfer-ownership="full">
-          <type name="Message" c:type="GstMessage*"/>
-        </return-value>
-      </method>
-      <method name="pop_filtered"
-              c:identifier="gst_bus_pop_filtered"
-              doc="Get a message matching @type from the bus.  Will discard all messages on
-the bus that do not match @type and that have been posted before the first
-message that does match @type.  If there is no message matching @type on
-the bus, all messages will be discarded.
-the bus is empty or there is no message matching @type.
-The message is taken from the bus and needs to be unreffed with
-gst_message_unref() after usage.
-MT safe."
-              version="0.10.15">
-        <return-value transfer-ownership="full">
-          <type name="Message" c:type="GstMessage*"/>
-        </return-value>
-        <parameters>
-          <parameter name="types" transfer-ownership="none">
-            <type name="MessageType" c:type="GstMessageType"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="timed_pop"
-              c:identifier="gst_bus_timed_pop"
-              doc="Get a message from the bus, waiting up to the specified timeout.
-If @timeout is 0, this function behaves like gst_bus_pop(). If @timeout is
-#GST_CLOCK_TIME_NONE, this function will block forever until a message was
-posted on the bus.
-or NULL if the bus is empty after the timeout expired.
-The message is taken from the bus and needs to be unreffed with
-gst_message_unref() after usage.
-MT safe."
-              version="0.10.12">
-        <return-value transfer-ownership="full">
-          <type name="Message" c:type="GstMessage*"/>
-        </return-value>
-        <parameters>
-          <parameter name="timeout" transfer-ownership="none">
-            <type name="ClockTime" c:type="GstClockTime"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="timed_pop_filtered"
-              c:identifier="gst_bus_timed_pop_filtered"
-              doc="Get a message from the bus whose type matches the message type mask @types,
-waiting up to the specified timeout (and discarding any messages that do not
-match the mask provided).
-If @timeout is 0, this function behaves like gst_bus_pop_filtered(). If
-matching message was posted on the bus.
-message was found on the bus until the timeout expired.
-The message is taken from the bus and needs to be unreffed with
-gst_message_unref() after usage.
-MT safe."
-              version="0.10.15">
-        <return-value transfer-ownership="full">
-          <type name="Message" c:type="GstMessage*"/>
-        </return-value>
-        <parameters>
-          <parameter name="timeout" transfer-ownership="none">
-            <type name="ClockTime" c:type="GstClockTime"/>
-          </parameter>
-          <parameter name="types" transfer-ownership="none">
-            <type name="MessageType" c:type="GstMessageType"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="set_flushing"
-              c:identifier="gst_bus_set_flushing"
-              doc="If @flushing, flush out and unref any messages queued in the bus. Releases
-references to the message origin objects. Will flush future messages until
-gst_bus_set_flushing() sets @flushing to #FALSE.
-MT safe.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="flushing" transfer-ownership="none">
-            <type name="boolean" c:type="gboolean"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="set_sync_handler"
-              c:identifier="gst_bus_set_sync_handler"
-              doc="Sets the synchronous handler on the bus. The function will be called
-every time a new message is posted on the bus. Note that the function
-will be called in the same thread context as the posting object. This
-function is usually only called by the creator of the bus. Applications
-should handle messages asynchronously using the gst_bus watch and poll
-functions.
-You cannot replace an existing sync_handler. You can pass NULL to this
-function, which will clear the existing handler.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="func"
-                     transfer-ownership="none"
-                     scope="call"
-                     closure="2">
-            <type name="BusSyncHandler" c:type="GstBusSyncHandler"/>
-          </parameter>
-          <parameter name="data" transfer-ownership="none">
-            <type name="any" c:type="gpointer"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="create_watch"
-              c:identifier="gst_bus_create_watch"
-              doc="Create watch for this bus. The GSource will be dispatched whenever
-a message is on the bus. After the GSource is dispatched, the
-message is popped off the bus and unreffed.">
-        <return-value transfer-ownership="full">
-          <type name="GLib.Source" c:type="GSource*"/>
-        </return-value>
-      </method>
-      <method name="add_watch_full"
-              c:identifier="gst_bus_add_watch_full"
-              doc="Adds a bus watch to the default main context with the given @priority.
-This function is used to receive asynchronous messages in the main loop.
-There can only be a single bus watch per bus, you must remove it before you
-can set a new one.
-When @func is called, the message belongs to the caller; if you want to
-keep a copy of it, call gst_message_ref() before leaving @func.
-The watch can be removed using g_source_remove() or by returning FALSE
-from @func.
-MT safe.">
-        <return-value transfer-ownership="none">
-          <type name="uint" c:type="guint"/>
-        </return-value>
-        <parameters>
-          <parameter name="priority" transfer-ownership="none">
-            <type name="int" c:type="gint"/>
-          </parameter>
-          <parameter name="func"
-                     transfer-ownership="none"
-                     scope="notified"
-                     closure="3"
-                     destroy="4">
-            <type name="BusFunc" c:type="GstBusFunc"/>
-          </parameter>
-          <parameter name="user_data" transfer-ownership="none">
-            <type name="any" c:type="gpointer"/>
-          </parameter>
-          <parameter name="notify" transfer-ownership="none" scope="call">
-            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="add_watch"
-              c:identifier="gst_bus_add_watch"
-              doc="Adds a bus watch to the default main context with the default priority.
-This function is used to receive asynchronous messages in the main loop.
-There can only be a single bus watch per bus, you must remove it before you
-can set a new one.
-The watch can be removed using g_source_remove() or by returning FALSE
-from @func.
-MT safe.">
-        <return-value transfer-ownership="none">
-          <type name="uint" c:type="guint"/>
-        </return-value>
-        <parameters>
-          <parameter name="func"
-                     transfer-ownership="none"
-                     scope="call"
-                     closure="2">
-            <type name="BusFunc" c:type="GstBusFunc"/>
-          </parameter>
-          <parameter name="user_data" transfer-ownership="none">
-            <type name="any" c:type="gpointer"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="poll"
-              c:identifier="gst_bus_poll"
-              doc="poll for.
-indefinitely.
-Poll the bus for messages. Will block while waiting for messages to come.
-You can specify a maximum time to poll with the @timeout parameter. If
-All messages not in @events will be popped off the bus and will be ignored.
-Because poll is implemented using the &quot;message&quot; signal enabled by
-gst_bus_add_signal_watch(), calling gst_bus_poll() will cause the &quot;message&quot;
-signal to be emitted for every message that poll sees. Thus a &quot;message&quot;
-signal handler will see the same messages that this function sees -- neither
-will steal messages from the other.
-This function will run a main loop from the default main context when
-polling.
-You should never use this function, since it is pure evil. This is
-especially true for GUI applications based on Gtk+ or Qt, but also for any
-other non-trivial application that uses the GLib main loop. As this function
-runs a GLib main loop, any callback attached to the default GLib main
-context may be invoked. This could be timeouts, GUI events, I/O events etc.;
-even if gst_bus_poll() is called with a 0 timeout. Any of these callbacks
-may do things you do not expect, e.g. destroy the main application window or
-some other resource; change other application state; display a dialog and
-run another main loop until the user clicks it away. In short, using this
-function may add a lot of complexity to your code through unexpected
-re-entrancy and unexpected changes to your application&apos;s state.
-For 0 timeouts use gst_bus_pop_filtered() instead of this function; for
-other short timeouts use gst_bus_timed_pop_filtered(); everything else is
-better handled by setting up an asynchronous bus watch and doing things
-from there.
-The message is taken from the bus and needs to be unreffed with
-gst_message_unref() after usage.">
-        <return-value transfer-ownership="full">
-          <type name="Message" c:type="GstMessage*"/>
-        </return-value>
-        <parameters>
-          <parameter name="events" transfer-ownership="none">
-            <type name="MessageType" c:type="GstMessageType"/>
-          </parameter>
-          <parameter name="timeout" transfer-ownership="none">
-            <type name="ClockTimeDiff" c:type="GstClockTimeDiff"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="async_signal_func"
-              c:identifier="gst_bus_async_signal_func"
-              doc="A helper #GstBusFunc that can be used to convert all asynchronous messages
-into signals.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="message" transfer-ownership="none">
-            <type name="Message" c:type="GstMessage*"/>
-          </parameter>
-          <parameter name="data" transfer-ownership="none">
-            <type name="any" c:type="gpointer"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="sync_signal_handler"
-              c:identifier="gst_bus_sync_signal_handler"
-              doc="A helper GstBusSyncHandler that can be used to convert all synchronous
-messages into signals.">
-        <return-value transfer-ownership="full">
-          <type name="BusSyncReply" c:type="GstBusSyncReply"/>
-        </return-value>
-        <parameters>
-          <parameter name="message" transfer-ownership="none">
-            <type name="Message" c:type="GstMessage*"/>
-          </parameter>
-          <parameter name="data" transfer-ownership="none">
-            <type name="any" c:type="gpointer"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="add_signal_watch"
-              c:identifier="gst_bus_add_signal_watch"
-              doc="Adds a bus signal watch to the default main context with the default
-priority.
-After calling this statement, the bus will emit the &quot;message&quot; signal for each
-message posted on the bus.
-This function may be called multiple times. To clean up, the caller is
-responsible for calling gst_bus_remove_signal_watch() as many times as this
-function is called.
-MT safe.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-      </method>
-      <method name="add_signal_watch_full"
-              c:identifier="gst_bus_add_signal_watch_full"
-              doc="Adds a bus signal watch to the default main context with the given priority.
-After calling this statement, the bus will emit the &quot;message&quot; signal for each
-message posted on the bus when the main loop is running.
-This function may be called multiple times. To clean up, the caller is
-responsible for calling gst_bus_remove_signal_watch() as many times as this
-function is called.
-There can only be a single bus watch per bus, you most remove all signal watch
-before you can set another type of watch.
-MT safe.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="priority" transfer-ownership="none">
-            <type name="int" c:type="gint"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="remove_signal_watch"
-              c:identifier="gst_bus_remove_signal_watch"
-              doc="Removes a signal watch previously added with gst_bus_add_signal_watch().
-MT safe.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-      </method>
-      <method name="enable_sync_message_emission"
-              c:identifier="gst_bus_enable_sync_message_emission"
-              doc="Instructs GStreamer to emit the &quot;sync-message&quot; signal after running the bus&apos;s
-sync handler. This function is here so that code can ensure that they can
-synchronously receive messages without having to affect what the bin&apos;s sync
-handler is.
-This function may be called multiple times. To clean up, the caller is
-responsible for calling gst_bus_disable_sync_message_emission() as many times
-as this function is called.
-While this function looks similar to gst_bus_add_signal_watch(), it is not
-exactly the same -- this function enables &lt;emphasis&gt;synchronous&lt;/emphasis&gt; emission of
-signals when messages arrive; gst_bus_add_signal_watch() adds an idle callback
-to pop messages off the bus &lt;emphasis&gt;asynchronously&lt;/emphasis&gt;. The sync-message signal
-comes from the thread of whatever object posted the message; the &quot;message&quot;
-signal is marshalled to the main thread via the main loop.
-MT safe.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-      </method>
-      <method name="disable_sync_message_emission"
-              c:identifier="gst_bus_disable_sync_message_emission"
-              doc="gst_bus_enable_sync_message_emission()
-Instructs GStreamer to stop emitting the &quot;sync-message&quot; signal for this bus.
-See gst_bus_enable_sync_message_emission() for more information.
-In the event that multiple pieces of code have called
-gst_bus_enable_sync_message_emission(), the sync-message emissions will only
-be stopped after all calls to gst_bus_enable_sync_message_emission() were
-&quot;cancelled&quot; by calling this function. In this way the semantics are exactly
-the same as gst_object_ref() that which calls enable should also call
-disable.
-MT safe.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-      </method>
-      <field name="object">
-        <type name="Object" c:type="GstObject"/>
-      </field>
-      <field name="queue">
-        <type name="GLib.Queue" c:type="GQueue*"/>
-      </field>
-      <field name="queue_lock">
-        <type name="GLib.Mutex" c:type="GMutex*"/>
-      </field>
-      <field name="sync_handler">
-        <type name="BusSyncHandler" c:type="GstBusSyncHandler"/>
-      </field>
-      <field name="sync_handler_data">
-        <type name="any" c:type="gpointer"/>
-      </field>
-      <field name="signal_watch_id">
-        <type name="uint" c:type="guint"/>
-      </field>
-      <field name="num_signal_watchers">
-        <type name="uint" c:type="guint"/>
-      </field>
-      <field name="priv">
-        <type name="BusPrivate" c:type="GstBusPrivate*"/>
-      </field>
-      <field name="_gst_reserved">
-        <array zero-terminated="0" c:type="gpointer" fixed-size="3">
-          <type name="any"/>
-        </array>
-      </field>
-      <glib:signal name="message"
-                   doc="A message has been posted on the bus. This signal is emitted from a
-GSource added to the mainloop. this signal will only be emitted when
-there is a mainloop running.">
-        <return-value transfer-ownership="full">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="message" transfer-ownership="none">
-            <type name="Message" c:type="GstMessage"/>
-          </parameter>
-        </parameters>
-      </glib:signal>
-      <glib:signal name="sync-message"
-                   doc="A message has been posted on the bus. This signal is emitted from the
-thread that posted the message so one has to be careful with locking.
-This signal will not be emitted by default, you have to set up
-gst_bus_sync_signal_handler() as a sync handler if you want this
-signal to be emitted when a message is posted on the bus, like this:
-&lt;programlisting&gt;
-gst_bus_set_sync_handler (bus, gst_bus_sync_signal_handler, yourdata);
-&lt;/programlisting&gt;">
-        <return-value transfer-ownership="full">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="message" transfer-ownership="none">
-            <type name="Message" c:type="GstMessage"/>
-          </parameter>
-        </parameters>
-      </glib:signal>
-    </class>
-    <record name="BusClass"
-            c:type="GstBusClass"
-            glib:is-gtype-struct-for="Bus">
-      <field name="parent_class">
-        <type name="ObjectClass" c:type="GstObjectClass"/>
-      </field>
-      <field name="message">
-        <callback name="message" c:type="message">
-          <return-value transfer-ownership="none">
-            <type name="none" c:type="void"/>
-          </return-value>
-          <parameters>
-            <parameter name="bus" transfer-ownership="none">
-              <type name="Bus" c:type="GstBus*"/>
-            </parameter>
-            <parameter name="message" transfer-ownership="none">
-              <type name="Message" c:type="GstMessage*"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="sync_message">
-        <callback name="sync_message" c:type="sync_message">
-          <return-value transfer-ownership="none">
-            <type name="none" c:type="void"/>
-          </return-value>
-          <parameters>
-            <parameter name="bus" transfer-ownership="none">
-              <type name="Bus" c:type="GstBus*"/>
-            </parameter>
-            <parameter name="message" transfer-ownership="none">
-              <type name="Message" c:type="GstMessage*"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="_gst_reserved">
-        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
-          <type name="any"/>
-        </array>
-      </field>
-    </record>
-    <bitfield name="BusFlags"
-              doc="The standard flags that a bus may have."
-              c:type="GstBusFlags">
-      <member name="flushing" value="16" c:identifier="GST_BUS_FLUSHING"/>
-      <member name="flag_last" value="32" c:identifier="GST_BUS_FLAG_LAST"/>
-    </bitfield>
-    <callback name="BusFunc"
-              c:type="GstBusFunc"
-              doc="Specifies the type of function passed to gst_bus_add_watch() or
-gst_bus_add_watch_full(), which is called from the mainloop when a message
-is available on the bus.
-The message passed to the function will be unreffed after execution of this
-function so it should not be freed in the function.
-Note that this function is used as a GSourceFunc which means that returning
-FALSE will remove the GSource from the mainloop.">
-      <return-value transfer-ownership="none">
-        <type name="boolean" c:type="gboolean"/>
-      </return-value>
-      <parameters>
-        <parameter name="bus" transfer-ownership="none">
-          <type name="Bus" c:type="GstBus*"/>
-        </parameter>
-        <parameter name="message" transfer-ownership="none">
-          <type name="Message" c:type="GstMessage*"/>
-        </parameter>
-        <parameter name="data" transfer-ownership="none">
-          <type name="any" c:type="gpointer"/>
-        </parameter>
-      </parameters>
-    </callback>
-    <record name="BusPrivate" c:type="GstBusPrivate">
-    </record>
-    <callback name="BusSyncHandler"
-              c:type="GstBusSyncHandler"
-              doc="Handler will be invoked synchronously, when a new message has been injected
-into the bus. This function is mostly used internally. Only one sync handler
-can be attached to a given bus.
-If the handler returns GST_BUS_DROP, it should unref the message, else the
-message should not be unreffed by the sync handler.">
-      <return-value transfer-ownership="full">
-        <type name="BusSyncReply" c:type="GstBusSyncReply"/>
-      </return-value>
-      <parameters>
-        <parameter name="bus" transfer-ownership="none">
-          <type name="Bus" c:type="GstBus*"/>
-        </parameter>
-        <parameter name="message" transfer-ownership="none">
-          <type name="Message" c:type="GstMessage*"/>
-        </parameter>
-        <parameter name="data" transfer-ownership="none">
-          <type name="any" c:type="gpointer"/>
-        </parameter>
-      </parameters>
-    </callback>
-    <enumeration name="BusSyncReply"
-                 doc="The result values for a GstBusSyncHandler."
-                 c:type="GstBusSyncReply">
-      <member name="drop" value="0" c:identifier="GST_BUS_DROP"/>
-      <member name="pass" value="1" c:identifier="GST_BUS_PASS"/>
-      <member name="async" value="2" c:identifier="GST_BUS_ASYNC"/>
-    </enumeration>
-    <constant name="CAN_INLINE" value="1">
-      <type name="int"/>
-    </constant>
-    <constant name="CLOCK_ENTRY_TRACE_NAME" value="GstClockEntry">
-      <type name="utf8"/>
-    </constant>
-    <constant name="CLOCK_TIME_NONE" value="-1">
-      <type name="int"/>
-    </constant>
-    <record name="Caps"
-            c:type="GstCaps"
-            doc="Object describing media types."
-            glib:type-name="GstCaps"
-            glib:get-type="gst_caps_get_type">
-      <field name="type" writable="1">
-        <type name="GType" c:type="GType"/>
-      </field>
-      <field name="refcount" writable="1">
-        <type name="int" c:type="gint"/>
-      </field>
-      <field name="flags" writable="1">
-        <type name="CapsFlags" c:type="GstCapsFlags"/>
-      </field>
-      <field name="structs" writable="1">
-        <type name="GLib.PtrArray" c:type="GPtrArray*"/>
-      </field>
-      <field name="_gst_reserved" writable="1">
-        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
-          <type name="any"/>
-        </array>
-      </field>
-      <constructor name="new_empty"
-                   c:identifier="gst_caps_new_empty"
-                   doc="Creates a new #GstCaps that is empty.  That is, the returned
-#GstCaps contains no media formats.
-Caller is responsible for unreffing the returned caps.">
-        <return-value transfer-ownership="full">
-          <type name="Caps" c:type="GstCaps*"/>
-        </return-value>
-      </constructor>
-      <constructor name="new_any"
-                   c:identifier="gst_caps_new_any"
-                   doc="Creates a new #GstCaps that indicates that it is compatible with
-any media format.">
-        <return-value transfer-ownership="full">
-          <type name="Caps" c:type="GstCaps*"/>
-        </return-value>
-      </constructor>
-      <constructor name="new_simple"
-                   c:identifier="gst_caps_new_simple"
-                   doc="Creates a new #GstCaps that contains one #GstStructure.  The
-structure is defined by the arguments, which have the same format
-as gst_structure_new().
-Caller is responsible for unreffing the returned caps.">
-        <return-value transfer-ownership="full">
-          <type name="Caps" c:type="GstCaps*"/>
-        </return-value>
-        <parameters>
-          <parameter name="media_type" transfer-ownership="none">
-            <type name="utf8" c:type="char*"/>
-          </parameter>
-          <parameter name="fieldname" transfer-ownership="none">
-            <type name="utf8" c:type="char*"/>
-          </parameter>
-          <parameter transfer-ownership="none">
-            <varargs>
-            </varargs>
-          </parameter>
-        </parameters>
-      </constructor>
-      <constructor name="new_full"
-                   c:identifier="gst_caps_new_full"
-                   doc="Creates a new #GstCaps and adds all the structures listed as
-arguments.  The list must be NULL-terminated.  The structures
-are not copied; the returned #GstCaps owns the structures.">
-        <return-value transfer-ownership="full">
-          <type name="Caps" c:type="GstCaps*"/>
-        </return-value>
-        <parameters>
-          <parameter name="struct1" transfer-ownership="none">
-            <type name="Structure" c:type="GstStructure*"/>
-          </parameter>
-          <parameter transfer-ownership="none">
-            <varargs>
-            </varargs>
-          </parameter>
-        </parameters>
-      </constructor>
-      <method name="ref"
-              c:identifier="gst_caps_ref"
-              doc="Add a reference to a #GstCaps object.
-From this point on, until the caller calls gst_caps_unref() or
-gst_caps_make_writable(), it is guaranteed that the caps object will not
-change. This means its structures won&apos;t change, etc. To use a #GstCaps
-object, you must always have a refcount on it -- either the one made
-implicitly by e.g. gst_caps_new_simple(), or via taking one explicitly with
-this function.">
-        <return-value transfer-ownership="full">
-          <type name="Caps" c:type="GstCaps*"/>
-        </return-value>
-      </method>
-      <method name="copy"
-              c:identifier="gst_caps_copy"
-              doc="Creates a new #GstCaps as a copy of the old @caps. The new caps will have a
-refcount of 1, owned by the caller. The structures are copied as well.
-Note that this function is the semantic equivalent of a gst_caps_ref()
-followed by a gst_caps_make_writable(). If you only want to hold on to a
-reference to the data, you should use gst_caps_ref().
-When you are finished with the caps, call gst_caps_unref() on it.">
-        <return-value transfer-ownership="full">
-          <type name="Caps" c:type="GstCaps*"/>
-        </return-value>
-      </method>
-      <method name="make_writable"
-              c:identifier="gst_caps_make_writable"
-              doc="Returns a writable copy of @caps.
-If there is only one reference count on @caps, the caller must be the owner,
-and so this function will return the caps object unchanged. If on the other
-hand there is more than one reference on the object, a new caps object will
-be returned. The caller&apos;s reference on @caps will be removed, and instead the
-caller will own a reference to the returned object.
-In short, this function unrefs the caps in the argument and refs the caps
-that it returns. Don&apos;t access the argument after calling this function. See">
-        <return-value transfer-ownership="full">
-          <type name="Caps" c:type="GstCaps*"/>
-        </return-value>
-      </method>
-      <method name="unref"
-              c:identifier="gst_caps_unref"
-              doc="Unref a #GstCaps and and free all its structures and the
-structures&apos; values when the refcount reaches 0.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-      </method>
-      <method name="append"
-              c:identifier="gst_caps_append"
-              doc="Appends the structures contained in @caps2 to @caps1. The structures in
-freed. If either caps is ANY, the resulting caps will be ANY.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="caps2" transfer-ownership="none">
-            <type name="Caps" c:type="GstCaps*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="merge"
-              c:identifier="gst_caps_merge"
-              doc="Appends the structures contained in @caps2 to @caps1 if they are not yet
-expressed by @caps1. The structures in @caps2 are not copied -- they are
-transferred to @caps1, and then @caps2 is freed.
-If either caps is ANY, the resulting caps will be ANY."
-              version="0.10.10">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="caps2" transfer-ownership="none">
-            <type name="Caps" c:type="GstCaps*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="append_structure"
-              c:identifier="gst_caps_append_structure"
-              doc="Appends @structure to @caps.  The structure is not copied; @caps
-becomes the owner of @structure.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="structure" transfer-ownership="none">
-            <type name="Structure" c:type="GstStructure*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="remove_structure"
-              c:identifier="gst_caps_remove_structure"
-              doc="removes the stucture with the given index from the list of structures
-contained in @caps.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="idx" transfer-ownership="none">
-            <type name="uint" c:type="guint"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="merge_structure"
-              c:identifier="gst_caps_merge_structure"
-              doc="Appends @structure to @caps if its not already expressed by @caps.  The
-structure is not copied; @caps becomes the owner of @structure.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="structure" transfer-ownership="none">
-            <type name="Structure" c:type="GstStructure*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_size"
-              c:identifier="gst_caps_get_size"
-              doc="Gets the number of structures contained in @caps.">
-        <return-value transfer-ownership="none">
-          <type name="uint" c:type="guint"/>
-        </return-value>
-      </method>
-      <method name="get_structure"
-              c:identifier="gst_caps_get_structure"
-              doc="Finds the structure in @caps that has the index @index, and
-returns it.
-non-const GstStructure *.  This is for programming convenience --
-the caller should be aware that structures inside a constant
-#GstCaps should not be modified. However, if you know the caps
-are writable, either because you have just copied them or made
-them writable with gst_caps_make_writable(), you may modify the
-structure returned in the usual way, e.g. with functions like
-gst_structure_set().
-You do not need to free or unref the structure returned, it
-belongs to the #GstCaps.">
-        <return-value transfer-ownership="full">
-          <type name="Structure" c:type="GstStructure*"/>
-        </return-value>
-        <parameters>
-          <parameter name="index" transfer-ownership="none">
-            <type name="uint" c:type="guint"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="copy_nth"
-              c:identifier="gst_caps_copy_nth"
-              doc="Creates a new #GstCaps and appends a copy of the nth structure
-contained in @caps.">
-        <return-value transfer-ownership="full">
-          <type name="Caps" c:type="GstCaps*"/>
-        </return-value>
-        <parameters>
-          <parameter name="nth" transfer-ownership="none">
-            <type name="uint" c:type="guint"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="truncate"
-              c:identifier="gst_caps_truncate"
-              doc="Destructively discard all but the first structure from @caps. Useful when
-fixating. @caps must be writable.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-      </method>
-      <method name="set_value"
-              c:identifier="gst_caps_set_value"
-              doc="Sets the given @field on all structures of @caps to the given @value.
-This is a convenience function for calling gst_structure_set_value() on
-all structures of @caps."
-              version="0.10.26">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="field" transfer-ownership="none">
-            <type name="utf8" c:type="char*"/>
-          </parameter>
-          <parameter name="value" transfer-ownership="none">
-            <type name="GObject.Value" c:type="GValue*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="set_simple"
-              c:identifier="gst_caps_set_simple"
-              doc="Sets fields in a #GstCaps.  The arguments must be passed in the same
-manner as gst_structure_set(), and be NULL-terminated.
-&lt;note&gt;Prior to GStreamer version 0.10.26, this function failed when
-of GStreamer, you may only call this function when GST_CAPS_IS_SIMPLE()
-is %TRUE for @caps.&lt;/note&gt;">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="field" transfer-ownership="none">
-            <type name="utf8" c:type="char*"/>
-          </parameter>
-          <parameter transfer-ownership="none">
-            <varargs>
-            </varargs>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="is_any"
-              c:identifier="gst_caps_is_any"
-              doc="Determines if @caps represents any media format.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-      </method>
-      <method name="is_empty"
-              c:identifier="gst_caps_is_empty"
-              doc="Determines if @caps represents no media formats.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-      </method>
-      <method name="is_fixed"
-              c:identifier="gst_caps_is_fixed"
-              doc="Fixed #GstCaps describe exactly one format, that is, they have exactly
-one structure, and each field in the structure describes a fixed type.
-Examples of non-fixed types are GST_TYPE_INT_RANGE and GST_TYPE_LIST.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-      </method>
-      <method name="is_always_compatible"
-              c:identifier="gst_caps_is_always_compatible"
-              doc="A given #GstCaps structure is always compatible with another if
-every media format that is in the first is also contained in the
-second.  That is, @caps1 is a subset of @caps2.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="caps2" transfer-ownership="none">
-            <type name="Caps" c:type="GstCaps*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="is_subset"
-              c:identifier="gst_caps_is_subset"
-              doc="Checks if all caps represented by @subset are also represented by @superset.
-&lt;note&gt;This function does not work reliably if optional properties for caps
-are included on one caps and omitted on the other.&lt;/note&gt;">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="superset" transfer-ownership="none">
-            <type name="Caps" c:type="GstCaps*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="is_equal"
-              c:identifier="gst_caps_is_equal"
-              doc="Checks if the given caps represent the same set of caps.
-&lt;note&gt;This function does not work reliably if optional properties for caps
-are included on one caps and omitted on the other.&lt;/note&gt;
-This function deals correctly with passing NULL for any of the caps.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="caps2" transfer-ownership="none">
-            <type name="Caps" c:type="GstCaps*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="is_equal_fixed"
-              c:identifier="gst_caps_is_equal_fixed"
-              doc="Tests if two #GstCaps are equal.  This function only works on fixed
-#GstCaps.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="caps2" transfer-ownership="none">
-            <type name="Caps" c:type="GstCaps*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="can_intersect"
-              c:identifier="gst_caps_can_intersect"
-              doc="Tries intersecting @caps1 and @caps2 and reports wheter the result would not
-be empty"
-              version="0.10.25">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="caps2" transfer-ownership="none">
-            <type name="Caps" c:type="GstCaps*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="intersect"
-              c:identifier="gst_caps_intersect"
-              doc="Creates a new #GstCaps that contains all the formats that are common
-to both @caps1 and @caps2.">
-        <return-value transfer-ownership="full">
-          <type name="Caps" c:type="GstCaps*"/>
-        </return-value>
-        <parameters>
-          <parameter name="caps2" transfer-ownership="none">
-            <type name="Caps" c:type="GstCaps*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="subtract"
-              c:identifier="gst_caps_subtract"
-              doc="Subtracts the @subtrahend from the @minuend.
-&lt;note&gt;This function does not work reliably if optional properties for caps
-are included on one caps and omitted on the other.&lt;/note&gt;">
-        <return-value transfer-ownership="full">
-          <type name="Caps" c:type="GstCaps*"/>
-        </return-value>
-        <parameters>
-          <parameter name="subtrahend" transfer-ownership="none">
-            <type name="Caps" c:type="GstCaps*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="union"
-              c:identifier="gst_caps_union"
-              doc="Creates a new #GstCaps that contains all the formats that are in
-either @caps1 and @caps2.">
-        <return-value transfer-ownership="full">
-          <type name="Caps" c:type="GstCaps*"/>
-        </return-value>
-        <parameters>
-          <parameter name="caps2" transfer-ownership="none">
-            <type name="Caps" c:type="GstCaps*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="normalize"
-              c:identifier="gst_caps_normalize"
-              doc="Creates a new #GstCaps that represents the same set of formats as">
-        <return-value transfer-ownership="full">
-          <type name="Caps" c:type="GstCaps*"/>
-        </return-value>
-      </method>
-      <method name="do_simplify"
-              c:identifier="gst_caps_do_simplify"
-              doc="Modifies the given @caps inplace into a representation that represents the
-same set of formats, but in a simpler form.  Component structures that are
-identical are merged.  Component structures that have values that can be
-merged are also merged.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-      </method>
-      <method name="save_thyself"
-              c:identifier="gst_caps_save_thyself"
-              doc="Serializes a #GstCaps to XML and adds it as a child node of @parent.">
-        <return-value transfer-ownership="full">
-          <type name="libxml2.NodePtr" c:type="xmlNodePtr"/>
-        </return-value>
-        <parameters>
-          <parameter name="parent" transfer-ownership="none">
-            <type name="libxml2.NodePtr" c:type="xmlNodePtr"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="replace"
-              c:identifier="gst_caps_replace"
-              doc="Replaces *caps with @newcaps.  Unrefs the #GstCaps in the location
-pointed to by @caps, if applicable, then modifies @caps to point to
-This function does not take any locks so you might want to lock
-the object owning @caps pointer.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="newcaps" transfer-ownership="none">
-            <type name="Caps" c:type="GstCaps*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="to_string"
-              c:identifier="gst_caps_to_string"
-              doc="Converts @caps to a string representation.  This string representation
-can be converted back to a #GstCaps by gst_caps_from_string().
-For debugging purposes its easier to do something like this:
-|[
-GST_LOG (&quot;caps are %&quot; GST_PTR_FORMAT, caps);
-]|
-This prints the caps in human readble form.">
-        <return-value transfer-ownership="full">
-          <type name="utf8" c:type="gchar*"/>
-        </return-value>
-      </method>
-    </record>
-    <bitfield name="CapsFlags"
-              doc="anything.
-Extra flags for a caps."
-              c:type="GstCapsFlags">
-      <member name="caps_flags_any"
-              value="1"
-              c:identifier="GST_CAPS_FLAGS_ANY"/>
-    </bitfield>
-    <interface name="ChildProxy"
-               c:type="GstChildProxy"
-               doc="Opaque #GstChildProxy data structure."
-               glib:type-name="GstChildProxy"
-               glib:get-type="gst_child_proxy_get_type"
-               glib:type-struct="ChildProxyInterface">
-      <prerequisite name="Object"/>
-      <virtual-method name="get_child_by_index" invoker="get_child_by_index">
-        <return-value transfer-ownership="full">
-          <type name="Object" c:type="GstObject*"/>
-        </return-value>
-        <parameters>
-          <parameter name="index" transfer-ownership="none">
-            <type name="uint" c:type="guint"/>
-          </parameter>
-        </parameters>
-      </virtual-method>
-      <virtual-method name="get_children_count" invoker="get_children_count">
-        <return-value transfer-ownership="none">
-          <type name="uint" c:type="guint"/>
-        </return-value>
-      </virtual-method>
-      <method name="get_child_by_name"
-              c:identifier="gst_child_proxy_get_child_by_name"
-              doc="Looks up a child element by the given name.
-Implementors can use #GstObject together with gst_object_get_name()
-MT safe.">
-        <return-value transfer-ownership="full">
-          <type name="Object" c:type="GstObject*"/>
-        </return-value>
-        <parameters>
-          <parameter name="name" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_child_by_index"
-              c:identifier="gst_child_proxy_get_child_by_index"
-              doc="Fetches a child by its number.
-after usage.
-MT safe.">
-        <return-value transfer-ownership="full" doc="Unref">
-          <type name="Object" c:type="GstObject*"/>
-        </return-value>
-        <parameters>
-          <parameter name="index" transfer-ownership="none">
-            <type name="uint" c:type="guint"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_children_count"
-              c:identifier="gst_child_proxy_get_children_count"
-              doc="Gets the number of child objects this parent contains.
-MT safe.">
-        <return-value transfer-ownership="none">
-          <type name="uint" c:type="guint"/>
-        </return-value>
-      </method>
-      <glib:signal name="child-added">
-        <return-value transfer-ownership="full">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="object" transfer-ownership="none">
-            <type name="GObject.Object" c:type="GObject"/>
-          </parameter>
-        </parameters>
-      </glib:signal>
-      <glib:signal name="child-removed">
-        <return-value transfer-ownership="full">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="object" transfer-ownership="none">
-            <type name="GObject.Object" c:type="GObject"/>
-          </parameter>
-        </parameters>
-      </glib:signal>
-    </interface>
-    <record name="ChildProxyInterface"
-            c:type="GstChildProxyInterface"
-            glib:is-gtype-struct-for="ChildProxy"
-            doc="#GstChildProxy interface.">
-      <field name="parent">
-        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
-      </field>
-      <field name="get_child_by_index">
-        <callback name="get_child_by_index" c:type="get_child_by_index">
-          <return-value transfer-ownership="full">
-            <type name="Object" c:type="GstObject*"/>
-          </return-value>
-          <parameters>
-            <parameter name="parent" transfer-ownership="none">
-              <type name="ChildProxy" c:type="GstChildProxy*"/>
-            </parameter>
-            <parameter name="index" transfer-ownership="none">
-              <type name="uint" c:type="guint"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="get_children_count">
-        <callback name="get_children_count" c:type="get_children_count">
-          <return-value transfer-ownership="none">
-            <type name="uint" c:type="guint"/>
-          </return-value>
-          <parameters>
-            <parameter name="parent" transfer-ownership="none">
-              <type name="ChildProxy" c:type="GstChildProxy*"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="child_added">
-        <callback name="child_added" c:type="child_added">
-          <return-value transfer-ownership="none">
-            <type name="none" c:type="void"/>
-          </return-value>
-          <parameters>
-            <parameter name="parent" transfer-ownership="none">
-              <type name="ChildProxy" c:type="GstChildProxy*"/>
-            </parameter>
-            <parameter name="child" transfer-ownership="none">
-              <type name="Object" c:type="GstObject*"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="child_removed">
-        <callback name="child_removed" c:type="child_removed">
-          <return-value transfer-ownership="none">
-            <type name="none" c:type="void"/>
-          </return-value>
-          <parameters>
-            <parameter name="parent" transfer-ownership="none">
-              <type name="ChildProxy" c:type="GstChildProxy*"/>
-            </parameter>
-            <parameter name="child" transfer-ownership="none">
-              <type name="Object" c:type="GstObject*"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="_gst_reserved">
-        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
-          <type name="any"/>
-        </array>
-      </field>
-    </record>
-    <class name="Clock"
-           c:type="GstClock"
-           doc="#GstClock base structure. The values of this structure are
-protected for subclasses, use the methods to use the #GstClock."
-           parent="Object"
-           glib:type-name="GstClock"
-           glib:get-type="gst_clock_get_type"
-           glib:type-struct="ClockClass">
-      <function name="id_ref"
-                c:identifier="gst_clock_id_ref"
-                doc="Increase the refcount of given @id.
-MT safe.">
-        <return-value transfer-ownership="full">
-          <type name="ClockID" c:type="GstClockID"/>
-        </return-value>
-        <parameters>
-          <parameter name="id" transfer-ownership="none">
-            <type name="ClockID" c:type="GstClockID"/>
-          </parameter>
-        </parameters>
-      </function>
-      <function name="id_unref"
-                c:identifier="gst_clock_id_unref"
-                doc="Unref given @id. When the refcount reaches 0 the
-#GstClockID will be freed.
-MT safe.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="id" transfer-ownership="none">
-            <type name="ClockID" c:type="GstClockID"/>
-          </parameter>
-        </parameters>
-      </function>
-      <function name="id_compare_func"
-                c:identifier="gst_clock_id_compare_func">
-        <return-value transfer-ownership="none">
-          <type name="int" c:type="gint"/>
-        </return-value>
-        <parameters>
-          <parameter name="id1" transfer-ownership="none">
-            <type name="any" c:type="gconstpointer"/>
-          </parameter>
-          <parameter name="id2" transfer-ownership="none">
-            <type name="any" c:type="gconstpointer"/>
-          </parameter>
-        </parameters>
-      </function>
-      <function name="id_get_time" c:identifier="gst_clock_id_get_time">
-        <return-value transfer-ownership="full">
-          <type name="ClockTime" c:type="GstClockTime"/>
-        </return-value>
-        <parameters>
-          <parameter name="id" transfer-ownership="none">
-            <type name="ClockID" c:type="GstClockID"/>
-          </parameter>
-        </parameters>
-      </function>
-      <function name="id_wait" c:identifier="gst_clock_id_wait">
-        <return-value transfer-ownership="full">
-          <type name="ClockReturn" c:type="GstClockReturn"/>
-        </return-value>
-        <parameters>
-          <parameter name="id" transfer-ownership="none">
-            <type name="ClockID" c:type="GstClockID"/>
-          </parameter>
-          <parameter name="jitter" transfer-ownership="none">
-            <type name="ClockTimeDiff" c:type="GstClockTimeDiff*"/>
-          </parameter>
-        </parameters>
-      </function>
-      <function name="id_wait_async"
-                c:identifier="gst_clock_id_wait_async"
-                doc="Register a callback on the given #GstClockID @id with the given
-function and user_data. When passing a #GstClockID with an invalid
-time to this function, the callback will be called immediately
-with  a time set to GST_CLOCK_TIME_NONE. The callback will
-be called when the time of @id has been reached.
-The callback @func can be invoked from any thread, either provided by the
-core or from a streaming thread. The application should be prepared for this.
-MT safe.">
-        <return-value transfer-ownership="full">
-          <type name="ClockReturn" c:type="GstClockReturn"/>
-        </return-value>
-        <parameters>
-          <parameter name="id" transfer-ownership="none">
-            <type name="ClockID" c:type="GstClockID"/>
-          </parameter>
-          <parameter name="func"
-                     transfer-ownership="none"
-                     scope="call"
-                     closure="2">
-            <type name="ClockCallback" c:type="GstClockCallback"/>
-          </parameter>
-          <parameter name="user_data" transfer-ownership="none">
-            <type name="any" c:type="gpointer"/>
-          </parameter>
-        </parameters>
-      </function>
-      <function name="id_unschedule"
-                c:identifier="gst_clock_id_unschedule"
-                doc="Cancel an outstanding request with @id. This can either
-be an outstanding async notification or a pending sync notification.
-After this call, @id cannot be used anymore to receive sync or
-async notifications, you need to create a new #GstClockID.
-MT safe.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="id" transfer-ownership="none">
-            <type name="ClockID" c:type="GstClockID"/>
-          </parameter>
-        </parameters>
-      </function>
-      <virtual-method name="change_resolution">
-        <return-value transfer-ownership="full">
-          <type name="ClockTime" c:type="GstClockTime"/>
-        </return-value>
-        <parameters>
-          <parameter name="old_resolution" transfer-ownership="none">
-            <type name="ClockTime" c:type="GstClockTime"/>
-          </parameter>
-          <parameter name="new_resolution" transfer-ownership="none">
-            <type name="ClockTime" c:type="GstClockTime"/>
-          </parameter>
-        </parameters>
-      </virtual-method>
-      <virtual-method name="get_resolution" invoker="get_resolution">
-        <return-value transfer-ownership="full">
-          <type name="ClockTime" c:type="GstClockTime"/>
-        </return-value>
-      </virtual-method>
-      <virtual-method name="get_internal_time" invoker="get_internal_time">
-        <return-value transfer-ownership="full">
-          <type name="ClockTime" c:type="GstClockTime"/>
-        </return-value>
-      </virtual-method>
-      <virtual-method name="wait">
-        <return-value transfer-ownership="full">
-          <type name="ClockReturn" c:type="GstClockReturn"/>
-        </return-value>
-        <parameters>
-          <parameter name="entry" transfer-ownership="none">
-            <type name="ClockEntry" c:type="GstClockEntry*"/>
-          </parameter>
-        </parameters>
-      </virtual-method>
-      <virtual-method name="wait_async">
-        <return-value transfer-ownership="full">
-          <type name="ClockReturn" c:type="GstClockReturn"/>
-        </return-value>
-        <parameters>
-          <parameter name="entry" transfer-ownership="none">
-            <type name="ClockEntry" c:type="GstClockEntry*"/>
-          </parameter>
-        </parameters>
-      </virtual-method>
-      <virtual-method name="unschedule">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="entry" transfer-ownership="none">
-            <type name="ClockEntry" c:type="GstClockEntry*"/>
-          </parameter>
-        </parameters>
-      </virtual-method>
-      <virtual-method name="wait_jitter">
-        <return-value transfer-ownership="full">
-          <type name="ClockReturn" c:type="GstClockReturn"/>
-        </return-value>
-        <parameters>
-          <parameter name="entry" transfer-ownership="none">
-            <type name="ClockEntry" c:type="GstClockEntry*"/>
-          </parameter>
-          <parameter name="jitter" transfer-ownership="none">
-            <type name="ClockTimeDiff" c:type="GstClockTimeDiff*"/>
-          </parameter>
-        </parameters>
-      </virtual-method>
-      <method name="set_resolution" c:identifier="gst_clock_set_resolution">
-        <return-value transfer-ownership="full">
-          <type name="ClockTime" c:type="GstClockTime"/>
-        </return-value>
-        <parameters>
-          <parameter name="resolution" transfer-ownership="none">
-            <type name="ClockTime" c:type="GstClockTime"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_resolution" c:identifier="gst_clock_get_resolution">
-        <return-value transfer-ownership="full">
-          <type name="ClockTime" c:type="GstClockTime"/>
-        </return-value>
-      </method>
-      <method name="get_time" c:identifier="gst_clock_get_time">
-        <return-value transfer-ownership="full">
-          <type name="ClockTime" c:type="GstClockTime"/>
-        </return-value>
-      </method>
-      <method name="set_calibration" c:identifier="gst_clock_set_calibration">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="internal" transfer-ownership="none">
-            <type name="ClockTime" c:type="GstClockTime"/>
-          </parameter>
-          <parameter name="external" transfer-ownership="none">
-            <type name="ClockTime" c:type="GstClockTime"/>
-          </parameter>
-          <parameter name="rate_num" transfer-ownership="none">
-            <type name="ClockTime" c:type="GstClockTime"/>
-          </parameter>
-          <parameter name="rate_denom" transfer-ownership="none">
-            <type name="ClockTime" c:type="GstClockTime"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_calibration" c:identifier="gst_clock_get_calibration">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="internal" transfer-ownership="none">
-            <type name="ClockTime" c:type="GstClockTime*"/>
-          </parameter>
-          <parameter name="external" transfer-ownership="none">
-            <type name="ClockTime" c:type="GstClockTime*"/>
-          </parameter>
-          <parameter name="rate_num" transfer-ownership="none">
-            <type name="ClockTime" c:type="GstClockTime*"/>
-          </parameter>
-          <parameter name="rate_denom" transfer-ownership="none">
-            <type name="ClockTime" c:type="GstClockTime*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="set_master" c:identifier="gst_clock_set_master">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="master" transfer-ownership="none">
-            <type name="Clock" c:type="GstClock*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_master" c:identifier="gst_clock_get_master">
-        <return-value transfer-ownership="full">
-          <type name="Clock" c:type="GstClock*"/>
-        </return-value>
-      </method>
-      <method name="add_observation" c:identifier="gst_clock_add_observation">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="slave" transfer-ownership="none">
-            <type name="ClockTime" c:type="GstClockTime"/>
-          </parameter>
-          <parameter name="master" transfer-ownership="none">
-            <type name="ClockTime" c:type="GstClockTime"/>
-          </parameter>
-          <parameter name="r_squared"
-                     direction="out"
-                     transfer-ownership="full">
-            <type name="double" c:type="gdouble*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_internal_time"
-              c:identifier="gst_clock_get_internal_time">
-        <return-value transfer-ownership="full">
-          <type name="ClockTime" c:type="GstClockTime"/>
-        </return-value>
-      </method>
-      <method name="adjust_unlocked" c:identifier="gst_clock_adjust_unlocked">
-        <return-value transfer-ownership="full">
-          <type name="ClockTime" c:type="GstClockTime"/>
-        </return-value>
-        <parameters>
-          <parameter name="internal" transfer-ownership="none">
-            <type name="ClockTime" c:type="GstClockTime"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="unadjust_unlocked"
-              c:identifier="gst_clock_unadjust_unlocked">
-        <return-value transfer-ownership="full">
-          <type name="ClockTime" c:type="GstClockTime"/>
-        </return-value>
-        <parameters>
-          <parameter name="external" transfer-ownership="none">
-            <type name="ClockTime" c:type="GstClockTime"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="new_single_shot_id"
-              c:identifier="gst_clock_new_single_shot_id">
-        <return-value transfer-ownership="full">
-          <type name="ClockID" c:type="GstClockID"/>
-        </return-value>
-        <parameters>
-          <parameter name="time" transfer-ownership="none">
-            <type name="ClockTime" c:type="GstClockTime"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="new_periodic_id" c:identifier="gst_clock_new_periodic_id">
-        <return-value transfer-ownership="full">
-          <type name="ClockID" c:type="GstClockID"/>
-        </return-value>
-        <parameters>
-          <parameter name="start_time" transfer-ownership="none">
-            <type name="ClockTime" c:type="GstClockTime"/>
-          </parameter>
-          <parameter name="interval" transfer-ownership="none">
-            <type name="ClockTime" c:type="GstClockTime"/>
-          </parameter>
-        </parameters>
-      </method>
-      <property name="stats" writable="1">
-        <type name="boolean" c:type="gboolean"/>
-      </property>
-      <property name="timeout" writable="1">
-        <type name="uint64" c:type="guint64"/>
-      </property>
-      <property name="window-size" writable="1">
-        <type name="int" c:type="gint"/>
-      </property>
-      <property name="window-threshold" writable="1">
-        <type name="int" c:type="gint"/>
-      </property>
-      <field name="object">
-        <type name="Object" c:type="GstObject"/>
-      </field>
-      <field name="slave_lock">
-        <type name="GLib.Mutex" c:type="GMutex*"/>
-      </field>
-      <field name="internal_calibration">
-        <type name="ClockTime" c:type="GstClockTime"/>
-      </field>
-      <field name="external_calibration">
-        <type name="ClockTime" c:type="GstClockTime"/>
-      </field>
-      <field name="rate_numerator">
-        <type name="ClockTime" c:type="GstClockTime"/>
-      </field>
-      <field name="rate_denominator">
-        <type name="ClockTime" c:type="GstClockTime"/>
-      </field>
-      <field name="last_time">
-        <type name="ClockTime" c:type="GstClockTime"/>
-      </field>
-      <field name="entries">
-        <type name="GLib.List" c:type="GList*"/>
-      </field>
-      <field name="entries_changed">
-        <type name="GLib.Cond" c:type="GCond*"/>
-      </field>
-      <field name="resolution">
-        <type name="ClockTime" c:type="GstClockTime"/>
-      </field>
-      <field name="stats">
-        <type name="boolean" c:type="gboolean"/>
-      </field>
-      <field name="master">
-        <type name="Clock" c:type="GstClock*"/>
-      </field>
-      <field name="filling">
-        <type name="boolean" c:type="gboolean"/>
-      </field>
-      <field name="window_size">
-        <type name="int" c:type="gint"/>
-      </field>
-      <field name="window_threshold">
-        <type name="int" c:type="gint"/>
-      </field>
-      <field name="time_index">
-        <type name="int" c:type="gint"/>
-      </field>
-      <field name="timeout">
-        <type name="ClockTime" c:type="GstClockTime"/>
-      </field>
-      <field name="times">
-        <type name="ClockTime" c:type="GstClockTime*"/>
-      </field>
-      <field name="clockid">
-        <type name="ClockID" c:type="GstClockID"/>
-      </field>
-      <union name="ABI" c:type="ABI">
-        <field name="priv" writable="1">
-          <type name="ClockPrivate" c:type="GstClockPrivate*"/>
-        </field>
-        <field name="_gst_reserved" writable="1">
-          <array zero-terminated="0" c:type="GstClockTime" fixed-size="4">
-            <type name="ClockTime"/>
-          </array>
-        </field>
-      </union>
-    </class>
-    <callback name="ClockCallback"
-              c:type="GstClockCallback"
-              doc="The function prototype of the callback.">
-      <return-value transfer-ownership="none">
-        <type name="boolean" c:type="gboolean"/>
-      </return-value>
-      <parameters>
-        <parameter name="clock" transfer-ownership="none">
-          <type name="Clock" c:type="GstClock*"/>
-        </parameter>
-        <parameter name="time" transfer-ownership="none">
-          <type name="ClockTime" c:type="GstClockTime"/>
-        </parameter>
-        <parameter name="id" transfer-ownership="none">
-          <type name="ClockID" c:type="GstClockID"/>
-        </parameter>
-        <parameter name="user_data"
-                   transfer-ownership="none"
-                   closure="3"
-                   doc="function">
-          <type name="any" c:type="gpointer"/>
-        </parameter>
-      </parameters>
-    </callback>
-    <record name="ClockClass"
-            c:type="GstClockClass"
-            glib:is-gtype-struct-for="Clock"
-            doc="be acceptable. The new resolution should be returned.
-implement @wait_jitter instead.
-GStreamer clock class. Override the vmethods to implement the clock
-functionality.">
-      <field name="parent_class">
-        <type name="ObjectClass" c:type="GstObjectClass"/>
-      </field>
-      <field name="change_resolution">
-        <callback name="change_resolution" c:type="change_resolution">
-          <return-value transfer-ownership="full">
-            <type name="ClockTime" c:type="GstClockTime"/>
-          </return-value>
-          <parameters>
-            <parameter name="clock" transfer-ownership="none">
-              <type name="Clock" c:type="GstClock*"/>
-            </parameter>
-            <parameter name="old_resolution" transfer-ownership="none">
-              <type name="ClockTime" c:type="GstClockTime"/>
-            </parameter>
-            <parameter name="new_resolution" transfer-ownership="none">
-              <type name="ClockTime" c:type="GstClockTime"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="get_resolution">
-        <callback name="get_resolution" c:type="get_resolution">
-          <return-value transfer-ownership="full">
-            <type name="ClockTime" c:type="GstClockTime"/>
-          </return-value>
-          <parameters>
-            <parameter name="clock" transfer-ownership="none">
-              <type name="Clock" c:type="GstClock*"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="get_internal_time">
-        <callback name="get_internal_time" c:type="get_internal_time">
-          <return-value transfer-ownership="full">
-            <type name="ClockTime" c:type="GstClockTime"/>
-          </return-value>
-          <parameters>
-            <parameter name="clock" transfer-ownership="none">
-              <type name="Clock" c:type="GstClock*"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="wait">
-        <callback name="wait" c:type="wait">
-          <return-value transfer-ownership="full">
-            <type name="ClockReturn" c:type="GstClockReturn"/>
-          </return-value>
-          <parameters>
-            <parameter name="clock" transfer-ownership="none">
-              <type name="Clock" c:type="GstClock*"/>
-            </parameter>
-            <parameter name="entry" transfer-ownership="none">
-              <type name="ClockEntry" c:type="GstClockEntry*"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="wait_async">
-        <callback name="wait_async" c:type="wait_async">
-          <return-value transfer-ownership="full">
-            <type name="ClockReturn" c:type="GstClockReturn"/>
-          </return-value>
-          <parameters>
-            <parameter name="clock" transfer-ownership="none">
-              <type name="Clock" c:type="GstClock*"/>
-            </parameter>
-            <parameter name="entry" transfer-ownership="none">
-              <type name="ClockEntry" c:type="GstClockEntry*"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="unschedule">
-        <callback name="unschedule" c:type="unschedule">
-          <return-value transfer-ownership="none">
-            <type name="none" c:type="void"/>
-          </return-value>
-          <parameters>
-            <parameter name="clock" transfer-ownership="none">
-              <type name="Clock" c:type="GstClock*"/>
-            </parameter>
-            <parameter name="entry" transfer-ownership="none">
-              <type name="ClockEntry" c:type="GstClockEntry*"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="wait_jitter">
-        <callback name="wait_jitter" c:type="wait_jitter">
-          <return-value transfer-ownership="full">
-            <type name="ClockReturn" c:type="GstClockReturn"/>
-          </return-value>
-          <parameters>
-            <parameter name="clock" transfer-ownership="none">
-              <type name="Clock" c:type="GstClock*"/>
-            </parameter>
-            <parameter name="entry" transfer-ownership="none">
-              <type name="ClockEntry" c:type="GstClockEntry*"/>
-            </parameter>
-            <parameter name="jitter" transfer-ownership="none">
-              <type name="ClockTimeDiff" c:type="GstClockTimeDiff*"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="_gst_reserved">
-        <array zero-terminated="0" c:type="gpointer" fixed-size="3">
-          <type name="any"/>
-        </array>
-      </field>
-    </record>
-    <record name="ClockEntry"
-            c:type="GstClockEntry"
-            doc="All pending timeouts or periodic notifies are converted into
-an entry.">
-      <field name="refcount" writable="1">
-        <type name="int" c:type="gint"/>
-      </field>
-      <field name="clock" writable="1">
-        <type name="Clock" c:type="GstClock*"/>
-      </field>
-      <field name="type" writable="1">
-        <type name="ClockEntryType" c:type="GstClockEntryType"/>
-      </field>
-      <field name="time" writable="1">
-        <type name="ClockTime" c:type="GstClockTime"/>
-      </field>
-      <field name="interval" writable="1">
-        <type name="ClockTime" c:type="GstClockTime"/>
-      </field>
-      <field name="status" writable="1">
-        <type name="ClockReturn" c:type="GstClockReturn"/>
-      </field>
-      <field name="func" writable="1">
-        <type name="ClockCallback" c:type="GstClockCallback"/>
-      </field>
-      <field name="user_data" writable="1">
-        <type name="any" c:type="gpointer"/>
-      </field>
-    </record>
-    <enumeration name="ClockEntryType"
-                 doc="The type of the clock entry"
-                 c:type="GstClockEntryType">
-      <member name="single" value="0" c:identifier="GST_CLOCK_ENTRY_SINGLE"/>
-      <member name="periodic"
-              value="1"
-              c:identifier="GST_CLOCK_ENTRY_PERIODIC"/>
-    </enumeration>
-    <bitfield name="ClockFlags"
-              doc="The capabilities of this clock"
-              c:type="GstClockFlags">
-      <member name="can_do_single_sync"
-              value="16"
-              c:identifier="GST_CLOCK_FLAG_CAN_DO_SINGLE_SYNC"/>
-      <member name="can_do_single_async"
-              value="32"
-              c:identifier="GST_CLOCK_FLAG_CAN_DO_SINGLE_ASYNC"/>
-      <member name="can_do_periodic_sync"
-              value="64"
-              c:identifier="GST_CLOCK_FLAG_CAN_DO_PERIODIC_SYNC"/>
-      <member name="can_do_periodic_async"
-              value="128"
-              c:identifier="GST_CLOCK_FLAG_CAN_DO_PERIODIC_ASYNC"/>
-      <member name="can_set_resolution"
-              value="256"
-              c:identifier="GST_CLOCK_FLAG_CAN_SET_RESOLUTION"/>
-      <member name="can_set_master"
-              value="512"
-              c:identifier="GST_CLOCK_FLAG_CAN_SET_MASTER"/>
-      <member name="last" value="4096" c:identifier="GST_CLOCK_FLAG_LAST"/>
-    </bitfield>
-    <record name="ClockPrivate" c:type="GstClockPrivate">
-    </record>
-    <enumeration name="ClockReturn"
-                 doc="The return value of a clock operation."
-                 c:type="GstClockReturn">
-      <member name="ok" value="0" c:identifier="GST_CLOCK_OK"/>
-      <member name="early" value="1" c:identifier="GST_CLOCK_EARLY"/>
-      <member name="unscheduled"
-              value="2"
-              c:identifier="GST_CLOCK_UNSCHEDULED"/>
-      <member name="busy" value="3" c:identifier="GST_CLOCK_BUSY"/>
-      <member name="badtime" value="4" c:identifier="GST_CLOCK_BADTIME"/>
-      <member name="error" value="5" c:identifier="GST_CLOCK_ERROR"/>
-      <member name="unsupported"
-              value="6"
-              c:identifier="GST_CLOCK_UNSUPPORTED"/>
-    </enumeration>
-    <enumeration name="ClockType"
-                 doc="point
-The different kind of clocks."
-                 c:type="GstClockType">
-      <member name="realtime"
-              value="0"
-              c:identifier="GST_CLOCK_TYPE_REALTIME"/>
-      <member name="monotonic"
-              value="1"
-              c:identifier="GST_CLOCK_TYPE_MONOTONIC"/>
-    </enumeration>
-    <callback name="CopyFunction"
-              c:type="GstCopyFunction"
-              doc="A function to create a copy of some object or
-increase its reference count."
-              version="0.10.25">
-      <return-value transfer-ownership="none">
-        <type name="any" c:type="gpointer"/>
-      </return-value>
-      <parameters>
-        <parameter name="object" transfer-ownership="none">
-          <type name="any" c:type="gpointer"/>
-        </parameter>
-      </parameters>
-    </callback>
-    <enumeration name="CoreError"
-                 doc="category.  Make sure you add a custom message to the error call.
-deciding where to go while developing code.
-this functionality yet.
-Core errors are errors inside the core GStreamer library."
-                 c:type="GstCoreError"
-                 glib:error-quark="gst_core_error_quark">
-      <member name="failed" value="1" c:identifier="GST_CORE_ERROR_FAILED"/>
-      <member name="too_lazy"
-              value="2"
-              c:identifier="GST_CORE_ERROR_TOO_LAZY"/>
-      <member name="not_implemented"
-              value="3"
-              c:identifier="GST_CORE_ERROR_NOT_IMPLEMENTED"/>
-      <member name="state_change"
-              value="4"
-              c:identifier="GST_CORE_ERROR_STATE_CHANGE"/>
-      <member name="pad" value="5" c:identifier="GST_CORE_ERROR_PAD"/>
-      <member name="thread" value="6" c:identifier="GST_CORE_ERROR_THREAD"/>
-      <member name="negotiation"
-              value="7"
-              c:identifier="GST_CORE_ERROR_NEGOTIATION"/>
-      <member name="event" value="8" c:identifier="GST_CORE_ERROR_EVENT"/>
-      <member name="seek" value="9" c:identifier="GST_CORE_ERROR_SEEK"/>
-      <member name="caps" value="10" c:identifier="GST_CORE_ERROR_CAPS"/>
-      <member name="tag" value="11" c:identifier="GST_CORE_ERROR_TAG"/>
-      <member name="missing_plugin"
-              value="12"
-              c:identifier="GST_CORE_ERROR_MISSING_PLUGIN"/>
-      <member name="clock" value="13" c:identifier="GST_CORE_ERROR_CLOCK"/>
-      <member name="disabled"
-              value="14"
-              c:identifier="GST_CORE_ERROR_DISABLED"/>
-      <member name="num_errors"
-              value="15"
-              c:identifier="GST_CORE_ERROR_NUM_ERRORS"/>
-    </enumeration>
-    <constant name="DEBUG_BG_MASK" value="240">
-      <type name="int"/>
-    </constant>
-    <constant name="DEBUG_FG_MASK" value="15">
-      <type name="int"/>
-    </constant>
-    <constant name="DEBUG_FORMAT_MASK" value="65280">
-      <type name="int"/>
-    </constant>
-    <glib:boxed c:type="GstDate"
-                glib:name="Date"
-                glib:type-name="GstDate"
-                glib:get-type="gst_date_get_type">
-    </glib:boxed>
-    <record name="DebugCategory"
-            c:type="GstDebugCategory"
-            doc="This is the struct that describes the categories. Once initialized with
-#GST_DEBUG_CATEGORY_INIT, its values can&apos;t be changed anymore.">
-      <field name="threshold" writable="1">
-        <type name="int" c:type="gint"/>
-      </field>
-      <field name="color" writable="1">
-        <type name="uint" c:type="guint"/>
-      </field>
-      <field name="name" writable="1">
-        <type name="utf8" c:type="gchar*"/>
-      </field>
-      <field name="description" writable="1">
-        <type name="utf8" c:type="gchar*"/>
-      </field>
-      <method name="free"
-              c:identifier="gst_debug_category_free"
-              doc="Removes and frees the category and all associated resources.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-      </method>
-      <method name="set_threshold"
-              c:identifier="gst_debug_category_set_threshold"
-              doc="Sets the threshold of the category to the given level. Debug information will
-only be output if the threshold is lower or equal to the level of the
-debugging message.
-&lt;note&gt;&lt;para&gt;
-Do not use this function in production code, because other functions may
-change the threshold of categories as side effect. It is however a nice
-function to use when debugging (even from gdb).
-&lt;/para&gt;&lt;/note&gt;">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="level" transfer-ownership="none">
-            <type name="DebugLevel" c:type="GstDebugLevel"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="reset_threshold"
-              c:identifier="gst_debug_category_reset_threshold"
-              doc="Resets the threshold of the category to the default level. Debug information
-will only be output if the threshold is lower or equal to the level of the
-debugging message.
-Use this function to set the threshold back to where it was after using
-gst_debug_category_set_threshold().">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-      </method>
-      <method name="get_threshold"
-              c:identifier="gst_debug_category_get_threshold"
-              doc="Returns the threshold of a #GstDebugCategory.">
-        <return-value transfer-ownership="full">
-          <type name="DebugLevel" c:type="GstDebugLevel"/>
-        </return-value>
-      </method>
-      <method name="get_name"
-              c:identifier="gst_debug_category_get_name"
-              doc="Returns the name of a debug category.">
-        <return-value transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </return-value>
-      </method>
-      <method name="get_color"
-              c:identifier="gst_debug_category_get_color"
-              doc="Returns the color of a debug category used when printing output in this
-category.">
-        <return-value transfer-ownership="none">
-          <type name="uint" c:type="guint"/>
-        </return-value>
-      </method>
-      <method name="get_description"
-              c:identifier="gst_debug_category_get_description"
-              doc="Returns the description of a debug category.">
-        <return-value transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </return-value>
-      </method>
-    </record>
-    <enumeration name="DebugColorFlags"
-                 doc="These are some terminal style flags you can use when creating your
-debugging categories to make them stand out in debugging output."
-                 c:type="GstDebugColorFlags">
-      <member name="fg_black" value="0" c:identifier="GST_DEBUG_FG_BLACK"/>
-      <member name="fg_red" value="1" c:identifier="GST_DEBUG_FG_RED"/>
-      <member name="fg_green" value="2" c:identifier="GST_DEBUG_FG_GREEN"/>
-      <member name="fg_yellow" value="3" c:identifier="GST_DEBUG_FG_YELLOW"/>
-      <member name="fg_blue" value="4" c:identifier="GST_DEBUG_FG_BLUE"/>
-      <member name="fg_magenta" value="5" c:identifier="GST_DEBUG_FG_MAGENTA"/>
-      <member name="fg_cyan" value="6" c:identifier="GST_DEBUG_FG_CYAN"/>
-      <member name="fg_white" value="7" c:identifier="GST_DEBUG_FG_WHITE"/>
-      <member name="bg_black" value="0" c:identifier="GST_DEBUG_BG_BLACK"/>
-      <member name="bg_red" value="16" c:identifier="GST_DEBUG_BG_RED"/>
-      <member name="bg_green" value="32" c:identifier="GST_DEBUG_BG_GREEN"/>
-      <member name="bg_yellow" value="48" c:identifier="GST_DEBUG_BG_YELLOW"/>
-      <member name="bg_blue" value="64" c:identifier="GST_DEBUG_BG_BLUE"/>
-      <member name="bg_magenta"
-              value="80"
-              c:identifier="GST_DEBUG_BG_MAGENTA"/>
-      <member name="bg_cyan" value="96" c:identifier="GST_DEBUG_BG_CYAN"/>
-      <member name="bg_white" value="112" c:identifier="GST_DEBUG_BG_WHITE"/>
-      <member name="bold" value="256" c:identifier="GST_DEBUG_BOLD"/>
-      <member name="underline" value="512" c:identifier="GST_DEBUG_UNDERLINE"/>
-    </enumeration>
-    <callback name="DebugFuncPtr" c:type="GstDebugFuncPtr">
-      <return-value transfer-ownership="none">
-        <type name="none" c:type="void"/>
-      </return-value>
-    </callback>
-    <bitfield name="DebugGraphDetails"
-              doc="Available details for pipeline graphs produced by GST_DEBUG_BIN_TO_DOT_FILE()
-and GST_DEBUG_BIN_TO_DOT_FILE_WITH_TS()."
-              version="0.10.15"
-              c:type="GstDebugGraphDetails">
-      <member name="media_type"
-              value="1"
-              c:identifier="GST_DEBUG_GRAPH_SHOW_MEDIA_TYPE"/>
-      <member name="caps_details"
-              value="2"
-              c:identifier="GST_DEBUG_GRAPH_SHOW_CAPS_DETAILS"/>
-      <member name="non_default_params"
-              value="4"
-              c:identifier="GST_DEBUG_GRAPH_SHOW_NON_DEFAULT_PARAMS"/>
-      <member name="states"
-              value="8"
-              c:identifier="GST_DEBUG_GRAPH_SHOW_STATES"/>
-      <member name="all" value="15" c:identifier="GST_DEBUG_GRAPH_SHOW_ALL"/>
-    </bitfield>
-    <enumeration name="DebugLevel"
-                 doc="debugging output.
-that stops the application from keeping working correctly.
-An examples is gst_element_error, which outputs a message with this priority.
-It does not mean that the application is terminating as with g_errror.
-that could lead to problems or weird behaviour later on. An example of this
-would be clocking issues (&quot;your computer is pretty slow&quot;) or broken input
-data (&quot;Can&apos;t synchronize to stream.&quot;)
-updated about what is happening.
-Examples where this should be used are when a typefind function has
-successfully determined the type of the stream or when an mp3 plugin detects
-the format to be used. (&quot;This file has mono sound.&quot;)
-happens that is not the expected default behavior.
-An example would be notifications about state changes or receiving/sending of
-events.
-useful to know. As a rule of thumb a pipeline that is iterating as expected
-should never output anzthing else but LOG messages.
-Examples for this are referencing/dereferencing of objects or cothread switches.
-in the executed code path is not fully implemented or handled yet. Note
-that this does not replace proper error handling in any way, the purpose
-of this message is to make it easier to spot incomplete/unfinished pieces
-data as memory dumps in the log. They will be displayed as hexdump with
-The level defines the importance of a debugging message. The more important a
-message is, the greater the probability that the debugging system outputs it."
-                 c:type="GstDebugLevel">
-      <member name="none" value="0" c:identifier="GST_LEVEL_NONE"/>
-      <member name="error" value="1" c:identifier="GST_LEVEL_ERROR"/>
-      <member name="warning" value="2" c:identifier="GST_LEVEL_WARNING"/>
-      <member name="info" value="3" c:identifier="GST_LEVEL_INFO"/>
-      <member name="debug" value="4" c:identifier="GST_LEVEL_DEBUG"/>
-      <member name="log" value="5" c:identifier="GST_LEVEL_LOG"/>
-      <member name="fixme" value="6" c:identifier="GST_LEVEL_FIXME"/>
-      <member name="memdump" value="9" c:identifier="GST_LEVEL_MEMDUMP"/>
-      <member name="count" value="10" c:identifier="GST_LEVEL_COUNT"/>
-    </enumeration>
-    <record name="DebugMessage" c:type="GstDebugMessage">
-      <method name="get"
-              c:identifier="gst_debug_message_get"
-              doc="Gets the string representation of a #GstDebugMessage. This function is used
-in debug handlers to extract the message.">
-        <return-value transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </return-value>
-      </method>
-    </record>
-    <constant name="ERROR_SYSTEM" value="system error: %s">
-      <type name="utf8"/>
-    </constant>
-    <constant name="EVENT_TRACE_NAME" value="GstEvent">
-      <type name="utf8"/>
-    </constant>
-    <constant name="EVENT_TYPE_BOTH" value="0">
-      <type name="int"/>
-    </constant>
-    <constant name="EVENT_TYPE_SHIFT" value="4">
-      <type name="int"/>
-    </constant>
-    <class name="Element"
-           c:type="GstElement"
-           doc="gst_element_set_state() and gst_element_get_state()
-the element is in the correct state.
-#GST_STATE_VOID_PENDING if the element is in the correct state
-parent element or the application. A #GstPipeline has a bus of its own.
-element by the toplevel #GstPipeline.
-PLAYING. Subtracting @base_time from the current clock time in the PLAYING
-state will yield the running_time against the clock.
-GStreamer element abstract base class."
-           parent="Object"
-           abstract="1"
-           glib:type-name="GstElement"
-           glib:get-type="gst_element_get_type"
-           glib:type-struct="ElementClass">
-      <function name="register"
-                c:identifier="gst_element_register"
-                doc="element (note that passing NULL only works in GStreamer 0.10.13 and later)
-Create a new elementfactory capable of instantiating objects of the">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="plugin" transfer-ownership="none">
-            <type name="Plugin" c:type="GstPlugin*"/>
-          </parameter>
-          <parameter name="name" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="rank" transfer-ownership="none">
-            <type name="uint" c:type="guint"/>
-          </parameter>
-          <parameter name="type" transfer-ownership="none">
-            <type name="GType" c:type="GType"/>
-          </parameter>
-        </parameters>
-      </function>
-      <function name="make_from_uri"
-                c:identifier="gst_element_make_from_uri"
-                doc="Creates an element for handling the given URI.">
-        <return-value transfer-ownership="full">
-          <type name="Element" c:type="GstElement*"/>
-        </return-value>
-        <parameters>
-          <parameter name="type" transfer-ownership="none">
-            <type name="URIType" c:type="GstURIType"/>
-          </parameter>
-          <parameter name="uri" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="elementname" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-        </parameters>
-      </function>
-      <function name="state_get_name"
-                c:identifier="gst_element_state_get_name"
-                doc="Gets a string representing the given state.">
-        <return-value transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </return-value>
-        <parameters>
-          <parameter name="state" transfer-ownership="none">
-            <type name="State" c:type="GstState"/>
-          </parameter>
-        </parameters>
-      </function>
-      <function name="state_change_return_get_name"
-                c:identifier="gst_element_state_change_return_get_name"
-                doc="Gets a string representing the given state change result."
-                version="0.10.11">
-        <return-value transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </return-value>
-        <parameters>
-          <parameter name="state_ret" transfer-ownership="none">
-            <type name="StateChangeReturn" c:type="GstStateChangeReturn"/>
-          </parameter>
-        </parameters>
-      </function>
-      <virtual-method name="request_new_pad">
-        <return-value transfer-ownership="full">
-          <type name="Pad" c:type="GstPad*"/>
-        </return-value>
-        <parameters>
-          <parameter name="templ" transfer-ownership="none">
-            <type name="PadTemplate" c:type="GstPadTemplate*"/>
-          </parameter>
-          <parameter name="name" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-        </parameters>
-      </virtual-method>
-      <virtual-method name="release_pad">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="pad" transfer-ownership="none">
-            <type name="Pad" c:type="GstPad*"/>
-          </parameter>
-        </parameters>
-      </virtual-method>
-      <virtual-method name="get_state" invoker="get_state">
-        <return-value transfer-ownership="full">
-          <type name="StateChangeReturn" c:type="GstStateChangeReturn"/>
-        </return-value>
-        <parameters>
-          <parameter name="state" transfer-ownership="none">
-            <type name="State" c:type="GstState*"/>
-          </parameter>
-          <parameter name="pending" transfer-ownership="none">
-            <type name="State" c:type="GstState*"/>
-          </parameter>
-          <parameter name="timeout" transfer-ownership="none">
-            <type name="ClockTime" c:type="GstClockTime"/>
-          </parameter>
-        </parameters>
-      </virtual-method>
-      <virtual-method name="set_state" invoker="set_state">
-        <return-value transfer-ownership="full">
-          <type name="StateChangeReturn" c:type="GstStateChangeReturn"/>
-        </return-value>
-        <parameters>
-          <parameter name="state" transfer-ownership="none">
-            <type name="State" c:type="GstState"/>
-          </parameter>
-        </parameters>
-      </virtual-method>
-      <virtual-method name="change_state" invoker="change_state">
-        <return-value transfer-ownership="full">
-          <type name="StateChangeReturn" c:type="GstStateChangeReturn"/>
-        </return-value>
-        <parameters>
-          <parameter name="transition" transfer-ownership="none">
-            <type name="StateChange" c:type="GstStateChange"/>
-          </parameter>
-        </parameters>
-      </virtual-method>
-      <virtual-method name="set_bus" invoker="set_bus">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="bus" transfer-ownership="none">
-            <type name="Bus" c:type="GstBus*"/>
-          </parameter>
-        </parameters>
-      </virtual-method>
-      <virtual-method name="provide_clock" invoker="provide_clock">
-        <return-value transfer-ownership="full">
-          <type name="Clock" c:type="GstClock*"/>
-        </return-value>
-      </virtual-method>
-      <virtual-method name="set_clock" invoker="set_clock">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="clock" transfer-ownership="none">
-            <type name="Clock" c:type="GstClock*"/>
-          </parameter>
-        </parameters>
-      </virtual-method>
-      <virtual-method name="get_index" invoker="get_index">
-        <return-value transfer-ownership="full">
-          <type name="Index" c:type="GstIndex*"/>
-        </return-value>
-      </virtual-method>
-      <virtual-method name="set_index" invoker="set_index">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="index" transfer-ownership="none">
-            <type name="Index" c:type="GstIndex*"/>
-          </parameter>
-        </parameters>
-      </virtual-method>
-      <virtual-method name="send_event" invoker="send_event">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="event" transfer-ownership="none">
-            <type name="Event" c:type="GstEvent*"/>
-          </parameter>
-        </parameters>
-      </virtual-method>
-      <virtual-method name="get_query_types" invoker="get_query_types">
-        <return-value transfer-ownership="none">
-          <type name="QueryType" c:type="GstQueryType*"/>
-        </return-value>
-      </virtual-method>
-      <virtual-method name="query" invoker="query">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="query" transfer-ownership="none">
-            <type name="Query" c:type="GstQuery*"/>
-          </parameter>
-        </parameters>
-      </virtual-method>
-      <method name="requires_clock"
-              c:identifier="gst_element_requires_clock"
-              doc="Query if the element requires a clock.
-MT safe.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-      </method>
-      <method name="provides_clock"
-              c:identifier="gst_element_provides_clock"
-              doc="Query if the element provides a clock. A #GstClock provided by an
-element can be used as the global #GstClock for the pipeline.
-An element that can provide a clock is only required to do so in the PAUSED
-state, this means when it is fully negotiated and has allocated the resources
-to operate the clock.
-MT safe.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-      </method>
-      <method name="provide_clock"
-              c:identifier="gst_element_provide_clock"
-              doc="Get the clock provided by the given element.
-&lt;note&gt;An element is only required to provide a clock in the PAUSED
-state. Some elements can provide a clock in other states.&lt;/note&gt;
-if no clock could be provided.  Unref after usage.
-MT safe.">
-        <return-value transfer-ownership="full">
-          <type name="Clock" c:type="GstClock*"/>
-        </return-value>
-      </method>
-      <method name="get_clock"
-              c:identifier="gst_element_get_clock"
-              doc="Gets the currently configured clock of the element. This is the clock as was
-last set with gst_element_set_clock().
-MT safe.">
-        <return-value transfer-ownership="full">
-          <type name="Clock" c:type="GstClock*"/>
-        </return-value>
-      </method>
-      <method name="set_clock"
-              c:identifier="gst_element_set_clock"
-              doc="Sets the clock for the element. This function increases the
-refcount on the clock. Any previously set clock on the object
-is unreffed.
-clock when it, for example, is not able to slave its internal clock to the
-MT safe.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="clock" transfer-ownership="none">
-            <type name="Clock" c:type="GstClock*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="set_base_time"
-              c:identifier="gst_element_set_base_time"
-              doc="Set the base time of an element. See gst_element_get_base_time().
-MT safe.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="time" transfer-ownership="none">
-            <type name="ClockTime" c:type="GstClockTime"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_base_time"
-              c:identifier="gst_element_get_base_time"
-              doc="Returns the base time of the element. The base time is the
-absolute time of the clock when this element was last put to
-PLAYING. Subtracting the base time from the clock time gives
-the running time of the element.
-MT safe.">
-        <return-value transfer-ownership="full">
-          <type name="ClockTime" c:type="GstClockTime"/>
-        </return-value>
-      </method>
-      <method name="set_start_time"
-              c:identifier="gst_element_set_start_time"
-              doc="Set the start time of an element. The start time of the element is the
-running time of the element when it last went to the PAUSED state. In READY
-or after a flushing seek, it is set to 0.
-Toplevel elements like #GstPipeline will manage the start_time and
-base_time on its children. Setting the start_time to #GST_CLOCK_TIME_NONE
-on such a toplevel element will disable the distribution of the base_time to
-the children and can be useful if the application manages the base_time
-itself, for example if you want to synchronize capture from multiple
-pipelines, and you can also ensure that the pipelines have the same clock.
-MT safe."
-              version="0.10.24">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="time" transfer-ownership="none">
-            <type name="ClockTime" c:type="GstClockTime"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_start_time"
-              c:identifier="gst_element_get_start_time"
-              doc="Returns the start time of the element. The start time is the
-running time of the clock when this element was last put to PAUSED.
-Usually the start_time is managed by a toplevel element such as
-#GstPipeline.
-MT safe."
-              version="0.10.24">
-        <return-value transfer-ownership="full">
-          <type name="ClockTime" c:type="GstClockTime"/>
-        </return-value>
-      </method>
-      <method name="is_indexable"
-              c:identifier="gst_element_is_indexable"
-              doc="Queries if the element can be indexed.
-MT safe.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-      </method>
-      <method name="set_index"
-              c:identifier="gst_element_set_index"
-              doc="Set @index on the element. The refcount of the index
-will be increased, any previously set index is unreffed.
-MT safe.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="index" transfer-ownership="none">
-            <type name="Index" c:type="GstIndex*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_index"
-              c:identifier="gst_element_get_index"
-              doc="Gets the index from the element.
-element. unref after usage.
-MT safe.">
-        <return-value transfer-ownership="full">
-          <type name="Index" c:type="GstIndex*"/>
-        </return-value>
-      </method>
-      <method name="set_bus"
-              c:identifier="gst_element_set_bus"
-              doc="Sets the bus of the element. Increases the refcount on the bus.
-For internal use only, unless you&apos;re testing elements.
-MT safe.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="bus" transfer-ownership="none">
-            <type name="Bus" c:type="GstBus*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_bus"
-              c:identifier="gst_element_get_bus"
-              doc="Returns the bus of the element. Note that only a #GstPipeline will provide a
-bus for the application.
-MT safe.">
-        <return-value transfer-ownership="full">
-          <type name="Bus" c:type="GstBus*"/>
-        </return-value>
-      </method>
-      <method name="add_pad"
-              c:identifier="gst_element_add_pad"
-              doc="Adds a pad (link point) to @element. @pad&apos;s parent will be set to @element;
-see gst_object_set_parent() for refcounting information.
-Pads are not automatically activated so elements should perform the needed
-steps to activate the pad in case this pad is added in the PAUSED or PLAYING
-state. See gst_pad_set_active() for more information about activating pads.
-The pad and the element should be unlocked when calling this function.
-This function will emit the #GstElement::pad-added signal on the element.
-a pad with the same name already existed or the pad already had another
-parent.
-MT safe.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="pad" transfer-ownership="none">
-            <type name="Pad" c:type="GstPad*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="remove_pad"
-              c:identifier="gst_element_remove_pad"
-              doc="Removes @pad from @element. @pad will be destroyed if it has not been
-referenced elsewhere using gst_object_unparent().
-This function is used by plugin developers and should not be used
-by applications. Pads that were dynamically requested from elements
-with gst_element_get_request_pad() should be released with the
-gst_element_release_request_pad() function instead.
-Pads are not automatically deactivated so elements should perform the needed
-steps to deactivate the pad in case this pad is removed in the PAUSED or
-PLAYING state. See gst_pad_set_active() for more information about
-deactivating pads.
-The pad and the element should be unlocked when calling this function.
-This function will emit the #GstElement::pad-removed signal on the element.
-pad does not belong to the provided element.
-MT safe.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="pad" transfer-ownership="none">
-            <type name="Pad" c:type="GstPad*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="no_more_pads"
-              c:identifier="gst_element_no_more_pads"
-              doc="Use this function to signal that the element does not expect any more pads
-to show up in the current pipeline. This function should be called whenever
-pads have been added by the element itself. Elements with #GST_PAD_SOMETIMES
-pad templates use this in combination with autopluggers to figure out that
-the element is done initializing its pads.
-This function emits the #GstElement::no-more-pads signal.
-MT safe.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-      </method>
-      <method name="get_pad"
-              c:identifier="gst_element_get_pad"
-              doc="Retrieves a pad from @element by name. Tries gst_element_get_static_pad()
-first, then gst_element_get_request_pad().
-to the result pad should be released with gst_object_unref() in case of a static pad
-or gst_element_release_request_pad() in case of a request pad.
-Use gst_element_get_static_pad() or gst_element_get_request_pad() instead.
-depending on the type of the pad."
-              deprecated="This function is deprecated as it&apos;s unclear if the reference">
-        <return-value transfer-ownership="full">
-          <type name="Pad" c:type="GstPad*"/>
-        </return-value>
-        <parameters>
-          <parameter name="name" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_static_pad"
-              c:identifier="gst_element_get_static_pad"
-              doc="Retrieves a pad from @element by name. This version only retrieves
-already-existing (i.e. &apos;static&apos;) pads.
-usage.
-MT safe.">
-        <return-value transfer-ownership="full">
-          <type name="Pad" c:type="GstPad*"/>
-        </return-value>
-        <parameters>
-          <parameter name="name" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_request_pad"
-              c:identifier="gst_element_get_request_pad"
-              doc="Retrieves a pad from the element by name. This version only retrieves
-request pads. The pad should be released with
-gst_element_release_request_pad().">
-        <return-value transfer-ownership="full">
-          <type name="Pad" c:type="GstPad*"/>
-        </return-value>
-        <parameters>
-          <parameter name="name" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="release_request_pad"
-              c:identifier="gst_element_release_request_pad"
-              doc="Makes the element free the previously requested pad as obtained
-with gst_element_get_request_pad().
-This does not unref the pad. If the pad was created by using
-gst_element_get_request_pad(), gst_element_release_request_pad() needs to be
-followed by gst_object_unref() to free the @pad.
-MT safe.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="pad" transfer-ownership="none">
-            <type name="Pad" c:type="GstPad*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="iterate_pads"
-              c:identifier="gst_element_iterate_pads"
-              doc="Retrieves an iterattor of @element&apos;s pads. The iterator should
-be freed after usage.
-MT safe.">
-        <return-value transfer-ownership="full">
-          <type name="Iterator" c:type="GstIterator*"/>
-        </return-value>
-      </method>
-      <method name="iterate_src_pads"
-              c:identifier="gst_element_iterate_src_pads"
-              doc="Retrieves an iterator of @element&apos;s source pads.
-MT safe.">
-        <return-value transfer-ownership="full">
-          <type name="Iterator" c:type="GstIterator*"/>
-        </return-value>
-      </method>
-      <method name="iterate_sink_pads"
-              c:identifier="gst_element_iterate_sink_pads"
-              doc="Retrieves an iterator of @element&apos;s sink pads.
-MT safe.">
-        <return-value transfer-ownership="full">
-          <type name="Iterator" c:type="GstIterator*"/>
-        </return-value>
-      </method>
-      <method name="send_event"
-              c:identifier="gst_element_send_event"
-              doc="Sends an event to an element. If the element doesn&apos;t implement an
-event handler, the event will be pushed on a random linked sink pad for
-upstream events or a random linked source pad for downstream events.
-This function takes owership of the provided event so you should
-gst_event_ref() it if you want to reuse the event after this call.
-MT safe.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="event" transfer-ownership="none">
-            <type name="Event" c:type="GstEvent*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="seek"
-              c:identifier="gst_element_seek"
-              doc="Sends a seek event to an element. See gst_event_new_seek() for the details of
-the parameters. The seek event is sent to the element using
-gst_element_send_event().
-MT safe.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="rate" transfer-ownership="none">
-            <type name="double" c:type="gdouble"/>
-          </parameter>
-          <parameter name="format" transfer-ownership="none">
-            <type name="Format" c:type="GstFormat"/>
-          </parameter>
-          <parameter name="flags" transfer-ownership="none">
-            <type name="SeekFlags" c:type="GstSeekFlags"/>
-          </parameter>
-          <parameter name="cur_type" transfer-ownership="none">
-            <type name="SeekType" c:type="GstSeekType"/>
-          </parameter>
-          <parameter name="cur" transfer-ownership="none">
-            <type name="int64" c:type="gint64"/>
-          </parameter>
-          <parameter name="stop_type" transfer-ownership="none">
-            <type name="SeekType" c:type="GstSeekType"/>
-          </parameter>
-          <parameter name="stop" transfer-ownership="none">
-            <type name="int64" c:type="gint64"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_query_types"
-              c:identifier="gst_element_get_query_types"
-              doc="Get an array of query types from the element.
-If the element doesn&apos;t implement a query types function,
-the query will be forwarded to the peer of a random linked sink pad.
-be freed or modified.
-MT safe.">
-        <return-value transfer-ownership="none">
-          <type name="QueryType" c:type="GstQueryType*"/>
-        </return-value>
-      </method>
-      <method name="query"
-              c:identifier="gst_element_query"
-              doc="Performs a query on the given element.
-For elements that don&apos;t implement a query handler, this function
-forwards the query to a random srcpad or to the peer of a
-random linked sinkpad of this element.
-MT safe.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="query" transfer-ownership="none">
-            <type name="Query" c:type="GstQuery*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="post_message"
-              c:identifier="gst_element_post_message"
-              doc="Post a message on the element&apos;s #GstBus. This function takes ownership of the
-message; if you want to access the message after this call, you should add an
-additional reference before calling.
-%FALSE if the element did not have a bus.
-MT safe.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="message" transfer-ownership="none">
-            <type name="Message" c:type="GstMessage*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="message_full"
-              c:identifier="gst_element_message_full"
-              doc="default message connected to code, or %NULL
-default debugging information, or %NULL
-Post an error, warning or info message on the bus from inside an element.
-#GST_MESSAGE_INFO.
-MT safe.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="type" transfer-ownership="none">
-            <type name="MessageType" c:type="GstMessageType"/>
-          </parameter>
-          <parameter name="domain" transfer-ownership="none">
-            <type name="GLib.Quark" c:type="GQuark"/>
-          </parameter>
-          <parameter name="code" transfer-ownership="none">
-            <type name="int" c:type="gint"/>
-          </parameter>
-          <parameter name="text" transfer-ownership="full">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="debug" transfer-ownership="full">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="file" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="function" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="line" transfer-ownership="none">
-            <type name="int" c:type="gint"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="is_locked_state"
-              c:identifier="gst_element_is_locked_state"
-              doc="Checks if the state of an element is locked.
-If the state of an element is locked, state changes of the parent don&apos;t
-affect the element.
-This way you can leave currently unused elements inside bins. Just lock their
-state before changing the state from #GST_STATE_NULL.
-MT safe.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-      </method>
-      <method name="set_locked_state"
-              c:identifier="gst_element_set_locked_state"
-              doc="Locks the state of an element, so state changes of the parent don&apos;t affect
-this element anymore.
-MT safe.
-or the elements state-locking needed no change.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="locked_state" transfer-ownership="none">
-            <type name="boolean" c:type="gboolean"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="sync_state_with_parent"
-              c:identifier="gst_element_sync_state_with_parent"
-              doc="Tries to change the state of the element to the same as its parent.
-If this function returns FALSE, the state of element is undefined.
-MT safe.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-      </method>
-      <method name="get_state"
-              c:identifier="gst_element_get_state"
-              doc="Can be %NULL.
-state change or %GST_CLOCK_TIME_NONE for infinite timeout.
-Gets the state of the element.
-For elements that performed an ASYNC state change, as reported by
-gst_element_set_state(), this function will block up to the
-specified timeout value for the state change to complete.
-If the element completes the state change or goes into
-an error, this function returns immediately with a return value of
-%GST_STATE_CHANGE_SUCCESS or %GST_STATE_CHANGE_FAILURE respectively.
-For elements that did not return %GST_STATE_CHANGE_ASYNC, this function
-returns the current and pending state immediately.
-This function returns %GST_STATE_CHANGE_NO_PREROLL if the element
-successfully changed its state but is not able to provide data yet.
-This mostly happens for live sources that only produce data in
-%GST_STATE_PLAYING. While the state change return is equivalent to
-%GST_STATE_CHANGE_SUCCESS, it is returned to the application to signal that
-some sink elements might not be able to complete their state change because
-an element is not producing data to complete the preroll. When setting the
-element to playing, the preroll will complete and playback will start.
-and the last state change succeeded, %GST_STATE_CHANGE_ASYNC if the
-element is still performing a state change or
-%GST_STATE_CHANGE_FAILURE if the last state change failed.
-MT safe.">
-        <return-value transfer-ownership="full">
-          <type name="StateChangeReturn" c:type="GstStateChangeReturn"/>
-        </return-value>
-        <parameters>
-          <parameter name="state"
-                     direction="out"
-                     transfer-ownership="full"
-                     doc="a pointer to #GstState to hold the state. Can be %NULL.">
-            <type name="State" c:type="GstState*"/>
-          </parameter>
-          <parameter name="pending"
-                     direction="out"
-                     transfer-ownership="full"
-                     doc="a pointer to #GstState to hold the pending state.">
-            <type name="State" c:type="GstState*"/>
-          </parameter>
-          <parameter name="timeout" transfer-ownership="none">
-            <type name="ClockTime" c:type="GstClockTime"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="set_state"
-              c:identifier="gst_element_set_state"
-              doc="Sets the state of the element. This function will try to set the
-requested state by going through all the intermediary states and calling
-the class&apos;s state change function for each.
-This function can return #GST_STATE_CHANGE_ASYNC, in which case the
-element will perform the remainder of the state change asynchronously in
-another thread.
-An application can use gst_element_get_state() to wait for the completion
-of the state change or it can wait for a state change message on the bus.
-State changes to %GST_STATE_READY or %GST_STATE_NULL never return
-#GST_STATE_CHANGE_ASYNC.
-MT safe.">
-        <return-value transfer-ownership="full">
-          <type name="StateChangeReturn" c:type="GstStateChangeReturn"/>
-        </return-value>
-        <parameters>
-          <parameter name="state" transfer-ownership="none">
-            <type name="State" c:type="GstState"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="abort_state"
-              c:identifier="gst_element_abort_state"
-              doc="Abort the state change of the element. This function is used
-by elements that do asynchronous state changes and find out
-something is wrong.
-This function should be called with the STATE_LOCK held.
-MT safe.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-      </method>
-      <method name="change_state"
-              c:identifier="gst_element_change_state"
-              doc="Perform @transition on @element.
-This function must be called with STATE_LOCK held and is mainly used
-internally.">
-        <return-value transfer-ownership="full">
-          <type name="StateChangeReturn" c:type="GstStateChangeReturn"/>
-        </return-value>
-        <parameters>
-          <parameter name="transition" transfer-ownership="none">
-            <type name="StateChange" c:type="GstStateChange"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="continue_state"
-              c:identifier="gst_element_continue_state"
-              doc="Commit the state change of the element and proceed to the next
-pending state if any. This function is used
-by elements that do asynchronous state changes.
-The core will normally call this method automatically when an
-element returned %GST_STATE_CHANGE_SUCCESS from the state change function.
-If after calling this method the element still has not reached
-the pending state, the next state change is performed.
-This method is used internally and should normally not be called by plugins
-or applications.
-MT safe.">
-        <return-value transfer-ownership="full">
-          <type name="StateChangeReturn" c:type="GstStateChangeReturn"/>
-        </return-value>
-        <parameters>
-          <parameter name="ret" transfer-ownership="none">
-            <type name="StateChangeReturn" c:type="GstStateChangeReturn"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="lost_state"
-              c:identifier="gst_element_lost_state"
-              doc="Brings the element to the lost state. This function calls
-gst_element_lost_state_full() with the new_base_time set to %TRUE.
-This function is used internally and should normally not be called from
-plugins or applications.
-MT safe.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-      </method>
-      <method name="lost_state_full"
-              c:identifier="gst_element_lost_state_full"
-              doc="Brings the element to the lost state. The current state of the
-element is copied to the pending state so that any call to
-gst_element_get_state() will return %GST_STATE_CHANGE_ASYNC.
-An ASYNC_START message is posted with indication to distribute a new
-base_time to the element when @new_base_time is %TRUE.
-If the element was PLAYING, it will go to PAUSED. The element
-will be restored to its PLAYING state by the parent pipeline when it
-prerolls again.
-This is mostly used for elements that lost their preroll buffer
-in the %GST_STATE_PAUSED or %GST_STATE_PLAYING state after a flush,
-they will go to their pending state again when a new preroll buffer is
-queued. This function can only be called when the element is currently
-not in error or an async state change.
-This function is used internally and should normally not be called from
-plugins or applications.
-MT safe."
-              version="0.10.24">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="new_base_time" transfer-ownership="none">
-            <type name="boolean" c:type="gboolean"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_factory"
-              c:identifier="gst_element_get_factory"
-              doc="Retrieves the factory that was used to create this element.
-no refcounting is needed.">
-        <return-value transfer-ownership="full">
-          <type name="ElementFactory" c:type="GstElementFactory*"/>
-        </return-value>
-      </method>
-      <method name="implements_interface"
-              c:identifier="gst_element_implements_interface"
-              doc="Test whether the given element implements a certain interface of type
-iface_type, and test whether it is supported for this specific instance.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="iface_type"
-                     transfer-ownership="none"
-                     doc="type of the interface which we want to be implemented">
-            <type name="GType" c:type="GType"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="create_all_pads"
-              c:identifier="gst_element_create_all_pads"
-              doc="Creates a pad for each pad template that is always available.
-This function is only useful during object intialization of
-subclasses of #GstElement.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-      </method>
-      <method name="get_compatible_pad"
-              c:identifier="gst_element_get_compatible_pad"
-              doc="Looks for an unlinked pad to which the given pad can link. It is not
-guaranteed that linking the pads will work, though it should work in most
-cases.
-found. gst_object_unref() after usage.">
-        <return-value transfer-ownership="full">
-          <type name="Pad" c:type="GstPad*"/>
-        </return-value>
-        <parameters>
-          <parameter name="pad" transfer-ownership="none">
-            <type name="Pad" c:type="GstPad*"/>
-          </parameter>
-          <parameter name="caps" transfer-ownership="none">
-            <type name="Caps" c:type="GstCaps*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_compatible_pad_template"
-              c:identifier="gst_element_get_compatible_pad_template"
-              doc="Retrieves a pad template from @element that is compatible with @compattempl.
-Pads from compatible templates can be linked together.
-unreferencing is necessary.">
-        <return-value transfer-ownership="full">
-          <type name="PadTemplate" c:type="GstPadTemplate*"/>
-        </return-value>
-        <parameters>
-          <parameter name="compattempl" transfer-ownership="none">
-            <type name="PadTemplate" c:type="GstPadTemplate*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="link"
-              c:identifier="gst_element_link"
-              doc="Links @src to @dest. The link must be from source to
-destination; the other direction will not be tried. The function looks for
-existing pads that aren&apos;t linked yet. It will request new pads if necessary.
-Such pads need to be released manualy when unlinking.
-If multiple links are possible, only one is established.
-Make sure you have added your elements to a bin or pipeline with
-gst_bin_add() before trying to link them.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="dest" transfer-ownership="none">
-            <type name="Element" c:type="GstElement*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="link_many"
-              c:identifier="gst_element_link_many"
-              doc="Chain together a series of elements. Uses gst_element_link().
-Make sure you have added your elements to a bin or pipeline with
-gst_bin_add() before trying to link them.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="element_2" transfer-ownership="none">
-            <type name="Element" c:type="GstElement*"/>
-          </parameter>
-          <parameter transfer-ownership="none">
-            <varargs>
-            </varargs>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="link_filtered"
-              c:identifier="gst_element_link_filtered"
-              doc="Links @src to @dest using the given caps as filtercaps.
-The link must be from source to
-destination; the other direction will not be tried. The function looks for
-existing pads that aren&apos;t linked yet. It will request new pads if necessary.
-If multiple links are possible, only one is established.
-Make sure you have added your elements to a bin or pipeline with
-gst_bin_add() before trying to link them.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="dest" transfer-ownership="none">
-            <type name="Element" c:type="GstElement*"/>
-          </parameter>
-          <parameter name="filter" transfer-ownership="none">
-            <type name="Caps" c:type="GstCaps*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="unlink"
-              c:identifier="gst_element_unlink"
-              doc="Unlinks all source pads of the source element with all sink pads
-of the sink element to which they are linked.
-If the link has been made using gst_element_link(), it could have created an
-requestpad, which has to be released using gst_element_release_request_pad().">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="dest" transfer-ownership="none">
-            <type name="Element" c:type="GstElement*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="unlink_many"
-              c:identifier="gst_element_unlink_many"
-              doc="Unlinks a series of elements. Uses gst_element_unlink().">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="element_2" transfer-ownership="none">
-            <type name="Element" c:type="GstElement*"/>
-          </parameter>
-          <parameter transfer-ownership="none">
-            <varargs>
-            </varargs>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="link_pads"
-              c:identifier="gst_element_link_pads"
-              doc="or NULL for any pad.
-Links the two named pads of the source and destination elements.
-Side effect is that if one of the pads has no parent, it becomes a
-child of the parent of the other element.  If they have different
-parents, the link fails.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="srcpadname" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="dest" transfer-ownership="none">
-            <type name="Element" c:type="GstElement*"/>
-          </parameter>
-          <parameter name="destpadname" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="unlink_pads"
-              c:identifier="gst_element_unlink_pads"
-              doc="Unlinks the two named pads of the source and destination elements.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="srcpadname" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="dest" transfer-ownership="none">
-            <type name="Element" c:type="GstElement*"/>
-          </parameter>
-          <parameter name="destpadname" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="link_pads_filtered"
-              c:identifier="gst_element_link_pads_filtered"
-              doc="Links the two named pads of the source and destination elements. Side effect
-is that if one of the pads has no parent, it becomes a child of the parent of
-the other element. If they have different parents, the link fails. If @caps
-is not #NULL, makes sure that the caps of the link is a subset of @caps.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="srcpadname" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="dest" transfer-ownership="none">
-            <type name="Element" c:type="GstElement*"/>
-          </parameter>
-          <parameter name="destpadname" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="filter" transfer-ownership="none">
-            <type name="Caps" c:type="GstCaps*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="seek_simple" c:identifier="gst_element_seek_simple">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="format" transfer-ownership="none">
-            <type name="Format" c:type="GstFormat"/>
-          </parameter>
-          <parameter name="seek_flags" transfer-ownership="none">
-            <type name="SeekFlags" c:type="GstSeekFlags"/>
-          </parameter>
-          <parameter name="seek_pos" transfer-ownership="none">
-            <type name="int64" c:type="gint64"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="query_position"
-              c:identifier="gst_element_query_position"
-              doc="On return contains the #GstFormat used.
-Queries an element for the stream position.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="format" transfer-ownership="none">
-            <type name="Format" c:type="GstFormat*"/>
-          </parameter>
-          <parameter name="cur" direction="out" transfer-ownership="full">
-            <type name="int64" c:type="gint64*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="query_duration"
-              c:identifier="gst_element_query_duration"
-              doc="On return contains the #GstFormat used.
-Queries an element for the total stream duration.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="format"
-                     direction="inout"
-                     transfer-ownership="full"
-                     doc="a pointer to the #GstFormat asked for.">
-            <type name="Format" c:type="GstFormat*"/>
-          </parameter>
-          <parameter name="duration"
-                     direction="out"
-                     transfer-ownership="full"
-                     doc="A location in which to store the total duration, or NULL.">
-            <type name="int64" c:type="gint64*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="query_convert"
-              c:identifier="gst_element_query_convert"
-              doc="Queries an element to convert @src_val in @src_format to @dest_format.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="src_format" transfer-ownership="none">
-            <type name="Format" c:type="GstFormat"/>
-          </parameter>
-          <parameter name="src_val" transfer-ownership="none">
-            <type name="int64" c:type="gint64"/>
-          </parameter>
-          <parameter name="dest_format" transfer-ownership="none">
-            <type name="Format" c:type="GstFormat*"/>
-          </parameter>
-          <parameter name="dest_val" direction="out" transfer-ownership="full">
-            <type name="int64" c:type="gint64*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="found_tags_for_pad"
-              c:identifier="gst_element_found_tags_for_pad"
-              doc="Posts a message to the bus that new tags were found and pushes the
-tags as event. Takes ownership of the @list.
-This is a utility method for elements. Applications should use the
-#GstTagSetter interface.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="pad" transfer-ownership="none">
-            <type name="Pad" c:type="GstPad*"/>
-          </parameter>
-          <parameter name="list" transfer-ownership="none">
-            <type name="TagList" c:type="GstTagList*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="found_tags"
-              c:identifier="gst_element_found_tags"
-              doc="Posts a message to the bus that new tags were found, and pushes an event
-to all sourcepads. Takes ownership of the @list.
-This is a utility method for elements. Applications should use the
-#GstTagSetter interface.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="list" transfer-ownership="none">
-            <type name="TagList" c:type="GstTagList*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <field name="object">
-        <type name="Object" c:type="GstObject"/>
-      </field>
-      <field name="state_lock">
-        <type name="GLib.StaticRecMutex" c:type="GStaticRecMutex*"/>
-      </field>
-      <field name="state_cond">
-        <type name="GLib.Cond" c:type="GCond*"/>
-      </field>
-      <field name="state_cookie">
-        <type name="uint32" c:type="guint32"/>
-      </field>
-      <field name="current_state">
-        <type name="State" c:type="GstState"/>
-      </field>
-      <field name="next_state">
-        <type name="State" c:type="GstState"/>
-      </field>
-      <field name="pending_state">
-        <type name="State" c:type="GstState"/>
-      </field>
-      <field name="last_return">
-        <type name="StateChangeReturn" c:type="GstStateChangeReturn"/>
-      </field>
-      <field name="bus">
-        <type name="Bus" c:type="GstBus*"/>
-      </field>
-      <field name="clock">
-        <type name="Clock" c:type="GstClock*"/>
-      </field>
-      <field name="base_time">
-        <type name="ClockTimeDiff" c:type="GstClockTimeDiff"/>
-      </field>
-      <field name="numpads">
-        <type name="uint16" c:type="guint16"/>
-      </field>
-      <field name="pads">
-        <type name="GLib.List" c:type="GList*"/>
-      </field>
-      <field name="numsrcpads">
-        <type name="uint16" c:type="guint16"/>
-      </field>
-      <field name="srcpads">
-        <type name="GLib.List" c:type="GList*"/>
-      </field>
-      <field name="numsinkpads">
-        <type name="uint16" c:type="guint16"/>
-      </field>
-      <field name="sinkpads">
-        <type name="GLib.List" c:type="GList*"/>
-      </field>
-      <field name="pads_cookie">
-        <type name="uint32" c:type="guint32"/>
-      </field>
-      <union name="abidata" c:type="abidata">
-        <record name="ABI" c:type="ABI">
-          <field name="target_state" writable="1">
-            <type name="State" c:type="GstState"/>
-          </field>
-          <field name="start_time" writable="1">
-            <type name="ClockTime" c:type="GstClockTime"/>
-          </field>
-        </record>
-        <field name="_gst_reserved" writable="1">
-          <array zero-terminated="0" c:type="gpointer" fixed-size="4">
-            <type name="any"/>
-          </array>
-        </field>
-      </union>
-      <glib:signal name="no-more-pads"
-                   doc="This signals that the element will not generate more dynamic pads.">
-        <return-value transfer-ownership="full">
-          <type name="none" c:type="void"/>
-        </return-value>
-      </glib:signal>
-      <glib:signal name="pad-added"
-                   doc="a new #GstPad has been added to the element.">
-        <return-value transfer-ownership="full">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="new_pad" transfer-ownership="none">
-            <type name="Pad" c:type="GstPad"/>
-          </parameter>
-        </parameters>
-      </glib:signal>
-      <glib:signal name="pad-removed"
-                   doc="a #GstPad has been removed from the element">
-        <return-value transfer-ownership="full">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="old_pad" transfer-ownership="none">
-            <type name="Pad" c:type="GstPad"/>
-          </parameter>
-        </parameters>
-      </glib:signal>
-    </class>
-    <record name="ElementClass"
-            c:type="GstElementClass"
-            glib:is-gtype-struct-for="Element"
-            doc="GStreamer element class. Override the vmethods to implement the element
-functionality.">
-      <field name="parent_class">
-        <type name="ObjectClass" c:type="GstObjectClass"/>
-      </field>
-      <field name="details">
-        <type name="ElementDetails" c:type="GstElementDetails"/>
-      </field>
-      <field name="elementfactory">
-        <type name="ElementFactory" c:type="GstElementFactory*"/>
-      </field>
-      <field name="padtemplates">
-        <type name="GLib.List" c:type="GList*"/>
-      </field>
-      <field name="numpadtemplates">
-        <type name="int" c:type="gint"/>
-      </field>
-      <field name="pad_templ_cookie">
-        <type name="uint32" c:type="guint32"/>
-      </field>
-      <field name="pad_added">
-        <callback name="pad_added" c:type="pad_added">
-          <return-value transfer-ownership="none">
-            <type name="none" c:type="void"/>
-          </return-value>
-          <parameters>
-            <parameter name="element" transfer-ownership="none">
-              <type name="Element" c:type="GstElement*"/>
-            </parameter>
-            <parameter name="pad" transfer-ownership="none">
-              <type name="Pad" c:type="GstPad*"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="pad_removed">
-        <callback name="pad_removed" c:type="pad_removed">
-          <return-value transfer-ownership="none">
-            <type name="none" c:type="void"/>
-          </return-value>
-          <parameters>
-            <parameter name="element" transfer-ownership="none">
-              <type name="Element" c:type="GstElement*"/>
-            </parameter>
-            <parameter name="pad" transfer-ownership="none">
-              <type name="Pad" c:type="GstPad*"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="no_more_pads">
-        <callback name="no_more_pads" c:type="no_more_pads">
-          <return-value transfer-ownership="none">
-            <type name="none" c:type="void"/>
-          </return-value>
-          <parameters>
-            <parameter name="element" transfer-ownership="none">
-              <type name="Element" c:type="GstElement*"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="request_new_pad">
-        <callback name="request_new_pad" c:type="request_new_pad">
-          <return-value transfer-ownership="full">
-            <type name="Pad" c:type="GstPad*"/>
-          </return-value>
-          <parameters>
-            <parameter name="element" transfer-ownership="none">
-              <type name="Element" c:type="GstElement*"/>
-            </parameter>
-            <parameter name="templ" transfer-ownership="none">
-              <type name="PadTemplate" c:type="GstPadTemplate*"/>
-            </parameter>
-            <parameter name="name" transfer-ownership="none">
-              <type name="utf8" c:type="gchar*"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="release_pad">
-        <callback name="release_pad" c:type="release_pad">
-          <return-value transfer-ownership="none">
-            <type name="none" c:type="void"/>
-          </return-value>
-          <parameters>
-            <parameter name="element" transfer-ownership="none">
-              <type name="Element" c:type="GstElement*"/>
-            </parameter>
-            <parameter name="pad" transfer-ownership="none">
-              <type name="Pad" c:type="GstPad*"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="get_state">
-        <callback name="get_state" c:type="get_state">
-          <return-value transfer-ownership="full">
-            <type name="StateChangeReturn" c:type="GstStateChangeReturn"/>
-          </return-value>
-          <parameters>
-            <parameter name="element" transfer-ownership="none">
-              <type name="Element" c:type="GstElement*"/>
-            </parameter>
-            <parameter name="state" transfer-ownership="none">
-              <type name="State" c:type="GstState*"/>
-            </parameter>
-            <parameter name="pending" transfer-ownership="none">
-              <type name="State" c:type="GstState*"/>
-            </parameter>
-            <parameter name="timeout" transfer-ownership="none">
-              <type name="ClockTime" c:type="GstClockTime"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="set_state">
-        <callback name="set_state" c:type="set_state">
-          <return-value transfer-ownership="full">
-            <type name="StateChangeReturn" c:type="GstStateChangeReturn"/>
-          </return-value>
-          <parameters>
-            <parameter name="element" transfer-ownership="none">
-              <type name="Element" c:type="GstElement*"/>
-            </parameter>
-            <parameter name="state" transfer-ownership="none">
-              <type name="State" c:type="GstState"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="change_state">
-        <callback name="change_state" c:type="change_state">
-          <return-value transfer-ownership="full">
-            <type name="StateChangeReturn" c:type="GstStateChangeReturn"/>
-          </return-value>
-          <parameters>
-            <parameter name="element" transfer-ownership="none">
-              <type name="Element" c:type="GstElement*"/>
-            </parameter>
-            <parameter name="transition" transfer-ownership="none">
-              <type name="StateChange" c:type="GstStateChange"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="set_bus">
-        <callback name="set_bus" c:type="set_bus">
-          <return-value transfer-ownership="none">
-            <type name="none" c:type="void"/>
-          </return-value>
-          <parameters>
-            <parameter name="element" transfer-ownership="none">
-              <type name="Element" c:type="GstElement*"/>
-            </parameter>
-            <parameter name="bus" transfer-ownership="none">
-              <type name="Bus" c:type="GstBus*"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="provide_clock">
-        <callback name="provide_clock" c:type="provide_clock">
-          <return-value transfer-ownership="full">
-            <type name="Clock" c:type="GstClock*"/>
-          </return-value>
-          <parameters>
-            <parameter name="element" transfer-ownership="none">
-              <type name="Element" c:type="GstElement*"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="set_clock">
-        <callback name="set_clock" c:type="set_clock">
-          <return-value transfer-ownership="none">
-            <type name="boolean" c:type="gboolean"/>
-          </return-value>
-          <parameters>
-            <parameter name="element" transfer-ownership="none">
-              <type name="Element" c:type="GstElement*"/>
-            </parameter>
-            <parameter name="clock" transfer-ownership="none">
-              <type name="Clock" c:type="GstClock*"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="get_index">
-        <callback name="get_index" c:type="get_index">
-          <return-value transfer-ownership="full">
-            <type name="Index" c:type="GstIndex*"/>
-          </return-value>
-          <parameters>
-            <parameter name="element" transfer-ownership="none">
-              <type name="Element" c:type="GstElement*"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="set_index">
-        <callback name="set_index" c:type="set_index">
-          <return-value transfer-ownership="none">
-            <type name="none" c:type="void"/>
-          </return-value>
-          <parameters>
-            <parameter name="element" transfer-ownership="none">
-              <type name="Element" c:type="GstElement*"/>
-            </parameter>
-            <parameter name="index" transfer-ownership="none">
-              <type name="Index" c:type="GstIndex*"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="send_event">
-        <callback name="send_event" c:type="send_event">
-          <return-value transfer-ownership="none">
-            <type name="boolean" c:type="gboolean"/>
-          </return-value>
-          <parameters>
-            <parameter name="element" transfer-ownership="none">
-              <type name="Element" c:type="GstElement*"/>
-            </parameter>
-            <parameter name="event" transfer-ownership="none">
-              <type name="Event" c:type="GstEvent*"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="get_query_types">
-        <callback name="get_query_types" c:type="get_query_types">
-          <return-value transfer-ownership="none">
-            <type name="QueryType" c:type="GstQueryType*"/>
-          </return-value>
-          <parameters>
-            <parameter name="element" transfer-ownership="none">
-              <type name="Element" c:type="GstElement*"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="query">
-        <callback name="query" c:type="query">
-          <return-value transfer-ownership="none">
-            <type name="boolean" c:type="gboolean"/>
-          </return-value>
-          <parameters>
-            <parameter name="element" transfer-ownership="none">
-              <type name="Element" c:type="GstElement*"/>
-            </parameter>
-            <parameter name="query" transfer-ownership="none">
-              <type name="Query" c:type="GstQuery*"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="_gst_reserved">
-        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
-          <type name="any"/>
-        </array>
-      </field>
-      <method name="add_pad_template"
-              c:identifier="gst_element_class_add_pad_template"
-              doc="Adds a padtemplate to an element class. This is mainly used in the _base_init
-functions of classes.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="templ" transfer-ownership="none">
-            <type name="PadTemplate" c:type="GstPadTemplate*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_pad_template"
-              c:identifier="gst_element_class_get_pad_template"
-              doc="Retrieves a padtemplate from @element_class with the given name.
-&lt;note&gt;If you use this function in the #GInstanceInitFunc of an object class
-that has subclasses, make sure to pass the g_class parameter of the
-#GInstanceInitFunc here.&lt;/note&gt;
-No unreferencing is necessary.">
-        <return-value transfer-ownership="full">
-          <type name="PadTemplate" c:type="GstPadTemplate*"/>
-        </return-value>
-        <parameters>
-          <parameter name="name" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_pad_template_list"
-              c:identifier="gst_element_class_get_pad_template_list"
-              doc="Retrieves a list of the pad templates associated with @element_class. The
-list must not be modified by the calling code.
-&lt;note&gt;If you use this function in the #GInstanceInitFunc of an object class
-that has subclasses, make sure to pass the g_class parameter of the
-#GInstanceInitFunc here.&lt;/note&gt;">
-        <return-value transfer-ownership="full">
-          <type name="GLib.List" c:type="GList*"/>
-        </return-value>
-      </method>
-      <method name="set_details"
-              c:identifier="gst_element_class_set_details"
-              doc="Sets the detailed information for a #GstElementClass.
-&lt;note&gt;This function is for use in _base_init functions only.&lt;/note&gt;
-The @details are copied."
-              deprecated="Use gst_element_class_set_details_simple() instead.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="details" transfer-ownership="none">
-            <type name="ElementDetails" c:type="GstElementDetails*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="set_details_simple"
-              c:identifier="gst_element_class_set_details_simple"
-              doc="separated with slashes (&apos;/&apos;). See draft-klass.txt of the design docs
-Sets the detailed information for a #GstElementClass. Simpler version of
-gst_element_class_set_details() that generates less linker overhead.
-&lt;note&gt;This function is for use in _base_init functions only.&lt;/note&gt;
-The detail parameter strings are copied into the #GstElementDetails for
-the element class."
-              version="0.10.14">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="longname" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="classification" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="description" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="author"
-                     transfer-ownership="none"
-                     doc="Use \n to separate">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="install_std_props"
-              c:identifier="gst_element_class_install_std_props"
-              doc="in a NULL terminated
-further &apos;name&apos;, &apos;id&apos;, &apos;flags&apos; triplets and terminated by NULL.
-Adds a list of standardized properties with types to the @klass.
-the id is for the property switch in your get_prop method, and
-the flags determine readability / writeability.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="first_name" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter transfer-ownership="none">
-            <varargs>
-            </varargs>
-          </parameter>
-        </parameters>
-      </method>
-    </record>
-    <record name="ElementDetails"
-            c:type="GstElementDetails"
-            doc="separated with slashes (&apos;/&apos;). See draft-klass.txt of the design docs
-for more details and common types
-This struct defines the public information about a #GstElement. It contains
-meta-data about the element that is mostly for the benefit of editors.
-The @klass member can be used by applications to filter elements based
-on functionality.">
-      <field name="longname" writable="1">
-        <type name="utf8" c:type="gchar*"/>
-      </field>
-      <field name="klass" writable="1">
-        <type name="utf8" c:type="gchar*"/>
-      </field>
-      <field name="description" writable="1">
-        <type name="utf8" c:type="gchar*"/>
-      </field>
-      <field name="author" writable="1">
-        <type name="utf8" c:type="gchar*"/>
-      </field>
-      <field name="_gst_reserved" writable="1">
-        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
-          <type name="any"/>
-        </array>
-      </field>
-    </record>
-    <class name="ElementFactory"
-           c:type="GstElementFactory"
-           doc="The opaque #GstElementFactory data structure."
-           parent="PluginFeature"
-           glib:type-name="GstElementFactory"
-           glib:get-type="gst_element_factory_get_type"
-           glib:type-struct="ElementFactoryClass">
-      <function name="find"
-                c:identifier="gst_element_factory_find"
-                doc="Search for an element factory of the given name. Refs the returned
-element factory; caller is responsible for unreffing.">
-        <return-value transfer-ownership="full">
-          <type name="ElementFactory" c:type="GstElementFactory*"/>
-        </return-value>
-        <parameters>
-          <parameter name="name" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-        </parameters>
-      </function>
-      <function name="make"
-                c:identifier="gst_element_factory_make"
-                doc="Create a new element of the type defined by the given element factory.
-If name is NULL, then the element will receive a guaranteed unique name,
-consisting of the element factory name and a number.
-If name is given, it will be given the name supplied.">
-        <return-value transfer-ownership="full">
-          <type name="Element" c:type="GstElement*"/>
-        </return-value>
-        <parameters>
-          <parameter name="factoryname" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="name" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-        </parameters>
-      </function>
-      <method name="get_element_type"
-              c:identifier="gst_element_factory_get_element_type"
-              doc="Get the #GType for elements managed by this factory. The type can
-only be retrieved if the element factory is loaded, which can be
-assured with gst_plugin_feature_load().
-the factory is not loaded.">
-        <return-value transfer-ownership="none">
-          <type name="GType" c:type="GType"/>
-        </return-value>
-      </method>
-      <method name="get_longname"
-              c:identifier="gst_element_factory_get_longname"
-              doc="Gets the longname for this factory">
-        <return-value transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </return-value>
-      </method>
-      <method name="get_klass"
-              c:identifier="gst_element_factory_get_klass"
-              doc="Gets the class for this factory.">
-        <return-value transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </return-value>
-      </method>
-      <method name="get_description"
-              c:identifier="gst_element_factory_get_description"
-              doc="Gets the description for this factory.">
-        <return-value transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </return-value>
-      </method>
-      <method name="get_author"
-              c:identifier="gst_element_factory_get_author"
-              doc="Gets the author for this factory.">
-        <return-value transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </return-value>
-      </method>
-      <method name="get_num_pad_templates"
-              c:identifier="gst_element_factory_get_num_pad_templates"
-              doc="Gets the number of pad_templates in this factory.">
-        <return-value transfer-ownership="none">
-          <type name="uint" c:type="guint"/>
-        </return-value>
-      </method>
-      <method name="get_static_pad_templates"
-              c:identifier="gst_element_factory_get_static_pad_templates"
-              doc="Gets the #GList of #GstStaticPadTemplate for this factory.">
-        <return-value transfer-ownership="none">
-          <type name="GLib.List" c:type="GList*"/>
-        </return-value>
-      </method>
-      <method name="get_uri_type"
-              c:identifier="gst_element_factory_get_uri_type"
-              doc="Gets the type of URIs the element supports or #GST_URI_UNKNOWN if none.">
-        <return-value transfer-ownership="none">
-          <type name="int" c:type="gint"/>
-        </return-value>
-      </method>
-      <method name="get_uri_protocols"
-              c:identifier="gst_element_factory_get_uri_protocols"
-              doc="Gets a NULL-terminated array of protocols this element supports or NULL if
-no protocols are supported. You may not change the contents of the returned
-array, as it is still owned by the element factory. Use g_strdupv() to
-make a copy of the protocol string array if you need to.">
-        <return-value transfer-ownership="full">
-          <array c:type="gchar**">
-            <type name="utf8"/>
-          </array>
-        </return-value>
-      </method>
-      <method name="has_interface"
-              c:identifier="gst_element_factory_has_interface"
-              doc="Check if @factory implements the interface with name @interfacename."
-              version="0.10.14">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="interfacename" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="create"
-              c:identifier="gst_element_factory_create"
-              doc="Create a new element of the type defined by the given elementfactory.
-It will be given the name supplied, since all elements require a name as
-their first argument.">
-        <return-value transfer-ownership="full">
-          <type name="Element" c:type="GstElement*"/>
-        </return-value>
-        <parameters>
-          <parameter name="name" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="can_src_caps"
-              c:identifier="gst_element_factory_can_src_caps"
-              doc="Checks if the factory can source the given capability.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="caps" transfer-ownership="none">
-            <type name="Caps" c:type="GstCaps*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="can_sink_caps"
-              c:identifier="gst_element_factory_can_sink_caps"
-              doc="Checks if the factory can sink the given capability.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="caps" transfer-ownership="none">
-            <type name="Caps" c:type="GstCaps*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <field name="parent">
-        <type name="PluginFeature" c:type="GstPluginFeature"/>
-      </field>
-      <field name="type">
-        <type name="GType" c:type="GType"/>
-      </field>
-      <field name="details">
-        <type name="ElementDetails" c:type="GstElementDetails"/>
-      </field>
-      <field name="staticpadtemplates">
-        <type name="GLib.List" c:type="GList*"/>
-      </field>
-      <field name="numpadtemplates">
-        <type name="uint" c:type="guint"/>
-      </field>
-      <field name="uri_type">
-        <type name="uint" c:type="guint"/>
-      </field>
-      <field name="uri_protocols">
-        <type name="utf8" c:type="gchar**"/>
-      </field>
-      <field name="interfaces">
-        <type name="GLib.List" c:type="GList*"/>
-      </field>
-      <field name="_gst_reserved">
-        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
-          <type name="any"/>
-        </array>
-      </field>
-    </class>
-    <record name="ElementFactoryClass"
-            c:type="GstElementFactoryClass"
-            glib:is-gtype-struct-for="ElementFactory">
-      <field name="parent_class">
-        <type name="PluginFeatureClass" c:type="GstPluginFeatureClass"/>
-      </field>
-      <field name="_gst_reserved">
-        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
-          <type name="any"/>
-        </array>
-      </field>
-    </record>
-    <bitfield name="ElementFlags"
-              doc="gst_bin_remove() on a child already being removed immediately returns FALSE
-The standard flags that an element may have."
-              c:type="GstElementFlags">
-      <member name="locked_state"
-              value="16"
-              c:identifier="GST_ELEMENT_LOCKED_STATE"/>
-      <member name="is_sink" value="32" c:identifier="GST_ELEMENT_IS_SINK"/>
-      <member name="unparenting"
-              value="64"
-              c:identifier="GST_ELEMENT_UNPARENTING"/>
-      <member name="flag_last"
-              value="1048576"
-              c:identifier="GST_ELEMENT_FLAG_LAST"/>
-    </bitfield>
-    <record name="Event" c:type="GstEvent" doc="A #GstEvent.">
-      <field name="mini_object" writable="1">
-        <type name="MiniObject" c:type="GstMiniObject"/>
-      </field>
-      <field name="type" writable="1">
-        <type name="EventType" c:type="GstEventType"/>
-      </field>
-      <field name="timestamp" writable="1">
-        <type name="uint64" c:type="guint64"/>
-      </field>
-      <field name="src" writable="1">
-        <type name="Object" c:type="GstObject*"/>
-      </field>
-      <field name="structure" writable="1">
-        <type name="Structure" c:type="GstStructure*"/>
-      </field>
-      <union name="abidata" c:type="abidata">
-        <field name="seqnum" writable="1">
-          <type name="uint32" c:type="guint32"/>
-        </field>
-        <field name="_gst_reserved" writable="1">
-          <type name="any" c:type="gpointer"/>
-        </field>
-      </union>
-      <constructor name="new_custom"
-                   c:identifier="gst_event_new_custom"
-                   doc="the structure.
-Create a new custom-typed event. This can be used for anything not
-handled by other event-specific functions to pass an event to another
-element.
-Make sure to allocate an event type with the #GST_EVENT_MAKE_TYPE macro,
-assigning a free number and filling in the correct direction and
-serialization flags.
-New custom events can also be created by subclassing the event type if
-needed.">
-        <return-value transfer-ownership="full">
-          <type name="Event" c:type="GstEvent*"/>
-        </return-value>
-        <parameters>
-          <parameter name="type" transfer-ownership="none">
-            <type name="EventType" c:type="GstEventType"/>
-          </parameter>
-          <parameter name="structure" transfer-ownership="none">
-            <type name="Structure" c:type="GstStructure*"/>
-          </parameter>
-        </parameters>
-      </constructor>
-      <constructor name="new_flush_start"
-                   c:identifier="gst_event_new_flush_start"
-                   doc="Allocate a new flush start event. The flush start event can be sent
-upstream and downstream and travels out-of-bounds with the dataflow.
-It marks pads as being flushing and will make them return
-#GST_FLOW_WRONG_STATE when used for data flow with gst_pad_push(),
-gst_pad_chain(), gst_pad_alloc_buffer(), gst_pad_get_range() and
-gst_pad_pull_range(). Any event (except a #GST_EVENT_FLUSH_STOP) received
-on a flushing pad will return %FALSE immediately.
-Elements should unlock any blocking functions and exit their streaming
-functions as fast as possible when this event is received.
-This event is typically generated after a seek to flush out all queued data
-in the pipeline so that the new media is played as soon as possible.">
-        <return-value transfer-ownership="full">
-          <type name="Event" c:type="GstEvent*"/>
-        </return-value>
-      </constructor>
-      <constructor name="new_flush_stop"
-                   c:identifier="gst_event_new_flush_stop"
-                   doc="Allocate a new flush stop event. The flush stop event can be sent
-upstream and downstream and travels serialized with the dataflow.
-It is typically sent after sending a FLUSH_START event to make the
-pads accept data again.
-Elements can process this event synchronized with the dataflow since
-the preceeding FLUSH_START event stopped the dataflow.
-This event is typically generated to complete a seek and to resume
-dataflow.">
-        <return-value transfer-ownership="full">
-          <type name="Event" c:type="GstEvent*"/>
-        </return-value>
-      </constructor>
-      <constructor name="new_eos"
-                   c:identifier="gst_event_new_eos"
-                   doc="Create a new EOS event. The eos event can only travel downstream
-synchronized with the buffer flow. Elements that receive the EOS
-event on a pad can return #GST_FLOW_UNEXPECTED as a #GstFlowReturn
-when data after the EOS event arrives.
-The EOS event will travel down to the sink elements in the pipeline
-which will then post the #GST_MESSAGE_EOS on the bus after they have
-finished playing any buffered data.
-When all sinks have posted an EOS message, an EOS message is
-forwarded to the application.
-The EOS event itself will not cause any state transitions of the pipeline.">
-        <return-value transfer-ownership="full">
-          <type name="Event" c:type="GstEvent*"/>
-        </return-value>
-      </constructor>
-      <constructor name="new_new_segment"
-                   c:identifier="gst_event_new_new_segment"
-                   doc="Allocate a new newsegment event with the given format/values tripplets
-This method calls gst_event_new_new_segment_full() passing a default
-value of 1.0 for applied_rate">
-        <return-value transfer-ownership="full">
-          <type name="Event" c:type="GstEvent*"/>
-        </return-value>
-        <parameters>
-          <parameter name="update" transfer-ownership="none">
-            <type name="boolean" c:type="gboolean"/>
-          </parameter>
-          <parameter name="rate" transfer-ownership="none">
-            <type name="double" c:type="gdouble"/>
-          </parameter>
-          <parameter name="format" transfer-ownership="none">
-            <type name="Format" c:type="GstFormat"/>
-          </parameter>
-          <parameter name="start" transfer-ownership="none">
-            <type name="int64" c:type="gint64"/>
-          </parameter>
-          <parameter name="stop" transfer-ownership="none">
-            <type name="int64" c:type="gint64"/>
-          </parameter>
-          <parameter name="position" transfer-ownership="none">
-            <type name="int64" c:type="gint64"/>
-          </parameter>
-        </parameters>
-      </constructor>
-      <constructor name="new_new_segment_full"
-                   c:identifier="gst_event_new_new_segment_full"
-                   doc="Allocate a new newsegment event with the given format/values triplets.
-The newsegment event marks the range of buffers to be processed. All
-data not within the segment range is not to be processed. This can be
-used intelligently by plugins to apply more efficient methods of skipping
-unneeded data. The valid range is expressed with the @start and @stop
-values.
-The position value of the segment is used in conjunction with the start
-value to convert the buffer timestamps into the stream time. This is
-usually done in sinks to report the current stream_time.
-is a valid @stop given, it must be greater or equal the @start, including
-when the indicated playback @rate is &lt; 0.
-The @applied_rate value provides information about any rate adjustment that
-has already been made to the timestamps and content on the buffers of the
-stream. (@rate * @applied_rate) should always equal the rate that has been
-requested for playback. For example, if an element has an input segment
-with intended playback @rate of 2.0 and applied_rate of 1.0, it can adjust
-incoming timestamps and buffer content by half and output a newsegment event
-with @rate of 1.0 and @applied_rate of 2.0
-After a newsegment event, the buffer stream time is calculated with:
-position + (TIMESTAMP(buf) - start) * ABS (rate * applied_rate)"
-                   version="0.10.6">
-        <return-value transfer-ownership="full">
-          <type name="Event" c:type="GstEvent*"/>
-        </return-value>
-        <parameters>
-          <parameter name="update" transfer-ownership="none">
-            <type name="boolean" c:type="gboolean"/>
-          </parameter>
-          <parameter name="rate" transfer-ownership="none">
-            <type name="double" c:type="gdouble"/>
-          </parameter>
-          <parameter name="applied_rate" transfer-ownership="none">
-            <type name="double" c:type="gdouble"/>
-          </parameter>
-          <parameter name="format" transfer-ownership="none">
-            <type name="Format" c:type="GstFormat"/>
-          </parameter>
-          <parameter name="start" transfer-ownership="none">
-            <type name="int64" c:type="gint64"/>
-          </parameter>
-          <parameter name="stop" transfer-ownership="none">
-            <type name="int64" c:type="gint64"/>
-          </parameter>
-          <parameter name="position" transfer-ownership="none">
-            <type name="int64" c:type="gint64"/>
-          </parameter>
-        </parameters>
-      </constructor>
-      <constructor name="new_tag"
-                   c:identifier="gst_event_new_tag"
-                   doc="Generates a metadata tag event from the given @taglist.">
-        <return-value transfer-ownership="full">
-          <type name="Event" c:type="GstEvent*"/>
-        </return-value>
-        <parameters>
-          <parameter name="taglist" transfer-ownership="none">
-            <type name="TagList" c:type="GstTagList*"/>
-          </parameter>
-        </parameters>
-      </constructor>
-      <constructor name="new_buffer_size"
-                   c:identifier="gst_event_new_buffer_size"
-                   doc="Create a new buffersize event. The event is sent downstream and notifies
-elements that they should provide a buffer of the specified dimensions.
-When the @async flag is set, a thread boundary is prefered.">
-        <return-value transfer-ownership="full">
-          <type name="Event" c:type="GstEvent*"/>
-        </return-value>
-        <parameters>
-          <parameter name="format" transfer-ownership="none">
-            <type name="Format" c:type="GstFormat"/>
-          </parameter>
-          <parameter name="minsize" transfer-ownership="none">
-            <type name="int64" c:type="gint64"/>
-          </parameter>
-          <parameter name="maxsize" transfer-ownership="none">
-            <type name="int64" c:type="gint64"/>
-          </parameter>
-          <parameter name="async" transfer-ownership="none">
-            <type name="boolean" c:type="gboolean"/>
-          </parameter>
-        </parameters>
-      </constructor>
-      <constructor name="new_qos"
-                   c:identifier="gst_event_new_qos"
-                   doc="Allocate a new qos event with the given values.
-The QOS event is generated in an element that wants an upstream
-element to either reduce or increase its rate because of
-high/low CPU load or other resource usage such as network performance.
-Typically sinks generate these events for each buffer they receive.
-element that generated the QoS event (usually the sink). The value is
-generally computed based on more long term statistics about the streams
-timestamps compared to the clock.
-A value &lt; 1.0 indicates that the upstream element is producing data faster
-than real-time. A value &gt; 1.0 indicates that the upstream element is not
-producing data fast enough. 1.0 is the ideal @proportion value. The
-proportion value can safely be used to lower or increase the quality of
-the element.
-buffer that caused the element to generate the QOS event. A negative value
-means that the buffer with @timestamp arrived in time. A positive value
-indicates how late the buffer with @timestamp was.
-to generate the QOS event. It is expressed in running time and thus an ever
-increasing value.
-The upstream element can use the @diff and @timestamp values to decide
-whether to process more buffers. For possitive @diff, all buffers with
-timestamp &lt;= @timestamp + @diff will certainly arrive late in the sink
-as well. A (negative) @diff value so that @timestamp + @diff would yield a
-result smaller than 0 is not allowed.
-The application can use general event probes to intercept the QoS
-event and implement custom application specific QoS handling.">
-        <return-value transfer-ownership="full">
-          <type name="Event" c:type="GstEvent*"/>
-        </return-value>
-        <parameters>
-          <parameter name="proportion" transfer-ownership="none">
-            <type name="double" c:type="gdouble"/>
-          </parameter>
-          <parameter name="diff" transfer-ownership="none">
-            <type name="ClockTimeDiff" c:type="GstClockTimeDiff"/>
-          </parameter>
-          <parameter name="timestamp" transfer-ownership="none">
-            <type name="ClockTime" c:type="GstClockTime"/>
-          </parameter>
-        </parameters>
-      </constructor>
-      <constructor name="new_seek"
-                   c:identifier="gst_event_new_seek"
-                   doc="Allocate a new seek event with the given parameters.
-The seek event configures playback of the pipeline between @start to @stop
-at the speed given in @rate, also called a playback segment.
-The @start and @stop values are expressed in @format.
-A @rate of 1.0 means normal playback rate, 2.0 means double speed.
-Negatives values means backwards playback. A value of 0.0 for the
-rate is not allowed and should be accomplished instead by PAUSING the
-pipeline.
-A pipeline has a default playback segment configured with a start
-position of 0, a stop position of -1 and a rate of 1.0. The currently
-configured playback segment can be queried with #GST_QUERY_SEGMENT.
-start and stop fields in playback segment. Adjustments can be made relative
-or absolute to the last configured values. A type of #GST_SEEK_TYPE_NONE
-means that the position should not be updated.
-When the rate is positive and @start has been updated, playback will start
-from the newly configured start position.
-For negative rates, playback will start from the newly configured stop
-position (if any). If the stop position if updated, it must be different from
--1 for negative rates.
-It is not possible to seek relative to the current playback position, to do
-this, PAUSE the pipeline, query the current playback position with
-#GST_QUERY_POSITION and update the playback segment current position with a
-#GST_SEEK_TYPE_SET to the desired position.">
-        <return-value transfer-ownership="full">
-          <type name="Event" c:type="GstEvent*"/>
-        </return-value>
-        <parameters>
-          <parameter name="rate" transfer-ownership="none">
-            <type name="double" c:type="gdouble"/>
-          </parameter>
-          <parameter name="format" transfer-ownership="none">
-            <type name="Format" c:type="GstFormat"/>
-          </parameter>
-          <parameter name="flags" transfer-ownership="none">
-            <type name="SeekFlags" c:type="GstSeekFlags"/>
-          </parameter>
-          <parameter name="start_type" transfer-ownership="none">
-            <type name="SeekType" c:type="GstSeekType"/>
-          </parameter>
-          <parameter name="start" transfer-ownership="none">
-            <type name="int64" c:type="gint64"/>
-          </parameter>
-          <parameter name="stop_type" transfer-ownership="none">
-            <type name="SeekType" c:type="GstSeekType"/>
-          </parameter>
-          <parameter name="stop" transfer-ownership="none">
-            <type name="int64" c:type="gint64"/>
-          </parameter>
-        </parameters>
-      </constructor>
-      <constructor name="new_navigation"
-                   c:identifier="gst_event_new_navigation"
-                   doc="structure.
-Create a new navigation event from the given description.">
-        <return-value transfer-ownership="full">
-          <type name="Event" c:type="GstEvent*"/>
-        </return-value>
-        <parameters>
-          <parameter name="structure" transfer-ownership="none">
-            <type name="Structure" c:type="GstStructure*"/>
-          </parameter>
-        </parameters>
-      </constructor>
-      <constructor name="new_latency"
-                   c:identifier="gst_event_new_latency"
-                   doc="Create a new latency event. The event is sent upstream from the sinks and
-notifies elements that they should add an additional @latency to the
-running time before synchronising against the clock.
-The latency is mostly used in live sinks and is always expressed in
-the time format."
-                   version="0.10.12">
-        <return-value transfer-ownership="full">
-          <type name="Event" c:type="GstEvent*"/>
-        </return-value>
-        <parameters>
-          <parameter name="latency" transfer-ownership="none">
-            <type name="ClockTime" c:type="GstClockTime"/>
-          </parameter>
-        </parameters>
-      </constructor>
-      <constructor name="new_step"
-                   c:identifier="gst_event_new_step"
-                   doc="Create a new step event. The purpose of the step event is to instruct a sink
-to skip @amount (expressed in @format) of media. It can be used to implement
-stepping through the video frame by frame or for doing fast trick modes.
-A rate of &lt;= 0.0 is not allowed, pause the pipeline or reverse the playback
-direction of the pipeline to get the same effect.
-The @flush flag will clear any pending data in the pipeline before starting
-the step operation.
-The @intermediate flag instructs the pipeline that this step operation is
-part of a larger step operation."
-                   version="0.10.24">
-        <return-value transfer-ownership="full">
-          <type name="Event" c:type="GstEvent*"/>
-        </return-value>
-        <parameters>
-          <parameter name="format" transfer-ownership="none">
-            <type name="Format" c:type="GstFormat"/>
-          </parameter>
-          <parameter name="amount" transfer-ownership="none">
-            <type name="uint64" c:type="guint64"/>
-          </parameter>
-          <parameter name="rate" transfer-ownership="none">
-            <type name="double" c:type="gdouble"/>
-          </parameter>
-          <parameter name="flush" transfer-ownership="none">
-            <type name="boolean" c:type="gboolean"/>
-          </parameter>
-          <parameter name="intermediate" transfer-ownership="none">
-            <type name="boolean" c:type="gboolean"/>
-          </parameter>
-        </parameters>
-      </constructor>
-      <constructor name="new_sink_message"
-                   c:identifier="gst_event_new_sink_message"
-                   doc="Create a new sink-message event. The purpose of the sink-message event is
-to instruct a sink to post the message contained in the event synchronized
-with the stream."
-                   version="0.10.26">
-        <return-value transfer-ownership="full">
-          <type name="Event" c:type="GstEvent*"/>
-        </return-value>
-        <parameters>
-          <parameter name="msg" transfer-ownership="none">
-            <type name="Message" c:type="GstMessage*"/>
-          </parameter>
-        </parameters>
-      </constructor>
-      <method name="get_structure"
-              c:identifier="gst_event_get_structure"
-              doc="Access the structure of the event.
-owned by the event, which means that you should not free it and
-that the pointer becomes invalid when you free the event.
-MT safe.">
-        <return-value transfer-ownership="none">
-          <type name="Structure" c:type="GstStructure*"/>
-        </return-value>
-      </method>
-      <method name="has_name"
-              c:identifier="gst_event_has_name"
-              doc="Checks if @event has the given @name. This function is usually used to
-check the name of a custom event."
-              version="0.10.20">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="name" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_seqnum"
-              c:identifier="gst_event_get_seqnum"
-              doc="Retrieve the sequence number of a event.
-Events have ever-incrementing sequence numbers, which may also be set
-explicitly via gst_event_set_seqnum(). Sequence numbers are typically used to
-indicate that a event corresponds to some other set of events or messages,
-for example an EOS event corresponding to a SEEK event. It is considered good
-practice to make this correspondence when possible, though it is not
-required.
-Note that events and messages share the same sequence number incrementor;
-two events or messages will never not have the same sequence number unless
-that correspondence was made explicitly.
-MT safe."
-              version="0.10.22">
-        <return-value transfer-ownership="none">
-          <type name="uint32" c:type="guint32"/>
-        </return-value>
-      </method>
-      <method name="set_seqnum"
-              c:identifier="gst_event_set_seqnum"
-              doc="Set the sequence number of a event.
-This function might be called by the creator of a event to indicate that the
-event relates to other events or messages. See gst_event_get_seqnum() for
-more information.
-MT safe."
-              version="0.10.22">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="seqnum" transfer-ownership="none">
-            <type name="uint32" c:type="guint32"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="parse_new_segment"
-              c:identifier="gst_event_parse_new_segment"
-              doc="Get the update flag, rate, format, start, stop and position in the
-newsegment event. In general, gst_event_parse_new_segment_full() should
-be used instead of this, to also retrieve the applied_rate value of the
-segment. See gst_event_new_new_segment_full() for a full description
-of the newsegment event.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="update" direction="out" transfer-ownership="full">
-            <type name="boolean" c:type="gboolean*"/>
-          </parameter>
-          <parameter name="rate" direction="out" transfer-ownership="full">
-            <type name="double" c:type="gdouble*"/>
-          </parameter>
-          <parameter name="format" transfer-ownership="none">
-            <type name="Format" c:type="GstFormat*"/>
-          </parameter>
-          <parameter name="start" direction="out" transfer-ownership="full">
-            <type name="int64" c:type="gint64*"/>
-          </parameter>
-          <parameter name="stop" direction="out" transfer-ownership="full">
-            <type name="int64" c:type="gint64*"/>
-          </parameter>
-          <parameter name="position" direction="out" transfer-ownership="full">
-            <type name="int64" c:type="gint64*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="parse_new_segment_full"
-              c:identifier="gst_event_parse_new_segment_full"
-              doc="Get the update, rate, applied_rate, format, start, stop and
-position in the newsegment event. See gst_event_new_new_segment_full()
-for a full description of the newsegment event."
-              version="0.10.6">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="update" direction="out" transfer-ownership="full">
-            <type name="boolean" c:type="gboolean*"/>
-          </parameter>
-          <parameter name="rate" direction="out" transfer-ownership="full">
-            <type name="double" c:type="gdouble*"/>
-          </parameter>
-          <parameter name="applied_rate"
-                     direction="out"
-                     transfer-ownership="full">
-            <type name="double" c:type="gdouble*"/>
-          </parameter>
-          <parameter name="format" transfer-ownership="none">
-            <type name="Format" c:type="GstFormat*"/>
-          </parameter>
-          <parameter name="start" direction="out" transfer-ownership="full">
-            <type name="int64" c:type="gint64*"/>
-          </parameter>
-          <parameter name="stop" direction="out" transfer-ownership="full">
-            <type name="int64" c:type="gint64*"/>
-          </parameter>
-          <parameter name="position" direction="out" transfer-ownership="full">
-            <type name="int64" c:type="gint64*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="parse_tag"
-              c:identifier="gst_event_parse_tag"
-              doc="Parses a tag @event and stores the results in the given @taglist location.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="taglist" transfer-ownership="none">
-            <type name="TagList" c:type="GstTagList**"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="parse_buffer_size"
-              c:identifier="gst_event_parse_buffer_size"
-              doc="Get the format, minsize, maxsize and async-flag in the buffersize event.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="format" transfer-ownership="none">
-            <type name="Format" c:type="GstFormat*"/>
-          </parameter>
-          <parameter name="minsize" direction="out" transfer-ownership="full">
-            <type name="int64" c:type="gint64*"/>
-          </parameter>
-          <parameter name="maxsize" direction="out" transfer-ownership="full">
-            <type name="int64" c:type="gint64*"/>
-          </parameter>
-          <parameter name="async" direction="out" transfer-ownership="full">
-            <type name="boolean" c:type="gboolean*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="parse_qos"
-              c:identifier="gst_event_parse_qos"
-              doc="Get the proportion, diff and timestamp in the qos event. See
-gst_event_new_qos() for more information about the different QoS values.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="proportion"
-                     direction="out"
-                     transfer-ownership="full">
-            <type name="double" c:type="gdouble*"/>
-          </parameter>
-          <parameter name="diff" transfer-ownership="none">
-            <type name="ClockTimeDiff" c:type="GstClockTimeDiff*"/>
-          </parameter>
-          <parameter name="timestamp" transfer-ownership="none">
-            <type name="ClockTime" c:type="GstClockTime*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="parse_seek"
-              c:identifier="gst_event_parse_seek"
-              doc="Parses a seek @event and stores the results in the given result locations.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="rate" direction="out" transfer-ownership="full">
-            <type name="double" c:type="gdouble*"/>
-          </parameter>
-          <parameter name="format" transfer-ownership="none">
-            <type name="Format" c:type="GstFormat*"/>
-          </parameter>
-          <parameter name="flags" transfer-ownership="none">
-            <type name="SeekFlags" c:type="GstSeekFlags*"/>
-          </parameter>
-          <parameter name="start_type" transfer-ownership="none">
-            <type name="SeekType" c:type="GstSeekType*"/>
-          </parameter>
-          <parameter name="start" direction="out" transfer-ownership="full">
-            <type name="int64" c:type="gint64*"/>
-          </parameter>
-          <parameter name="stop_type" transfer-ownership="none">
-            <type name="SeekType" c:type="GstSeekType*"/>
-          </parameter>
-          <parameter name="stop" direction="out" transfer-ownership="full">
-            <type name="int64" c:type="gint64*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="parse_latency"
-              c:identifier="gst_event_parse_latency"
-              doc="Get the latency in the latency event."
-              version="0.10.12">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="latency" transfer-ownership="none">
-            <type name="ClockTime" c:type="GstClockTime*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="parse_step"
-              c:identifier="gst_event_parse_step"
-              doc="Parse the step event."
-              version="0.10.24">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="format" transfer-ownership="none">
-            <type name="Format" c:type="GstFormat*"/>
-          </parameter>
-          <parameter name="amount" direction="out" transfer-ownership="full">
-            <type name="uint64" c:type="guint64*"/>
-          </parameter>
-          <parameter name="rate" direction="out" transfer-ownership="full">
-            <type name="double" c:type="gdouble*"/>
-          </parameter>
-          <parameter name="flush" direction="out" transfer-ownership="full">
-            <type name="boolean" c:type="gboolean*"/>
-          </parameter>
-          <parameter name="intermediate"
-                     direction="out"
-                     transfer-ownership="full">
-            <type name="boolean" c:type="gboolean*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="parse_sink_message"
-              c:identifier="gst_event_parse_sink_message"
-              doc="Parse the sink-message event. Unref @msg after usage."
-              version="0.10.26">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="msg" transfer-ownership="none">
-            <type name="Message" c:type="GstMessage**"/>
-          </parameter>
-        </parameters>
-      </method>
-    </record>
-    <record name="EventClass" c:type="GstEventClass">
-      <field name="mini_object_class" writable="1">
-        <type name="MiniObjectClass" c:type="GstMiniObjectClass"/>
-      </field>
-      <field name="_gst_reserved" writable="1">
-        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
-          <type name="any"/>
-        </array>
-      </field>
-    </record>
-    <bitfield name="EventType"
-              doc="without a NEWSEGMENT event.
-send messages that should be emitted in sync with
-rendering.
-that the downstream elements are being starved of or
-flooded with data.
-user requests, such as mouse or keyboard movements,
-to upstream elements.
-data flow.
-In-band when travelling downstream.
-#GstEventType lists the standard event types that can be sent in a pipeline.
-The custom event types can be used for private messages between elements
-that can&apos;t be expressed using normal
-GStreamer buffer passing semantics. Custom events carry an arbitrary
-#GstStructure.
-Specific custom events are distinguished by the name of the structure."
-              c:type="GstEventType">
-      <member name="unknown" value="0" c:identifier="GST_EVENT_UNKNOWN"/>
-      <member name="flush_start"
-              value="19"
-              c:identifier="GST_EVENT_FLUSH_START"/>
-      <member name="flush_stop"
-              value="39"
-              c:identifier="GST_EVENT_FLUSH_STOP"/>
-      <member name="eos" value="86" c:identifier="GST_EVENT_EOS"/>
-      <member name="newsegment"
-              value="102"
-              c:identifier="GST_EVENT_NEWSEGMENT"/>
-      <member name="tag" value="118" c:identifier="GST_EVENT_TAG"/>
-      <member name="buffersize"
-              value="134"
-              c:identifier="GST_EVENT_BUFFERSIZE"/>
-      <member name="sink_message"
-              value="150"
-              c:identifier="GST_EVENT_SINK_MESSAGE"/>
-      <member name="qos" value="241" c:identifier="GST_EVENT_QOS"/>
-      <member name="seek" value="257" c:identifier="GST_EVENT_SEEK"/>
-      <member name="navigation"
-              value="273"
-              c:identifier="GST_EVENT_NAVIGATION"/>
-      <member name="latency" value="289" c:identifier="GST_EVENT_LATENCY"/>
-      <member name="step" value="305" c:identifier="GST_EVENT_STEP"/>
-      <member name="custom_upstream"
-              value="513"
-              c:identifier="GST_EVENT_CUSTOM_UPSTREAM"/>
-      <member name="custom_downstream"
-              value="518"
-              c:identifier="GST_EVENT_CUSTOM_DOWNSTREAM"/>
-      <member name="custom_downstream_oob"
-              value="514"
-              c:identifier="GST_EVENT_CUSTOM_DOWNSTREAM_OOB"/>
-      <member name="custom_both"
-              value="519"
-              c:identifier="GST_EVENT_CUSTOM_BOTH"/>
-      <member name="custom_both_oob"
-              value="515"
-              c:identifier="GST_EVENT_CUSTOM_BOTH_OOB"/>
-    </bitfield>
-    <bitfield name="EventTypeFlags"
-              doc="flow.
-#GstEventTypeFlags indicate the aspects of the different #GstEventType
-values. You can get the type flags of a #GstEventType with the
-gst_event_type_get_flags() function."
-              c:type="GstEventTypeFlags">
-      <member name="upstream"
-              value="1"
-              c:identifier="GST_EVENT_TYPE_UPSTREAM"/>
-      <member name="downstream"
-              value="2"
-              c:identifier="GST_EVENT_TYPE_DOWNSTREAM"/>
-      <member name="serialized"
-              value="4"
-              c:identifier="GST_EVENT_TYPE_SERIALIZED"/>
-    </bitfield>
-    <constant name="FOURCC_FORMAT" value="c%c%c%c">
-      <type name="utf8"/>
-    </constant>
-    <callback name="FilterFunc"
-              c:type="GstFilterFunc"
-              doc="Function prototype for a filter callback taht can be use in gst_filter_run().
-The function should apply its filtering to @obj. Additional data passed to
-gst_filter_run() are in @data.">
-      <return-value transfer-ownership="none">
-        <type name="boolean" c:type="gboolean"/>
-      </return-value>
-      <parameters>
-        <parameter name="obj" transfer-ownership="none">
-          <type name="any" c:type="gpointer"/>
-        </parameter>
-        <parameter name="user_data" transfer-ownership="none" closure="1">
-          <type name="any" c:type="gpointer"/>
-        </parameter>
-      </parameters>
-    </callback>
-    <enumeration name="FlowReturn"
-                 doc="sent yet) (unused/unimplemented).
-this error should post an error message with more
-details.
-this (and higher) to define custom success
-codes. Since 0.10.7.
-custom success code to this to avoid compiler
-warnings). Since 0.10.29.
-this (and lower) to define custom error codes.
-Since 0.10.7.
-custom error code to this to avoid compiler
-warnings). Since 0.10.29.
-The result of passing data to a pad.
-Note that the custom return values should not be exposed outside of the
-element scope and are available since 0.10.7."
-                 c:type="GstFlowReturn">
-      <member name="custom_success_2"
-              value="102"
-              c:identifier="GST_FLOW_CUSTOM_SUCCESS_2"/>
-      <member name="custom_success_1"
-              value="101"
-              c:identifier="GST_FLOW_CUSTOM_SUCCESS_1"/>
-      <member name="custom_success"
-              value="100"
-              c:identifier="GST_FLOW_CUSTOM_SUCCESS"/>
-      <member name="resend" value="1" c:identifier="GST_FLOW_RESEND"/>
-      <member name="ok" value="0" c:identifier="GST_FLOW_OK"/>
-      <member name="not_linked" value="-1" c:identifier="GST_FLOW_NOT_LINKED"/>
-      <member name="wrong_state"
-              value="-2"
-              c:identifier="GST_FLOW_WRONG_STATE"/>
-      <member name="unexpected" value="-3" c:identifier="GST_FLOW_UNEXPECTED"/>
-      <member name="not_negotiated"
-              value="-4"
-              c:identifier="GST_FLOW_NOT_NEGOTIATED"/>
-      <member name="error" value="-5" c:identifier="GST_FLOW_ERROR"/>
-      <member name="not_supported"
-              value="-6"
-              c:identifier="GST_FLOW_NOT_SUPPORTED"/>
-      <member name="custom_error"
-              value="-100"
-              c:identifier="GST_FLOW_CUSTOM_ERROR"/>
-      <member name="custom_error_1"
-              value="-101"
-              c:identifier="GST_FLOW_CUSTOM_ERROR_1"/>
-      <member name="custom_error_2"
-              value="-102"
-              c:identifier="GST_FLOW_CUSTOM_ERROR_2"/>
-    </enumeration>
-    <enumeration name="Format"
-                 doc="samples for raw audio, frames/fields for raw video (some, but not all,
-elements support this; use @GST_FORMAT_TIME if you don&apos;t have a good
-reason to query for samples/frames)
-May 2009)
-this as of May 2009)
-Standard predefined formats"
-                 c:type="GstFormat">
-      <member name="undefined" value="0" c:identifier="GST_FORMAT_UNDEFINED"/>
-      <member name="default" value="1" c:identifier="GST_FORMAT_DEFAULT"/>
-      <member name="bytes" value="2" c:identifier="GST_FORMAT_BYTES"/>
-      <member name="time" value="3" c:identifier="GST_FORMAT_TIME"/>
-      <member name="buffers" value="4" c:identifier="GST_FORMAT_BUFFERS"/>
-      <member name="percent" value="5" c:identifier="GST_FORMAT_PERCENT"/>
-    </enumeration>
-    <record name="FormatDefinition"
-            c:type="GstFormatDefinition"
-            doc="A format definition">
-      <field name="value" writable="1">
-        <type name="Format" c:type="GstFormat"/>
-      </field>
-      <field name="nick" writable="1">
-        <type name="utf8" c:type="gchar*"/>
-      </field>
-      <field name="description" writable="1">
-        <type name="utf8" c:type="gchar*"/>
-      </field>
-      <field name="quark" writable="1">
-        <type name="GLib.Quark" c:type="GQuark"/>
-      </field>
-    </record>
-    <glib:boxed c:type="GstGError"
-                glib:name="GError"
-                glib:type-name="GstGError"
-                glib:get-type="gst_g_error_get_type">
-    </glib:boxed>
-    <class name="GhostPad"
-           c:type="GstGhostPad"
-           doc="Opaque #GstGhostPad structure."
-           parent="ProxyPad"
-           glib:type-name="GstGhostPad"
-           glib:get-type="gst_ghost_pad_get_type"
-           glib:type-struct="GhostPadClass">
-      <constructor name="new"
-                   c:identifier="gst_ghost_pad_new"
-                   doc="Create a new ghostpad with @target as the target. The direction will be taken
-from the target pad. @target must be unlinked.
-Will ref the target.">
-        <return-value transfer-ownership="full">
-          <type name="GhostPad" c:type="GstPad*"/>
-        </return-value>
-        <parameters>
-          <parameter name="name" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="target" transfer-ownership="none">
-            <type name="Pad" c:type="GstPad*"/>
-          </parameter>
-        </parameters>
-      </constructor>
-      <constructor name="new_no_target"
-                   c:identifier="gst_ghost_pad_new_no_target"
-                   doc="Create a new ghostpad without a target with the given direction.
-A target can be set on the ghostpad later with the
-gst_ghost_pad_set_target() function.
-The created ghostpad will not have a padtemplate.">
-        <return-value transfer-ownership="full">
-          <type name="GhostPad" c:type="GstPad*"/>
-        </return-value>
-        <parameters>
-          <parameter name="name" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="dir" transfer-ownership="none">
-            <type name="PadDirection" c:type="GstPadDirection"/>
-          </parameter>
-        </parameters>
-      </constructor>
-      <constructor name="new_from_template"
-                   c:identifier="gst_ghost_pad_new_from_template"
-                   doc="Create a new ghostpad with @target as the target. The direction will be taken
-from the target pad. The template used on the ghostpad will be @template.
-Will ref the target."
-                   version="0.10.10">
-        <return-value transfer-ownership="full">
-          <type name="GhostPad" c:type="GstPad*"/>
-        </return-value>
-        <parameters>
-          <parameter name="name" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="target" transfer-ownership="none">
-            <type name="Pad" c:type="GstPad*"/>
-          </parameter>
-          <parameter name="templ" transfer-ownership="none">
-            <type name="PadTemplate" c:type="GstPadTemplate*"/>
-          </parameter>
-        </parameters>
-      </constructor>
-      <constructor name="new_no_target_from_template"
-                   c:identifier="gst_ghost_pad_new_no_target_from_template"
-                   doc="Create a new ghostpad based on @templ, without setting a target. The
-direction will be taken from the @templ."
-                   version="0.10.10">
-        <return-value transfer-ownership="full">
-          <type name="GhostPad" c:type="GstPad*"/>
-        </return-value>
-        <parameters>
-          <parameter name="name" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="templ" transfer-ownership="none">
-            <type name="PadTemplate" c:type="GstPadTemplate*"/>
-          </parameter>
-        </parameters>
-      </constructor>
-      <method name="get_target"
-              c:identifier="gst_ghost_pad_get_target"
-              doc="Get the target pad of @gpad. Unref target pad after usage.
-has no target set. Unref target pad after usage.">
-        <return-value transfer-ownership="full">
-          <type name="Pad" c:type="GstPad*"/>
-        </return-value>
-      </method>
-      <method name="set_target"
-              c:identifier="gst_ghost_pad_set_target"
-              doc="Set the new target of the ghostpad @gpad. Any existing target
-is unlinked and links to the new target are established. if @newtarget is
-NULL the target will be cleared.
-when the internal pads could not be linked.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="newtarget" transfer-ownership="none">
-            <type name="Pad" c:type="GstPad*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="construct"
-              c:identifier="gst_ghost_pad_construct"
-              doc="Finish initialization of a newly allocated ghost pad.
-This function is most useful in language bindings and when subclassing
-#GstGhostPad; plugin and application developers normally will not call this
-function. Call this function directly after a call to g_object_new
-(GST_TYPE_GHOST_PAD, &quot;direction&quot;, @dir, ..., NULL)."
-              version="0.10.22">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-      </method>
-      <field name="pad">
-        <type name="ProxyPad" c:type="GstProxyPad"/>
-      </field>
-      <field name="priv">
-        <type name="GhostPadPrivate" c:type="GstGhostPadPrivate*"/>
-      </field>
-    </class>
-    <record name="GhostPadClass"
-            c:type="GstGhostPadClass"
-            glib:is-gtype-struct-for="GhostPad">
-      <field name="parent_class">
-        <type name="ProxyPadClass" c:type="GstProxyPadClass"/>
-      </field>
-      <field name="_gst_reserved">
-        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
-          <type name="any"/>
-        </array>
-      </field>
-    </record>
-    <record name="GhostPadPrivate" c:type="GstGhostPadPrivate">
-    </record>
-    <constant name="INDEX_ID_INVALID" value="-1">
-      <type name="int"/>
-    </constant>
-    <interface name="ImplementsInterface"
-               c:type="GstImplementsInterface"
-               doc="Opaque #GstImplementsInterface structure."
-               glib:type-name="GstImplementsInterface"
-               glib:get-type="gst_implements_interface_get_type"
-               glib:type-struct="ImplementsInterfaceClass">
-      <prerequisite name="Element"/>
-      <virtual-method name="supported">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="iface_type" transfer-ownership="none">
-            <type name="GType" c:type="GType"/>
-          </parameter>
-        </parameters>
-      </virtual-method>
-    </interface>
-    <record name="ImplementsInterfaceClass"
-            c:type="GstImplementsInterfaceClass"
-            glib:is-gtype-struct-for="ImplementsInterface">
-      <field name="parent">
-        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
-      </field>
-      <field name="supported">
-        <callback name="supported" c:type="supported">
-          <return-value transfer-ownership="none">
-            <type name="boolean" c:type="gboolean"/>
-          </return-value>
-          <parameters>
-            <parameter name="iface" transfer-ownership="none">
-              <type name="ImplementsInterface"
-                    c:type="GstImplementsInterface*"/>
-            </parameter>
-            <parameter name="iface_type" transfer-ownership="none">
-              <type name="GType" c:type="GType"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="_gst_reserved">
-        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
-          <type name="any"/>
-        </array>
-      </field>
-    </record>
-    <class name="Index"
-           c:type="GstIndex"
-           doc="Opaque #GstIndex structure."
-           parent="Object"
-           glib:type-name="GstIndex"
-           glib:get-type="gst_index_get_type"
-           glib:type-struct="IndexClass">
-      <constructor name="new"
-                   c:identifier="gst_index_new"
-                   doc="Create a new tileindex object">
-        <return-value transfer-ownership="full">
-          <type name="Index" c:type="GstIndex*"/>
-        </return-value>
-      </constructor>
-      <virtual-method name="get_writer_id">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="writer_id"
-                     direction="out"
-                     transfer-ownership="full">
-            <type name="int" c:type="gint*"/>
-          </parameter>
-          <parameter name="writer_string" transfer-ownership="full">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-        </parameters>
-      </virtual-method>
-      <virtual-method name="commit" invoker="commit">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="id" transfer-ownership="none">
-            <type name="int" c:type="gint"/>
-          </parameter>
-        </parameters>
-      </virtual-method>
-      <virtual-method name="add_entry">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="entry" transfer-ownership="none">
-            <type name="IndexEntry" c:type="GstIndexEntry*"/>
-          </parameter>
-        </parameters>
-      </virtual-method>
-      <virtual-method name="get_assoc_entry">
-        <return-value transfer-ownership="full">
-          <type name="IndexEntry" c:type="GstIndexEntry*"/>
-        </return-value>
-        <parameters>
-          <parameter name="id" transfer-ownership="none">
-            <type name="int" c:type="gint"/>
-          </parameter>
-          <parameter name="method" transfer-ownership="none">
-            <type name="IndexLookupMethod" c:type="GstIndexLookupMethod"/>
-          </parameter>
-          <parameter name="flags" transfer-ownership="none">
-            <type name="AssocFlags" c:type="GstAssocFlags"/>
-          </parameter>
-          <parameter name="format" transfer-ownership="none">
-            <type name="Format" c:type="GstFormat"/>
-          </parameter>
-          <parameter name="value" transfer-ownership="none">
-            <type name="int64" c:type="gint64"/>
-          </parameter>
-          <parameter name="func" transfer-ownership="none">
-            <type name="GLib.CompareDataFunc" c:type="GCompareDataFunc"/>
-          </parameter>
-          <parameter name="user_data" transfer-ownership="none" closure="7">
-            <type name="any" c:type="gpointer"/>
-          </parameter>
-        </parameters>
-      </virtual-method>
-      <method name="commit"
-              c:identifier="gst_index_commit"
-              doc="Tell the index that the writer with the given id is done
-with this index and is not going to write any more entries
-to it.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="id" transfer-ownership="none">
-            <type name="int" c:type="gint"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_group"
-              c:identifier="gst_index_get_group"
-              doc="Get the id of the current group.">
-        <return-value transfer-ownership="none">
-          <type name="int" c:type="gint"/>
-        </return-value>
-      </method>
-      <method name="new_group"
-              c:identifier="gst_index_new_group"
-              doc="Create a new group for the given index. It will be
-set as the current group.">
-        <return-value transfer-ownership="none">
-          <type name="int" c:type="gint"/>
-        </return-value>
-      </method>
-      <method name="set_group"
-              c:identifier="gst_index_set_group"
-              doc="Set the current groupnumber to the given argument.
-did not exist.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="groupnum" transfer-ownership="none">
-            <type name="int" c:type="gint"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="set_certainty"
-              c:identifier="gst_index_set_certainty"
-              doc="Set the certainty of the given index.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="certainty" transfer-ownership="none">
-            <type name="IndexCertainty" c:type="GstIndexCertainty"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_certainty"
-              c:identifier="gst_index_get_certainty"
-              doc="Get the certainty of the given index.">
-        <return-value transfer-ownership="full">
-          <type name="IndexCertainty" c:type="GstIndexCertainty"/>
-        </return-value>
-      </method>
-      <method name="set_filter"
-              c:identifier="gst_index_set_filter"
-              doc="Lets the app register a custom filter function so that
-it can select what entries should be stored in the index.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="filter"
-                     transfer-ownership="none"
-                     scope="call"
-                     closure="2">
-            <type name="IndexFilter" c:type="GstIndexFilter"/>
-          </parameter>
-          <parameter name="user_data" transfer-ownership="none">
-            <type name="any" c:type="gpointer"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="set_filter_full"
-              c:identifier="gst_index_set_filter_full"
-              doc="Lets the app register a custom filter function so that
-it can select what entries should be stored in the index.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="filter"
-                     transfer-ownership="none"
-                     scope="notified"
-                     closure="2"
-                     destroy="3">
-            <type name="IndexFilter" c:type="GstIndexFilter"/>
-          </parameter>
-          <parameter name="user_data" transfer-ownership="none">
-            <type name="any" c:type="gpointer"/>
-          </parameter>
-          <parameter name="user_data_destroy"
-                     transfer-ownership="none"
-                     scope="call">
-            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="set_resolver"
-              c:identifier="gst_index_set_resolver"
-              doc="Lets the app register a custom function to map index
-ids to writer descriptions.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="resolver"
-                     transfer-ownership="none"
-                     scope="call"
-                     closure="2">
-            <type name="IndexResolver" c:type="GstIndexResolver"/>
-          </parameter>
-          <parameter name="user_data" transfer-ownership="none">
-            <type name="any" c:type="gpointer"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="set_resolver_full"
-              c:identifier="gst_index_set_resolver_full"
-              doc="Lets the app register a custom function to map index
-ids to writer descriptions."
-              version="0.10.18">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="resolver"
-                     transfer-ownership="none"
-                     scope="notified"
-                     closure="2"
-                     destroy="3">
-            <type name="IndexResolver" c:type="GstIndexResolver"/>
-          </parameter>
-          <parameter name="user_data" transfer-ownership="none">
-            <type name="any" c:type="gpointer"/>
-          </parameter>
-          <parameter name="user_data_destroy"
-                     transfer-ownership="none"
-                     scope="call">
-            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_writer_id"
-              c:identifier="gst_index_get_writer_id"
-              doc="Before entries can be added to the index, a writer
-should obtain a unique id. The methods to add new entries
-to the index require this id as an argument.
-The application can implement a custom function to map the writer object
-to a string. That string will be used to register or look up an id
-in the index.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="writer" transfer-ownership="none">
-            <type name="Object" c:type="GstObject*"/>
-          </parameter>
-          <parameter name="id" direction="out" transfer-ownership="full">
-            <type name="int" c:type="gint*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="add_format"
-              c:identifier="gst_index_add_format"
-              doc="Adds a format entry into the index. This function is
-used to map dynamic GstFormat ids to their original
-format key.">
-        <return-value transfer-ownership="full">
-          <type name="IndexEntry" c:type="GstIndexEntry*"/>
-        </return-value>
-        <parameters>
-          <parameter name="id" transfer-ownership="none">
-            <type name="int" c:type="gint"/>
-          </parameter>
-          <parameter name="format" transfer-ownership="none">
-            <type name="Format" c:type="GstFormat"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="add_associationv"
-              c:identifier="gst_index_add_associationv"
-              doc="Associate given format/value pairs with each other.">
-        <return-value transfer-ownership="full">
-          <type name="IndexEntry" c:type="GstIndexEntry*"/>
-        </return-value>
-        <parameters>
-          <parameter name="id" transfer-ownership="none">
-            <type name="int" c:type="gint"/>
-          </parameter>
-          <parameter name="flags" transfer-ownership="none">
-            <type name="AssocFlags" c:type="GstAssocFlags"/>
-          </parameter>
-          <parameter name="n" transfer-ownership="none">
-            <type name="int" c:type="gint"/>
-          </parameter>
-          <parameter name="list" transfer-ownership="none">
-            <type name="IndexAssociation" c:type="GstIndexAssociation*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="add_association"
-              c:identifier="gst_index_add_association"
-              doc="Associate given format/value pairs with each other.
-Be sure to pass gint64 values to this functions varargs,
-you might want to use a gint64 cast to be sure.">
-        <return-value transfer-ownership="full">
-          <type name="IndexEntry" c:type="GstIndexEntry*"/>
-        </return-value>
-        <parameters>
-          <parameter name="id" transfer-ownership="none">
-            <type name="int" c:type="gint"/>
-          </parameter>
-          <parameter name="flags" transfer-ownership="none">
-            <type name="AssocFlags" c:type="GstAssocFlags"/>
-          </parameter>
-          <parameter name="format" transfer-ownership="none">
-            <type name="Format" c:type="GstFormat"/>
-          </parameter>
-          <parameter name="value" transfer-ownership="none">
-            <type name="int64" c:type="gint64"/>
-          </parameter>
-          <parameter transfer-ownership="none">
-            <varargs>
-            </varargs>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="add_object"
-              c:identifier="gst_index_add_object"
-              doc="Add the given object to the index with the given key.
-This function is not yet implemented.">
-        <return-value transfer-ownership="full">
-          <type name="IndexEntry" c:type="GstIndexEntry*"/>
-        </return-value>
-        <parameters>
-          <parameter name="id" transfer-ownership="none">
-            <type name="int" c:type="gint"/>
-          </parameter>
-          <parameter name="key" transfer-ownership="full">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="type" transfer-ownership="none">
-            <type name="GType" c:type="GType"/>
-          </parameter>
-          <parameter name="object" transfer-ownership="none">
-            <type name="any" c:type="gpointer"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="add_id"
-              c:identifier="gst_index_add_id"
-              doc="Add an id entry into the index.">
-        <return-value transfer-ownership="full">
-          <type name="IndexEntry" c:type="GstIndexEntry*"/>
-        </return-value>
-        <parameters>
-          <parameter name="id" transfer-ownership="none">
-            <type name="int" c:type="gint"/>
-          </parameter>
-          <parameter name="description" transfer-ownership="full">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_assoc_entry"
-              c:identifier="gst_index_get_assoc_entry"
-              doc="Finds the given format/value in the index
-value was not found.">
-        <return-value transfer-ownership="full">
-          <type name="IndexEntry" c:type="GstIndexEntry*"/>
-        </return-value>
-        <parameters>
-          <parameter name="id" transfer-ownership="none">
-            <type name="int" c:type="gint"/>
-          </parameter>
-          <parameter name="method" transfer-ownership="none">
-            <type name="IndexLookupMethod" c:type="GstIndexLookupMethod"/>
-          </parameter>
-          <parameter name="flags" transfer-ownership="none">
-            <type name="AssocFlags" c:type="GstAssocFlags"/>
-          </parameter>
-          <parameter name="format" transfer-ownership="none">
-            <type name="Format" c:type="GstFormat"/>
-          </parameter>
-          <parameter name="value" transfer-ownership="none">
-            <type name="int64" c:type="gint64"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_assoc_entry_full"
-              c:identifier="gst_index_get_assoc_entry_full"
-              doc="Finds the given format/value in the index with the given
-compare function and user_data.
-value was not found.">
-        <return-value transfer-ownership="full">
-          <type name="IndexEntry" c:type="GstIndexEntry*"/>
-        </return-value>
-        <parameters>
-          <parameter name="id" transfer-ownership="none">
-            <type name="int" c:type="gint"/>
-          </parameter>
-          <parameter name="method" transfer-ownership="none">
-            <type name="IndexLookupMethod" c:type="GstIndexLookupMethod"/>
-          </parameter>
-          <parameter name="flags" transfer-ownership="none">
-            <type name="AssocFlags" c:type="GstAssocFlags"/>
-          </parameter>
-          <parameter name="format" transfer-ownership="none">
-            <type name="Format" c:type="GstFormat"/>
-          </parameter>
-          <parameter name="value" transfer-ownership="none">
-            <type name="int64" c:type="gint64"/>
-          </parameter>
-          <parameter name="func"
-                     transfer-ownership="none"
-                     scope="call"
-                     closure="7">
-            <type name="GLib.CompareDataFunc" c:type="GCompareDataFunc"/>
-          </parameter>
-          <parameter name="user_data" transfer-ownership="none">
-            <type name="any" c:type="gpointer"/>
-          </parameter>
-        </parameters>
-      </method>
-      <property name="resolver" writable="1">
-        <type name="IndexResolver" c:type="GstIndexResolver"/>
-      </property>
-      <field name="object">
-        <type name="Object" c:type="GstObject"/>
-      </field>
-      <field name="groups">
-        <type name="GLib.List" c:type="GList*"/>
-      </field>
-      <field name="curgroup">
-        <type name="IndexGroup" c:type="GstIndexGroup*"/>
-      </field>
-      <field name="maxgroup">
-        <type name="int" c:type="gint"/>
-      </field>
-      <field name="method">
-        <type name="IndexResolverMethod" c:type="GstIndexResolverMethod"/>
-      </field>
-      <field name="resolver">
-        <type name="IndexResolver" c:type="GstIndexResolver"/>
-      </field>
-      <field name="resolver_user_data">
-        <type name="any" c:type="gpointer"/>
-      </field>
-      <field name="filter">
-        <type name="IndexFilter" c:type="GstIndexFilter"/>
-      </field>
-      <field name="filter_user_data">
-        <type name="any" c:type="gpointer"/>
-      </field>
-      <field name="filter_user_data_destroy">
-        <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
-      </field>
-      <field name="writers">
-        <type name="GLib.HashTable" c:type="GHashTable*"/>
-      </field>
-      <field name="last_id">
-        <type name="int" c:type="gint"/>
-      </field>
-      <field name="resolver_user_data_destroy">
-        <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
-      </field>
-      <field name="_gst_reserved">
-        <array zero-terminated="0" c:type="gpointer" fixed-size="3">
-          <type name="any"/>
-        </array>
-      </field>
-      <glib:signal name="entry-added">
-        <return-value transfer-ownership="full">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="object" transfer-ownership="none">
-            <type name="IndexEntry" c:type="GstIndexEntry"/>
-          </parameter>
-        </parameters>
-      </glib:signal>
-    </class>
-    <record name="IndexAssociation"
-            c:type="GstIndexAssociation"
-            doc="An association in an entry.">
-      <field name="format" writable="1">
-        <type name="Format" c:type="GstFormat"/>
-      </field>
-      <field name="value" writable="1">
-        <type name="int64" c:type="gint64"/>
-      </field>
-    </record>
-    <enumeration name="IndexCertainty"
-                 doc="The certainty of a group in the index."
-                 c:type="GstIndexCertainty">
-      <member name="unknown" value="0" c:identifier="GST_INDEX_UNKNOWN"/>
-      <member name="certain" value="1" c:identifier="GST_INDEX_CERTAIN"/>
-      <member name="fuzzy" value="2" c:identifier="GST_INDEX_FUZZY"/>
-    </enumeration>
-    <record name="IndexClass"
-            c:type="GstIndexClass"
-            glib:is-gtype-struct-for="Index">
-      <field name="parent_class">
-        <type name="ObjectClass" c:type="GstObjectClass"/>
-      </field>
-      <field name="get_writer_id">
-        <callback name="get_writer_id" c:type="get_writer_id">
-          <return-value transfer-ownership="none">
-            <type name="boolean" c:type="gboolean"/>
-          </return-value>
-          <parameters>
-            <parameter name="index" transfer-ownership="none">
-              <type name="Index" c:type="GstIndex*"/>
-            </parameter>
-            <parameter name="writer_id"
-                       direction="out"
-                       transfer-ownership="full">
-              <type name="int" c:type="gint*"/>
-            </parameter>
-            <parameter name="writer_string" transfer-ownership="full">
-              <type name="utf8" c:type="gchar*"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="commit">
-        <callback name="commit" c:type="commit">
-          <return-value transfer-ownership="none">
-            <type name="none" c:type="void"/>
-          </return-value>
-          <parameters>
-            <parameter name="index" transfer-ownership="none">
-              <type name="Index" c:type="GstIndex*"/>
-            </parameter>
-            <parameter name="id" transfer-ownership="none">
-              <type name="int" c:type="gint"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="add_entry">
-        <callback name="add_entry" c:type="add_entry">
-          <return-value transfer-ownership="none">
-            <type name="none" c:type="void"/>
-          </return-value>
-          <parameters>
-            <parameter name="index" transfer-ownership="none">
-              <type name="Index" c:type="GstIndex*"/>
-            </parameter>
-            <parameter name="entry" transfer-ownership="none">
-              <type name="IndexEntry" c:type="GstIndexEntry*"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="get_assoc_entry">
-        <callback name="get_assoc_entry" c:type="get_assoc_entry">
-          <return-value transfer-ownership="full">
-            <type name="IndexEntry" c:type="GstIndexEntry*"/>
-          </return-value>
-          <parameters>
-            <parameter name="index" transfer-ownership="none">
-              <type name="Index" c:type="GstIndex*"/>
-            </parameter>
-            <parameter name="id" transfer-ownership="none">
-              <type name="int" c:type="gint"/>
-            </parameter>
-            <parameter name="method" transfer-ownership="none">
-              <type name="IndexLookupMethod" c:type="GstIndexLookupMethod"/>
-            </parameter>
-            <parameter name="flags" transfer-ownership="none">
-              <type name="AssocFlags" c:type="GstAssocFlags"/>
-            </parameter>
-            <parameter name="format" transfer-ownership="none">
-              <type name="Format" c:type="GstFormat"/>
-            </parameter>
-            <parameter name="value" transfer-ownership="none">
-              <type name="int64" c:type="gint64"/>
-            </parameter>
-            <parameter name="func" transfer-ownership="none">
-              <type name="GLib.CompareDataFunc" c:type="GCompareDataFunc"/>
-            </parameter>
-            <parameter name="user_data" transfer-ownership="none" closure="7">
-              <type name="any" c:type="gpointer"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="entry_added">
-        <callback name="entry_added" c:type="entry_added">
-          <return-value transfer-ownership="none">
-            <type name="none" c:type="void"/>
-          </return-value>
-          <parameters>
-            <parameter name="index" transfer-ownership="none">
-              <type name="Index" c:type="GstIndex*"/>
-            </parameter>
-            <parameter name="entry" transfer-ownership="none">
-              <type name="IndexEntry" c:type="GstIndexEntry*"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="_gst_reserved">
-        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
-          <type name="any"/>
-        </array>
-      </field>
-    </record>
-    <record name="IndexEntry"
-            c:type="GstIndexEntry"
-            doc="The basic element of an index."
-            glib:type-name="GstIndexEntry"
-            glib:get-type="gst_index_entry_get_type">
-      <field name="type" writable="1">
-        <type name="IndexEntryType" c:type="GstIndexEntryType"/>
-      </field>
-      <field name="id" writable="1">
-        <type name="int" c:type="gint"/>
-      </field>
-      <union name="data" c:type="data">
-        <record name="id" c:type="id">
-          <field name="description" writable="1">
-            <type name="utf8" c:type="gchar*"/>
-          </field>
-        </record>
-        <record name="assoc" c:type="assoc">
-          <field name="nassocs" writable="1">
-            <type name="int" c:type="gint"/>
-          </field>
-          <field name="assocs" writable="1">
-            <type name="IndexAssociation" c:type="GstIndexAssociation*"/>
-          </field>
-          <field name="flags" writable="1">
-            <type name="AssocFlags" c:type="GstAssocFlags"/>
-          </field>
-        </record>
-        <record name="object" c:type="object">
-          <field name="key" writable="1">
-            <type name="utf8" c:type="gchar*"/>
-          </field>
-          <field name="type" writable="1">
-            <type name="GType" c:type="GType"/>
-          </field>
-          <field name="object" writable="1">
-            <type name="any" c:type="gpointer"/>
-          </field>
-        </record>
-        <record name="format" c:type="format">
-          <field name="format" writable="1">
-            <type name="Format" c:type="GstFormat"/>
-          </field>
-          <field name="key" writable="1">
-            <type name="utf8" c:type="gchar*"/>
-          </field>
-        </record>
-      </union>
-      <method name="copy"
-              c:identifier="gst_index_entry_copy"
-              doc="Copies an entry and returns the result.">
-        <return-value transfer-ownership="full">
-          <type name="IndexEntry" c:type="GstIndexEntry*"/>
-        </return-value>
-      </method>
-      <method name="free"
-              c:identifier="gst_index_entry_free"
-              doc="Free the memory used by the given entry.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-      </method>
-      <method name="assoc_map"
-              c:identifier="gst_index_entry_assoc_map"
-              doc="Gets alternative formats associated with the indexentry.
-format.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="format" transfer-ownership="none">
-            <type name="Format" c:type="GstFormat"/>
-          </parameter>
-          <parameter name="value" direction="out" transfer-ownership="full">
-            <type name="int64" c:type="gint64*"/>
-          </parameter>
-        </parameters>
-      </method>
-    </record>
-    <enumeration name="IndexEntryType"
-                 doc="The different types of entries in the index."
-                 c:type="GstIndexEntryType">
-      <member name="id" value="0" c:identifier="GST_INDEX_ENTRY_ID"/>
-      <member name="association"
-              value="1"
-              c:identifier="GST_INDEX_ENTRY_ASSOCIATION"/>
-      <member name="object" value="2" c:identifier="GST_INDEX_ENTRY_OBJECT"/>
-      <member name="format" value="3" c:identifier="GST_INDEX_ENTRY_FORMAT"/>
-    </enumeration>
-    <class name="IndexFactory"
-           c:type="GstIndexFactory"
-           doc="The GstIndexFactory object"
-           parent="PluginFeature"
-           glib:type-name="GstIndexFactory"
-           glib:get-type="gst_index_factory_get_type"
-           glib:type-struct="IndexFactoryClass">
-      <constructor name="new"
-                   c:identifier="gst_index_factory_new"
-                   doc="Create a new indexfactory with the given parameters">
-        <return-value transfer-ownership="full">
-          <type name="IndexFactory" c:type="GstIndexFactory*"/>
-        </return-value>
-        <parameters>
-          <parameter name="name" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="longdesc" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="type" transfer-ownership="none">
-            <type name="GType" c:type="GType"/>
-          </parameter>
-        </parameters>
-      </constructor>
-      <function name="find"
-                c:identifier="gst_index_factory_find"
-                doc="Search for an indexfactory of the given name.">
-        <return-value transfer-ownership="full">
-          <type name="IndexFactory" c:type="GstIndexFactory*"/>
-        </return-value>
-        <parameters>
-          <parameter name="name" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-        </parameters>
-      </function>
-      <function name="make"
-                c:identifier="gst_index_factory_make"
-                doc="Create a new #GstIndex instance from the
-indexfactory with the given name.">
-        <return-value transfer-ownership="full">
-          <type name="Index" c:type="GstIndex*"/>
-        </return-value>
-        <parameters>
-          <parameter name="name" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-        </parameters>
-      </function>
-      <method name="destroy"
-              c:identifier="gst_index_factory_destroy"
-              doc="Removes the index from the global list.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-      </method>
-      <method name="create"
-              c:identifier="gst_index_factory_create"
-              doc="Create a new #GstIndex instance from the
-given indexfactory.">
-        <return-value transfer-ownership="full">
-          <type name="Index" c:type="GstIndex*"/>
-        </return-value>
-      </method>
-      <field name="feature">
-        <type name="PluginFeature" c:type="GstPluginFeature"/>
-      </field>
-      <field name="longdesc">
-        <type name="utf8" c:type="gchar*"/>
-      </field>
-      <field name="type">
-        <type name="GType" c:type="GType"/>
-      </field>
-      <field name="_gst_reserved">
-        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
-          <type name="any"/>
-        </array>
-      </field>
-    </class>
-    <record name="IndexFactoryClass"
-            c:type="GstIndexFactoryClass"
-            glib:is-gtype-struct-for="IndexFactory">
-      <field name="parent">
-        <type name="PluginFeatureClass" c:type="GstPluginFeatureClass"/>
-      </field>
-      <field name="_gst_reserved">
-        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
-          <type name="any"/>
-        </array>
-      </field>
-    </record>
-    <callback name="IndexFilter"
-              c:type="GstIndexFilter"
-              doc="Function to filter out entries in the index.
-to the index, %FALSE otherwise.">
-      <return-value transfer-ownership="none">
-        <type name="boolean" c:type="gboolean"/>
-      </return-value>
-      <parameters>
-        <parameter name="index" transfer-ownership="none">
-          <type name="Index" c:type="GstIndex*"/>
-        </parameter>
-        <parameter name="entry" transfer-ownership="none">
-          <type name="IndexEntry" c:type="GstIndexEntry*"/>
-        </parameter>
-        <parameter name="user_data" transfer-ownership="none" closure="2">
-          <type name="any" c:type="gpointer"/>
-        </parameter>
-      </parameters>
-    </callback>
-    <bitfield name="IndexFlags"
-              doc="Flags for this index"
-              c:type="GstIndexFlags">
-      <member name="writable" value="16" c:identifier="GST_INDEX_WRITABLE"/>
-      <member name="readable" value="32" c:identifier="GST_INDEX_READABLE"/>
-      <member name="flag_last"
-              value="4096"
-              c:identifier="GST_INDEX_FLAG_LAST"/>
-    </bitfield>
-    <record name="IndexGroup"
-            c:type="GstIndexGroup"
-            doc="A group of related entries in an index.">
-      <field name="groupnum" writable="1">
-        <type name="int" c:type="gint"/>
-      </field>
-      <field name="entries" writable="1">
-        <type name="GLib.List" c:type="GList*"/>
-      </field>
-      <field name="certainty" writable="1">
-        <type name="IndexCertainty" c:type="GstIndexCertainty"/>
-      </field>
-      <field name="peergroup" writable="1">
-        <type name="int" c:type="gint"/>
-      </field>
-    </record>
-    <enumeration name="IndexLookupMethod"
-                 doc="Specify the method to find an index entry in the index."
-                 c:type="GstIndexLookupMethod">
-      <member name="exact" value="0" c:identifier="GST_INDEX_LOOKUP_EXACT"/>
-      <member name="before" value="1" c:identifier="GST_INDEX_LOOKUP_BEFORE"/>
-      <member name="after" value="2" c:identifier="GST_INDEX_LOOKUP_AFTER"/>
-    </enumeration>
-    <callback name="IndexResolver"
-              c:type="GstIndexResolver"
-              doc="Function to resolve ids to writer descriptions.">
-      <return-value transfer-ownership="none">
-        <type name="boolean" c:type="gboolean"/>
-      </return-value>
-      <parameters>
-        <parameter name="index" transfer-ownership="none">
-          <type name="Index" c:type="GstIndex*"/>
-        </parameter>
-        <parameter name="writer" transfer-ownership="none">
-          <type name="Object" c:type="GstObject*"/>
-        </parameter>
-        <parameter name="writer_string" transfer-ownership="none">
-          <array c:type="gchar**">
-            <type name="utf8"/>
-          </array>
-        </parameter>
-        <parameter name="user_data" transfer-ownership="none" closure="3">
-          <type name="any" c:type="gpointer"/>
-        </parameter>
-      </parameters>
-    </callback>
-    <enumeration name="IndexResolverMethod"
-                 doc="The method used to resolve index writers"
-                 c:type="GstIndexResolverMethod">
-      <member name="custom"
-              value="0"
-              c:identifier="GST_INDEX_RESOLVER_CUSTOM"/>
-      <member name="gtype" value="1" c:identifier="GST_INDEX_RESOLVER_GTYPE"/>
-      <member name="path" value="2" c:identifier="GST_INDEX_RESOLVER_PATH"/>
-    </enumeration>
-    <record name="Iterator"
-            c:type="GstIterator"
-            doc="created.
-#GstIterator base structure. The values of this structure are
-protected for subclasses, use the methods to use the #GstIterator.">
-      <field name="next" writable="1">
-        <type name="IteratorNextFunction" c:type="GstIteratorNextFunction"/>
-      </field>
-      <field name="item" writable="1">
-        <type name="IteratorItemFunction" c:type="GstIteratorItemFunction"/>
-      </field>
-      <field name="resync" writable="1">
-        <type name="IteratorResyncFunction"
-              c:type="GstIteratorResyncFunction"/>
-      </field>
-      <field name="free" writable="1">
-        <type name="IteratorFreeFunction" c:type="GstIteratorFreeFunction"/>
-      </field>
-      <field name="pushed" writable="1">
-        <type name="Iterator" c:type="GstIterator*"/>
-      </field>
-      <field name="type" writable="1">
-        <type name="GType" c:type="GType"/>
-      </field>
-      <field name="lock" writable="1">
-        <type name="GLib.Mutex" c:type="GMutex*"/>
-      </field>
-      <field name="cookie" writable="1">
-        <type name="uint32" c:type="guint32"/>
-      </field>
-      <field name="master_cookie" writable="1">
-        <type name="any" c:type="guint32*"/>
-      </field>
-      <field name="_gst_reserved" writable="1">
-        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
-          <type name="any"/>
-        </array>
-      </field>
-      <constructor name="new"
-                   c:identifier="gst_iterator_new"
-                   doc="iterator changed.
-Create a new iterator. This function is mainly used for objects
-implementing the next/resync/free function to iterate a data structure.
-For each item retrieved, the @item function is called with the lock
-held. The @free function is called when the iterator is freed.
-MT safe.">
-        <return-value transfer-ownership="full">
-          <type name="Iterator" c:type="GstIterator*"/>
-        </return-value>
-        <parameters>
-          <parameter name="size" transfer-ownership="none">
-            <type name="uint" c:type="guint"/>
-          </parameter>
-          <parameter name="type" transfer-ownership="none">
-            <type name="GType" c:type="GType"/>
-          </parameter>
-          <parameter name="lock" transfer-ownership="none">
-            <type name="GLib.Mutex" c:type="GMutex*"/>
-          </parameter>
-          <parameter name="master_cookie"
-                     direction="out"
-                     transfer-ownership="full">
-            <type name="uint32" c:type="guint32*"/>
-          </parameter>
-          <parameter name="next" transfer-ownership="none" scope="call">
-            <type name="IteratorNextFunction"
-                  c:type="GstIteratorNextFunction"/>
-          </parameter>
-          <parameter name="item" transfer-ownership="none" scope="call">
-            <type name="IteratorItemFunction"
-                  c:type="GstIteratorItemFunction"/>
-          </parameter>
-          <parameter name="resync" transfer-ownership="none" scope="call">
-            <type name="IteratorResyncFunction"
-                  c:type="GstIteratorResyncFunction"/>
-          </parameter>
-          <parameter name="free" transfer-ownership="none" scope="call">
-            <type name="IteratorFreeFunction"
-                  c:type="GstIteratorFreeFunction"/>
-          </parameter>
-        </parameters>
-      </constructor>
-      <constructor name="new_list"
-                   c:identifier="gst_iterator_new_list"
-                   doc="is changed.
-Create a new iterator designed for iterating @list.
-The list you iterate is usually part of a data structure @owner and is
-protected with @lock.
-The iterator will use @lock to retrieve the next item of the list and it
-will then call the @item function before releasing @lock again.
-The @item function usualy makes sure that the item remains alive while
-responsible for freeing/unreffing the item after usage as explained in
-gst_iterator_next().
-When a concurrent update to the list is performed, usually by @owner while
-holding @lock, @master_cookie will be updated. The iterator implementation
-will notice the update of the cookie and will return %GST_ITERATOR_RESYNC to
-the user of the iterator in the next call to gst_iterator_next().
-MT safe.">
-        <return-value transfer-ownership="full">
-          <type name="Iterator" c:type="GstIterator*"/>
-        </return-value>
-        <parameters>
-          <parameter name="type" transfer-ownership="none">
-            <type name="GType" c:type="GType"/>
-          </parameter>
-          <parameter name="lock" transfer-ownership="none">
-            <type name="GLib.Mutex" c:type="GMutex*"/>
-          </parameter>
-          <parameter name="master_cookie"
-                     direction="out"
-                     transfer-ownership="full">
-            <type name="uint32" c:type="guint32*"/>
-          </parameter>
-          <parameter name="list" transfer-ownership="none">
-            <type name="GLib.List" c:type="GList**"/>
-          </parameter>
-          <parameter name="owner" transfer-ownership="none">
-            <type name="any" c:type="gpointer"/>
-          </parameter>
-          <parameter name="item" transfer-ownership="none" scope="call">
-            <type name="IteratorItemFunction"
-                  c:type="GstIteratorItemFunction"/>
-          </parameter>
-          <parameter name="free" transfer-ownership="none" scope="call">
-            <type name="IteratorDisposeFunction"
-                  c:type="GstIteratorDisposeFunction"/>
-          </parameter>
-        </parameters>
-      </constructor>
-      <constructor name="new_single"
-                   c:identifier="gst_iterator_new_single"
-                   doc="This #GstIterator is a convenient iterator for the common
-case where a #GstIterator needs to be returned but only
-a single object has to be considered. This happens often
-for the #GstPadIterIntLinkFunction."
-                   version="0.10.25">
-        <return-value transfer-ownership="full">
-          <type name="Iterator" c:type="GstIterator*"/>
-        </return-value>
-        <parameters>
-          <parameter name="type" transfer-ownership="none">
-            <type name="GType" c:type="GType"/>
-          </parameter>
-          <parameter name="object" transfer-ownership="none">
-            <type name="any" c:type="gpointer"/>
-          </parameter>
-          <parameter name="copy" transfer-ownership="none" scope="call">
-            <type name="CopyFunction" c:type="GstCopyFunction"/>
-          </parameter>
-          <parameter name="free" transfer-ownership="none" scope="call">
-            <type name="GLib.FreeFunc" c:type="GFreeFunc"/>
-          </parameter>
-        </parameters>
-      </constructor>
-      <method name="next"
-              c:identifier="gst_iterator_next"
-              doc="Get the next item from the iterator in @elem.
-Only when this function returns %GST_ITERATOR_OK, @elem will contain a valid
-value. For iterators that return refcounted objects, the returned object
-will have its refcount increased and should therefore be unreffed after
-usage.
-When this function returns %GST_ITERATOR_DONE, no more elements can be
-retrieved from @it.
-A return value of %GST_ITERATOR_RESYNC indicates that the element list was
-concurrently updated. The user of @it should call gst_iterator_resync() to
-get the newly updated list.
-A return value of %GST_ITERATOR_ERROR indicates an unrecoverable fatal error.
-is a refcounted object.
-MT safe.">
-        <return-value transfer-ownership="full">
-          <type name="IteratorResult" c:type="GstIteratorResult"/>
-        </return-value>
-        <parameters>
-          <parameter name="elem" transfer-ownership="none">
-            <type name="any" c:type="gpointer*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="resync"
-              c:identifier="gst_iterator_resync"
-              doc="Resync the iterator. this function is mostly called
-after gst_iterator_next() returned %GST_ITERATOR_RESYNC.
-When an iterator was pushed on @it, it will automatically be popped again
-with this function.
-MT safe.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-      </method>
-      <method name="free"
-              c:identifier="gst_iterator_free"
-              doc="Free the iterator.
-MT safe.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-      </method>
-      <method name="push"
-              c:identifier="gst_iterator_push"
-              doc="Pushes @other iterator onto @it. All calls performed on @it are
-forwarded to @other. If @other returns %GST_ITERATOR_DONE, it is
-popped again and calls are handled by @it again.
-This function is mainly used by objects implementing the iterator
-next function to recurse into substructures.
-When gst_iterator_resync() is called on @it, @other will automatically be
-popped.
-MT safe.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="other" transfer-ownership="none">
-            <type name="Iterator" c:type="GstIterator*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="filter"
-              c:identifier="gst_iterator_filter"
-              doc="Create a new iterator from an existing iterator. The new iterator
-will only return those elements that match the given compare function @func.
-in the iterator.
-When this iterator is freed, @it will also be freed.
-MT safe.">
-        <return-value transfer-ownership="full">
-          <type name="Iterator" c:type="GstIterator*"/>
-        </return-value>
-        <parameters>
-          <parameter name="func"
-                     transfer-ownership="none"
-                     scope="call"
-                     closure="2">
-            <type name="GLib.CompareFunc" c:type="GCompareFunc"/>
-          </parameter>
-          <parameter name="user_data" transfer-ownership="none">
-            <type name="any" c:type="gpointer"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="fold"
-              c:identifier="gst_iterator_fold"
-              doc="Folds @func over the elements of @iter. That is to say, @func will be called
-as @func (object, @ret, @user_data) for each object in @it. The normal use
-of this procedure is to accumulate the results of operating on the objects in
-before @func is called, and it should be unrefed after use in @func.
-This procedure can be used (and is used internally) to implement the
-gst_iterator_foreach() and gst_iterator_find_custom() operations.
-The fold will proceed as long as @func returns TRUE. When the iterator has no
-more arguments, %GST_ITERATOR_DONE will be returned. If @func returns FALSE,
-the fold will stop, and %GST_ITERATOR_OK will be returned. Errors or resyncs
-will cause fold to return %GST_ITERATOR_ERROR or %GST_ITERATOR_RESYNC as
-appropriate.
-The iterator will not be freed.
-MT safe.">
-        <return-value transfer-ownership="full">
-          <type name="IteratorResult" c:type="GstIteratorResult"/>
-        </return-value>
-        <parameters>
-          <parameter name="func" transfer-ownership="none" scope="call">
-            <type name="IteratorFoldFunction"
-                  c:type="GstIteratorFoldFunction"/>
-          </parameter>
-          <parameter name="ret" transfer-ownership="none">
-            <type name="GObject.Value" c:type="GValue*"/>
-          </parameter>
-          <parameter name="user_data" transfer-ownership="none">
-            <type name="any" c:type="gpointer"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="foreach"
-              c:identifier="gst_iterator_foreach"
-              doc="Iterate over all element of @it and call the given function @func for
-each element.  As in gst_iterator_fold(), the refcount of a refcounted
-object will be increased before @func is called, and should be unrefed
-after use.
-freed.
-MT safe.">
-        <return-value transfer-ownership="full" doc="The iterator will not be">
-          <type name="IteratorResult" c:type="GstIteratorResult"/>
-        </return-value>
-        <parameters>
-          <parameter name="func"
-                     transfer-ownership="none"
-                     scope="call"
-                     closure="2">
-            <type name="GLib.Func" c:type="GFunc"/>
-          </parameter>
-          <parameter name="user_data" transfer-ownership="none">
-            <type name="any" c:type="gpointer"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="find_custom"
-              c:identifier="gst_iterator_find_custom"
-              doc="Find the first element in @it that matches the compare function @func.
-the refcount of a refcounted object will be increased before @func is
-called, and should be unrefed after use.
-The iterator will not be freed.
-This function will return NULL if an error or resync happened to
-the iterator.
-function or NULL when no element matched.
-MT safe.">
-        <return-value transfer-ownership="none">
-          <type name="any" c:type="gpointer"/>
-        </return-value>
-        <parameters>
-          <parameter name="func"
-                     transfer-ownership="none"
-                     scope="call"
-                     closure="2">
-            <type name="GLib.CompareFunc" c:type="GCompareFunc"/>
-          </parameter>
-          <parameter name="user_data" transfer-ownership="none">
-            <type name="any" c:type="gpointer"/>
-          </parameter>
-        </parameters>
-      </method>
-    </record>
-    <callback name="IteratorDisposeFunction"
-              c:type="GstIteratorDisposeFunction"
-              doc="The function that will be called when a #GList iterator is freed. The
-owner of the #GList iterator can then clean up its resources.">
-      <return-value transfer-ownership="none">
-        <type name="none" c:type="void"/>
-      </return-value>
-      <parameters>
-        <parameter name="owner" transfer-ownership="none">
-          <type name="any" c:type="gpointer"/>
-        </parameter>
-      </parameters>
-    </callback>
-    <callback name="IteratorFoldFunction"
-              c:type="GstIteratorFoldFunction"
-              doc="A function to be passed to gst_iterator_fold().">
-      <return-value transfer-ownership="none">
-        <type name="boolean" c:type="gboolean"/>
-      </return-value>
-      <parameters>
-        <parameter name="item" transfer-ownership="none">
-          <type name="any" c:type="gpointer"/>
-        </parameter>
-        <parameter name="ret" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-        <parameter name="user_data" transfer-ownership="none" closure="2">
-          <type name="any" c:type="gpointer"/>
-        </parameter>
-      </parameters>
-    </callback>
-    <callback name="IteratorFreeFunction"
-              c:type="GstIteratorFreeFunction"
-              doc="This function will be called when the iterator is freed.
-Implementors of a #GstIterator should implement this
-function and pass it to the constructor of the custom iterator.
-The function will be called with the iterator lock held.">
-      <return-value transfer-ownership="none">
-        <type name="none" c:type="void"/>
-      </return-value>
-      <parameters>
-        <parameter name="it" transfer-ownership="none">
-          <type name="Iterator" c:type="GstIterator*"/>
-        </parameter>
-      </parameters>
-    </callback>
-    <enumeration name="IteratorItem"
-                 doc="The result of a #GstIteratorItemFunction."
-                 c:type="GstIteratorItem">
-      <member name="skip" value="0" c:identifier="GST_ITERATOR_ITEM_SKIP"/>
-      <member name="pass" value="1" c:identifier="GST_ITERATOR_ITEM_PASS"/>
-      <member name="end" value="2" c:identifier="GST_ITERATOR_ITEM_END"/>
-    </enumeration>
-    <callback name="IteratorItemFunction"
-              c:type="GstIteratorItemFunction"
-              doc="The function that will be called after the next item of the iterator
-has been retrieved. This function will typically increase the refcount
-of the item or make a copy.
-Implementors of a #GstIterator should implement this
-function and pass it to the constructor of the custom iterator.
-The function will be called with the iterator lock held.">
-      <return-value transfer-ownership="full">
-        <type name="IteratorItem" c:type="GstIteratorItem"/>
-      </return-value>
-      <parameters>
-        <parameter name="it" transfer-ownership="none">
-          <type name="Iterator" c:type="GstIterator*"/>
-        </parameter>
-        <parameter name="item" transfer-ownership="none">
-          <type name="any" c:type="gpointer"/>
-        </parameter>
-      </parameters>
-    </callback>
-    <callback name="IteratorNextFunction"
-              c:type="GstIteratorNextFunction"
-              doc="The function that will be called when the next element of the iterator
-should be retrieved.
-Implementors of a #GstIterator should implement this
-function and pass it to the constructor of the custom iterator.
-The function will be called with the iterator lock held.">
-      <return-value transfer-ownership="full">
-        <type name="IteratorResult" c:type="GstIteratorResult"/>
-      </return-value>
-      <parameters>
-        <parameter name="it" transfer-ownership="none">
-          <type name="Iterator" c:type="GstIterator*"/>
-        </parameter>
-        <parameter name="result" transfer-ownership="none">
-          <type name="any" c:type="gpointer*"/>
-        </parameter>
-      </parameters>
-    </callback>
-    <enumeration name="IteratorResult"
-                 doc="The result of gst_iterator_next()."
-                 c:type="GstIteratorResult">
-      <member name="done" value="0" c:identifier="GST_ITERATOR_DONE"/>
-      <member name="ok" value="1" c:identifier="GST_ITERATOR_OK"/>
-      <member name="resync" value="2" c:identifier="GST_ITERATOR_RESYNC"/>
-      <member name="error" value="3" c:identifier="GST_ITERATOR_ERROR"/>
-    </enumeration>
-    <callback name="IteratorResyncFunction"
-              c:type="GstIteratorResyncFunction"
-              doc="This function will be called whenever a concurrent update happened
-to the iterated datastructure. The implementor of the iterator should
-restart the iterator from the beginning and clean up any state it might
-have.
-Implementors of a #GstIterator should implement this
-function and pass it to the constructor of the custom iterator.
-The function will be called with the iterator lock held.">
-      <return-value transfer-ownership="none">
-        <type name="none" c:type="void"/>
-      </return-value>
-      <parameters>
-        <parameter name="it" transfer-ownership="none">
-          <type name="Iterator" c:type="GstIterator*"/>
-        </parameter>
-      </parameters>
-    </callback>
-    <constant name="LICENSE_UNKNOWN" value="unknown">
-      <type name="utf8"/>
-    </constant>
-    <enumeration name="LibraryError"
-                 doc="category.  Make sure you add a custom message to the error call.
-deciding where to go while developing code.
-Library errors are for errors from the library being used by elements
-(initializing, finalizing, settings, ...)"
-                 c:type="GstLibraryError"
-                 glib:error-quark="gst_library_error_quark">
-      <member name="failed" value="1" c:identifier="GST_LIBRARY_ERROR_FAILED"/>
-      <member name="too_lazy"
-              value="2"
-              c:identifier="GST_LIBRARY_ERROR_TOO_LAZY"/>
-      <member name="init" value="3" c:identifier="GST_LIBRARY_ERROR_INIT"/>
-      <member name="shutdown"
-              value="4"
-              c:identifier="GST_LIBRARY_ERROR_SHUTDOWN"/>
-      <member name="settings"
-              value="5"
-              c:identifier="GST_LIBRARY_ERROR_SETTINGS"/>
-      <member name="encode" value="6" c:identifier="GST_LIBRARY_ERROR_ENCODE"/>
-      <member name="num_errors"
-              value="7"
-              c:identifier="GST_LIBRARY_ERROR_NUM_ERRORS"/>
-    </enumeration>
-    <callback name="LogFunction"
-              c:type="GstLogFunction"
-              doc="Function prototype for a logging function that can be registered with
-gst_debug_add_log_function().
-Use G_GNUC_NO_INSTRUMENT on that function.">
-      <return-value transfer-ownership="none">
-        <type name="none" c:type="void"/>
-      </return-value>
-      <parameters>
-        <parameter name="category" transfer-ownership="none">
-          <type name="DebugCategory" c:type="GstDebugCategory*"/>
-        </parameter>
-        <parameter name="level" transfer-ownership="none">
-          <type name="DebugLevel" c:type="GstDebugLevel"/>
-        </parameter>
-        <parameter name="file" transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </parameter>
-        <parameter name="function" transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </parameter>
-        <parameter name="line" transfer-ownership="none">
-          <type name="int" c:type="gint"/>
-        </parameter>
-        <parameter name="object" transfer-ownership="none">
-          <type name="GObject.Object" c:type="GObject*"/>
-        </parameter>
-        <parameter name="message" transfer-ownership="none">
-          <type name="DebugMessage" c:type="GstDebugMessage*"/>
-        </parameter>
-        <parameter name="data" transfer-ownership="none">
-          <type name="any" c:type="gpointer"/>
-        </parameter>
-      </parameters>
-    </callback>
-    <constant name="MESSAGE_TRACE_NAME" value="GstMessage">
-      <type name="utf8"/>
-    </constant>
-    <constant name="MSECOND" value="0">
-      <type name="int"/>
-    </constant>
-    <constant name="M_PI" value="3.14159265359">
-      <type name="double"/>
-    </constant>
-    <record name="Message" c:type="GstMessage" doc="A #GstMessage.">
-      <field name="mini_object" writable="1">
-        <type name="MiniObject" c:type="GstMiniObject"/>
-      </field>
-      <field name="lock" writable="1">
-        <type name="GLib.Mutex" c:type="GMutex*"/>
-      </field>
-      <field name="cond" writable="1">
-        <type name="GLib.Cond" c:type="GCond*"/>
-      </field>
-      <field name="type" writable="1">
-        <type name="MessageType" c:type="GstMessageType"/>
-      </field>
-      <field name="timestamp" writable="1">
-        <type name="uint64" c:type="guint64"/>
-      </field>
-      <field name="src" writable="1">
-        <type name="Object" c:type="GstObject*"/>
-      </field>
-      <field name="structure" writable="1">
-        <type name="Structure" c:type="GstStructure*"/>
-      </field>
-      <union name="abidata" c:type="abidata">
-        <record name="ABI" c:type="ABI">
-          <field name="seqnum" writable="1">
-            <type name="uint32" c:type="guint32"/>
-          </field>
-        </record>
-        <field name="_gst_reserved" writable="1">
-          <array zero-terminated="0" c:type="gpointer" fixed-size="4">
-            <type name="any"/>
-          </array>
-        </field>
-      </union>
-      <constructor name="new_eos"
-                   c:identifier="gst_message_new_eos"
-                   doc="Create a new eos message. This message is generated and posted in
-the sink elements of a GstBin. The bin will only forward the EOS
-message to the application if all sinks have posted an EOS message.
-MT safe.">
-        <return-value transfer-ownership="full">
-          <type name="Message" c:type="GstMessage*"/>
-        </return-value>
-        <parameters>
-          <parameter name="src" transfer-ownership="none">
-            <type name="Object" c:type="GstObject*"/>
-          </parameter>
-        </parameters>
-      </constructor>
-      <constructor name="new_error"
-                   c:identifier="gst_message_new_error"
-                   doc="Create a new error message. The message will copy @error and
-occured. The pipeline will probably (partially) stop. The application
-receiving this message should stop the pipeline.
-MT safe.">
-        <return-value transfer-ownership="full">
-          <type name="Message" c:type="GstMessage*"/>
-        </return-value>
-        <parameters>
-          <parameter name="src" transfer-ownership="none">
-            <type name="Object" c:type="GstObject*"/>
-          </parameter>
-          <parameter name="error" transfer-ownership="none">
-            <type name="GLib.Error" c:type="GError*"/>
-          </parameter>
-          <parameter name="debug" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-        </parameters>
-      </constructor>
-      <constructor name="new_warning"
-                   c:identifier="gst_message_new_warning"
-                   doc="Create a new warning message. The message will make copies of @error and
-MT safe.">
-        <return-value transfer-ownership="full">
-          <type name="Message" c:type="GstMessage*"/>
-        </return-value>
-        <parameters>
-          <parameter name="src" transfer-ownership="none">
-            <type name="Object" c:type="GstObject*"/>
-          </parameter>
-          <parameter name="error" transfer-ownership="none">
-            <type name="GLib.Error" c:type="GError*"/>
-          </parameter>
-          <parameter name="debug" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-        </parameters>
-      </constructor>
-      <constructor name="new_info"
-                   c:identifier="gst_message_new_info"
-                   doc="Create a new info message. The message will make copies of @error and
-MT safe."
-                   version="0.10.12">
-        <return-value transfer-ownership="full">
-          <type name="Message" c:type="GstMessage*"/>
-        </return-value>
-        <parameters>
-          <parameter name="src" transfer-ownership="none">
-            <type name="Object" c:type="GstObject*"/>
-          </parameter>
-          <parameter name="error" transfer-ownership="none">
-            <type name="GLib.Error" c:type="GError*"/>
-          </parameter>
-          <parameter name="debug" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-        </parameters>
-      </constructor>
-      <constructor name="new_tag"
-                   c:identifier="gst_message_new_tag"
-                   doc="Create a new tag message. The message will take ownership of the tag list.
-The message is posted by elements that discovered a new taglist.
-MT safe.">
-        <return-value transfer-ownership="full">
-          <type name="Message" c:type="GstMessage*"/>
-        </return-value>
-        <parameters>
-          <parameter name="src" transfer-ownership="none">
-            <type name="Object" c:type="GstObject*"/>
-          </parameter>
-          <parameter name="tag_list" transfer-ownership="none">
-            <type name="TagList" c:type="GstTagList*"/>
-          </parameter>
-        </parameters>
-      </constructor>
-      <constructor name="new_tag_full"
-                   c:identifier="gst_message_new_tag_full"
-                   doc="Create a new tag message. The message will take ownership of the tag list.
-The message is posted by elements that discovered a new taglist.
-MT safe."
-                   version="0.10.24">
-        <return-value transfer-ownership="full">
-          <type name="Message" c:type="GstMessage*"/>
-        </return-value>
-        <parameters>
-          <parameter name="src" transfer-ownership="none">
-            <type name="Object" c:type="GstObject*"/>
-          </parameter>
-          <parameter name="pad" transfer-ownership="none">
-            <type name="Pad" c:type="GstPad*"/>
-          </parameter>
-          <parameter name="tag_list" transfer-ownership="none">
-            <type name="TagList" c:type="GstTagList*"/>
-          </parameter>
-        </parameters>
-      </constructor>
-      <constructor name="new_buffering"
-                   c:identifier="gst_message_new_buffering"
-                   doc="Create a new buffering message. This message can be posted by an element that
-needs to buffer data before it can continue processing. @percent should be a
-value between 0 and 100. A value of 100 means that the buffering completed.
-When @percent is &lt; 100 the application should PAUSE a PLAYING pipeline. When
-The application must be prepared to receive BUFFERING messages in the
-PREROLLING state and may only set the pipeline to PLAYING after receiving a
-message with @percent set to 100, which can happen after the pipeline
-completed prerolling.
-MT safe."
-                   version="0.10.11">
-        <return-value transfer-ownership="full">
-          <type name="Message" c:type="GstMessage*"/>
-        </return-value>
-        <parameters>
-          <parameter name="src" transfer-ownership="none">
-            <type name="Object" c:type="GstObject*"/>
-          </parameter>
-          <parameter name="percent" transfer-ownership="none">
-            <type name="int" c:type="gint"/>
-          </parameter>
-        </parameters>
-      </constructor>
-      <constructor name="new_state_changed"
-                   c:identifier="gst_message_new_state_changed"
-                   doc="Create a state change message. This message is posted whenever an element
-changed its state.
-MT safe.">
-        <return-value transfer-ownership="full">
-          <type name="Message" c:type="GstMessage*"/>
-        </return-value>
-        <parameters>
-          <parameter name="src" transfer-ownership="none">
-            <type name="Object" c:type="GstObject*"/>
-          </parameter>
-          <parameter name="oldstate" transfer-ownership="none">
-            <type name="State" c:type="GstState"/>
-          </parameter>
-          <parameter name="newstate" transfer-ownership="none" doc="state">
-            <type name="State" c:type="GstState"/>
-          </parameter>
-          <parameter name="pending" transfer-ownership="none" doc="state">
-            <type name="State" c:type="GstState"/>
-          </parameter>
-        </parameters>
-      </constructor>
-      <constructor name="new_state_dirty"
-                   c:identifier="gst_message_new_state_dirty"
-                   doc="Create a state dirty message. This message is posted whenever an element
-changed its state asynchronously and is used internally to update the
-states of container objects.
-MT safe.">
-        <return-value transfer-ownership="full">
-          <type name="Message" c:type="GstMessage*"/>
-        </return-value>
-        <parameters>
-          <parameter name="src" transfer-ownership="none">
-            <type name="Object" c:type="GstObject*"/>
-          </parameter>
-        </parameters>
-      </constructor>
-      <constructor name="new_step_done"
-                   c:identifier="gst_message_new_step_done"
-                   doc="This message is posted by elements when they complete a part, when @intermediate set
-to TRUE, or a complete step operation.
-MT safe."
-                   version="0.10.24">
-        <return-value transfer-ownership="full">
-          <type name="Message" c:type="GstMessage*"/>
-        </return-value>
-        <parameters>
-          <parameter name="src" transfer-ownership="none">
-            <type name="Object" c:type="GstObject*"/>
-          </parameter>
-          <parameter name="format" transfer-ownership="none">
-            <type name="Format" c:type="GstFormat"/>
-          </parameter>
-          <parameter name="amount" transfer-ownership="none">
-            <type name="uint64" c:type="guint64"/>
-          </parameter>
-          <parameter name="rate" transfer-ownership="none">
-            <type name="double" c:type="gdouble"/>
-          </parameter>
-          <parameter name="flush" transfer-ownership="none">
-            <type name="boolean" c:type="gboolean"/>
-          </parameter>
-          <parameter name="intermediate" transfer-ownership="none">
-            <type name="boolean" c:type="gboolean"/>
-          </parameter>
-          <parameter name="duration" transfer-ownership="none">
-            <type name="uint64" c:type="guint64"/>
-          </parameter>
-          <parameter name="eos" transfer-ownership="none">
-            <type name="boolean" c:type="gboolean"/>
-          </parameter>
-        </parameters>
-      </constructor>
-      <constructor name="new_clock_provide"
-                   c:identifier="gst_message_new_clock_provide"
-                   doc="Create a clock provide message. This message is posted whenever an
-element is ready to provide a clock or lost its ability to provide
-a clock (maybe because it paused or became EOS).
-This message is mainly used internally to manage the clock
-selection.
-MT safe.">
-        <return-value transfer-ownership="full">
-          <type name="Message" c:type="GstMessage*"/>
-        </return-value>
-        <parameters>
-          <parameter name="src" transfer-ownership="none">
-            <type name="Object" c:type="GstObject*"/>
-          </parameter>
-          <parameter name="clock" transfer-ownership="none">
-            <type name="Clock" c:type="GstClock*"/>
-          </parameter>
-          <parameter name="ready" transfer-ownership="none">
-            <type name="boolean" c:type="gboolean"/>
-          </parameter>
-        </parameters>
-      </constructor>
-      <constructor name="new_clock_lost"
-                   c:identifier="gst_message_new_clock_lost"
-                   doc="Create a clock lost message. This message is posted whenever the
-clock is not valid anymore.
-If this message is posted by the pipeline, the pipeline will
-select a new clock again when it goes to PLAYING. It might therefore
-be needed to set the pipeline to PAUSED and PLAYING again.
-MT safe.">
-        <return-value transfer-ownership="full">
-          <type name="Message" c:type="GstMessage*"/>
-        </return-value>
-        <parameters>
-          <parameter name="src" transfer-ownership="none">
-            <type name="Object" c:type="GstObject*"/>
-          </parameter>
-          <parameter name="clock" transfer-ownership="none">
-            <type name="Clock" c:type="GstClock*"/>
-          </parameter>
-        </parameters>
-      </constructor>
-      <constructor name="new_new_clock"
-                   c:identifier="gst_message_new_new_clock"
-                   doc="Create a new clock message. This message is posted whenever the
-pipeline selectes a new clock for the pipeline.
-MT safe.">
-        <return-value transfer-ownership="full">
-          <type name="Message" c:type="GstMessage*"/>
-        </return-value>
-        <parameters>
-          <parameter name="src" transfer-ownership="none">
-            <type name="Object" c:type="GstObject*"/>
-          </parameter>
-          <parameter name="clock" transfer-ownership="none">
-            <type name="Clock" c:type="GstClock*"/>
-          </parameter>
-        </parameters>
-      </constructor>
-      <constructor name="new_application"
-                   c:identifier="gst_message_new_application"
-                   doc="the structure.
-Create a new application-typed message. GStreamer will never create these
-messages; they are a gift from us to you. Enjoy.
-MT safe.">
-        <return-value transfer-ownership="full">
-          <type name="Message" c:type="GstMessage*"/>
-        </return-value>
-        <parameters>
-          <parameter name="src" transfer-ownership="none">
-            <type name="Object" c:type="GstObject*"/>
-          </parameter>
-          <parameter name="structure" transfer-ownership="none">
-            <type name="Structure" c:type="GstStructure*"/>
-          </parameter>
-        </parameters>
-      </constructor>
-      <constructor name="new_element"
-                   c:identifier="gst_message_new_element"
-                   doc="the structure.
-Create a new element-specific message. This is meant as a generic way of
-allowing one-way communication from an element to an application, for example
-&quot;the firewire cable was unplugged&quot;. The format of the message should be
-documented in the element&apos;s documentation. The structure field can be NULL.
-MT safe.">
-        <return-value transfer-ownership="full">
-          <type name="Message" c:type="GstMessage*"/>
-        </return-value>
-        <parameters>
-          <parameter name="src" transfer-ownership="none">
-            <type name="Object" c:type="GstObject*"/>
-          </parameter>
-          <parameter name="structure" transfer-ownership="none">
-            <type name="Structure" c:type="GstStructure*"/>
-          </parameter>
-        </parameters>
-      </constructor>
-      <constructor name="new_segment_start"
-                   c:identifier="gst_message_new_segment_start"
-                   doc="Create a new segment message. This message is posted by elements that
-start playback of a segment as a result of a segment seek. This message
-is not received by the application but is used for maintenance reasons in
-container elements.
-MT safe.">
-        <return-value transfer-ownership="full">
-          <type name="Message" c:type="GstMessage*"/>
-        </return-value>
-        <parameters>
-          <parameter name="src" transfer-ownership="none">
-            <type name="Object" c:type="GstObject*"/>
-          </parameter>
-          <parameter name="format" transfer-ownership="none">
-            <type name="Format" c:type="GstFormat"/>
-          </parameter>
-          <parameter name="position" transfer-ownership="none">
-            <type name="int64" c:type="gint64"/>
-          </parameter>
-        </parameters>
-      </constructor>
-      <constructor name="new_segment_done"
-                   c:identifier="gst_message_new_segment_done"
-                   doc="Create a new segment done message. This message is posted by elements that
-finish playback of a segment as a result of a segment seek. This message
-is received by the application after all elements that posted a segment_start
-have posted the segment_done.
-MT safe.">
-        <return-value transfer-ownership="full">
-          <type name="Message" c:type="GstMessage*"/>
-        </return-value>
-        <parameters>
-          <parameter name="src" transfer-ownership="none">
-            <type name="Object" c:type="GstObject*"/>
-          </parameter>
-          <parameter name="format" transfer-ownership="none">
-            <type name="Format" c:type="GstFormat"/>
-          </parameter>
-          <parameter name="position" transfer-ownership="none">
-            <type name="int64" c:type="gint64"/>
-          </parameter>
-        </parameters>
-      </constructor>
-      <constructor name="new_duration"
-                   c:identifier="gst_message_new_duration"
-                   doc="Create a new duration message. This message is posted by elements that
-know the duration of a stream in a specific format. This message
-is received by bins and is used to calculate the total duration of a
-pipeline. Elements may post a duration message with a duration of
-GST_CLOCK_TIME_NONE to indicate that the duration has changed and the
-cached duration should be discarded. The new duration can then be
-retrieved via a query.
-MT safe.">
-        <return-value transfer-ownership="full">
-          <type name="Message" c:type="GstMessage*"/>
-        </return-value>
-        <parameters>
-          <parameter name="src" transfer-ownership="none">
-            <type name="Object" c:type="GstObject*"/>
-          </parameter>
-          <parameter name="format" transfer-ownership="none">
-            <type name="Format" c:type="GstFormat"/>
-          </parameter>
-          <parameter name="duration" transfer-ownership="none">
-            <type name="int64" c:type="gint64"/>
-          </parameter>
-        </parameters>
-      </constructor>
-      <constructor name="new_latency"
-                   c:identifier="gst_message_new_latency"
-                   doc="This message can be posted by elements when their latency requirements have
-changed.
-MT safe."
-                   version="0.10.12">
-        <return-value transfer-ownership="full">
-          <type name="Message" c:type="GstMessage*"/>
-        </return-value>
-        <parameters>
-          <parameter name="src" transfer-ownership="none">
-            <type name="Object" c:type="GstObject*"/>
-          </parameter>
-        </parameters>
-      </constructor>
-      <constructor name="new_async_start"
-                   c:identifier="gst_message_new_async_start"
-                   doc="This message is posted by elements when they start an ASYNC state change.
-PLAYING.
-MT safe."
-                   version="0.10.13">
-        <return-value transfer-ownership="full">
-          <type name="Message" c:type="GstMessage*"/>
-        </return-value>
-        <parameters>
-          <parameter name="src" transfer-ownership="none">
-            <type name="Object" c:type="GstObject*"/>
-          </parameter>
-          <parameter name="new_base_time" transfer-ownership="none">
-            <type name="boolean" c:type="gboolean"/>
-          </parameter>
-        </parameters>
-      </constructor>
-      <constructor name="new_async_done"
-                   c:identifier="gst_message_new_async_done"
-                   doc="The message is posted when elements completed an ASYNC state change.
-MT safe."
-                   version="0.10.13">
-        <return-value transfer-ownership="full">
-          <type name="Message" c:type="GstMessage*"/>
-        </return-value>
-        <parameters>
-          <parameter name="src" transfer-ownership="none">
-            <type name="Object" c:type="GstObject*"/>
-          </parameter>
-        </parameters>
-      </constructor>
-      <constructor name="new_structure_change"
-                   c:identifier="gst_message_new_structure_change"
-                   doc="Create a new structure change message. This message is posted when the
-structure of a pipeline is in the process of being changed, for example
-when pads are linked or unlinked.
-MT safe."
-                   version="0.10.22.">
-        <return-value transfer-ownership="full">
-          <type name="Message" c:type="GstMessage*"/>
-        </return-value>
-        <parameters>
-          <parameter name="src" transfer-ownership="none">
-            <type name="Object" c:type="GstObject*"/>
-          </parameter>
-          <parameter name="type" transfer-ownership="none">
-            <type name="StructureChangeType" c:type="GstStructureChangeType"/>
-          </parameter>
-          <parameter name="owner" transfer-ownership="none">
-            <type name="Element" c:type="GstElement*"/>
-          </parameter>
-          <parameter name="busy" transfer-ownership="none">
-            <type name="boolean" c:type="gboolean"/>
-          </parameter>
-        </parameters>
-      </constructor>
-      <constructor name="new_stream_status"
-                   c:identifier="gst_message_new_stream_status"
-                   doc="Create a new stream status message. This message is posted when a streaming
-thread is created/destroyed or when the state changed.
-MT safe."
-                   version="0.10.24.">
-        <return-value transfer-ownership="full">
-          <type name="Message" c:type="GstMessage*"/>
-        </return-value>
-        <parameters>
-          <parameter name="src" transfer-ownership="none">
-            <type name="Object" c:type="GstObject*"/>
-          </parameter>
-          <parameter name="type" transfer-ownership="none">
-            <type name="StreamStatusType" c:type="GstStreamStatusType"/>
-          </parameter>
-          <parameter name="owner" transfer-ownership="none">
-            <type name="Element" c:type="GstElement*"/>
-          </parameter>
-        </parameters>
-      </constructor>
-      <constructor name="new_request_state"
-                   c:identifier="gst_message_new_request_state"
-                   doc="This message can be posted by elements when they want to have their state
-changed. A typical use case would be an audio server that wants to pause the
-pipeline because a higher priority stream is being played.
-MT safe."
-                   version="0.10.23">
-        <return-value transfer-ownership="full">
-          <type name="Message" c:type="GstMessage*"/>
-        </return-value>
-        <parameters>
-          <parameter name="src" transfer-ownership="none">
-            <type name="Object" c:type="GstObject*"/>
-          </parameter>
-          <parameter name="state" transfer-ownership="none">
-            <type name="State" c:type="GstState"/>
-          </parameter>
-        </parameters>
-      </constructor>
-      <constructor name="new_step_start"
-                   c:identifier="gst_message_new_step_start"
-                   doc="This message is posted by elements when they accept or activate a new step
-event for @amount in @format.
-queued it for execution in the streaming threads.
-is now ready to start executing the step in the streaming thread. After this
-message is emited, the application can queue a new step operation in the
-element.
-MT safe."
-                   version="0.10.24">
-        <return-value transfer-ownership="full">
-          <type name="Message" c:type="GstMessage*"/>
-        </return-value>
-        <parameters>
-          <parameter name="src" transfer-ownership="none">
-            <type name="Object" c:type="GstObject*"/>
-          </parameter>
-          <parameter name="active" transfer-ownership="none">
-            <type name="boolean" c:type="gboolean"/>
-          </parameter>
-          <parameter name="format" transfer-ownership="none">
-            <type name="Format" c:type="GstFormat"/>
-          </parameter>
-          <parameter name="amount" transfer-ownership="none">
-            <type name="uint64" c:type="guint64"/>
-          </parameter>
-          <parameter name="rate" transfer-ownership="none">
-            <type name="double" c:type="gdouble"/>
-          </parameter>
-          <parameter name="flush" transfer-ownership="none">
-            <type name="boolean" c:type="gboolean"/>
-          </parameter>
-          <parameter name="intermediate" transfer-ownership="none">
-            <type name="boolean" c:type="gboolean"/>
-          </parameter>
-        </parameters>
-      </constructor>
-      <constructor name="new_qos"
-                   c:identifier="gst_message_new_qos"
-                   doc="A QOS message is posted on the bus whenever an element decides to drop a
-buffer because of QoS reasons or whenever it changes its processing strategy
-because of QoS reasons (quality adjustments such as processing at lower
-accuracy).
-This message can be posted by an element that performs synchronisation against the
-clock (live) or it could be dropped by an element that performs QoS because of QOS
-events received from a downstream element (!live).
-respective running-time, stream-time, timestamp and duration of the (dropped)
-buffer that generated the QoS event. Values can be left to
-GST_CLOCK_TIME_NONE when unknown.
-MT safe."
-                   version="0.10.29">
-        <return-value transfer-ownership="full">
-          <type name="Message" c:type="GstMessage*"/>
-        </return-value>
-        <parameters>
-          <parameter name="src" transfer-ownership="none">
-            <type name="Object" c:type="GstObject*"/>
-          </parameter>
-          <parameter name="live" transfer-ownership="none">
-            <type name="boolean" c:type="gboolean"/>
-          </parameter>
-          <parameter name="running_time" transfer-ownership="none">
-            <type name="uint64" c:type="guint64"/>
-          </parameter>
-          <parameter name="stream_time" transfer-ownership="none">
-            <type name="uint64" c:type="guint64"/>
-          </parameter>
-          <parameter name="timestamp" transfer-ownership="none">
-            <type name="uint64" c:type="guint64"/>
-          </parameter>
-          <parameter name="duration" transfer-ownership="none">
-            <type name="uint64" c:type="guint64"/>
-          </parameter>
-        </parameters>
-      </constructor>
-      <constructor name="new_custom"
-                   c:identifier="gst_message_new_custom"
-                   doc="the structure.
-Create a new custom-typed message. This can be used for anything not
-handled by other message-specific functions to pass a message to the
-app. The structure field can be NULL.
-MT safe.">
-        <return-value transfer-ownership="full">
-          <type name="Message" c:type="GstMessage*"/>
-        </return-value>
-        <parameters>
-          <parameter name="type" transfer-ownership="none">
-            <type name="MessageType" c:type="GstMessageType"/>
-          </parameter>
-          <parameter name="src" transfer-ownership="none">
-            <type name="Object" c:type="GstObject*"/>
-          </parameter>
-          <parameter name="structure" transfer-ownership="none">
-            <type name="Structure" c:type="GstStructure*"/>
-          </parameter>
-        </parameters>
-      </constructor>
-      <method name="get_seqnum"
-              c:identifier="gst_message_get_seqnum"
-              doc="Retrieve the sequence number of a message.
-Messages have ever-incrementing sequence numbers, which may also be set
-explicitly via gst_message_set_seqnum(). Sequence numbers are typically used
-to indicate that a message corresponds to some other set of messages or
-events, for example a SEGMENT_DONE message corresponding to a SEEK event. It
-is considered good practice to make this correspondence when possible, though
-it is not required.
-Note that events and messages share the same sequence number incrementor;
-two events or messages will never not have the same sequence number unless
-that correspondence was made explicitly.
-MT safe."
-              version="0.10.22">
-        <return-value transfer-ownership="none">
-          <type name="uint32" c:type="guint32"/>
-        </return-value>
-      </method>
-      <method name="set_seqnum"
-              c:identifier="gst_message_set_seqnum"
-              doc="Set the sequence number of a message.
-This function might be called by the creator of a message to indicate that
-the message relates to other messages or events. See gst_message_get_seqnum()
-for more information.
-MT safe."
-              version="0.10.22">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="seqnum" transfer-ownership="none">
-            <type name="uint32" c:type="guint32"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="parse_error"
-              c:identifier="gst_message_parse_error"
-              doc="Extracts the GError and debug string from the GstMessage. The values returned
-in the output arguments are copies; the caller must free them when done.
-Typical usage of this function might be:
-|[
-...
-switch (GST_MESSAGE_TYPE (msg)) {
-GError *err = NULL;
-gchar *dbg_info = NULL;
-gst_message_parse_error (msg, &amp;amp;err, &amp;amp;dbg_info);
-GST_OBJECT_NAME (msg-&gt;src), err-&gt;message);
-g_error_free (err);
-g_free (dbg_info);
-break;
-}
-...
-}
-...
-]|
-MT safe.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="gerror" transfer-ownership="none">
-            <type name="GLib.Error" c:type="GError**"/>
-          </parameter>
-          <parameter name="debug" transfer-ownership="none">
-            <array c:type="gchar**">
-              <type name="utf8"/>
-            </array>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="parse_warning"
-              c:identifier="gst_message_parse_warning"
-              doc="Extracts the GError and debug string from the GstMessage. The values returned
-in the output arguments are copies; the caller must free them when done.
-MT safe.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="gerror" transfer-ownership="none">
-            <type name="GLib.Error" c:type="GError**"/>
-          </parameter>
-          <parameter name="debug" transfer-ownership="none">
-            <array c:type="gchar**">
-              <type name="utf8"/>
-            </array>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="parse_info"
-              c:identifier="gst_message_parse_info"
-              doc="Extracts the GError and debug string from the GstMessage. The values returned
-in the output arguments are copies; the caller must free them when done.
-MT safe."
-              version="0.10.12">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="gerror" transfer-ownership="none">
-            <type name="GLib.Error" c:type="GError**"/>
-          </parameter>
-          <parameter name="debug" transfer-ownership="none">
-            <array c:type="gchar**">
-              <type name="utf8"/>
-            </array>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="parse_tag"
-              c:identifier="gst_message_parse_tag"
-              doc="Extracts the tag list from the GstMessage. The tag list returned in the
-output argument is a copy; the caller must free it when done.
-Typical usage of this function might be:
-|[
-...
-switch (GST_MESSAGE_TYPE (msg)) {
-GstTagList *tags = NULL;
-gst_message_parse_tag (msg, &amp;amp;tags);
-g_print (&quot;Got tags from element %s\n&quot;, GST_OBJECT_NAME (msg-&gt;src));
-handle_tags (tags);
-gst_tag_list_free (tags);
-break;
-}
-...
-}
-...
-]|
-MT safe.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="tag_list" transfer-ownership="none">
-            <type name="TagList" c:type="GstTagList**"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="parse_tag_full"
-              c:identifier="gst_message_parse_tag_full"
-              doc="Extracts the tag list from the GstMessage. The tag list returned in the
-output argument is a copy; the caller must free it when done.
-MT safe."
-              version="0.10.24">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="pad" transfer-ownership="none">
-            <type name="Pad" c:type="GstPad**"/>
-          </parameter>
-          <parameter name="tag_list" transfer-ownership="none">
-            <type name="TagList" c:type="GstTagList**"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="parse_buffering"
-              c:identifier="gst_message_parse_buffering"
-              doc="Extracts the buffering percent from the GstMessage. see also
-gst_message_new_buffering().
-MT safe."
-              version="0.10.11">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="percent" direction="out" transfer-ownership="full">
-            <type name="int" c:type="gint*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="set_buffering_stats"
-              c:identifier="gst_message_set_buffering_stats"
-              doc="Configures the buffering stats values in @message."
-              version="0.10.20">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="mode" transfer-ownership="none">
-            <type name="BufferingMode" c:type="GstBufferingMode"/>
-          </parameter>
-          <parameter name="avg_in" transfer-ownership="none">
-            <type name="int" c:type="gint"/>
-          </parameter>
-          <parameter name="avg_out" transfer-ownership="none">
-            <type name="int" c:type="gint"/>
-          </parameter>
-          <parameter name="buffering_left" transfer-ownership="none">
-            <type name="int64" c:type="gint64"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="parse_buffering_stats"
-              c:identifier="gst_message_parse_buffering_stats"
-              doc="Extracts the buffering stats values from @message."
-              version="0.10.20">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="mode" transfer-ownership="none">
-            <type name="BufferingMode" c:type="GstBufferingMode*"/>
-          </parameter>
-          <parameter name="avg_in" direction="out" transfer-ownership="full">
-            <type name="int" c:type="gint*"/>
-          </parameter>
-          <parameter name="avg_out" direction="out" transfer-ownership="full">
-            <type name="int" c:type="gint*"/>
-          </parameter>
-          <parameter name="buffering_left"
-                     direction="out"
-                     transfer-ownership="full">
-            <type name="int64" c:type="gint64*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="parse_state_changed"
-              c:identifier="gst_message_parse_state_changed"
-              doc="Extracts the old and new states from the GstMessage.
-Typical usage of this function might be:
-|[
-...
-switch (GST_MESSAGE_TYPE (msg)) {
-GstState old_state, new_state;
-gst_message_parse_state_changed (msg, &amp;amp;old_state, &amp;amp;new_state, NULL);
-g_print (&quot;Element %s changed state from %s to %s.\n&quot;,
-GST_OBJECT_NAME (msg-&gt;src),
-gst_element_state_get_name (old_state),
-gst_element_state_get_name (new_state));
-break;
-}
-...
-}
-...
-]|
-MT safe.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="oldstate" transfer-ownership="none">
-            <type name="State" c:type="GstState*"/>
-          </parameter>
-          <parameter name="newstate"
-                     transfer-ownership="none"
-                     doc="state, or NULL">
-            <type name="State" c:type="GstState*"/>
-          </parameter>
-          <parameter name="pending"
-                     transfer-ownership="none"
-                     doc="state, or NULL">
-            <type name="State" c:type="GstState*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="parse_step_done"
-              c:identifier="gst_message_parse_step_done"
-              doc="Extract the values the step_done message.
-MT safe."
-              version="0.10.24">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="format" transfer-ownership="none">
-            <type name="Format" c:type="GstFormat*"/>
-          </parameter>
-          <parameter name="amount" direction="out" transfer-ownership="full">
-            <type name="uint64" c:type="guint64*"/>
-          </parameter>
-          <parameter name="rate" direction="out" transfer-ownership="full">
-            <type name="double" c:type="gdouble*"/>
-          </parameter>
-          <parameter name="flush" direction="out" transfer-ownership="full">
-            <type name="boolean" c:type="gboolean*"/>
-          </parameter>
-          <parameter name="intermediate"
-                     direction="out"
-                     transfer-ownership="full">
-            <type name="boolean" c:type="gboolean*"/>
-          </parameter>
-          <parameter name="duration" direction="out" transfer-ownership="full">
-            <type name="uint64" c:type="guint64*"/>
-          </parameter>
-          <parameter name="eos" direction="out" transfer-ownership="full">
-            <type name="boolean" c:type="gboolean*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="parse_clock_provide"
-              c:identifier="gst_message_parse_clock_provide"
-              doc="Extracts the clock and ready flag from the GstMessage.
-The clock object returned remains valid until the message is freed.
-MT safe.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="clock" transfer-ownership="none">
-            <type name="Clock" c:type="GstClock**"/>
-          </parameter>
-          <parameter name="ready" direction="out" transfer-ownership="full">
-            <type name="boolean" c:type="gboolean*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="parse_clock_lost"
-              c:identifier="gst_message_parse_clock_lost"
-              doc="Extracts the lost clock from the GstMessage.
-The clock object returned remains valid until the message is freed.
-MT safe.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="clock" transfer-ownership="none">
-            <type name="Clock" c:type="GstClock**"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="parse_new_clock"
-              c:identifier="gst_message_parse_new_clock"
-              doc="Extracts the new clock from the GstMessage.
-The clock object returned remains valid until the message is freed.
-MT safe.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="clock" transfer-ownership="none">
-            <type name="Clock" c:type="GstClock**"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="parse_segment_start"
-              c:identifier="gst_message_parse_segment_start"
-              doc="Extracts the position and format from the segment start message.
-MT safe.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="format" transfer-ownership="none">
-            <type name="Format" c:type="GstFormat*"/>
-          </parameter>
-          <parameter name="position" direction="out" transfer-ownership="full">
-            <type name="int64" c:type="gint64*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="parse_segment_done"
-              c:identifier="gst_message_parse_segment_done"
-              doc="Extracts the position and format from the segment start message.
-MT safe.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="format" transfer-ownership="none">
-            <type name="Format" c:type="GstFormat*"/>
-          </parameter>
-          <parameter name="position" direction="out" transfer-ownership="full">
-            <type name="int64" c:type="gint64*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="parse_duration"
-              c:identifier="gst_message_parse_duration"
-              doc="Extracts the duration and format from the duration message. The duration
-might be GST_CLOCK_TIME_NONE, which indicates that the duration has
-changed. Applications should always use a query to retrieve the duration
-of a pipeline.
-MT safe.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="format" transfer-ownership="none">
-            <type name="Format" c:type="GstFormat*"/>
-          </parameter>
-          <parameter name="duration" direction="out" transfer-ownership="full">
-            <type name="int64" c:type="gint64*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="parse_async_start"
-              c:identifier="gst_message_parse_async_start"
-              doc="Extract the new_base_time from the async_start message.
-MT safe."
-              version="0.10.13">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="new_base_time"
-                     direction="out"
-                     transfer-ownership="full">
-            <type name="boolean" c:type="gboolean*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="parse_structure_change"
-              c:identifier="gst_message_parse_structure_change"
-              doc="completed
-Extracts the change type and completion status from the GstMessage.
-MT safe."
-              version="0.10.22">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="type" transfer-ownership="none">
-            <type name="StructureChangeType" c:type="GstStructureChangeType*"/>
-          </parameter>
-          <parameter name="owner" transfer-ownership="none">
-            <type name="Element" c:type="GstElement**"/>
-          </parameter>
-          <parameter name="busy" direction="out" transfer-ownership="full">
-            <type name="boolean" c:type="gboolean*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="parse_stream_status"
-              c:identifier="gst_message_parse_stream_status"
-              doc="Extracts the stream status type and owner the GstMessage. The returned
-owner remains valid for as long as the reference to @message is valid and
-should thus not be unreffed.
-MT safe."
-              version="0.10.24.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="type" transfer-ownership="none">
-            <type name="StreamStatusType" c:type="GstStreamStatusType*"/>
-          </parameter>
-          <parameter name="owner" transfer-ownership="none">
-            <type name="Element" c:type="GstElement**"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="set_stream_status_object"
-              c:identifier="gst_message_set_stream_status_object"
-              doc="Configures the object handling the streaming thread. This is usually a
-GstTask object but other objects might be added in the future."
-              version="0.10.24">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="object" transfer-ownership="none">
-            <type name="GObject.Value" c:type="GValue*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_stream_status_object"
-              c:identifier="gst_message_get_stream_status_object"
-              doc="Extracts the object managing the streaming thread from @message.
-This object is usually of type GstTask but other types can be added in the
-future. The object remains valid as long as @message is valid."
-              version="0.10.24">
-        <return-value transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </return-value>
-      </method>
-      <method name="parse_request_state"
-              c:identifier="gst_message_parse_request_state"
-              doc="Extract the requested state from the request_state message.
-MT safe."
-              version="0.10.23">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="state" transfer-ownership="none">
-            <type name="State" c:type="GstState*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="parse_step_start"
-              c:identifier="gst_message_parse_step_start"
-              doc="Extract the values from step_start message.
-MT safe."
-              version="0.10.24">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="active" direction="out" transfer-ownership="full">
-            <type name="boolean" c:type="gboolean*"/>
-          </parameter>
-          <parameter name="format" transfer-ownership="none">
-            <type name="Format" c:type="GstFormat*"/>
-          </parameter>
-          <parameter name="amount" direction="out" transfer-ownership="full">
-            <type name="uint64" c:type="guint64*"/>
-          </parameter>
-          <parameter name="rate" direction="out" transfer-ownership="full">
-            <type name="double" c:type="gdouble*"/>
-          </parameter>
-          <parameter name="flush" direction="out" transfer-ownership="full">
-            <type name="boolean" c:type="gboolean*"/>
-          </parameter>
-          <parameter name="intermediate"
-                     direction="out"
-                     transfer-ownership="full">
-            <type name="boolean" c:type="gboolean*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="set_qos_values"
-              c:identifier="gst_message_set_qos_values"
-              doc="to get optimal quality.
-quality level of the element. The default maximum quality is 1000000.
-Set the QoS values that have been calculated/analysed from the QoS data
-MT safe."
-              version="0.10.29">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="jitter" transfer-ownership="none">
-            <type name="int64" c:type="gint64"/>
-          </parameter>
-          <parameter name="proportion" transfer-ownership="none">
-            <type name="double" c:type="gdouble"/>
-          </parameter>
-          <parameter name="quality" transfer-ownership="none">
-            <type name="int" c:type="gint"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="set_qos_stats"
-              c:identifier="gst_message_set_qos_stats"
-              doc="filters will use GST_FORMAT_BUFFERS (frames). Audio sinks and audio filters
-will likely use GST_FORMAT_DEFAULT (samples).
-change to READY or a flushing operation.
-or a flushing operation.
-Set the QoS stats representing the history of the current continuous pipeline
-playback period.
-When @format is @GST_FORMAT_UNDEFINED both @dropped and @processed are
-invalid. Values of -1 for either @processed or @dropped mean unknown values.
-MT safe."
-              version="0.10.29">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="format" transfer-ownership="none">
-            <type name="Format" c:type="GstFormat"/>
-          </parameter>
-          <parameter name="processed" transfer-ownership="none">
-            <type name="uint64" c:type="guint64"/>
-          </parameter>
-          <parameter name="dropped" transfer-ownership="none">
-            <type name="uint64" c:type="guint64"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="parse_qos"
-              c:identifier="gst_message_parse_qos"
-              doc="Extract the timestamps and live status from the QoS message.
-The returned values give the running_time, stream_time, timestamp and
-duration of the dropped buffer. Values of GST_CLOCK_TIME_NONE mean unknown
-values.
-MT safe."
-              version="0.10.29">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="live" direction="out" transfer-ownership="full">
-            <type name="boolean" c:type="gboolean*"/>
-          </parameter>
-          <parameter name="running_time"
-                     direction="out"
-                     transfer-ownership="full">
-            <type name="uint64" c:type="guint64*"/>
-          </parameter>
-          <parameter name="stream_time"
-                     direction="out"
-                     transfer-ownership="full">
-            <type name="uint64" c:type="guint64*"/>
-          </parameter>
-          <parameter name="timestamp"
-                     direction="out"
-                     transfer-ownership="full">
-            <type name="uint64" c:type="guint64*"/>
-          </parameter>
-          <parameter name="duration" direction="out" transfer-ownership="full">
-            <type name="uint64" c:type="guint64*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="parse_qos_values"
-              c:identifier="gst_message_parse_qos_values"
-              doc="to get optimal quality.
-quality level of the element. The default maximum quality is 1000000.
-Extract the QoS values that have been calculated/analysed from the QoS data
-MT safe."
-              version="0.10.29">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="jitter" direction="out" transfer-ownership="full">
-            <type name="int64" c:type="gint64*"/>
-          </parameter>
-          <parameter name="proportion"
-                     direction="out"
-                     transfer-ownership="full">
-            <type name="double" c:type="gdouble*"/>
-          </parameter>
-          <parameter name="quality" direction="out" transfer-ownership="full">
-            <type name="int" c:type="gint*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="parse_qos_stats"
-              c:identifier="gst_message_parse_qos_stats"
-              doc="filters will use GST_FORMAT_BUFFERS (frames). Audio sinks and audio filters
-will likely use GST_FORMAT_DEFAULT (samples).
-change to READY or a flushing operation.
-or a flushing operation.
-Extract the QoS stats representing the history of the current continuous
-pipeline playback period.
-When @format is @GST_FORMAT_UNDEFINED both @dropped and @processed are
-invalid. Values of -1 for either @processed or @dropped mean unknown values.
-MT safe."
-              version="0.10.29">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="format" transfer-ownership="none">
-            <type name="Format" c:type="GstFormat*"/>
-          </parameter>
-          <parameter name="processed"
-                     direction="out"
-                     transfer-ownership="full">
-            <type name="uint64" c:type="guint64*"/>
-          </parameter>
-          <parameter name="dropped" direction="out" transfer-ownership="full">
-            <type name="uint64" c:type="guint64*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_structure"
-              c:identifier="gst_message_get_structure"
-              doc="Access the structure of the message.
-owned by the message, which means that you should not free it and
-that the pointer becomes invalid when you free the message.
-MT safe.">
-        <return-value transfer-ownership="none">
-          <type name="Structure" c:type="GstStructure*"/>
-        </return-value>
-      </method>
-    </record>
-    <record name="MessageClass" c:type="GstMessageClass">
-      <field name="mini_object_class" writable="1">
-        <type name="MiniObjectClass" c:type="GstMiniObjectClass"/>
-      </field>
-      <field name="_gst_reserved" writable="1">
-        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
-          <type name="any"/>
-        </array>
-      </field>
-    </record>
-    <bitfield name="MessageType"
-              doc="only receive this message in the PLAYING state and every time it sets a
-pipeline to PLAYING that is in the EOS state. The application can perform a
-flushing seek in the pipeline, which will undo the EOS state again.
-message it should stop playback of the pipeline and not assume that more
-data will be played.
-receives a buffering message in the PLAYING state for a non-live pipeline it
-must PAUSE the pipeline until the buffering completes, when the percentage
-field in the message is 100%. For live pipelines, no action must be
-performed and the buffering percentage can be used to inform the user about
-the progress.
-This message is deprecated.
-a clock. This message is used internally and
-never forwarded to the application.
-unusable. The pipeline will select a new clock on
-the next PLAYING state change. The application
-should set the pipeline to PAUSED and back to
-PLAYING when this message is received.
-message is used internally and never forwarded to the application.
-stops, errors, etc..
-via an application-specific element.
-documentation
-message is used internally and never forwarded to the application.
-message is forwarded to the application after all elements that posted
-can get the new duration with a duration query.
-change. This message is not forwarded to the application but is used
-change. The application will only receive this message from the toplevel
-change state. This message is a suggestion to the application which can
-The different message types that are available."
-              c:type="GstMessageType">
-      <member name="unknown" value="0" c:identifier="GST_MESSAGE_UNKNOWN"/>
-      <member name="eos" value="1" c:identifier="GST_MESSAGE_EOS"/>
-      <member name="error" value="2" c:identifier="GST_MESSAGE_ERROR"/>
-      <member name="warning" value="4" c:identifier="GST_MESSAGE_WARNING"/>
-      <member name="info" value="8" c:identifier="GST_MESSAGE_INFO"/>
-      <member name="tag" value="16" c:identifier="GST_MESSAGE_TAG"/>
-      <member name="buffering"
-              value="32"
-              c:identifier="GST_MESSAGE_BUFFERING"/>
-      <member name="state_changed"
-              value="64"
-              c:identifier="GST_MESSAGE_STATE_CHANGED"/>
-      <member name="state_dirty"
-              value="128"
-              c:identifier="GST_MESSAGE_STATE_DIRTY"/>
-      <member name="step_done"
-              value="256"
-              c:identifier="GST_MESSAGE_STEP_DONE"/>
-      <member name="clock_provide"
-              value="512"
-              c:identifier="GST_MESSAGE_CLOCK_PROVIDE"/>
-      <member name="clock_lost"
-              value="1024"
-              c:identifier="GST_MESSAGE_CLOCK_LOST"/>
-      <member name="new_clock"
-              value="2048"
-              c:identifier="GST_MESSAGE_NEW_CLOCK"/>
-      <member name="structure_change"
-              value="4096"
-              c:identifier="GST_MESSAGE_STRUCTURE_CHANGE"/>
-      <member name="stream_status"
-              value="8192"
-              c:identifier="GST_MESSAGE_STREAM_STATUS"/>
-      <member name="application"
-              value="16384"
-              c:identifier="GST_MESSAGE_APPLICATION"/>
-      <member name="element" value="32768" c:identifier="GST_MESSAGE_ELEMENT"/>
-      <member name="segment_start"
-              value="65536"
-              c:identifier="GST_MESSAGE_SEGMENT_START"/>
-      <member name="segment_done"
-              value="131072"
-              c:identifier="GST_MESSAGE_SEGMENT_DONE"/>
-      <member name="duration"
-              value="262144"
-              c:identifier="GST_MESSAGE_DURATION"/>
-      <member name="latency"
-              value="524288"
-              c:identifier="GST_MESSAGE_LATENCY"/>
-      <member name="async_start"
-              value="1048576"
-              c:identifier="GST_MESSAGE_ASYNC_START"/>
-      <member name="async_done"
-              value="2097152"
-              c:identifier="GST_MESSAGE_ASYNC_DONE"/>
-      <member name="request_state"
-              value="4194304"
-              c:identifier="GST_MESSAGE_REQUEST_STATE"/>
-      <member name="step_start"
-              value="8388608"
-              c:identifier="GST_MESSAGE_STEP_START"/>
-      <member name="qos" value="16777216" c:identifier="GST_MESSAGE_QOS"/>
-      <member name="any" value="-1" c:identifier="GST_MESSAGE_ANY"/>
-    </bitfield>
-    <record name="MiniObject"
-            c:type="GstMiniObject"
-            doc="Base class for refcounted lightweight objects.">
-      <field name="instance" writable="1">
-        <type name="GObject.TypeInstance" c:type="GTypeInstance"/>
-      </field>
-      <field name="refcount" writable="1">
-        <type name="int" c:type="gint"/>
-      </field>
-      <field name="flags" writable="1">
-        <type name="uint" c:type="guint"/>
-      </field>
-      <field name="_gst_reserved" writable="1">
-        <type name="any" c:type="gpointer"/>
-      </field>
-      <constructor name="new"
-                   c:identifier="gst_mini_object_new"
-                   doc="Creates a new mini-object of the desired type.
-MT safe">
-        <return-value transfer-ownership="full">
-          <type name="MiniObject" c:type="GstMiniObject*"/>
-        </return-value>
-        <parameters>
-          <parameter name="type" transfer-ownership="none">
-            <type name="GType" c:type="GType"/>
-          </parameter>
-        </parameters>
-      </constructor>
-      <method name="copy"
-              c:identifier="gst_mini_object_copy"
-              doc="Creates a copy of the mini-object.
-MT safe">
-        <return-value transfer-ownership="full">
-          <type name="MiniObject" c:type="GstMiniObject*"/>
-        </return-value>
-      </method>
-      <method name="is_writable"
-              c:identifier="gst_mini_object_is_writable"
-              doc="Checks if a mini-object is writable.  A mini-object is writable
-if the reference count is one and the #GST_MINI_OBJECT_FLAG_READONLY
-flag is not set.  Modification of a mini-object should only be
-done after verifying that it is writable.
-MT safe">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-      </method>
-      <method name="make_writable"
-              c:identifier="gst_mini_object_make_writable"
-              doc="Checks if a mini-object is writable.  If not, a writable copy is made and
-returned.  This gives away the reference to the original mini object,
-and returns a reference to the new object.
-MT safe">
-        <return-value transfer-ownership="full" doc="that is writable.">
-          <type name="MiniObject" c:type="GstMiniObject*"/>
-        </return-value>
-      </method>
-      <method name="ref"
-              c:identifier="gst_mini_object_ref"
-              doc="Increase the reference count of the mini-object.
-Note that the refcount affects the writeability
-of @mini-object, see gst_mini_object_is_writable(). It is
-important to note that keeping additional references to
-GstMiniObject instances can potentially increase the number
-of memcpy operations in a pipeline, especially if the miniobject
-is a #GstBuffer.">
-        <return-value transfer-ownership="full">
-          <type name="MiniObject" c:type="GstMiniObject*"/>
-        </return-value>
-      </method>
-      <method name="unref"
-              c:identifier="gst_mini_object_unref"
-              doc="Decreases the reference count of the mini-object, possibly freeing
-the mini-object.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-      </method>
-      <method name="replace"
-              c:identifier="gst_mini_object_replace"
-              doc="Modifies a pointer to point to a new mini-object.  The modification
-is done atomically, and the reference counts are updated correctly.
-Either @newdata and the value pointed to by @olddata may be NULL.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="newdata" transfer-ownership="none">
-            <type name="MiniObject" c:type="GstMiniObject*"/>
-          </parameter>
-        </parameters>
-      </method>
-    </record>
-    <record name="MiniObjectClass" c:type="GstMiniObjectClass">
-      <field name="type_class" writable="1">
-        <type name="GObject.TypeClass" c:type="GTypeClass"/>
-      </field>
-      <field name="copy" writable="1">
-        <type name="MiniObjectCopyFunction"
-              c:type="GstMiniObjectCopyFunction"/>
-      </field>
-      <field name="finalize" writable="1">
-        <type name="MiniObjectFinalizeFunction"
-              c:type="GstMiniObjectFinalizeFunction"/>
-      </field>
-      <field name="_gst_reserved" writable="1">
-        <type name="any" c:type="gpointer"/>
-      </field>
-    </record>
-    <callback name="MiniObjectCopyFunction"
-              c:type="GstMiniObjectCopyFunction"
-              doc="Virtual function prototype for methods to create copies of instances.">
-      <return-value transfer-ownership="full">
-        <type name="MiniObject" c:type="GstMiniObject*"/>
-      </return-value>
-      <parameters>
-        <parameter name="obj" transfer-ownership="none">
-          <type name="MiniObject" c:type="GstMiniObject*"/>
-        </parameter>
-      </parameters>
-    </callback>
-    <callback name="MiniObjectFinalizeFunction"
-              c:type="GstMiniObjectFinalizeFunction"
-              doc="Virtual function prototype for methods to free ressources used by
-mini-objects. Subclasses of the mini object are allowed to revive the
-passed object by doing a gst_mini_object_ref(). If the object is not
-revived after the finalize function, the memory associated with the
-object is freed.">
-      <return-value transfer-ownership="none">
-        <type name="none" c:type="void"/>
-      </return-value>
-      <parameters>
-        <parameter name="obj" transfer-ownership="none">
-          <type name="MiniObject" c:type="GstMiniObject*"/>
-        </parameter>
-      </parameters>
-    </callback>
-    <bitfield name="MiniObjectFlags"
-              doc="Flags for the padtemplate"
-              c:type="GstMiniObjectFlags">
-      <member name="readonly"
-              value="1"
-              c:identifier="GST_MINI_OBJECT_FLAG_READONLY"/>
-      <member name="last" value="16" c:identifier="GST_MINI_OBJECT_FLAG_LAST"/>
-    </bitfield>
-    <constant name="NSECOND" value="0">
-      <type name="int"/>
-    </constant>
-    <class name="Object"
-           c:type="GstObject"
-           doc="GStreamer base object class."
-           parent="GObject.Object"
-           abstract="1"
-           glib:type-name="GstObject"
-           glib:get-type="gst_object_get_type"
-           glib:type-struct="ObjectClass">
-      <function name="default_deep_notify"
-                c:identifier="gst_object_default_deep_notify"
-                doc="NULL to show all changes.
-A default deep_notify signal callback for an object. The user data
-should contain a pointer to an array of strings that should be excluded
-from the notify. The default handler will print the new value of the property
-using g_print.
-MT safe. This function grabs and releases @object&apos;s LOCK for getting its
-path string.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="object" transfer-ownership="none">
-            <type name="GObject.Object" c:type="GObject*"/>
-          </parameter>
-          <parameter name="orig" transfer-ownership="none">
-            <type name="Object" c:type="GstObject*"/>
-          </parameter>
-          <parameter name="pspec" transfer-ownership="none">
-            <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
-          </parameter>
-          <parameter name="excluded_props" transfer-ownership="none">
-            <array c:type="gchar**">
-              <type name="utf8"/>
-            </array>
-          </parameter>
-        </parameters>
-      </function>
-      <function name="ref"
-                c:identifier="gst_object_ref"
-                doc="Increments the reference count on @object. This function
-does not take the lock on @object because it relies on
-atomic refcounting.
-This object returns the input parameter to ease writing
-constructs like :
-result = gst_object_ref (object-&gt;parent);">
-        <return-value transfer-ownership="none">
-          <type name="any" c:type="gpointer"/>
-        </return-value>
-        <parameters>
-          <parameter name="object" transfer-ownership="none">
-            <type name="any" c:type="gpointer"/>
-          </parameter>
-        </parameters>
-      </function>
-      <function name="unref"
-                c:identifier="gst_object_unref"
-                doc="Decrements the reference count on @object.  If reference count hits
-zero, destroy @object. This function does not take the lock
-on @object as it relies on atomic refcounting.
-The unref method should never be called with the LOCK held since
-this might deadlock the dispose function.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="object" transfer-ownership="none">
-            <type name="any" c:type="gpointer"/>
-          </parameter>
-        </parameters>
-      </function>
-      <function name="ref_sink"
-                c:identifier="gst_object_ref_sink"
-                doc="Increase the reference count of @object, and possibly remove the floating
-reference, if @object has a floating reference.
-In other words, if the object is floating, then this call &quot;assumes ownership&quot;
-of the floating reference, converting it to a normal reference by clearing
-the floating flag while leaving the reference count unchanged. If the object
-is not floating, then this call adds a new normal reference increasing the
-reference count by one.
-MT safe. This function grabs and releases @object lock."
-                version="0.10.24">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="object" transfer-ownership="none">
-            <type name="any" c:type="gpointer"/>
-          </parameter>
-        </parameters>
-      </function>
-      <function name="sink"
-                c:identifier="gst_object_sink"
-                doc="If @object was floating, the #GST_OBJECT_FLOATING flag is removed
-and @object is unreffed. When @object was not floating,
-this function does nothing.
-Any newly created object has a refcount of 1 and is floating.
-This function should be used when creating a new object to
-symbolically &apos;take ownership&apos; of @object. This done by first doing a
-gst_object_ref() to keep a reference to @object and then gst_object_sink()
-to remove and unref any floating references to @object.
-Use gst_object_set_parent() to have this done for you.
-MT safe. This function grabs and releases @object lock.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="object" transfer-ownership="none">
-            <type name="any" c:type="gpointer"/>
-          </parameter>
-        </parameters>
-      </function>
-      <function name="check_uniqueness"
-                c:identifier="gst_object_check_uniqueness"
-                doc="Checks to see if there is any object named @name in @list. This function
-does not do any locking of any kind. You might want to protect the
-provided list with the lock of the owner of the list. This function
-will lock each #GstObject in the list to compare the name, so be
-carefull when passing a list with a locked object.
-FALSE if it does.
-MT safe. Grabs and releases the LOCK of each object in the list.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="list" transfer-ownership="none">
-            <type name="GLib.List" c:type="GList*"/>
-          </parameter>
-          <parameter name="name" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-        </parameters>
-      </function>
-      <virtual-method name="save_thyself" invoker="save_thyself">
-        <return-value transfer-ownership="full">
-          <type name="libxml2.NodePtr" c:type="xmlNodePtr"/>
-        </return-value>
-        <parameters>
-          <parameter name="parent" transfer-ownership="none">
-            <type name="libxml2.NodePtr" c:type="xmlNodePtr"/>
-          </parameter>
-        </parameters>
-      </virtual-method>
-      <virtual-method name="restore_thyself" invoker="restore_thyself">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="self" transfer-ownership="none">
-            <type name="libxml2.NodePtr" c:type="xmlNodePtr"/>
-          </parameter>
-        </parameters>
-      </virtual-method>
-      <method name="set_name"
-              c:identifier="gst_object_set_name"
-              doc="Sets the name of @object, or gives @object a guaranteed unique
-name (if @name is NULL).
-This function makes a copy of the provided name, so the caller
-retains ownership of the name it sent.
-a parent cannot be renamed, this function returns FALSE in those
-cases.
-MT safe.  This function grabs and releases @object&apos;s LOCK.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="name" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_name"
-              c:identifier="gst_object_get_name"
-              doc="Returns a copy of the name of @object.
-Caller should g_free() the return value after usage.
-For a nameless object, this returns NULL, which you can safely g_free()
-as well.
-MT safe. This function grabs and releases @object&apos;s LOCK.">
-        <return-value transfer-ownership="full" doc="after usage.">
-          <type name="utf8" c:type="gchar*"/>
-        </return-value>
-      </method>
-      <method name="set_name_prefix"
-              c:identifier="gst_object_set_name_prefix"
-              doc="Sets the name prefix of @object to @name_prefix.
-This function makes a copy of the provided name prefix, so the caller
-retains ownership of the name prefix it sent.
-MT safe.  This function grabs and releases @object&apos;s LOCK.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="name_prefix" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_name_prefix"
-              c:identifier="gst_object_get_name_prefix"
-              doc="Returns a copy of the name prefix of @object.
-Caller should g_free() the return value after usage.
-For a prefixless object, this returns NULL, which you can safely g_free()
-as well.
-MT safe. This function grabs and releases @object&apos;s LOCK.">
-        <return-value transfer-ownership="full" doc="after usage.">
-          <type name="utf8" c:type="gchar*"/>
-        </return-value>
-      </method>
-      <method name="set_parent"
-              c:identifier="gst_object_set_parent"
-              doc="Sets the parent of @object to @parent. The object&apos;s reference count will
-be incremented, and any floating reference will be removed (see gst_object_sink()).
-This function causes the parent-set signal to be emitted when the parent
-was successfully set.
-already had a parent or @object and @parent are the same.
-MT safe. Grabs and releases @object&apos;s LOCK.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="parent" transfer-ownership="none">
-            <type name="Object" c:type="GstObject*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_parent"
-              c:identifier="gst_object_get_parent"
-              doc="Returns the parent of @object. This function increases the refcount
-of the parent object so you should gst_object_unref() it after usage.
-parent. unref after usage.
-MT safe. Grabs and releases @object&apos;s LOCK.">
-        <return-value transfer-ownership="full">
-          <type name="Object" c:type="GstObject*"/>
-        </return-value>
-      </method>
-      <method name="unparent"
-              c:identifier="gst_object_unparent"
-              doc="Clear the parent of @object, removing the associated reference.
-This function decreases the refcount of @object.
-MT safe. Grabs and releases @object&apos;s lock.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-      </method>
-      <method name="has_ancestor"
-              c:identifier="gst_object_has_ancestor"
-              doc="Check if @object has an ancestor @ancestor somewhere up in
-the hierarchy.
-MT safe. Grabs and releases @object&apos;s locks.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="ancestor" transfer-ownership="none">
-            <type name="Object" c:type="GstObject*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="replace"
-              c:identifier="gst_object_replace"
-              doc="Unrefs the #GstObject pointed to by @oldobj, refs @newobj and
-puts @newobj in *@oldobj. Be carefull when calling this
-function, it does not take any locks. You might want to lock
-the object owning @oldobj pointer before calling this
-function.
-Make sure not to LOCK @oldobj because it might be unreffed
-which could cause a deadlock when it is disposed.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="newobj" transfer-ownership="none">
-            <type name="Object" c:type="GstObject*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_path_string"
-              c:identifier="gst_object_get_path_string"
-              doc="Generates a string describing the path of @object in
-the object hierarchy. Only useful (or used) for debugging.
-g_free() the string after usage.
-MT safe. Grabs and releases the #GstObject&apos;s LOCK for all objects
-in the hierarchy.">
-        <return-value transfer-ownership="full">
-          <type name="utf8" c:type="gchar*"/>
-        </return-value>
-      </method>
-      <method name="save_thyself"
-              c:identifier="gst_object_save_thyself"
-              doc="Saves @object into the parent XML node.">
-        <return-value transfer-ownership="full">
-          <type name="libxml2.NodePtr" c:type="xmlNodePtr"/>
-        </return-value>
-        <parameters>
-          <parameter name="parent" transfer-ownership="none">
-            <type name="libxml2.NodePtr" c:type="xmlNodePtr"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="restore_thyself"
-              c:identifier="gst_object_restore_thyself"
-              doc="Restores @object with the data from the parent XML node.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="self" transfer-ownership="none">
-            <type name="libxml2.NodePtr" c:type="xmlNodePtr"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="default_error"
-              c:identifier="gst_object_default_error"
-              doc="A default error function.
-The default handler will simply print the error string using g_print.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="error" transfer-ownership="none">
-            <type name="GLib.Error" c:type="GError*"/>
-          </parameter>
-          <parameter name="debug" transfer-ownership="full">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <property name="name" writable="1" construct="1">
-        <type name="utf8" c:type="gchararray"/>
-      </property>
-      <field name="object">
-        <type name="GObject.Object" c:type="GObject"/>
-      </field>
-      <field name="refcount">
-        <type name="int" c:type="gint"/>
-      </field>
-      <field name="lock">
-        <type name="GLib.Mutex" c:type="GMutex*"/>
-      </field>
-      <field name="name">
-        <type name="utf8" c:type="gchar*"/>
-      </field>
-      <field name="name_prefix">
-        <type name="utf8" c:type="gchar*"/>
-      </field>
-      <field name="parent">
-        <type name="Object" c:type="GstObject*"/>
-      </field>
-      <field name="flags">
-        <type name="uint32" c:type="guint32"/>
-      </field>
-      <field name="_gst_reserved">
-        <type name="any" c:type="gpointer"/>
-      </field>
-      <glib:signal name="deep-notify"
-                   doc="The deep notify signal is used to be notified of property changes. It is
-typically attached to the toplevel bin to receive notifications from all
-the elements contained in that bin.">
-        <return-value transfer-ownership="full">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="prop_object" transfer-ownership="none">
-            <type name="Object" c:type="GstObject"/>
-          </parameter>
-          <parameter name="prop" transfer-ownership="none">
-            <type name="GObject.ParamSpec" c:type="GParam"/>
-          </parameter>
-        </parameters>
-      </glib:signal>
-      <glib:signal name="object-saved"
-                   doc="Trigered whenever a new object is saved to XML. You can connect to this
-signal to insert custom XML tags into the core XML.">
-        <return-value transfer-ownership="full">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="xml_node" transfer-ownership="none">
-            <type name="any" c:type="gpointer"/>
-          </parameter>
-        </parameters>
-      </glib:signal>
-      <glib:signal name="parent-set"
-                   doc="Emitted when the parent of an object is set.">
-        <return-value transfer-ownership="full">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="parent" transfer-ownership="none">
-            <type name="Object" c:type="GstObject"/>
-          </parameter>
-        </parameters>
-      </glib:signal>
-      <glib:signal name="parent-unset"
-                   doc="Emitted when the parent of an object is unset.">
-        <return-value transfer-ownership="full">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="parent" transfer-ownership="none">
-            <type name="Object" c:type="GstObject"/>
-          </parameter>
-        </parameters>
-      </glib:signal>
-    </class>
-    <record name="ObjectClass"
-            c:type="GstObjectClass"
-            glib:is-gtype-struct-for="Object"
-            doc="GStreamer base object class.">
-      <field name="parent_class">
-        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
-      </field>
-      <field name="path_string_separator">
-        <type name="utf8" c:type="gchar*"/>
-      </field>
-      <field name="signal_object">
-        <type name="GObject.Object" c:type="GObject*"/>
-      </field>
-      <field name="lock">
-        <type name="GLib.StaticRecMutex" c:type="GStaticRecMutex*"/>
-      </field>
-      <field name="parent_set">
-        <callback name="parent_set" c:type="parent_set">
-          <return-value transfer-ownership="none">
-            <type name="none" c:type="void"/>
-          </return-value>
-          <parameters>
-            <parameter name="object" transfer-ownership="none">
-              <type name="Object" c:type="GstObject*"/>
-            </parameter>
-            <parameter name="parent" transfer-ownership="none">
-              <type name="Object" c:type="GstObject*"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="parent_unset">
-        <callback name="parent_unset" c:type="parent_unset">
-          <return-value transfer-ownership="none">
-            <type name="none" c:type="void"/>
-          </return-value>
-          <parameters>
-            <parameter name="object" transfer-ownership="none">
-              <type name="Object" c:type="GstObject*"/>
-            </parameter>
-            <parameter name="parent" transfer-ownership="none">
-              <type name="Object" c:type="GstObject*"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="object_saved">
-        <callback name="object_saved" c:type="object_saved">
-          <return-value transfer-ownership="none">
-            <type name="none" c:type="void"/>
-          </return-value>
-          <parameters>
-            <parameter name="object" transfer-ownership="none">
-              <type name="Object" c:type="GstObject*"/>
-            </parameter>
-            <parameter name="parent" transfer-ownership="none">
-              <type name="libxml2.NodePtr" c:type="xmlNodePtr"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="deep_notify">
-        <callback name="deep_notify" c:type="deep_notify">
-          <return-value transfer-ownership="none">
-            <type name="none" c:type="void"/>
-          </return-value>
-          <parameters>
-            <parameter name="object" transfer-ownership="none">
-              <type name="Object" c:type="GstObject*"/>
-            </parameter>
-            <parameter name="orig" transfer-ownership="none">
-              <type name="Object" c:type="GstObject*"/>
-            </parameter>
-            <parameter name="pspec" transfer-ownership="none">
-              <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="save_thyself">
-        <callback name="save_thyself" c:type="save_thyself">
-          <return-value transfer-ownership="full">
-            <type name="libxml2.NodePtr" c:type="xmlNodePtr"/>
-          </return-value>
-          <parameters>
-            <parameter name="object" transfer-ownership="none">
-              <type name="Object" c:type="GstObject*"/>
-            </parameter>
-            <parameter name="parent" transfer-ownership="none">
-              <type name="libxml2.NodePtr" c:type="xmlNodePtr"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="restore_thyself">
-        <callback name="restore_thyself" c:type="restore_thyself">
-          <return-value transfer-ownership="none">
-            <type name="none" c:type="void"/>
-          </return-value>
-          <parameters>
-            <parameter name="object" transfer-ownership="none">
-              <type name="Object" c:type="GstObject*"/>
-            </parameter>
-            <parameter name="self" transfer-ownership="none">
-              <type name="libxml2.NodePtr" c:type="xmlNodePtr"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="_gst_reserved">
-        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
-          <type name="any"/>
-        </array>
-      </field>
-    </record>
-    <bitfield name="ObjectFlags"
-              doc="not assigned to a bin)
-The standard flags that an gstobject may have."
-              c:type="GstObjectFlags">
-      <member name="disposing" value="1" c:identifier="GST_OBJECT_DISPOSING"/>
-      <member name="floating" value="2" c:identifier="GST_OBJECT_FLOATING"/>
-      <member name="flag_last" value="16" c:identifier="GST_OBJECT_FLAG_LAST"/>
-    </bitfield>
-    <constant name="PARAM_CONTROLLABLE" value="2">
-      <type name="int"/>
-    </constant>
-    <constant name="PARAM_MUTABLE_PAUSED" value="8">
-      <type name="int"/>
-    </constant>
-    <constant name="PARAM_MUTABLE_PLAYING" value="16">
-      <type name="int"/>
-    </constant>
-    <constant name="PARAM_MUTABLE_READY" value="4">
-      <type name="int"/>
-    </constant>
-    <constant name="PARAM_USER_SHIFT" value="256">
-      <type name="int"/>
-    </constant>
-    <class name="Pad"
-           c:type="GstPad"
-           doc="the pad.
-the data used in streaming.
-The #GstPad structure. Use the functions to update the variables."
-           parent="Object"
-           glib:type-name="GstPad"
-           glib:get-type="gst_pad_get_type"
-           glib:type-struct="PadClass">
-      <constructor name="new"
-                   c:identifier="gst_pad_new"
-                   doc="Creates a new pad with the given name in the given direction.
-If name is NULL, a guaranteed unique name (across all pads)
-will be assigned.
-This function makes a copy of the name so you can safely free the name.
-MT safe.">
-        <return-value transfer-ownership="full">
-          <type name="Pad" c:type="GstPad*"/>
-        </return-value>
-        <parameters>
-          <parameter name="name" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="direction" transfer-ownership="none">
-            <type name="PadDirection" c:type="GstPadDirection"/>
-          </parameter>
-        </parameters>
-      </constructor>
-      <constructor name="new_from_template"
-                   c:identifier="gst_pad_new_from_template"
-                   doc="Creates a new pad with the given name from the given template.
-If name is NULL, a guaranteed unique name (across all pads)
-will be assigned.
-This function makes a copy of the name so you can safely free the name.">
-        <return-value transfer-ownership="full">
-          <type name="Pad" c:type="GstPad*"/>
-        </return-value>
-        <parameters>
-          <parameter name="templ" transfer-ownership="none">
-            <type name="PadTemplate" c:type="GstPadTemplate*"/>
-          </parameter>
-          <parameter name="name" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-        </parameters>
-      </constructor>
-      <constructor name="new_from_static_template"
-                   c:identifier="gst_pad_new_from_static_template"
-                   doc="Creates a new pad with the given name from the given static template.
-If name is NULL, a guaranteed unique name (across all pads)
-will be assigned.
-This function makes a copy of the name so you can safely free the name.">
-        <return-value transfer-ownership="full">
-          <type name="Pad" c:type="GstPad*"/>
-        </return-value>
-        <parameters>
-          <parameter name="templ" transfer-ownership="none">
-            <type name="StaticPadTemplate" c:type="GstStaticPadTemplate*"/>
-          </parameter>
-          <parameter name="name" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-        </parameters>
-      </constructor>
-      <function name="load_and_link"
-                c:identifier="gst_pad_load_and_link"
-                doc="Reads the pad definition from the XML node and links the given pad
-in the element to a pad of an element up in the hierarchy.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="self" transfer-ownership="none">
-            <type name="libxml2.NodePtr" c:type="xmlNodePtr"/>
-          </parameter>
-          <parameter name="parent" transfer-ownership="none">
-            <type name="Object" c:type="GstObject*"/>
-          </parameter>
-        </parameters>
-      </function>
-      <method name="get_direction"
-              c:identifier="gst_pad_get_direction"
-              doc="Gets the direction of the pad. The direction of the pad is
-decided at construction time so this function does not take
-the LOCK.
-MT safe.">
-        <return-value transfer-ownership="full">
-          <type name="PadDirection" c:type="GstPadDirection"/>
-        </return-value>
-      </method>
-      <method name="set_active"
-              c:identifier="gst_pad_set_active"
-              doc="Activates or deactivates the given pad.
-Normally called from within core state change functions.
-If @active, makes sure the pad is active. If it is already active, either in
-push or pull mode, just return. Otherwise dispatches to the pad&apos;s activate
-function to perform the actual activation.
-If not @active, checks the pad&apos;s current mode and calls
-gst_pad_activate_push() or gst_pad_activate_pull(), as appropriate, with a
-FALSE argument.
-MT safe.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="active" transfer-ownership="none">
-            <type name="boolean" c:type="gboolean"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="is_active"
-              c:identifier="gst_pad_is_active"
-              doc="Query if a pad is active
-MT safe.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-      </method>
-      <method name="activate_pull"
-              c:identifier="gst_pad_activate_pull"
-              doc="Activates or deactivates the given pad in pull mode via dispatching to the
-pad&apos;s activatepullfunc. For use from within pad activation functions only.
-When called on sink pads, will first proxy the call to the peer pad, which
-is expected to activate its internally linked pads from within its
-activate_pull function.
-If you don&apos;t know what this is, you probably don&apos;t want to call it.
-MT safe.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="active" transfer-ownership="none">
-            <type name="boolean" c:type="gboolean"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="activate_push"
-              c:identifier="gst_pad_activate_push"
-              doc="Activates or deactivates the given pad in push mode via dispatching to the
-pad&apos;s activatepushfunc. For use from within pad activation functions only.
-If you don&apos;t know what this is, you probably don&apos;t want to call it.
-MT safe.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="active" transfer-ownership="none">
-            <type name="boolean" c:type="gboolean"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="set_blocked"
-              c:identifier="gst_pad_set_blocked"
-              doc="Blocks or unblocks the dataflow on a pad. This function is
-a shortcut for gst_pad_set_blocked_async() with a NULL
-callback.
-wrong parameters were passed or the pad was already in the requested state.
-MT safe.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="blocked" transfer-ownership="none">
-            <type name="boolean" c:type="gboolean"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="set_blocked_async"
-              c:identifier="gst_pad_set_blocked_async"
-              doc="operation succeeds
-Blocks or unblocks the dataflow on a pad. The provided callback
-is called when the operation succeeds; this happens right before the next
-attempt at pushing a buffer on the pad.
-This can take a while as the pad can only become blocked when real dataflow
-is happening.
-When the pipeline is stalled, for example in PAUSED, this can
-take an indeterminate amount of time.
-You can pass NULL as the callback to make this call block. Be careful with
-this blocking call as it might not return for reasons stated above.
-wrong parameters were passed or the pad was already in the requested state.
-MT safe.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="blocked" transfer-ownership="none">
-            <type name="boolean" c:type="gboolean"/>
-          </parameter>
-          <parameter name="callback"
-                     transfer-ownership="none"
-                     scope="call"
-                     closure="3">
-            <type name="PadBlockCallback" c:type="GstPadBlockCallback"/>
-          </parameter>
-          <parameter name="user_data" transfer-ownership="none">
-            <type name="any" c:type="gpointer"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="set_blocked_async_full"
-              c:identifier="gst_pad_set_blocked_async_full"
-              doc="operation succeeds
-Blocks or unblocks the dataflow on a pad. The provided callback
-is called when the operation succeeds; this happens right before the next
-attempt at pushing a buffer on the pad.
-This can take a while as the pad can only become blocked when real dataflow
-is happening.
-When the pipeline is stalled, for example in PAUSED, this can
-take an indeterminate amount of time.
-You can pass NULL as the callback to make this call block. Be careful with
-this blocking call as it might not return for reasons stated above.
-wrong parameters were passed or the pad was already in the requested state.
-MT safe."
-              version="0.10.23">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="blocked" transfer-ownership="none">
-            <type name="boolean" c:type="gboolean"/>
-          </parameter>
-          <parameter name="callback"
-                     transfer-ownership="none"
-                     scope="notified"
-                     closure="3"
-                     destroy="4">
-            <type name="PadBlockCallback" c:type="GstPadBlockCallback"/>
-          </parameter>
-          <parameter name="user_data" transfer-ownership="none">
-            <type name="any" c:type="gpointer"/>
-          </parameter>
-          <parameter name="destroy_data"
-                     transfer-ownership="none"
-                     scope="call">
-            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="is_blocked"
-              c:identifier="gst_pad_is_blocked"
-              doc="Checks if the pad is blocked or not. This function returns the
-last requested state of the pad. It is not certain that the pad
-is actually blocking at this point (see gst_pad_is_blocking()).
-MT safe.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-      </method>
-      <method name="is_blocking"
-              c:identifier="gst_pad_is_blocking"
-              doc="Checks if the pad is blocking or not. This is a guaranteed state
-of whether the pad is actually blocking on a #GstBuffer or a #GstEvent.
-MT safe."
-              version="0.10.11">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-      </method>
-      <method name="set_element_private"
-              c:identifier="gst_pad_set_element_private"
-              doc="Set the given private data gpointer on the pad.
-This function can only be used by the element that owns the pad.
-No locking is performed in this function.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="priv" transfer-ownership="none">
-            <type name="any" c:type="gpointer"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_element_private"
-              c:identifier="gst_pad_get_element_private"
-              doc="Gets the private data of a pad.
-No locking is performed in this function.">
-        <return-value transfer-ownership="none">
-          <type name="any" c:type="gpointer"/>
-        </return-value>
-      </method>
-      <method name="get_pad_template"
-              c:identifier="gst_pad_get_pad_template"
-              doc="Gets the template for @pad.
-if this pad has no template.">
-        <return-value transfer-ownership="full">
-          <type name="PadTemplate" c:type="GstPadTemplate*"/>
-        </return-value>
-      </method>
-      <method name="set_bufferalloc_function"
-              c:identifier="gst_pad_set_bufferalloc_function"
-              doc="Sets the given bufferalloc function for the pad. Note that the
-bufferalloc function can only be set on sinkpads.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="bufalloc" transfer-ownership="none" scope="call">
-            <type name="PadBufferAllocFunction"
-                  c:type="GstPadBufferAllocFunction"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="alloc_buffer"
-              c:identifier="gst_pad_alloc_buffer"
-              doc="Allocates a new, empty buffer optimized to push to pad @pad.  This
-function only works if @pad is a source pad and has a peer.
-A new, empty #GstBuffer will be put in the @buf argument.
-You need to check the caps of the buffer after performing this
-function and renegotiate to the format if needed. If the caps changed, it is
-possible that the buffer returned in @buf is not of the right size for the
-new format, @buf needs to be unreffed and reallocated if this is the case.
-result code other than #GST_FLOW_OK is an error and @buf should
-not be used.
-An error can occur if the pad is not connected or when the downstream
-peer elements cannot provide an acceptable buffer.
-MT safe.">
-        <return-value transfer-ownership="full">
-          <type name="FlowReturn" c:type="GstFlowReturn"/>
-        </return-value>
-        <parameters>
-          <parameter name="offset" transfer-ownership="none">
-            <type name="uint64" c:type="guint64"/>
-          </parameter>
-          <parameter name="size" transfer-ownership="none">
-            <type name="int" c:type="gint"/>
-          </parameter>
-          <parameter name="caps" transfer-ownership="none">
-            <type name="Caps" c:type="GstCaps*"/>
-          </parameter>
-          <parameter name="buf" transfer-ownership="none">
-            <type name="Buffer" c:type="GstBuffer**"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="alloc_buffer_and_set_caps"
-              c:identifier="gst_pad_alloc_buffer_and_set_caps"
-              doc="In addition to the function gst_pad_alloc_buffer(), this function
-automatically calls gst_pad_set_caps() when the caps of the
-newly allocated buffer are different from the @pad caps.
-After a renegotiation, the size of the new buffer returned in @buf could
-be of the wrong size for the new format and must be unreffed an reallocated
-in that case.
-result code other than #GST_FLOW_OK is an error and @buf should
-not be used.
-An error can occur if the pad is not connected or when the downstream
-peer elements cannot provide an acceptable buffer.
-MT safe.">
-        <return-value transfer-ownership="full">
-          <type name="FlowReturn" c:type="GstFlowReturn"/>
-        </return-value>
-        <parameters>
-          <parameter name="offset" transfer-ownership="none">
-            <type name="uint64" c:type="guint64"/>
-          </parameter>
-          <parameter name="size" transfer-ownership="none">
-            <type name="int" c:type="gint"/>
-          </parameter>
-          <parameter name="caps" transfer-ownership="none">
-            <type name="Caps" c:type="GstCaps*"/>
-          </parameter>
-          <parameter name="buf" transfer-ownership="none">
-            <type name="Buffer" c:type="GstBuffer**"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="set_activate_function"
-              c:identifier="gst_pad_set_activate_function"
-              doc="Sets the given activate function for @pad. The activate function will
-dispatch to gst_pad_activate_push() or gst_pad_activate_pull() to perform
-the actual activation. Only makes sense to set on sink pads.
-Call this function if your sink pad can start a pull-based task.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="activate" transfer-ownership="none" scope="call">
-            <type name="PadActivateFunction" c:type="GstPadActivateFunction"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="set_activatepull_function"
-              c:identifier="gst_pad_set_activatepull_function"
-              doc="Sets the given activate_pull function for the pad. An activate_pull function
-prepares the element and any upstream connections for pulling. See XXX
-part-activation.txt for details.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="activatepull"
-                     transfer-ownership="none"
-                     scope="call">
-            <type name="PadActivateModeFunction"
-                  c:type="GstPadActivateModeFunction"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="set_activatepush_function"
-              c:identifier="gst_pad_set_activatepush_function"
-              doc="Sets the given activate_push function for the pad. An activate_push function
-prepares the element for pushing. See XXX part-activation.txt for details.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="activatepush"
-                     transfer-ownership="none"
-                     scope="call">
-            <type name="PadActivateModeFunction"
-                  c:type="GstPadActivateModeFunction"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="set_chain_function"
-              c:identifier="gst_pad_set_chain_function"
-              doc="Sets the given chain function for the pad. The chain function is called to
-process a #GstBuffer input buffer. see #GstPadChainFunction for more details.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="chain" transfer-ownership="none" scope="call">
-            <type name="PadChainFunction" c:type="GstPadChainFunction"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="set_chain_list_function"
-              c:identifier="gst_pad_set_chain_list_function"
-              doc="Sets the given chain list function for the pad. The chainlist function is
-called to process a #GstBufferList input buffer list. See
-#GstPadChainListFunction for more details."
-              version="0.10.24">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="chainlist" transfer-ownership="none" scope="call">
-            <type name="PadChainListFunction"
-                  c:type="GstPadChainListFunction"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="set_getrange_function"
-              c:identifier="gst_pad_set_getrange_function"
-              doc="Sets the given getrange function for the pad. The getrange function is
-called to produce a new #GstBuffer to start the processing pipeline. see
-#GstPadGetRangeFunction for a description of the getrange function.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="get" transfer-ownership="none" scope="call">
-            <type name="PadGetRangeFunction" c:type="GstPadGetRangeFunction"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="set_checkgetrange_function"
-              c:identifier="gst_pad_set_checkgetrange_function"
-              doc="Sets the given checkgetrange function for the pad. Implement this function
-on a pad if you dynamically support getrange based scheduling on the pad.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="check" transfer-ownership="none" scope="call">
-            <type name="PadCheckGetRangeFunction"
-                  c:type="GstPadCheckGetRangeFunction"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="set_event_function"
-              c:identifier="gst_pad_set_event_function"
-              doc="Sets the given event handler for the pad.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="event" transfer-ownership="none" scope="call">
-            <type name="PadEventFunction" c:type="GstPadEventFunction"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="set_link_function"
-              c:identifier="gst_pad_set_link_function"
-              doc="Sets the given link function for the pad. It will be called when
-the pad is linked with another pad.
-The return value #GST_PAD_LINK_OK should be used when the connection can be
-made.
-The return value #GST_PAD_LINK_REFUSED should be used when the connection
-cannot be made for some reason.
-If @link is installed on a source pad, it should call the #GstPadLinkFunction
-of the peer sink pad, if present.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="link" transfer-ownership="none" scope="call">
-            <type name="PadLinkFunction" c:type="GstPadLinkFunction"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="set_unlink_function"
-              c:identifier="gst_pad_set_unlink_function"
-              doc="Sets the given unlink function for the pad. It will be called
-when the pad is unlinked.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="unlink" transfer-ownership="none" scope="call">
-            <type name="PadUnlinkFunction" c:type="GstPadUnlinkFunction"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="can_link"
-              c:identifier="gst_pad_can_link"
-              doc="Checks if the source pad and the sink pad are compatible so they can be
-linked.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="sinkpad" transfer-ownership="none">
-            <type name="Pad" c:type="GstPad*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="link"
-              c:identifier="gst_pad_link"
-              doc="Links the source pad and the sink pad.
-what went wrong.
-MT Safe.">
-        <return-value transfer-ownership="full">
-          <type name="PadLinkReturn" c:type="GstPadLinkReturn"/>
-        </return-value>
-        <parameters>
-          <parameter name="sinkpad" transfer-ownership="none">
-            <type name="Pad" c:type="GstPad*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="unlink"
-              c:identifier="gst_pad_unlink"
-              doc="Unlinks the source pad from the sink pad. Will emit the #GstPad::unlinked
-signal on both pads.
-the pads were not linked together.
-MT safe.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="sinkpad" transfer-ownership="none">
-            <type name="Pad" c:type="GstPad*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="is_linked"
-              c:identifier="gst_pad_is_linked"
-              doc="Checks if a @pad is linked to another pad or not.
-MT safe.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-      </method>
-      <method name="get_peer"
-              c:identifier="gst_pad_get_peer"
-              doc="Gets the peer of @pad. This function refs the peer pad so
-you need to unref it after use.
-MT safe.">
-        <return-value transfer-ownership="full">
-          <type name="Pad" c:type="GstPad*"/>
-        </return-value>
-      </method>
-      <method name="set_getcaps_function"
-              c:identifier="gst_pad_set_getcaps_function"
-              doc="Sets the given getcaps function for the pad. @getcaps should return the
-allowable caps for a pad in the context of the element&apos;s state, its link to
-other elements, and the devices or files it has opened. These caps must be a
-subset of the pad template caps. In the NULL state with no links, @getcaps
-should ideally return the same caps as the pad template. In rare
-circumstances, an object property can affect the caps returned by @getcaps,
-but this is discouraged.
-You do not need to call this function if @pad&apos;s allowed caps are always the
-same as the pad template caps. This can only be true if the padtemplate
-has fixed simple caps.
-For most filters, the caps returned by @getcaps is directly affected by the
-allowed caps on other pads. For demuxers and decoders, the caps returned by
-the srcpad&apos;s getcaps function is directly related to the stream data. Again,
-helps with autoplugging.
-Note that the return value from @getcaps is owned by the caller, so the
-caller should unref the caps after usage.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="getcaps" transfer-ownership="none" scope="call">
-            <type name="PadGetCapsFunction" c:type="GstPadGetCapsFunction"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="set_acceptcaps_function"
-              c:identifier="gst_pad_set_acceptcaps_function"
-              doc="Sets the given acceptcaps function for the pad.  The acceptcaps function
-will be called to check if the pad can accept the given caps. Setting the
-acceptcaps function to NULL restores the default behaviour of allowing
-any caps that matches the caps from gst_pad_get_caps.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="acceptcaps" transfer-ownership="none" scope="call">
-            <type name="PadAcceptCapsFunction"
-                  c:type="GstPadAcceptCapsFunction"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="set_fixatecaps_function"
-              c:identifier="gst_pad_set_fixatecaps_function"
-              doc="Sets the given fixatecaps function for the pad.  The fixatecaps function
-will be called whenever the default values for a GstCaps needs to be
-filled in.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="fixatecaps" transfer-ownership="none" scope="call">
-            <type name="PadFixateCapsFunction"
-                  c:type="GstPadFixateCapsFunction"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="set_setcaps_function"
-              c:identifier="gst_pad_set_setcaps_function"
-              doc="Sets the given setcaps function for the pad.  The setcaps function
-will be called whenever a buffer with a new media type is pushed or
-pulled from the pad. The pad/element needs to update its internal
-structures to process the new media type. If this new type is not
-acceptable, the setcaps function should return FALSE.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="setcaps" transfer-ownership="none" scope="call">
-            <type name="PadSetCapsFunction" c:type="GstPadSetCapsFunction"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_pad_template_caps"
-              c:identifier="gst_pad_get_pad_template_caps"
-              doc="Gets the capabilities for @pad&apos;s template.
-reference on the caps, make a copy (see gst_caps_copy ()).">
-        <return-value transfer-ownership="none">
-          <type name="Caps" c:type="GstCaps*"/>
-        </return-value>
-      </method>
-      <method name="get_caps_reffed"
-              c:identifier="gst_pad_get_caps_reffed"
-              doc="Gets the capabilities this pad can produce or consume. Preferred function if
-one only wants to read or intersect the caps."
-              version="0.10.26">
-        <return-value transfer-ownership="full">
-          <type name="Caps" c:type="GstCaps*"/>
-        </return-value>
-      </method>
-      <method name="get_caps"
-              c:identifier="gst_pad_get_caps"
-              doc="Gets the capabilities this pad can produce or consume.
-Note that this method doesn&apos;t necessarily return the caps set by
-gst_pad_set_caps() - use GST_PAD_CAPS() for that instead.
-gst_pad_get_caps returns all possible caps a pad can operate with, using
-the pad&apos;s get_caps function;
-this returns the pad template caps if not explicitly set.
-MT safe.">
-        <return-value transfer-ownership="full">
-          <type name="Caps" c:type="GstCaps*"/>
-        </return-value>
-      </method>
-      <method name="fixate_caps"
-              c:identifier="gst_pad_fixate_caps"
-              doc="Fixate a caps on the given pad. Modifies the caps in place, so you should
-make sure that the caps are actually writable (see gst_caps_make_writable()).">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="caps" transfer-ownership="none">
-            <type name="Caps" c:type="GstCaps*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="accept_caps"
-              c:identifier="gst_pad_accept_caps"
-              doc="Check if the given pad accepts the caps.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="caps" transfer-ownership="none">
-            <type name="Caps" c:type="GstCaps*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="set_caps"
-              c:identifier="gst_pad_set_caps"
-              doc="Sets the capabilities of this pad. The caps must be fixed. Any previous
-caps on the pad will be unreffed. This function refs the caps so you should
-unref if as soon as you don&apos;t need it anymore.
-It is possible to set NULL caps, which will make the pad unnegotiated
-again.
-or bad parameters were provided to this function.
-MT safe.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="caps" transfer-ownership="none">
-            <type name="Caps" c:type="GstCaps*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="peer_get_caps_reffed"
-              c:identifier="gst_pad_peer_get_caps_reffed"
-              doc="Gets the capabilities of the peer connected to this pad. Preferred function
-if one only wants to read or intersect the caps."
-              version="0.10.26">
-        <return-value transfer-ownership="full">
-          <type name="Caps" c:type="GstCaps*"/>
-        </return-value>
-      </method>
-      <method name="peer_get_caps"
-              c:identifier="gst_pad_peer_get_caps"
-              doc="Gets the capabilities of the peer connected to this pad. Similar to
-gst_pad_get_caps().
-gst_caps_unref() to get rid of it. This function returns %NULL if there is
-no peer pad.">
-        <return-value transfer-ownership="full">
-          <type name="Caps" c:type="GstCaps*"/>
-        </return-value>
-      </method>
-      <method name="peer_accept_caps"
-              c:identifier="gst_pad_peer_accept_caps"
-              doc="Check if the peer of @pad accepts @caps. If @pad has no peer, this function
-returns TRUE.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="caps" transfer-ownership="none">
-            <type name="Caps" c:type="GstCaps*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_allowed_caps"
-              c:identifier="gst_pad_get_allowed_caps"
-              doc="Gets the capabilities of the allowed media types that can flow through
-The allowed capabilities is calculated as the intersection of the results of
-calling gst_pad_get_caps() on @pad and its peer. The caller owns a reference
-on the resulting caps.
-longer need it. This function returns NULL when @pad has no peer.
-MT safe.">
-        <return-value transfer-ownership="full">
-          <type name="Caps" c:type="GstCaps*"/>
-        </return-value>
-      </method>
-      <method name="get_negotiated_caps"
-              c:identifier="gst_pad_get_negotiated_caps"
-              doc="Gets the capabilities of the media type that currently flows through @pad
-and its peer.
-This function can be used on both src and sinkpads. Note that srcpads are
-always negotiated before sinkpads so it is possible that the negotiated caps
-on the srcpad do not match the negotiated caps of the peer.
-you no longer need it. This function returns NULL when the @pad has no
-peer or is not negotiated yet.
-MT safe.">
-        <return-value transfer-ownership="full">
-          <type name="Caps" c:type="GstCaps*"/>
-        </return-value>
-      </method>
-      <method name="push"
-              c:identifier="gst_pad_push"
-              doc="Pushes a buffer to the peer of @pad.
-This function will call an installed pad block before triggering any
-installed pad probes.
-If the caps on @buffer are different from the currently configured caps on
-gst_pad_set_setcaps_function()). In case of failure to renegotiate the new
-format, this function returns #GST_FLOW_NOT_NEGOTIATED.
-The function proceeds calling gst_pad_chain() on the peer pad and returns
-the value from that function. If @pad has no peer, #GST_FLOW_NOT_LINKED will
-be returned.
-In all cases, success or failure, the caller loses its reference to @buffer
-after calling this function.
-MT safe.">
-        <return-value transfer-ownership="full">
-          <type name="FlowReturn" c:type="GstFlowReturn"/>
-        </return-value>
-        <parameters>
-          <parameter name="buffer" transfer-ownership="none">
-            <type name="Buffer" c:type="GstBuffer*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="push_list"
-              c:identifier="gst_pad_push_list"
-              doc="Pushes a buffer list to the peer of @pad.
-This function will call an installed pad block before triggering any
-installed pad probes.
-If the caps on the first buffer in the first group of @list are different
-from the currently configured caps on @pad, this function will call any
-installed setcaps function on @pad (see gst_pad_set_setcaps_function()). In
-case of failure to renegotiate the new format, this function returns
-#GST_FLOW_NOT_NEGOTIATED.
-If there are any probes installed on @pad every group of the buffer list
-will be merged into a normal #GstBuffer and pushed via gst_pad_push and the
-buffer list will be unreffed.
-The function proceeds calling the chain function on the peer pad and returns
-the value from that function. If @pad has no peer, #GST_FLOW_NOT_LINKED will
-be returned. If the peer pad does not have any installed chainlist function
-every group buffer of the list will be merged into a normal #GstBuffer and
-chained via gst_pad_chain().
-In all cases, success or failure, the caller loses its reference to @list
-after calling this function.
-MT safe."
-              version="0.10.24">
-        <return-value transfer-ownership="full">
-          <type name="FlowReturn" c:type="GstFlowReturn"/>
-        </return-value>
-        <parameters>
-          <parameter name="list" transfer-ownership="none">
-            <type name="BufferList" c:type="GstBufferList*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="check_pull_range"
-              c:identifier="gst_pad_check_pull_range"
-              doc="Checks if a gst_pad_pull_range() can be performed on the peer
-source pad. This function is used by plugins that want to check
-if they can use random access on the peer source pad.
-The peer sourcepad can implement a custom #GstPadCheckGetRangeFunction
-if it needs to perform some logic to determine if pull_range is
-possible.
-MT safe.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-      </method>
-      <method name="pull_range"
-              c:identifier="gst_pad_pull_range"
-              doc="Pulls a @buffer from the peer pad.
-This function will first trigger the pad block signal if it was
-installed.
-When @pad is not linked #GST_FLOW_NOT_LINKED is returned else this
-function returns the result of gst_pad_get_range() on the peer pad.
-See gst_pad_get_range() for a list of return values and for the
-semantics of the arguments of this function.
-configured on @pad. Renegotiation within a running pull-mode pipeline is not
-supported.
-When this function returns #GST_FLOW_OK, @buffer will contain a valid
-#GstBuffer that should be freed with gst_buffer_unref() after usage.
-#GST_FLOW_OK is returned.
-MT safe.">
-        <return-value transfer-ownership="full">
-          <type name="FlowReturn" c:type="GstFlowReturn"/>
-        </return-value>
-        <parameters>
-          <parameter name="offset" transfer-ownership="none">
-            <type name="uint64" c:type="guint64"/>
-          </parameter>
-          <parameter name="size" transfer-ownership="none">
-            <type name="uint" c:type="guint"/>
-          </parameter>
-          <parameter name="buffer" transfer-ownership="none">
-            <type name="Buffer" c:type="GstBuffer**"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="push_event"
-              c:identifier="gst_pad_push_event"
-              doc="Sends the event to the peer of the given pad. This function is
-mainly used by elements to send events to their peer
-elements.
-This function takes owership of the provided event so you should
-gst_event_ref() it if you want to reuse the event after this call.
-MT safe.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="event" transfer-ownership="none">
-            <type name="Event" c:type="GstEvent*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="event_default"
-              c:identifier="gst_pad_event_default"
-              doc="Invokes the default event handler for the given pad. End-of-stream and
-discontinuity events are handled specially, and then the event is sent to all
-pads internally linked to @pad. Note that if there are many possible sink
-pads that are internally linked to @pad, only one will be sent an event.
-Multi-sinkpad elements should implement custom event handlers.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="event" transfer-ownership="none">
-            <type name="Event" c:type="GstEvent*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="chain"
-              c:identifier="gst_pad_chain"
-              doc="Chain a buffer to @pad.
-The function returns #GST_FLOW_WRONG_STATE if the pad was flushing.
-If the caps on @buffer are different from the current caps on @pad, this
-function will call any setcaps function (see gst_pad_set_setcaps_function())
-installed on @pad. If the new caps are not acceptable for @pad, this
-function returns #GST_FLOW_NOT_NEGOTIATED.
-The function proceeds calling the chain function installed on @pad (see
-gst_pad_set_chain_function()) and the return value of that function is
-returned to the caller. #GST_FLOW_NOT_SUPPORTED is returned if @pad has no
-chain function.
-In all cases, success or failure, the caller loses its reference to @buffer
-after calling this function.
-MT safe.">
-        <return-value transfer-ownership="full">
-          <type name="FlowReturn" c:type="GstFlowReturn"/>
-        </return-value>
-        <parameters>
-          <parameter name="buffer" transfer-ownership="none">
-            <type name="Buffer" c:type="GstBuffer*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="chain_list"
-              c:identifier="gst_pad_chain_list"
-              doc="Chain a bufferlist to @pad.
-The function returns #GST_FLOW_WRONG_STATE if the pad was flushing.
-If the caps on the first buffer of @list are different from the current
-caps on @pad, this function will call any setcaps function
-(see gst_pad_set_setcaps_function()) installed on @pad. If the new caps
-are not acceptable for @pad, this function returns #GST_FLOW_NOT_NEGOTIATED.
-The function proceeds calling the chainlist function installed on @pad (see
-gst_pad_set_chain_list_function()) and the return value of that function is
-returned to the caller. #GST_FLOW_NOT_SUPPORTED is returned if @pad has no
-chainlist function.
-In all cases, success or failure, the caller loses its reference to @list
-after calling this function.
-MT safe."
-              version="0.10.24">
-        <return-value transfer-ownership="full">
-          <type name="FlowReturn" c:type="GstFlowReturn"/>
-        </return-value>
-        <parameters>
-          <parameter name="list" transfer-ownership="none">
-            <type name="BufferList" c:type="GstBufferList*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_range"
-              c:identifier="gst_pad_get_range"
-              doc="When @pad is flushing this function returns #GST_FLOW_WRONG_STATE
-immediatly.
-Calls the getrange function of @pad, see #GstPadGetRangeFunction for a
-description of a getrange function. If @pad has no getrange function
-installed (see gst_pad_set_getrange_function()) this function returns
-#GST_FLOW_NOT_SUPPORTED.
-This is a lowlevel function. Usualy gst_pad_pull_range() is used.
-MT safe.">
-        <return-value transfer-ownership="full">
-          <type name="FlowReturn" c:type="GstFlowReturn"/>
-        </return-value>
-        <parameters>
-          <parameter name="offset" transfer-ownership="none">
-            <type name="uint64" c:type="guint64"/>
-          </parameter>
-          <parameter name="size" transfer-ownership="none">
-            <type name="uint" c:type="guint"/>
-          </parameter>
-          <parameter name="buffer" transfer-ownership="none">
-            <type name="Buffer" c:type="GstBuffer**"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="send_event"
-              c:identifier="gst_pad_send_event"
-              doc="Sends the event to the pad. This function can be used
-by applications to send events in the pipeline.
-If @pad is a source pad, @event should be an upstream event. If @pad is a
-sink pad, @event should be a downstream event. For example, you would not
-send a #GST_EVENT_EOS on a src pad; EOS events only propagate downstream.
-Furthermore, some downstream events have to be serialized with data flow,
-like EOS, while some can travel out-of-band, like #GST_EVENT_FLUSH_START. If
-the event needs to be serialized with data flow, this function will take the
-pad&apos;s stream lock while calling its event function.
-To find out whether an event type is upstream, downstream, or downstream and
-serialized, see #GstEventTypeFlags, gst_event_type_get_flags(),
-#GST_EVENT_IS_UPSTREAM, #GST_EVENT_IS_DOWNSTREAM, and
-#GST_EVENT_IS_SERIALIZED. Note that in practice that an application or
-plugin doesn&apos;t need to bother itself with this information; the core handles
-all necessary locks and checks.
-This function takes owership of the provided event so you should
-gst_event_ref() it if you want to reuse the event after this call.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="event" transfer-ownership="none">
-            <type name="Event" c:type="GstEvent*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="start_task"
-              c:identifier="gst_pad_start_task"
-              doc="Starts a task that repeatedly calls @func with @data. This function
-is mostly used in pad activation functions to start the dataflow.
-The #GST_PAD_STREAM_LOCK of @pad will automatically be acquired
-before @func is called.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="func"
-                     transfer-ownership="none"
-                     scope="call"
-                     closure="2">
-            <type name="TaskFunction" c:type="GstTaskFunction"/>
-          </parameter>
-          <parameter name="data" transfer-ownership="none">
-            <type name="any" c:type="gpointer"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="pause_task"
-              c:identifier="gst_pad_pause_task"
-              doc="Pause the task of @pad. This function will also wait until the
-function executed by the task is finished if this function is not
-called from the task function.
-has no task.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-      </method>
-      <method name="stop_task"
-              c:identifier="gst_pad_stop_task"
-              doc="Stop the task of @pad. This function will also make sure that the
-function executed by the task will effectively stop if not called
-from the GstTaskFunction.
-This function will deadlock if called from the GstTaskFunction of
-the task. Use gst_task_pause() instead.
-Regardless of whether the pad has a task, the stream lock is acquired and
-released so as to ensure that streaming through this pad has finished.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-      </method>
-      <method name="set_internal_link_function"
-              c:identifier="gst_pad_set_internal_link_function"
-              doc="Sets the given internal link function for the pad."
-              deprecated="Use the thread-safe gst_pad_set_iterate_internal_links_function()">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="intlink" transfer-ownership="none" scope="call">
-            <type name="PadIntLinkFunction" c:type="GstPadIntLinkFunction"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_internal_links"
-              c:identifier="gst_pad_get_internal_links"
-              doc="Gets a list of pads to which the given pad is linked to
-inside of the parent element.
-The caller must free this list after use.
-Not MT safe.
-could become invalid by the time the application accesses them. It&apos;s also
-possible that the list changes while handling the pads, which the caller of
-this function is unable to know. Use the thread-safe
-gst_pad_iterate_internal_links() instead."
-              deprecated="This function does not ref the pads in the list so that they">
-        <return-value transfer-ownership="full">
-          <type name="GLib.List" c:type="GList*"/>
-        </return-value>
-      </method>
-      <method name="get_internal_links_default"
-              c:identifier="gst_pad_get_internal_links_default"
-              doc="Gets a list of pads to which the given pad is linked to
-inside of the parent element.
-This is the default handler, and thus returns a list of all of the
-pads inside the parent element with opposite direction.
-The caller must free this list after use with g_list_free().
-Not MT safe.
-could become invalid by the time the application accesses them. It&apos;s also
-possible that the list changes while handling the pads, which the caller of
-this function is unable to know. Use the thread-safe
-gst_pad_iterate_internal_links_default() instead."
-              deprecated="This function does not ref the pads in the list so that they">
-        <return-value transfer-ownership="full">
-          <type name="GLib.List" c:type="GList*"/>
-        </return-value>
-      </method>
-      <method name="set_iterate_internal_links_function"
-              c:identifier="gst_pad_set_iterate_internal_links_function"
-              doc="Sets the given internal link iterator function for the pad."
-              version="0.10.21">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="iterintlink" transfer-ownership="none" scope="call">
-            <type name="PadIterIntLinkFunction"
-                  c:type="GstPadIterIntLinkFunction"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="iterate_internal_links"
-              c:identifier="gst_pad_iterate_internal_links"
-              doc="Gets an iterator for the pads to which the given pad is linked to inside
-of the parent element.
-Each #GstPad element yielded by the iterator will have its refcount increased,
-so unref after use.
-iterator function configured. Use gst_iterator_free() after usage."
-              version="0.10.21">
-        <return-value transfer-ownership="full">
-          <type name="Iterator" c:type="GstIterator*"/>
-        </return-value>
-      </method>
-      <method name="iterate_internal_links_default"
-              c:identifier="gst_pad_iterate_internal_links_default"
-              doc="Iterate the list of pads to which the given pad is linked to inside of
-the parent element.
-This is the default handler, and thus returns an iterator of all of the
-pads inside the parent element with opposite direction.
-The caller must free this iterator after use with gst_iterator_free().
-returned pad with gst_object_unref()."
-              version="0.10.21">
-        <return-value transfer-ownership="full">
-          <type name="Iterator" c:type="GstIterator*"/>
-        </return-value>
-      </method>
-      <method name="set_query_type_function"
-              c:identifier="gst_pad_set_query_type_function"
-              doc="Set the given query type function for the pad.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="type_func" transfer-ownership="none" scope="call">
-            <type name="PadQueryTypeFunction"
-                  c:type="GstPadQueryTypeFunction"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_query_types"
-              c:identifier="gst_pad_get_query_types"
-              doc="Get an array of supported queries that can be performed
-on this pad.">
-        <return-value transfer-ownership="none">
-          <type name="QueryType" c:type="GstQueryType*"/>
-        </return-value>
-      </method>
-      <method name="get_query_types_default"
-              c:identifier="gst_pad_get_query_types_default"
-              doc="Invoke the default dispatcher for the query types on
-the pad.
-internally-linked pads has a query types function.">
-        <return-value transfer-ownership="none">
-          <type name="QueryType" c:type="GstQueryType*"/>
-        </return-value>
-      </method>
-      <method name="query"
-              c:identifier="gst_pad_query"
-              doc="Dispatches a query to a pad. The query should have been allocated by the
-caller via one of the type-specific allocation functions in gstquery.h. The
-element is responsible for filling the query with an appropriate response,
-which should then be parsed with a type-specific query parsing function.
-Again, the caller is responsible for both the allocation and deallocation of
-the query structure.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="query" transfer-ownership="none">
-            <type name="Query" c:type="GstQuery*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="peer_query"
-              c:identifier="gst_pad_peer_query"
-              doc="Performs gst_pad_query() on the peer of @pad.
-The caller is responsible for both the allocation and deallocation of
-the query structure.
-if @pad has no peer."
-              version="0.10.15">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="query" transfer-ownership="none">
-            <type name="Query" c:type="GstQuery*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="set_query_function"
-              c:identifier="gst_pad_set_query_function"
-              doc="Set the given query function for the pad.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="query" transfer-ownership="none" scope="call">
-            <type name="PadQueryFunction" c:type="GstPadQueryFunction"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="query_default"
-              c:identifier="gst_pad_query_default"
-              doc="Invokes the default query handler for the given pad.
-The query is sent to all pads internally linked to @pad. Note that
-if there are many possible sink pads that are internally linked to
-Multi-sinkpad elements should implement custom query handlers.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="query" transfer-ownership="none">
-            <type name="Query" c:type="GstQuery*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="dispatcher"
-              c:identifier="gst_pad_dispatcher"
-              doc="Invokes the given dispatcher function on each respective peer of
-all pads that are internally linked to the given pad.
-The GstPadDispatcherFunction should return TRUE when no further pads
-need to be processed.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="dispatch"
-                     transfer-ownership="none"
-                     scope="call"
-                     closure="2">
-            <type name="PadDispatcherFunction"
-                  c:type="GstPadDispatcherFunction"/>
-          </parameter>
-          <parameter name="data" transfer-ownership="none">
-            <type name="any" c:type="gpointer"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="use_fixed_caps"
-              c:identifier="gst_pad_use_fixed_caps"
-              doc="A helper function you can use that sets the
-pad. This way the function will always return the negotiated caps
-or in case the pad is not negotiated, the padtemplate caps.
-Use this function on a pad that, once gst_pad_set_caps() has been called
-on it, cannot be renegotiated to something else.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-      </method>
-      <method name="get_fixed_caps_func"
-              c:identifier="gst_pad_get_fixed_caps_func"
-              doc="A helper function you can use as a GetCaps function that
-will return the currently negotiated caps or the padtemplate
-when NULL.">
-        <return-value transfer-ownership="full">
-          <type name="Caps" c:type="GstCaps*"/>
-        </return-value>
-      </method>
-      <method name="proxy_getcaps"
-              c:identifier="gst_pad_proxy_getcaps"
-              doc="Calls gst_pad_get_allowed_caps() for every other pad belonging to the
-same element as @pad, and returns the intersection of the results.
-This function is useful as a default getcaps function for an element
-that can handle any stream format, but requires all its pads to have
-the same caps.  Two such elements are tee and adder.">
-        <return-value transfer-ownership="full">
-          <type name="Caps" c:type="GstCaps*"/>
-        </return-value>
-      </method>
-      <method name="proxy_setcaps" c:identifier="gst_pad_proxy_setcaps">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="caps" transfer-ownership="none">
-            <type name="Caps" c:type="GstCaps*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_parent_element"
-              c:identifier="gst_pad_get_parent_element"
-              doc="Gets the parent of @pad, cast to a #GstElement. If a @pad has no parent or
-its parent is not an element, return NULL.
-unref when you&apos;re finished with it.
-MT safe.">
-        <return-value transfer-ownership="full">
-          <type name="Element" c:type="GstElement*"/>
-        </return-value>
-      </method>
-      <method name="query_position"
-              c:identifier="gst_pad_query_position"
-              doc="On return contains the #GstFormat used.
-Queries a pad for the stream position.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="format"
-                     direction="inout"
-                     transfer-ownership="full"
-                     doc="a pointer to the #GstFormat asked for.">
-            <type name="Format" c:type="GstFormat*"/>
-          </parameter>
-          <parameter name="cur"
-                     direction="out"
-                     transfer-ownership="full"
-                     doc="A location in which to store the current position, or NULL.">
-            <type name="int64" c:type="gint64*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="query_duration"
-              c:identifier="gst_pad_query_duration"
-              doc="On return contains the #GstFormat used.
-Queries a pad for the total stream duration.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="format" transfer-ownership="none">
-            <type name="Format" c:type="GstFormat*"/>
-          </parameter>
-          <parameter name="duration" direction="out" transfer-ownership="full">
-            <type name="int64" c:type="gint64*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="query_convert"
-              c:identifier="gst_pad_query_convert"
-              doc="Queries a pad to convert @src_val in @src_format to @dest_format.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="src_format" transfer-ownership="none">
-            <type name="Format" c:type="GstFormat"/>
-          </parameter>
-          <parameter name="src_val" transfer-ownership="none">
-            <type name="int64" c:type="gint64"/>
-          </parameter>
-          <parameter name="dest_format" transfer-ownership="none">
-            <type name="Format" c:type="GstFormat*"/>
-          </parameter>
-          <parameter name="dest_val" direction="out" transfer-ownership="full">
-            <type name="int64" c:type="gint64*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="query_peer_position"
-              c:identifier="gst_pad_query_peer_position"
-              doc="Must be a sink pad.
-On return contains the #GstFormat used.
-Queries the peer of a given sink pad for the stream position.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="format" transfer-ownership="none">
-            <type name="Format" c:type="GstFormat*"/>
-          </parameter>
-          <parameter name="cur" direction="out" transfer-ownership="full">
-            <type name="int64" c:type="gint64*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="query_peer_duration"
-              c:identifier="gst_pad_query_peer_duration"
-              doc="Must be a sink pad.
-On return contains the #GstFormat used.
-Queries the peer pad of a given sink pad for the total stream duration.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="format" transfer-ownership="none">
-            <type name="Format" c:type="GstFormat*"/>
-          </parameter>
-          <parameter name="duration" direction="out" transfer-ownership="full">
-            <type name="int64" c:type="gint64*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="query_peer_convert"
-              c:identifier="gst_pad_query_peer_convert"
-              doc="Must be a sink pad.
-Queries the peer pad of a given sink pad to convert @src_val in @src_format
-to @dest_format.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="src_format" transfer-ownership="none">
-            <type name="Format" c:type="GstFormat"/>
-          </parameter>
-          <parameter name="src_val" transfer-ownership="none">
-            <type name="int64" c:type="gint64"/>
-          </parameter>
-          <parameter name="dest_format" transfer-ownership="none">
-            <type name="Format" c:type="GstFormat*"/>
-          </parameter>
-          <parameter name="dest_val" direction="out" transfer-ownership="full">
-            <type name="int64" c:type="gint64*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="add_data_probe"
-              c:identifier="gst_pad_add_data_probe"
-              doc="Adds a &quot;data probe&quot; to a pad. This function will be called whenever data
-passes through a pad. In this case data means both events and buffers. The
-probe will be called with the data as an argument, meaning @handler should
-have the same callback signature as the #GstPad::have-data signal.
-Note that the data will have a reference count greater than 1, so it will
-be immutable -- you must not change it.
-For source pads, the probe will be called after the blocking function, if any
-(see gst_pad_set_blocked_async()), but before looking up the peer to chain
-to. For sink pads, the probe function will be called before configuring the
-sink with new caps, if any, and before calling the pad&apos;s chain function.
-Your data probe should return TRUE to let the data continue to flow, or FALSE
-to drop it. Dropping data is rarely useful, but occasionally comes in handy
-with events.
-Although probes are implemented internally by connecting @handler to the
-have-data signal on the pad, if you want to remove a probe it is insufficient
-to only call g_signal_handler_disconnect on the returned handler id. To
-remove a probe, use the appropriate function, such as
-gst_pad_remove_data_probe().">
-        <return-value transfer-ownership="none">
-          <type name="ulong" c:type="gulong"/>
-        </return-value>
-        <parameters>
-          <parameter name="handler"
-                     transfer-ownership="none"
-                     scope="call"
-                     closure="2">
-            <type name="GObject.Callback" c:type="GCallback"/>
-          </parameter>
-          <parameter name="data" transfer-ownership="none">
-            <type name="any" c:type="gpointer"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="add_data_probe_full"
-              c:identifier="gst_pad_add_data_probe_full"
-              doc="Adds a &quot;data probe&quot; to a pad. This function will be called whenever data
-passes through a pad. In this case data means both events and buffers. The
-probe will be called with the data as an argument, meaning @handler should
-have the same callback signature as the #GstPad::have-data signal.
-Note that the data will have a reference count greater than 1, so it will
-be immutable -- you must not change it.
-For source pads, the probe will be called after the blocking function, if any
-(see gst_pad_set_blocked_async()), but before looking up the peer to chain
-to. For sink pads, the probe function will be called before configuring the
-sink with new caps, if any, and before calling the pad&apos;s chain function.
-Your data probe should return TRUE to let the data continue to flow, or FALSE
-to drop it. Dropping data is rarely useful, but occasionally comes in handy
-with events.
-Although probes are implemented internally by connecting @handler to the
-have-data signal on the pad, if you want to remove a probe it is insufficient
-to only call g_signal_handler_disconnect on the returned handler id. To
-remove a probe, use the appropriate function, such as
-gst_pad_remove_data_probe().
-The @notify function is called when the probe is disconnected and usually
-used to free @data."
-              version="0.10.20">
-        <return-value transfer-ownership="none">
-          <type name="ulong" c:type="gulong"/>
-        </return-value>
-        <parameters>
-          <parameter name="handler"
-                     transfer-ownership="none"
-                     scope="notified"
-                     closure="2"
-                     destroy="3">
-            <type name="GObject.Callback" c:type="GCallback"/>
-          </parameter>
-          <parameter name="data" transfer-ownership="none">
-            <type name="any" c:type="gpointer"/>
-          </parameter>
-          <parameter name="notify" transfer-ownership="none" scope="call">
-            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="remove_data_probe"
-              c:identifier="gst_pad_remove_data_probe"
-              doc="Removes a data probe from @pad.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="handler_id" transfer-ownership="none">
-            <type name="uint" c:type="guint"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="add_event_probe"
-              c:identifier="gst_pad_add_event_probe"
-              doc="Adds a probe that will be called for all events passing through a pad. See
-gst_pad_add_data_probe() for more information.">
-        <return-value transfer-ownership="none">
-          <type name="ulong" c:type="gulong"/>
-        </return-value>
-        <parameters>
-          <parameter name="handler"
-                     transfer-ownership="none"
-                     scope="call"
-                     closure="2">
-            <type name="GObject.Callback" c:type="GCallback"/>
-          </parameter>
-          <parameter name="data" transfer-ownership="none">
-            <type name="any" c:type="gpointer"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="add_event_probe_full"
-              c:identifier="gst_pad_add_event_probe_full"
-              doc="Adds a probe that will be called for all events passing through a pad. See
-gst_pad_add_data_probe() for more information.
-The @notify function is called when the probe is disconnected and usually
-used to free @data."
-              version="0.10.20">
-        <return-value transfer-ownership="none">
-          <type name="ulong" c:type="gulong"/>
-        </return-value>
-        <parameters>
-          <parameter name="handler"
-                     transfer-ownership="none"
-                     scope="notified"
-                     closure="2"
-                     destroy="3">
-            <type name="GObject.Callback" c:type="GCallback"/>
-          </parameter>
-          <parameter name="data" transfer-ownership="none">
-            <type name="any" c:type="gpointer"/>
-          </parameter>
-          <parameter name="notify" transfer-ownership="none" scope="call">
-            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="remove_event_probe"
-              c:identifier="gst_pad_remove_event_probe"
-              doc="Removes an event probe from @pad.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="handler_id" transfer-ownership="none">
-            <type name="uint" c:type="guint"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="add_buffer_probe"
-              c:identifier="gst_pad_add_buffer_probe"
-              doc="Adds a probe that will be called for all buffers passing through a pad. See
-gst_pad_add_data_probe() for more information.">
-        <return-value transfer-ownership="none">
-          <type name="ulong" c:type="gulong"/>
-        </return-value>
-        <parameters>
-          <parameter name="handler"
-                     transfer-ownership="none"
-                     scope="call"
-                     closure="2">
-            <type name="GObject.Callback" c:type="GCallback"/>
-          </parameter>
-          <parameter name="data" transfer-ownership="none">
-            <type name="any" c:type="gpointer"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="add_buffer_probe_full"
-              c:identifier="gst_pad_add_buffer_probe_full"
-              doc="Adds a probe that will be called for all buffers passing through a pad. See
-gst_pad_add_data_probe() for more information.
-The @notify function is called when the probe is disconnected and usually
-used to free @data."
-              version="0.10.20">
-        <return-value transfer-ownership="none">
-          <type name="ulong" c:type="gulong"/>
-        </return-value>
-        <parameters>
-          <parameter name="handler"
-                     transfer-ownership="none"
-                     scope="notified"
-                     closure="2"
-                     destroy="3">
-            <type name="GObject.Callback" c:type="GCallback"/>
-          </parameter>
-          <parameter name="data" transfer-ownership="none">
-            <type name="any" c:type="gpointer"/>
-          </parameter>
-          <parameter name="notify" transfer-ownership="none" scope="call">
-            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="remove_buffer_probe"
-              c:identifier="gst_pad_remove_buffer_probe"
-              doc="Removes a buffer probe from @pad.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="handler_id" transfer-ownership="none">
-            <type name="uint" c:type="guint"/>
-          </parameter>
-        </parameters>
-      </method>
-      <property name="caps">
-        <type name="Caps" c:type="GstCaps"/>
-      </property>
-      <property name="direction" writable="1" construct-only="1">
-        <type name="PadDirection" c:type="GstPadDirection"/>
-      </property>
-      <property name="template" writable="1">
-        <type name="PadTemplate" c:type="GstPadTemplate"/>
-      </property>
-      <field name="object">
-        <type name="Object" c:type="GstObject"/>
-      </field>
-      <field name="element_private">
-        <type name="any" c:type="gpointer"/>
-      </field>
-      <field name="padtemplate">
-        <type name="PadTemplate" c:type="GstPadTemplate*"/>
-      </field>
-      <field name="direction">
-        <type name="PadDirection" c:type="GstPadDirection"/>
-      </field>
-      <field name="stream_rec_lock">
-        <type name="GLib.StaticRecMutex" c:type="GStaticRecMutex*"/>
-      </field>
-      <field name="task">
-        <type name="Task" c:type="GstTask*"/>
-      </field>
-      <field name="preroll_lock">
-        <type name="GLib.Mutex" c:type="GMutex*"/>
-      </field>
-      <field name="preroll_cond">
-        <type name="GLib.Cond" c:type="GCond*"/>
-      </field>
-      <field name="block_cond">
-        <type name="GLib.Cond" c:type="GCond*"/>
-      </field>
-      <field name="block_callback">
-        <type name="PadBlockCallback" c:type="GstPadBlockCallback"/>
-      </field>
-      <field name="block_data">
-        <type name="any" c:type="gpointer"/>
-      </field>
-      <field name="caps">
-        <type name="Caps" c:type="GstCaps*"/>
-      </field>
-      <field name="getcapsfunc">
-        <type name="PadGetCapsFunction" c:type="GstPadGetCapsFunction"/>
-      </field>
-      <field name="setcapsfunc">
-        <type name="PadSetCapsFunction" c:type="GstPadSetCapsFunction"/>
-      </field>
-      <field name="acceptcapsfunc">
-        <type name="PadAcceptCapsFunction" c:type="GstPadAcceptCapsFunction"/>
-      </field>
-      <field name="fixatecapsfunc">
-        <type name="PadFixateCapsFunction" c:type="GstPadFixateCapsFunction"/>
-      </field>
-      <field name="activatefunc">
-        <type name="PadActivateFunction" c:type="GstPadActivateFunction"/>
-      </field>
-      <field name="activatepushfunc">
-        <type name="PadActivateModeFunction"
-              c:type="GstPadActivateModeFunction"/>
-      </field>
-      <field name="activatepullfunc">
-        <type name="PadActivateModeFunction"
-              c:type="GstPadActivateModeFunction"/>
-      </field>
-      <field name="linkfunc">
-        <type name="PadLinkFunction" c:type="GstPadLinkFunction"/>
-      </field>
-      <field name="unlinkfunc">
-        <type name="PadUnlinkFunction" c:type="GstPadUnlinkFunction"/>
-      </field>
-      <field name="peer">
-        <type name="Pad" c:type="GstPad*"/>
-      </field>
-      <field name="sched_private">
-        <type name="any" c:type="gpointer"/>
-      </field>
-      <field name="chainfunc">
-        <type name="PadChainFunction" c:type="GstPadChainFunction"/>
-      </field>
-      <field name="checkgetrangefunc">
-        <type name="PadCheckGetRangeFunction"
-              c:type="GstPadCheckGetRangeFunction"/>
-      </field>
-      <field name="getrangefunc">
-        <type name="PadGetRangeFunction" c:type="GstPadGetRangeFunction"/>
-      </field>
-      <field name="eventfunc">
-        <type name="PadEventFunction" c:type="GstPadEventFunction"/>
-      </field>
-      <field name="mode">
-        <type name="ActivateMode" c:type="GstActivateMode"/>
-      </field>
-      <field name="querytypefunc">
-        <type name="PadQueryTypeFunction" c:type="GstPadQueryTypeFunction"/>
-      </field>
-      <field name="queryfunc">
-        <type name="PadQueryFunction" c:type="GstPadQueryFunction"/>
-      </field>
-      <field name="intlinkfunc">
-        <type name="PadIntLinkFunction" c:type="GstPadIntLinkFunction"/>
-      </field>
-      <field name="bufferallocfunc">
-        <type name="PadBufferAllocFunction"
-              c:type="GstPadBufferAllocFunction"/>
-      </field>
-      <field name="do_buffer_signals">
-        <type name="int" c:type="gint"/>
-      </field>
-      <field name="do_event_signals">
-        <type name="int" c:type="gint"/>
-      </field>
-      <field name="iterintlinkfunc">
-        <type name="PadIterIntLinkFunction"
-              c:type="GstPadIterIntLinkFunction"/>
-      </field>
-      <field name="block_destroy_data">
-        <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
-      </field>
-      <union name="abidata" c:type="abidata">
-        <record name="ABI" c:type="ABI">
-          <field name="block_callback_called" writable="1">
-            <type name="boolean" c:type="gboolean"/>
-          </field>
-          <field name="priv" writable="1">
-            <type name="PadPrivate" c:type="GstPadPrivate*"/>
-          </field>
-        </record>
-        <field name="_gst_reserved" writable="1">
-          <array zero-terminated="0" c:type="gpointer" fixed-size="2">
-            <type name="any"/>
-          </array>
-        </field>
-      </union>
-      <glib:signal name="have-data"
-                   doc="Signals that new data is available on the pad. This signal is used
-internally for implementing pad probes.
-See gst_pad_add_*_probe functions.">
-        <return-value transfer-ownership="full">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="mini_obj" transfer-ownership="none">
-            <type name="MiniObject" c:type="GstMiniObject"/>
-          </parameter>
-        </parameters>
-      </glib:signal>
-      <glib:signal name="linked"
-                   doc="Signals that a pad has been linked to the peer pad.">
-        <return-value transfer-ownership="full">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="peer" transfer-ownership="none">
-            <type name="Pad" c:type="GstPad"/>
-          </parameter>
-        </parameters>
-      </glib:signal>
-      <glib:signal name="request-link"
-                   doc="Signals that a pad connection has been requested.">
-        <return-value transfer-ownership="full">
-          <type name="none" c:type="void"/>
-        </return-value>
-      </glib:signal>
-      <glib:signal name="unlinked"
-                   doc="Signals that a pad has been unlinked from the peer pad.">
-        <return-value transfer-ownership="full">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="peer" transfer-ownership="none">
-            <type name="Pad" c:type="GstPad"/>
-          </parameter>
-        </parameters>
-      </glib:signal>
-    </class>
-    <callback name="PadAcceptCapsFunction"
-              c:type="GstPadAcceptCapsFunction"
-              doc="Check if @pad can accept @caps. By default this function will see if @caps
-intersect with the result from gst_pad_get_caps() by can be overridden to
-perform extra checks.">
-      <return-value transfer-ownership="none">
-        <type name="boolean" c:type="gboolean"/>
-      </return-value>
-      <parameters>
-        <parameter name="pad" transfer-ownership="none">
-          <type name="Pad" c:type="GstPad*"/>
-        </parameter>
-        <parameter name="caps" transfer-ownership="none">
-          <type name="Caps" c:type="GstCaps*"/>
-        </parameter>
-      </parameters>
-    </callback>
-    <callback name="PadActivateFunction"
-              c:type="GstPadActivateFunction"
-              doc="This function is called when the pad is activated during the element
-READY to PAUSED state change. By default this function will call the
-activate function that puts the pad in push mode but elements can
-override this function to activate the pad in pull mode if they wish.">
-      <return-value transfer-ownership="none">
-        <type name="boolean" c:type="gboolean"/>
-      </return-value>
-      <parameters>
-        <parameter name="pad" transfer-ownership="none">
-          <type name="Pad" c:type="GstPad*"/>
-        </parameter>
-      </parameters>
-    </callback>
-    <callback name="PadActivateModeFunction"
-              c:type="GstPadActivateModeFunction"
-              doc="The prototype of the push and pull activate functions.">
-      <return-value transfer-ownership="none">
-        <type name="boolean" c:type="gboolean"/>
-      </return-value>
-      <parameters>
-        <parameter name="pad" transfer-ownership="none">
-          <type name="Pad" c:type="GstPad*"/>
-        </parameter>
-        <parameter name="active" transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </parameter>
-      </parameters>
-    </callback>
-    <callback name="PadBlockCallback"
-              c:type="GstPadBlockCallback"
-              doc="Callback used by gst_pad_set_blocked_async(). Gets called when the blocking
-operation succeeds.">
-      <return-value transfer-ownership="none">
-        <type name="none" c:type="void"/>
-      </return-value>
-      <parameters>
-        <parameter name="pad" transfer-ownership="none">
-          <type name="Pad" c:type="GstPad*"/>
-        </parameter>
-        <parameter name="blocked" transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </parameter>
-        <parameter name="user_data" transfer-ownership="none" closure="2">
-          <type name="any" c:type="gpointer"/>
-        </parameter>
-      </parameters>
-    </callback>
-    <callback name="PadBufferAllocFunction"
-              c:type="GstPadBufferAllocFunction"
-              doc="Ask the sinkpad @pad to allocate a buffer with @offset, @size and @caps.
-The result will be stored in @buf.
-The purpose of this function is to allocate a buffer that is optimal to
-be processed by @pad. The function is mostly overridden by elements that can
-provide a hardware buffer in order to avoid additional memcpy operations.
-The function can return a buffer that has caps different from the requested
-new caps.
-If a format change was requested, the returned buffer will be one to hold
-the data of said new caps, so its size might be different from the requested
-When this function returns anything else than #GST_FLOW_OK, the buffer allocation
-failed and @buf does not contain valid data. If the function returns #GST_FLOW_OK and
-the @buf is NULL, a #GstBuffer will be created with @caps, @offset and @size.
-By default this function returns a new buffer of @size and with @caps containing
-purely malloced data. The buffer should be freed with gst_buffer_unref()
-after usage.
-value means @buf does not hold a valid buffer.">
-      <return-value transfer-ownership="full">
-        <type name="FlowReturn" c:type="GstFlowReturn"/>
-      </return-value>
-      <parameters>
-        <parameter name="pad" transfer-ownership="none">
-          <type name="Pad" c:type="GstPad*"/>
-        </parameter>
-        <parameter name="offset" transfer-ownership="none">
-          <type name="uint64" c:type="guint64"/>
-        </parameter>
-        <parameter name="size" transfer-ownership="none">
-          <type name="uint" c:type="guint"/>
-        </parameter>
-        <parameter name="caps" transfer-ownership="none">
-          <type name="Caps" c:type="GstCaps*"/>
-        </parameter>
-        <parameter name="buf" transfer-ownership="none">
-          <type name="Buffer" c:type="GstBuffer**"/>
-        </parameter>
-      </parameters>
-    </callback>
-    <callback name="PadChainFunction"
-              c:type="GstPadChainFunction"
-              doc="A function that will be called on sinkpads when chaining buffers.
-The function typically processes the data contained in the buffer and
-either consumes the data or passes it on to the internally linked pad(s).
-The implementer of this function receives a refcount to @buffer and should
-gst_buffer_unref() when the buffer is no longer needed.
-When a chain function detects an error in the data stream, it must post an
-error on the bus and return an appropriate #GstFlowReturn value.">
-      <return-value transfer-ownership="full">
-        <type name="FlowReturn" c:type="GstFlowReturn"/>
-      </return-value>
-      <parameters>
-        <parameter name="pad" transfer-ownership="none">
-          <type name="Pad" c:type="GstPad*"/>
-        </parameter>
-        <parameter name="buffer" transfer-ownership="none">
-          <type name="Buffer" c:type="GstBuffer*"/>
-        </parameter>
-      </parameters>
-    </callback>
-    <callback name="PadChainListFunction"
-              c:type="GstPadChainListFunction"
-              doc="A function that will be called on sinkpads when chaining buffer lists.
-The function typically processes the data contained in the buffer list and
-either consumes the data or passes it on to the internally linked pad(s).
-The implementer of this function receives a refcount to @list and
-should gst_buffer_list_unref() when the list is no longer needed.
-When a chainlist function detects an error in the data stream, it must
-post an error on the bus and return an appropriate #GstFlowReturn value.">
-      <return-value transfer-ownership="full">
-        <type name="FlowReturn" c:type="GstFlowReturn"/>
-      </return-value>
-      <parameters>
-        <parameter name="pad" transfer-ownership="none">
-          <type name="Pad" c:type="GstPad*"/>
-        </parameter>
-        <parameter name="list" transfer-ownership="none">
-          <type name="BufferList" c:type="GstBufferList*"/>
-        </parameter>
-      </parameters>
-    </callback>
-    <callback name="PadCheckGetRangeFunction"
-              c:type="GstPadCheckGetRangeFunction"
-              doc="Check if @pad can be activated in pull mode.
-This function will be deprecated after 0.10; use the seeking query to check
-if a pad can support random access.">
-      <return-value transfer-ownership="none">
-        <type name="boolean" c:type="gboolean"/>
-      </return-value>
-      <parameters>
-        <parameter name="pad" transfer-ownership="none">
-          <type name="Pad" c:type="GstPad*"/>
-        </parameter>
-      </parameters>
-    </callback>
-    <record name="PadClass"
-            c:type="GstPadClass"
-            glib:is-gtype-struct-for="Pad">
-      <field name="parent_class">
-        <type name="ObjectClass" c:type="GstObjectClass"/>
-      </field>
-      <field name="linked">
-        <callback name="linked" c:type="linked">
-          <return-value transfer-ownership="none">
-            <type name="none" c:type="void"/>
-          </return-value>
-          <parameters>
-            <parameter name="pad" transfer-ownership="none">
-              <type name="Pad" c:type="GstPad*"/>
-            </parameter>
-            <parameter name="peer" transfer-ownership="none">
-              <type name="Pad" c:type="GstPad*"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="unlinked">
-        <callback name="unlinked" c:type="unlinked">
-          <return-value transfer-ownership="none">
-            <type name="none" c:type="void"/>
-          </return-value>
-          <parameters>
-            <parameter name="pad" transfer-ownership="none">
-              <type name="Pad" c:type="GstPad*"/>
-            </parameter>
-            <parameter name="peer" transfer-ownership="none">
-              <type name="Pad" c:type="GstPad*"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="request_link">
-        <callback name="request_link" c:type="request_link">
-          <return-value transfer-ownership="none">
-            <type name="none" c:type="void"/>
-          </return-value>
-          <parameters>
-            <parameter name="pad" transfer-ownership="none">
-              <type name="Pad" c:type="GstPad*"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="have_data">
-        <callback name="have_data" c:type="have_data">
-          <return-value transfer-ownership="none">
-            <type name="boolean" c:type="gboolean"/>
-          </return-value>
-          <parameters>
-            <parameter name="pad" transfer-ownership="none">
-              <type name="Pad" c:type="GstPad*"/>
-            </parameter>
-            <parameter name="data" transfer-ownership="none">
-              <type name="MiniObject" c:type="GstMiniObject*"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="_gst_reserved">
-        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
-          <type name="any"/>
-        </array>
-      </field>
-    </record>
-    <enumeration name="PadDirection"
-                 doc="The direction of a pad."
-                 c:type="GstPadDirection">
-      <member name="unknown" value="0" c:identifier="GST_PAD_UNKNOWN"/>
-      <member name="src" value="1" c:identifier="GST_PAD_SRC"/>
-      <member name="sink" value="2" c:identifier="GST_PAD_SINK"/>
-    </enumeration>
-    <callback name="PadDispatcherFunction"
-              c:type="GstPadDispatcherFunction"
-              doc="A dispatcher function is called for all internally linked pads, see
-gst_pad_dispatcher().">
-      <return-value transfer-ownership="none">
-        <type name="boolean" c:type="gboolean"/>
-      </return-value>
-      <parameters>
-        <parameter name="pad" transfer-ownership="none">
-          <type name="Pad" c:type="GstPad*"/>
-        </parameter>
-        <parameter name="data" transfer-ownership="none">
-          <type name="any" c:type="gpointer"/>
-        </parameter>
-      </parameters>
-    </callback>
-    <callback name="PadEventFunction"
-              c:type="GstPadEventFunction"
-              doc="Function signature to handle an event for the pad.">
-      <return-value transfer-ownership="none">
-        <type name="boolean" c:type="gboolean"/>
-      </return-value>
-      <parameters>
-        <parameter name="pad" transfer-ownership="none">
-          <type name="Pad" c:type="GstPad*"/>
-        </parameter>
-        <parameter name="event" transfer-ownership="none">
-          <type name="Event" c:type="GstEvent*"/>
-        </parameter>
-      </parameters>
-    </callback>
-    <callback name="PadFixateCapsFunction"
-              c:type="GstPadFixateCapsFunction"
-              doc="Given possibly unfixed caps @caps, let @pad use its default prefered
-format to make a fixed caps. @caps should be writable. By default this
-function will pick the first value of any ranges or lists in the caps but
-elements can override this function to perform other behaviour.">
-      <return-value transfer-ownership="none">
-        <type name="none" c:type="void"/>
-      </return-value>
-      <parameters>
-        <parameter name="pad" transfer-ownership="none">
-          <type name="Pad" c:type="GstPad*"/>
-        </parameter>
-        <parameter name="caps" transfer-ownership="none">
-          <type name="Caps" c:type="GstCaps*"/>
-        </parameter>
-      </parameters>
-    </callback>
-    <bitfield name="PadFlags" doc="Pad state flags" c:type="GstPadFlags">
-      <member name="blocked" value="16" c:identifier="GST_PAD_BLOCKED"/>
-      <member name="flushing" value="32" c:identifier="GST_PAD_FLUSHING"/>
-      <member name="in_getcaps" value="64" c:identifier="GST_PAD_IN_GETCAPS"/>
-      <member name="in_setcaps" value="128" c:identifier="GST_PAD_IN_SETCAPS"/>
-      <member name="blocking" value="256" c:identifier="GST_PAD_BLOCKING"/>
-      <member name="flag_last" value="4096" c:identifier="GST_PAD_FLAG_LAST"/>
-    </bitfield>
-    <callback name="PadGetCapsFunction"
-              c:type="GstPadGetCapsFunction"
-              doc="Returns a copy of the capabilities of the specified pad. By default this
-function will return the pad template capabilities, but can optionally
-be overridden by elements.">
-      <return-value transfer-ownership="full">
-        <type name="Caps" c:type="GstCaps*"/>
-      </return-value>
-      <parameters>
-        <parameter name="pad" transfer-ownership="none">
-          <type name="Pad" c:type="GstPad*"/>
-        </parameter>
-      </parameters>
-    </callback>
-    <callback name="PadGetRangeFunction"
-              c:type="GstPadGetRangeFunction"
-              doc="This function will be called on source pads when a peer element
-request a buffer at the specified @offset and @length. If this function
-returns #GST_FLOW_OK, the result buffer will be stored in @buffer. The
-contents of @buffer is invalid for any other return value.
-This function is installed on a source pad with
-gst_pad_set_getrange_function() and can only be called on source pads after
-they are successfully activated with gst_pad_activate_pull().
-between 0 and the length in bytes of the data available on @pad. The
-length (duration in bytes) can be retrieved with a #GST_QUERY_DURATION or with a
-#GST_QUERY_SEEKING.
-Any @offset larger or equal than the length will make the function return
-#GST_FLOW_UNEXPECTED, which corresponds to EOS. In this case @buffer does not
-contain a valid buffer.
-The buffer size of @buffer might be smaller than @length when @offset is near
-the end of the stream.
-It is allowed to call this function with a 0 @length and valid @offset, in
-which case @buffer will contain a 0-sized buffer and the function returns
-#GST_FLOW_OK.
-When this function is called with a -1 @offset, the sequentially next buffer
-of length @length in the stream is returned.
-When this function is called with a -1 @length, a buffer with a default
-optimal length is returned in @buffer. The length might depend on the value
-of @offset.">
-      <return-value transfer-ownership="full">
-        <type name="FlowReturn" c:type="GstFlowReturn"/>
-      </return-value>
-      <parameters>
-        <parameter name="pad" transfer-ownership="none">
-          <type name="Pad" c:type="GstPad*"/>
-        </parameter>
-        <parameter name="offset" transfer-ownership="none">
-          <type name="uint64" c:type="guint64"/>
-        </parameter>
-        <parameter name="length" transfer-ownership="none">
-          <type name="uint" c:type="guint"/>
-        </parameter>
-        <parameter name="buffer" transfer-ownership="none">
-          <type name="Buffer" c:type="GstBuffer**"/>
-        </parameter>
-      </parameters>
-    </callback>
-    <callback name="PadIntLinkFunction"
-              c:type="GstPadIntLinkFunction"
-              doc="The signature of the internal pad link function.
-the inside of the parent element.
-The caller must call g_list_free() on it after use."
-              deprecated="use the threadsafe #GstPadIterIntLinkFunction instead.">
-      <return-value transfer-ownership="full">
-        <type name="GLib.List" c:type="GList*"/>
-      </return-value>
-      <parameters>
-        <parameter name="pad" transfer-ownership="none">
-          <type name="Pad" c:type="GstPad*"/>
-        </parameter>
-      </parameters>
-    </callback>
-    <callback name="PadIterIntLinkFunction"
-              c:type="GstPadIterIntLinkFunction"
-              doc="The signature of the internal pad link iterator function.
-linked to the given pad on the inside of the parent element.
-the caller must call gst_iterator_free() after usage.
-Since 0.10.21">
-      <return-value transfer-ownership="full">
-        <type name="Iterator" c:type="GstIterator*"/>
-      </return-value>
-      <parameters>
-        <parameter name="pad" transfer-ownership="none">
-          <type name="Pad" c:type="GstPad*"/>
-        </parameter>
-      </parameters>
-    </callback>
-    <callback name="PadLinkFunction" c:type="GstPadLinkFunction">
-      <return-value transfer-ownership="full">
-        <type name="PadLinkReturn" c:type="GstPadLinkReturn"/>
-      </return-value>
-      <parameters>
-        <parameter name="pad" transfer-ownership="none">
-          <type name="Pad" c:type="GstPad*"/>
-        </parameter>
-        <parameter name="peer" transfer-ownership="none">
-          <type name="Pad" c:type="GstPad*"/>
-        </parameter>
-      </parameters>
-    </callback>
-    <enumeration name="PadLinkReturn"
-                 doc="Result values from gst_pad_link and friends."
-                 c:type="GstPadLinkReturn">
-      <member name="ok" value="0" c:identifier="GST_PAD_LINK_OK"/>
-      <member name="wrong_hierarchy"
-              value="-1"
-              c:identifier="GST_PAD_LINK_WRONG_HIERARCHY"/>
-      <member name="was_linked"
-              value="-2"
-              c:identifier="GST_PAD_LINK_WAS_LINKED"/>
-      <member name="wrong_direction"
-              value="-3"
-              c:identifier="GST_PAD_LINK_WRONG_DIRECTION"/>
-      <member name="noformat" value="-4" c:identifier="GST_PAD_LINK_NOFORMAT"/>
-      <member name="nosched" value="-5" c:identifier="GST_PAD_LINK_NOSCHED"/>
-      <member name="refused" value="-6" c:identifier="GST_PAD_LINK_REFUSED"/>
-    </enumeration>
-    <enumeration name="PadPresence"
-                 doc="gst_element_get_request_pad().
-Indicates when this pad will become available."
-                 c:type="GstPadPresence">
-      <member name="always" value="0" c:identifier="GST_PAD_ALWAYS"/>
-      <member name="sometimes" value="1" c:identifier="GST_PAD_SOMETIMES"/>
-      <member name="request" value="2" c:identifier="GST_PAD_REQUEST"/>
-    </enumeration>
-    <record name="PadPrivate" c:type="GstPadPrivate">
-    </record>
-    <callback name="PadQueryFunction"
-              c:type="GstPadQueryFunction"
-              doc="The signature of the query function.">
-      <return-value transfer-ownership="none">
-        <type name="boolean" c:type="gboolean"/>
-      </return-value>
-      <parameters>
-        <parameter name="pad" transfer-ownership="none">
-          <type name="Pad" c:type="GstPad*"/>
-        </parameter>
-        <parameter name="query" transfer-ownership="none">
-          <type name="Query" c:type="GstQuery*"/>
-        </parameter>
-      </parameters>
-    </callback>
-    <callback name="PadQueryTypeFunction"
-              c:type="GstPadQueryTypeFunction"
-              doc="The signature of the query types function.">
-      <return-value transfer-ownership="none">
-        <type name="QueryType" c:type="GstQueryType*"/>
-      </return-value>
-      <parameters>
-        <parameter name="pad" transfer-ownership="none">
-          <type name="Pad" c:type="GstPad*"/>
-        </parameter>
-      </parameters>
-    </callback>
-    <callback name="PadSetCapsFunction"
-              c:type="GstPadSetCapsFunction"
-              doc="Set @caps on @pad. By default this function updates the caps of the
-pad but the function can be overriden by elements to perform extra
-actions or verifications.">
-      <return-value transfer-ownership="none">
-        <type name="boolean" c:type="gboolean"/>
-      </return-value>
-      <parameters>
-        <parameter name="pad" transfer-ownership="none">
-          <type name="Pad" c:type="GstPad*"/>
-        </parameter>
-        <parameter name="caps" transfer-ownership="none">
-          <type name="Caps" c:type="GstCaps*"/>
-        </parameter>
-      </parameters>
-    </callback>
-    <class name="PadTemplate"
-           c:type="GstPadTemplate"
-           doc="The padtemplate object."
-           parent="Object"
-           glib:type-name="GstPadTemplate"
-           glib:get-type="gst_pad_template_get_type"
-           glib:type-struct="PadTemplateClass">
-      <constructor name="new"
-                   c:identifier="gst_pad_template_new"
-                   doc="Creates a new pad template with a name according to the given template
-and with the given arguments. This functions takes ownership of the provided
-caps, so be sure to not use them afterwards.">
-        <return-value transfer-ownership="full">
-          <type name="PadTemplate" c:type="GstPadTemplate*"/>
-        </return-value>
-        <parameters>
-          <parameter name="name_template" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="direction" transfer-ownership="none">
-            <type name="PadDirection" c:type="GstPadDirection"/>
-          </parameter>
-          <parameter name="presence" transfer-ownership="none">
-            <type name="PadPresence" c:type="GstPadPresence"/>
-          </parameter>
-          <parameter name="caps" transfer-ownership="none">
-            <type name="Caps" c:type="GstCaps*"/>
-          </parameter>
-        </parameters>
-      </constructor>
-      <method name="get_caps"
-              c:identifier="gst_pad_template_get_caps"
-              doc="Gets the capabilities of the pad template.
-the caps, take a ref (see gst_caps_ref ()).">
-        <return-value transfer-ownership="full">
-          <type name="Caps" c:type="GstCaps*"/>
-        </return-value>
-      </method>
-      <method name="pad_created"
-              c:identifier="gst_pad_template_pad_created"
-              doc="Emit the pad-created signal for this template when created by this pad.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="pad" transfer-ownership="none">
-            <type name="Pad" c:type="GstPad*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <property name="caps" writable="1" construct-only="1">
-        <type name="Caps" c:type="GstCaps"/>
-      </property>
-      <property name="direction" writable="1" construct-only="1">
-        <type name="PadDirection" c:type="GstPadDirection"/>
-      </property>
-      <property name="name-template" writable="1" construct-only="1">
-        <type name="utf8" c:type="gchararray"/>
-      </property>
-      <property name="presence" writable="1" construct-only="1">
-        <type name="PadPresence" c:type="GstPadPresence"/>
-      </property>
-      <field name="object">
-        <type name="Object" c:type="GstObject"/>
-      </field>
-      <field name="name_template">
-        <type name="utf8" c:type="gchar*"/>
-      </field>
-      <field name="direction">
-        <type name="PadDirection" c:type="GstPadDirection"/>
-      </field>
-      <field name="presence">
-        <type name="PadPresence" c:type="GstPadPresence"/>
-      </field>
-      <field name="caps">
-        <type name="Caps" c:type="GstCaps*"/>
-      </field>
-      <field name="_gst_reserved">
-        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
-          <type name="any"/>
-        </array>
-      </field>
-      <glib:signal name="pad-created"
-                   doc="This signal is fired when an element creates a pad from this template.">
-        <return-value transfer-ownership="full">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="pad" transfer-ownership="none">
-            <type name="Pad" c:type="GstPad"/>
-          </parameter>
-        </parameters>
-      </glib:signal>
-    </class>
-    <record name="PadTemplateClass"
-            c:type="GstPadTemplateClass"
-            glib:is-gtype-struct-for="PadTemplate">
-      <field name="parent_class">
-        <type name="ObjectClass" c:type="GstObjectClass"/>
-      </field>
-      <field name="pad_created">
-        <callback name="pad_created" c:type="pad_created">
-          <return-value transfer-ownership="none">
-            <type name="none" c:type="void"/>
-          </return-value>
-          <parameters>
-            <parameter name="templ" transfer-ownership="none">
-              <type name="PadTemplate" c:type="GstPadTemplate*"/>
-            </parameter>
-            <parameter name="pad" transfer-ownership="none">
-              <type name="Pad" c:type="GstPad*"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="_gst_reserved">
-        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
-          <type name="any"/>
-        </array>
-      </field>
-    </record>
-    <bitfield name="PadTemplateFlags"
-              doc="Flags for the padtemplate"
-              c:type="GstPadTemplateFlags">
-      <member name="fixed" value="16" c:identifier="GST_PAD_TEMPLATE_FIXED"/>
-      <member name="flag_last"
-              value="256"
-              c:identifier="GST_PAD_TEMPLATE_FLAG_LAST"/>
-    </bitfield>
-    <callback name="PadUnlinkFunction" c:type="GstPadUnlinkFunction">
-      <return-value transfer-ownership="none">
-        <type name="none" c:type="void"/>
-      </return-value>
-      <parameters>
-        <parameter name="pad" transfer-ownership="none">
-          <type name="Pad" c:type="GstPad*"/>
-        </parameter>
-      </parameters>
-    </callback>
-    <record name="ParamSpecFraction"
-            c:type="GstParamSpecFraction"
-            doc="A GParamSpec derived structure that contains the meta data for fractional
-properties.">
-      <field name="parent_instance" writable="1">
-        <type name="GObject.ParamSpec" c:type="GParamSpec"/>
-      </field>
-      <field name="min_num" writable="1">
-        <type name="int" c:type="gint"/>
-      </field>
-      <field name="min_den" writable="1">
-        <type name="int" c:type="gint"/>
-      </field>
-      <field name="max_num" writable="1">
-        <type name="int" c:type="gint"/>
-      </field>
-      <field name="max_den" writable="1">
-        <type name="int" c:type="gint"/>
-      </field>
-      <field name="def_num" writable="1">
-        <type name="int" c:type="gint"/>
-      </field>
-      <field name="def_den" writable="1">
-        <type name="int" c:type="gint"/>
-      </field>
-    </record>
-    <record name="ParamSpecMiniObject"
-            c:type="GstParamSpecMiniObject"
-            doc="A %GParamSpec derived structure that contains the meta data
-for %GstMiniObject properties.">
-      <field name="parent_instance" writable="1">
-        <type name="GObject.ParamSpec" c:type="GParamSpec"/>
-      </field>
-    </record>
-    <record name="ParseContext"
-            c:type="GstParseContext"
-            doc="Opaque structure."
-            version="0.10.20">
-      <constructor name="new"
-                   c:identifier="gst_parse_context_new"
-                   doc="Allocates a parse context for use with gst_parse_launch_full() or
-gst_parse_launchv_full().
-when no longer needed."
-                   version="0.10.20">
-        <return-value transfer-ownership="full">
-          <type name="ParseContext" c:type="GstParseContext*"/>
-        </return-value>
-      </constructor>
-      <method name="get_missing_elements"
-              c:identifier="gst_parse_context_get_missing_elements"
-              doc="Retrieve missing elements from a previous run of gst_parse_launch_full()
-or gst_parse_launchv_full(). Will only return results if an error code
-of %GST_PARSE_ERROR_NO_SUCH_ELEMENT was returned.
-missing elements. Free with g_strfreev() when no longer needed."
-              version="0.10.20">
-        <return-value transfer-ownership="full">
-          <array c:type="gchar**">
-            <type name="utf8"/>
-          </array>
-        </return-value>
-      </method>
-      <method name="free"
-              c:identifier="gst_parse_context_free"
-              doc="Frees a parse context previously allocated with gst_parse_context_new()."
-              version="0.10.20">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-      </method>
-    </record>
-    <enumeration name="ParseError"
-                 doc="The different parsing errors that can occur."
-                 c:type="GstParseError"
-                 glib:error-quark="gst_parse_error_quark">
-      <member name="syntax" value="0" c:identifier="GST_PARSE_ERROR_SYNTAX"/>
-      <member name="no_such_element"
-              value="1"
-              c:identifier="GST_PARSE_ERROR_NO_SUCH_ELEMENT"/>
-      <member name="no_such_property"
-              value="2"
-              c:identifier="GST_PARSE_ERROR_NO_SUCH_PROPERTY"/>
-      <member name="link" value="3" c:identifier="GST_PARSE_ERROR_LINK"/>
-      <member name="could_not_set_property"
-              value="4"
-              c:identifier="GST_PARSE_ERROR_COULD_NOT_SET_PROPERTY"/>
-      <member name="empty_bin"
-              value="5"
-              c:identifier="GST_PARSE_ERROR_EMPTY_BIN"/>
-      <member name="empty" value="6" c:identifier="GST_PARSE_ERROR_EMPTY"/>
-    </enumeration>
-    <bitfield name="ParseFlags"
-              doc="(default behaviour is to return partially constructed bins or elements
-in some cases)
-Parsing options."
-              version="0.10.20"
-              c:type="GstParseFlags">
-      <member name="none" value="0" c:identifier="GST_PARSE_FLAG_NONE"/>
-      <member name="fatal_errors"
-              value="1"
-              c:identifier="GST_PARSE_FLAG_FATAL_ERRORS"/>
-    </bitfield>
-    <class name="Pipeline"
-           c:type="GstPipeline"
-           doc="GST_PIPELINE_FLAG_FIXED_CLOCK is set.
-property would be the running_time, the total time spent in the
-PLAYING state without being flushed. (deprecated, use the start_time
-on GstElement).
-when setting elements to PLAYING.
-The #GstPipeline structure."
-           parent="Bin"
-           glib:type-name="GstPipeline"
-           glib:get-type="gst_pipeline_get_type"
-           glib:type-struct="PipelineClass">
-      <implements name="ChildProxy"/>
-      <constructor name="new"
-                   c:identifier="gst_pipeline_new"
-                   doc="Create a new pipeline with the given name.
-MT safe.">
-        <return-value transfer-ownership="full">
-          <type name="Pipeline" c:type="GstElement*"/>
-        </return-value>
-        <parameters>
-          <parameter name="name" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-        </parameters>
-      </constructor>
-      <method name="get_bus"
-              c:identifier="gst_pipeline_get_bus"
-              doc="Gets the #GstBus of @pipeline. The bus allows applications to receive
-#GstMessage packets.
-MT safe.">
-        <return-value transfer-ownership="full">
-          <type name="Bus" c:type="GstBus*"/>
-        </return-value>
-      </method>
-      <method name="set_new_stream_time"
-              c:identifier="gst_pipeline_set_new_stream_time"
-              doc="Set the new start time of @pipeline to @time. The start time is used to
-set the base time on the elements (see gst_element_set_base_time())
-in the PAUSED-&gt;PLAYING state transition.
-Setting @time to #GST_CLOCK_TIME_NONE will disable the pipeline&apos;s management
-of element base time. The application will then be responsible for
-performing base time distribution. This is sometimes useful if you want to
-synchronize capture from multiple pipelines, and you can also ensure that the
-pipelines have the same clock.
-MT safe.
-gst_element_set_start_time()."
-              deprecated="This function has the wrong name and is equivalent to">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="time" transfer-ownership="none">
-            <type name="ClockTime" c:type="GstClockTime"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_last_stream_time"
-              c:identifier="gst_pipeline_get_last_stream_time"
-              doc="Gets the last running time of @pipeline. If the pipeline is PLAYING,
-the returned time is the running time used to configure the element&apos;s
-base time in the PAUSED-&gt;PLAYING state. If the pipeline is PAUSED, the
-returned time is the running time when the pipeline was paused.
-This function returns #GST_CLOCK_TIME_NONE if the pipeline was
-configured to not handle the management of the element&apos;s base time
-(see gst_pipeline_set_new_stream_time()).
-MT safe.
-gst_element_get_start_time()."
-              deprecated="This function has the wrong name and is equivalent to">
-        <return-value transfer-ownership="full">
-          <type name="ClockTime" c:type="GstClockTime"/>
-        </return-value>
-      </method>
-      <method name="use_clock"
-              c:identifier="gst_pipeline_use_clock"
-              doc="Force @pipeline to use the given @clock. The pipeline will
-always use the given clock even if new clock providers are added
-to this pipeline.
-If @clock is NULL all clocking will be disabled which will make
-the pipeline run as fast as possible.
-MT safe.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="clock" transfer-ownership="none">
-            <type name="Clock" c:type="GstClock*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="set_clock"
-              c:identifier="gst_pipeline_set_clock"
-              doc="Set the clock for @pipeline. The clock will be distributed
-to all the elements managed by the pipeline.
-some element did not accept the clock.
-MT safe.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="clock" transfer-ownership="none">
-            <type name="Clock" c:type="GstClock*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_clock"
-              c:identifier="gst_pipeline_get_clock"
-              doc="Gets the current clock used by @pipeline.">
-        <return-value transfer-ownership="full">
-          <type name="Clock" c:type="GstClock*"/>
-        </return-value>
-      </method>
-      <method name="auto_clock"
-              c:identifier="gst_pipeline_auto_clock"
-              doc="Let @pipeline select a clock automatically. This is the default
-behaviour.
-Use this function if you previous forced a fixed clock with
-gst_pipeline_use_clock() and want to restore the default
-pipeline clock selection algorithm.
-MT safe.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-      </method>
-      <method name="set_delay"
-              c:identifier="gst_pipeline_set_delay"
-              doc="Set the expected delay needed for all elements to perform the
-PAUSED to PLAYING state change. @delay will be added to the
-base time of the elements so that they wait an additional @delay
-amount of time before starting to process buffers and cannot be
-#GST_CLOCK_TIME_NONE.
-This option is used for tuning purposes and should normally not be
-used.
-MT safe."
-              version="0.10.5">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="delay" transfer-ownership="none">
-            <type name="ClockTime" c:type="GstClockTime"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_delay"
-              c:identifier="gst_pipeline_get_delay"
-              doc="Get the configured delay (see gst_pipeline_set_delay()).
-MT safe."
-              version="0.10.5">
-        <return-value transfer-ownership="full">
-          <type name="ClockTime" c:type="GstClockTime"/>
-        </return-value>
-      </method>
-      <method name="set_auto_flush_bus"
-              c:identifier="gst_pipeline_set_auto_flush_bus"
-              doc="the pipeline goes from READY to NULL state
-Usually, when a pipeline goes from READY to NULL state, it automatically
-flushes all pending messages on the bus, which is done for refcounting
-purposes, to break circular references.
-This means that applications that update state using (async) bus messages
-(e.g. do certain things when a pipeline goes from PAUSED to READY) might
-not get to see messages when the pipeline is shut down, because they might
-be flushed before they can be dispatched in the main thread. This behaviour
-can be disabled using this function.
-It is important that all messages on the bus are handled when the
-automatic flushing is disabled else memory leaks will be introduced.
-MT safe."
-              version="0.10.4">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="auto_flush" transfer-ownership="none">
-            <type name="boolean" c:type="gboolean"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_auto_flush_bus"
-              c:identifier="gst_pipeline_get_auto_flush_bus"
-              doc="Check if @pipeline will automatically flush messages when going to
-the NULL state.
-going from READY to NULL state or not.
-MT safe."
-              version="0.10.4">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-      </method>
-      <property name="auto-flush-bus"
-                version="0.10.4"
-                writable="1"
-                doc="Whether or not to automatically flush all messages on the
-pipeline&apos;s bus when going from READY to NULL state. Please see
-gst_pipeline_set_auto_flush_bus() for more information on this option.">
-        <type name="boolean" c:type="gboolean"/>
-      </property>
-      <property name="delay" writable="1">
-        <type name="uint64" c:type="guint64"/>
-      </property>
-      <field name="bin">
-        <type name="Bin" c:type="GstBin"/>
-      </field>
-      <field name="fixed_clock">
-        <type name="Clock" c:type="GstClock*"/>
-      </field>
-      <field name="stream_time">
-        <type name="ClockTime" c:type="GstClockTime"/>
-      </field>
-      <field name="delay">
-        <type name="ClockTime" c:type="GstClockTime"/>
-      </field>
-      <field name="priv">
-        <type name="PipelinePrivate" c:type="GstPipelinePrivate*"/>
-      </field>
-      <field name="_gst_reserved">
-        <array zero-terminated="0" c:type="gpointer" fixed-size="3">
-          <type name="any"/>
-        </array>
-      </field>
-    </class>
-    <record name="PipelineClass"
-            c:type="GstPipelineClass"
-            glib:is-gtype-struct-for="Pipeline">
-      <field name="parent_class">
-        <type name="BinClass" c:type="GstBinClass"/>
-      </field>
-      <field name="_gst_reserved">
-        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
-          <type name="any"/>
-        </array>
-      </field>
-    </record>
-    <bitfield name="PipelineFlags"
-              doc="Pipeline flags"
-              c:type="GstPipelineFlags">
-      <member name="fixed_clock"
-              value="33554432"
-              c:identifier="GST_PIPELINE_FLAG_FIXED_CLOCK"/>
-      <member name="last"
-              value="536870912"
-              c:identifier="GST_PIPELINE_FLAG_LAST"/>
-    </bitfield>
-    <record name="PipelinePrivate" c:type="GstPipelinePrivate">
-    </record>
-    <class name="Plugin"
-           c:type="GstPlugin"
-           doc="The plugin object"
-           parent="Object"
-           glib:type-name="GstPlugin"
-           glib:get-type="gst_plugin_get_type"
-           glib:type-struct="PluginClass">
-      <function name="register_static"
-                c:identifier="gst_plugin_register_static"
-                doc="plugin was compiled for, you can just use GST_VERSION_MAJOR here
-plugin was compiled for, you can just use GST_VERSION_MINOR here
-library-specific namespace prefix in order to avoid name conflicts in
-case a similar plugin with the same name ever gets added to GStreamer)
-(see #GstPluginDesc above) or the plugin will not be registered.
-Registers a static plugin, ie. a plugin which is private to an application
-or library and contained within the application or library (as opposed to
-being shipped as a separate module file).
-You must make sure that GStreamer has been initialised (with gst_init() or
-via gst_init_get_option_group()) before calling this function."
-                version="0.10.16">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="major_version" transfer-ownership="none">
-            <type name="int" c:type="gint"/>
-          </parameter>
-          <parameter name="minor_version" transfer-ownership="none">
-            <type name="int" c:type="gint"/>
-          </parameter>
-          <parameter name="name" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="description" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="init_func" transfer-ownership="none" scope="call">
-            <type name="PluginInitFunc" c:type="GstPluginInitFunc"/>
-          </parameter>
-          <parameter name="version" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="license" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="source" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="package" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="origin" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-        </parameters>
-      </function>
-      <function name="register_static_full"
-                c:identifier="gst_plugin_register_static_full"
-                doc="plugin was compiled for, you can just use GST_VERSION_MAJOR here
-plugin was compiled for, you can just use GST_VERSION_MINOR here
-library-specific namespace prefix in order to avoid name conflicts in
-case a similar plugin with the same name ever gets added to GStreamer)
-(see #GstPluginDesc above) or the plugin will not be registered.
-Registers a static plugin, ie. a plugin which is private to an application
-or library and contained within the application or library (as opposed to
-being shipped as a separate module file) with a #GstPluginInitFullFunc
-which allows user data to be passed to the callback function (useful
-for bindings).
-You must make sure that GStreamer has been initialised (with gst_init() or
-via gst_init_get_option_group()) before calling this function."
-                version="0.10.24">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="major_version" transfer-ownership="none">
-            <type name="int" c:type="gint"/>
-          </parameter>
-          <parameter name="minor_version" transfer-ownership="none">
-            <type name="int" c:type="gint"/>
-          </parameter>
-          <parameter name="name" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="description" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="init_full_func"
-                     transfer-ownership="none"
-                     scope="call">
-            <type name="PluginInitFullFunc" c:type="GstPluginInitFullFunc"/>
-          </parameter>
-          <parameter name="version" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="license" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="source" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="package" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="origin" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="user_data" transfer-ownership="none">
-            <type name="any" c:type="gpointer"/>
-          </parameter>
-        </parameters>
-      </function>
-      <function name="load_file"
-                c:identifier="gst_plugin_load_file"
-                doc="Loads the given plugin and refs it.  Caller needs to unref after use.
-newly-loaded GstPlugin, or NULL if an error occurred."
-                throws="1">
-        <return-value transfer-ownership="full">
-          <type name="Plugin" c:type="GstPlugin*"/>
-        </return-value>
-        <parameters>
-          <parameter name="filename" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-        </parameters>
-      </function>
-      <function name="load_by_name"
-                c:identifier="gst_plugin_load_by_name"
-                doc="Load the named plugin. Refs the plugin.">
-        <return-value transfer-ownership="full">
-          <type name="Plugin" c:type="GstPlugin*"/>
-        </return-value>
-        <parameters>
-          <parameter name="name" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-        </parameters>
-      </function>
-      <function name="list_free"
-                c:identifier="gst_plugin_list_free"
-                doc="Unrefs each member of @list, then frees the list.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="list" transfer-ownership="none">
-            <type name="GLib.List" c:type="GList*"/>
-          </parameter>
-        </parameters>
-      </function>
-      <method name="get_name"
-              c:identifier="gst_plugin_get_name"
-              doc="Get the short name of the plugin">
-        <return-value transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </return-value>
-      </method>
-      <method name="get_description"
-              c:identifier="gst_plugin_get_description"
-              doc="Get the long descriptive name of the plugin">
-        <return-value transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </return-value>
-      </method>
-      <method name="get_filename"
-              c:identifier="gst_plugin_get_filename"
-              doc="get the filename of the plugin">
-        <return-value transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </return-value>
-      </method>
-      <method name="get_version"
-              c:identifier="gst_plugin_get_version"
-              doc="get the version of the plugin">
-        <return-value transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </return-value>
-      </method>
-      <method name="get_license"
-              c:identifier="gst_plugin_get_license"
-              doc="get the license of the plugin">
-        <return-value transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </return-value>
-      </method>
-      <method name="get_source"
-              c:identifier="gst_plugin_get_source"
-              doc="get the source module the plugin belongs to.">
-        <return-value transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </return-value>
-      </method>
-      <method name="get_package"
-              c:identifier="gst_plugin_get_package"
-              doc="get the package the plugin belongs to.">
-        <return-value transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </return-value>
-      </method>
-      <method name="get_origin"
-              c:identifier="gst_plugin_get_origin"
-              doc="get the URL where the plugin comes from">
-        <return-value transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </return-value>
-      </method>
-      <method name="get_cache_data"
-              c:identifier="gst_plugin_get_cache_data"
-              doc="Gets the plugin specific data cache. If it is %NULL there is no cached data
-stored. This is the case when the registry is getting rebuilt."
-              version="0.10.24">
-        <return-value transfer-ownership="none">
-          <type name="Structure" c:type="GstStructure*"/>
-        </return-value>
-      </method>
-      <method name="set_cache_data"
-              c:identifier="gst_plugin_set_cache_data"
-              doc="Adds plugin specific data to cache. Passes the ownership of the structure to
-the @plugin.
-The cache is flushed every time the registry is rebuilt."
-              version="0.10.24">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="cache_data" transfer-ownership="none">
-            <type name="Structure" c:type="GstStructure*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_module"
-              c:identifier="gst_plugin_get_module"
-              doc="Gets the #GModule of the plugin. If the plugin isn&apos;t loaded yet, NULL is
-returned.
-loaded yet.">
-        <return-value transfer-ownership="full">
-          <type name="GModule.Module" c:type="GModule*"/>
-        </return-value>
-      </method>
-      <method name="is_loaded"
-              c:identifier="gst_plugin_is_loaded"
-              doc="queries if the plugin is loaded into memory">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-      </method>
-      <method name="name_filter"
-              c:identifier="gst_plugin_name_filter"
-              doc="A standard filter that returns TRUE when the plugin is of the
-given name.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="name" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="load"
-              c:identifier="gst_plugin_load"
-              doc="Loads @plugin. Note that the *return value* is the loaded plugin; @plugin is
-untouched. The normal use pattern of this function goes like this:
-&lt;programlisting&gt;
-GstPlugin *loaded_plugin;
-loaded_plugin = gst_plugin_load (plugin);
-// presumably, we&apos;re no longer interested in the potentially-unloaded plugin
-gst_object_unref (plugin);
-plugin = loaded_plugin;
-&lt;/programlisting&gt;">
-        <return-value transfer-ownership="full">
-          <type name="Plugin" c:type="GstPlugin*"/>
-        </return-value>
-      </method>
-      <method name="add_dependency"
-              c:identifier="gst_plugin_add_dependency"
-              doc="feature set of the plugin (e.g. an environment variable containing
-paths where to look for additional modules/plugins of a library),
-or NULL. Environment variable names may be followed by a path component
-which will be added to the content of the environment variable, e.g.
-&quot;HOME/.mystuff/plugins&quot;.
-may be.
-depending on @flags) to be used in combination with the paths from
-Make GStreamer aware of external dependencies which affect the feature
-set of this plugin (ie. the elements or typefinders associated with it).
-GStreamer will re-inspect plugins with external dependencies whenever any
-of the external dependencies change. This is useful for plugins which wrap
-other plugin systems, e.g. a plugin which wraps a plugin-based visualisation
-library and makes visualisations available as GStreamer elements, or a
-codec loader which exposes elements and/or caps dependent on what external
-codec libraries are currently installed."
-              version="0.10.22">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="env_vars" transfer-ownership="none">
-            <array c:type="gchar**">
-              <type name="utf8"/>
-            </array>
-          </parameter>
-          <parameter name="paths" transfer-ownership="none">
-            <array c:type="gchar**">
-              <type name="utf8"/>
-            </array>
-          </parameter>
-          <parameter name="names" transfer-ownership="none">
-            <array c:type="gchar**">
-              <type name="utf8"/>
-            </array>
-          </parameter>
-          <parameter name="flags" transfer-ownership="none">
-            <type name="PluginDependencyFlags"
-                  c:type="GstPluginDependencyFlags"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="add_dependency_simple"
-              c:identifier="gst_plugin_add_dependency_simple"
-              doc="or NULL. Environment variable names may be followed by a path component
-which will be added to the content of the environment variable, e.g.
-&quot;HOME/.mystuff/plugins:MYSTUFF_PLUGINS_PATH&quot;
-or NULL
-Make GStreamer aware of external dependencies which affect the feature
-set of this plugin (ie. the elements or typefinders associated with it).
-GStreamer will re-inspect plugins with external dependencies whenever any
-of the external dependencies change. This is useful for plugins which wrap
-other plugin systems, e.g. a plugin which wraps a plugin-based visualisation
-library and makes visualisations available as GStreamer elements, or a
-codec loader which exposes elements and/or caps dependent on what external
-codec libraries are currently installed.
-Convenience wrapper function for gst_plugin_add_dependency() which
-takes simple strings as arguments instead of string arrays, with multiple
-arguments separated by predefined delimiters (see above)."
-              version="0.10.22">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="env_vars" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="paths" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="names" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="flags" transfer-ownership="none">
-            <type name="PluginDependencyFlags"
-                  c:type="GstPluginDependencyFlags"/>
-          </parameter>
-        </parameters>
-      </method>
-      <field name="object">
-        <type name="Object" c:type="GstObject"/>
-      </field>
-      <field name="desc">
-        <type name="PluginDesc" c:type="GstPluginDesc"/>
-      </field>
-      <field name="orig_desc">
-        <type name="PluginDesc" c:type="GstPluginDesc*"/>
-      </field>
-      <field name="flags">
-        <type name="uint" c:type="unsigned"/>
-      </field>
-      <field name="filename">
-        <type name="utf8" c:type="gchar*"/>
-      </field>
-      <field name="basename">
-        <type name="utf8" c:type="gchar*"/>
-      </field>
-      <field name="module">
-        <type name="GModule.Module" c:type="GModule*"/>
-      </field>
-      <field name="file_size">
-        <type name="size_t" c:type="off_t"/>
-      </field>
-      <field name="file_mtime">
-        <type name="time_t" c:type="time_t"/>
-      </field>
-      <field name="registered">
-        <type name="boolean" c:type="gboolean"/>
-      </field>
-      <field name="priv">
-        <type name="PluginPrivate" c:type="GstPluginPrivate*"/>
-      </field>
-      <field name="_gst_reserved">
-        <array zero-terminated="0" c:type="gpointer" fixed-size="3">
-          <type name="any"/>
-        </array>
-      </field>
-    </class>
-    <record name="PluginClass"
-            c:type="GstPluginClass"
-            glib:is-gtype-struct-for="Plugin">
-      <field name="object_class">
-        <type name="ObjectClass" c:type="GstObjectClass"/>
-      </field>
-      <field name="_gst_reserved">
-        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
-          <type name="any"/>
-        </array>
-      </field>
-    </record>
-    <bitfield name="PluginDependencyFlags"
-              doc="argument only if none of the environment variables is set
-filename argument as filter suffix and check all matching files in
-the directory
-Flags used in connection with gst_plugin_add_dependency()."
-              version="0.10.22"
-              c:type="GstPluginDependencyFlags">
-      <member name="none"
-              value="0"
-              c:identifier="GST_PLUGIN_DEPENDENCY_FLAG_NONE"/>
-      <member name="recurse"
-              value="1"
-              c:identifier="GST_PLUGIN_DEPENDENCY_FLAG_RECURSE"/>
-      <member name="paths_are_default_only"
-              value="2"
-              c:identifier="GST_PLUGIN_DEPENDENCY_FLAG_PATHS_ARE_DEFAULT_ONLY"/>
-      <member name="file_name_is_suffix"
-              value="4"
-              c:identifier="GST_PLUGIN_DEPENDENCY_FLAG_FILE_NAME_IS_SUFFIX"/>
-    </bitfield>
-    <record name="PluginDesc"
-            c:type="GstPluginDesc"
-            doc="A plugin should export a variable of this type called plugin_desc. The plugin
-loader will use the data provided there to initialize the plugin.
-BSD, MIT/X11, Proprietary, unknown.">
-      <field name="major_version" writable="1">
-        <type name="int" c:type="gint"/>
-      </field>
-      <field name="minor_version" writable="1">
-        <type name="int" c:type="gint"/>
-      </field>
-      <field name="name" writable="1">
-        <type name="utf8" c:type="gchar*"/>
-      </field>
-      <field name="description" writable="1">
-        <type name="utf8" c:type="gchar*"/>
-      </field>
-      <field name="plugin_init" writable="1">
-        <type name="PluginInitFunc" c:type="GstPluginInitFunc"/>
-      </field>
-      <field name="version" writable="1">
-        <type name="utf8" c:type="gchar*"/>
-      </field>
-      <field name="license" writable="1">
-        <type name="utf8" c:type="gchar*"/>
-      </field>
-      <field name="source" writable="1">
-        <type name="utf8" c:type="gchar*"/>
-      </field>
-      <field name="package" writable="1">
-        <type name="utf8" c:type="gchar*"/>
-      </field>
-      <field name="origin" writable="1">
-        <type name="utf8" c:type="gchar*"/>
-      </field>
-      <field name="_gst_reserved" writable="1">
-        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
-          <type name="any"/>
-        </array>
-      </field>
-    </record>
-    <enumeration name="PluginError"
-                 doc="The plugin loading errors"
-                 c:type="GstPluginError"
-                 glib:error-quark="gst_plugin_error_quark">
-      <member name="module" value="0" c:identifier="GST_PLUGIN_ERROR_MODULE"/>
-      <member name="dependencies"
-              value="1"
-              c:identifier="GST_PLUGIN_ERROR_DEPENDENCIES"/>
-      <member name="name_mismatch"
-              value="2"
-              c:identifier="GST_PLUGIN_ERROR_NAME_MISMATCH"/>
-    </enumeration>
-    <class name="PluginFeature"
-           c:type="GstPluginFeature"
-           doc="Opaque #GstPluginFeature structure."
-           parent="Object"
-           abstract="1"
-           glib:type-name="GstPluginFeature"
-           glib:get-type="gst_plugin_feature_get_type"
-           glib:type-struct="PluginFeatureClass">
-      <function name="list_free"
-                c:identifier="gst_plugin_feature_list_free"
-                doc="Unrefs each member of @list, then frees the list.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="list" transfer-ownership="none">
-            <type name="GLib.List" c:type="GList*"/>
-          </parameter>
-        </parameters>
-      </function>
-      <function name="list_copy"
-                c:identifier="gst_plugin_feature_list_copy"
-                doc="Copies the list of features. Caller should call @gst_plugin_feature_list_free
-when done with the list."
-                version="0.10.26">
-        <return-value transfer-ownership="full">
-          <type name="GLib.List" c:type="GList*"/>
-        </return-value>
-        <parameters>
-          <parameter name="list" transfer-ownership="none">
-            <type name="GLib.List" c:type="GList*"/>
-          </parameter>
-        </parameters>
-      </function>
-      <method name="load"
-              c:identifier="gst_plugin_feature_load"
-              doc="Loads the plugin containing @feature if it&apos;s not already loaded. @feature is
-unaffected; use the return value instead.
-Normally this function is used like this:
-|[
-GstPluginFeature *loaded_feature;
-loaded_feature = gst_plugin_feature_load (feature);
-// presumably, we&apos;re no longer interested in the potentially-unloaded feature
-gst_object_unref (feature);
-feature = loaded_feature;
-]|">
-        <return-value transfer-ownership="full">
-          <type name="PluginFeature" c:type="GstPluginFeature*"/>
-        </return-value>
-      </method>
-      <method name="type_name_filter"
-              c:identifier="gst_plugin_feature_type_name_filter"
-              doc="Compares type and name of plugin feature. Can be used with gst_filter_run().">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="data" transfer-ownership="none">
-            <type name="TypeNameData" c:type="GstTypeNameData*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="set_rank"
-              c:identifier="gst_plugin_feature_set_rank"
-              doc="Specifies a rank for a plugin feature, so that autoplugging uses
-the most appropriate feature.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="rank" transfer-ownership="none">
-            <type name="uint" c:type="guint"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="set_name"
-              c:identifier="gst_plugin_feature_set_name"
-              doc="Sets the name of a plugin feature. The name uniquely identifies a feature
-within all features of the same type. Renaming a plugin feature is not
-allowed. A copy is made of the name so you should free the supplied @name
-after calling this function.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="name" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_rank"
-              c:identifier="gst_plugin_feature_get_rank"
-              doc="Gets the rank of a plugin feature.">
-        <return-value transfer-ownership="none">
-          <type name="uint" c:type="guint"/>
-        </return-value>
-      </method>
-      <method name="get_name"
-              c:identifier="gst_plugin_feature_get_name"
-              doc="Gets the name of a plugin feature.">
-        <return-value transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </return-value>
-      </method>
-      <method name="check_version"
-              c:identifier="gst_plugin_feature_check_version"
-              doc="Checks whether the given plugin feature is at least
-the required version
-the required version, otherwise #FALSE.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="min_major" transfer-ownership="none">
-            <type name="uint" c:type="guint"/>
-          </parameter>
-          <parameter name="min_minor" transfer-ownership="none">
-            <type name="uint" c:type="guint"/>
-          </parameter>
-          <parameter name="min_micro" transfer-ownership="none">
-            <type name="uint" c:type="guint"/>
-          </parameter>
-        </parameters>
-      </method>
-      <field name="object">
-        <type name="Object" c:type="GstObject"/>
-      </field>
-      <field name="loaded">
-        <type name="boolean" c:type="gboolean"/>
-      </field>
-      <field name="name">
-        <type name="utf8" c:type="gchar*"/>
-      </field>
-      <field name="rank">
-        <type name="uint" c:type="guint"/>
-      </field>
-      <field name="plugin_name">
-        <type name="utf8" c:type="gchar*"/>
-      </field>
-      <field name="_gst_reserved">
-        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
-          <type name="any"/>
-        </array>
-      </field>
-    </class>
-    <record name="PluginFeatureClass"
-            c:type="GstPluginFeatureClass"
-            glib:is-gtype-struct-for="PluginFeature">
-      <field name="parent_class">
-        <type name="ObjectClass" c:type="GstObjectClass"/>
-      </field>
-      <field name="_gst_reserved">
-        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
-          <type name="any"/>
-        </array>
-      </field>
-    </record>
-    <callback name="PluginFeatureFilter"
-              c:type="GstPluginFeatureFilter"
-              doc="gst_registry_feature_filter()
-A function that can be used with e.g. gst_registry_feature_filter()
-to get a list of pluginfeature that match certain criteria.">
-      <return-value transfer-ownership="none">
-        <type name="boolean" c:type="gboolean"/>
-      </return-value>
-      <parameters>
-        <parameter name="feature" transfer-ownership="none">
-          <type name="PluginFeature" c:type="GstPluginFeature*"/>
-        </parameter>
-        <parameter name="user_data" transfer-ownership="none" closure="1">
-          <type name="any" c:type="gpointer"/>
-        </parameter>
-      </parameters>
-    </callback>
-    <callback name="PluginFilter"
-              c:type="GstPluginFilter"
-              doc="A function that can be used with e.g. gst_registry_plugin_filter()
-to get a list of plugins that match certain criteria.">
-      <return-value transfer-ownership="none">
-        <type name="boolean" c:type="gboolean"/>
-      </return-value>
-      <parameters>
-        <parameter name="plugin" transfer-ownership="none">
-          <type name="Plugin" c:type="GstPlugin*"/>
-        </parameter>
-        <parameter name="user_data" transfer-ownership="none" closure="1">
-          <type name="any" c:type="gpointer"/>
-        </parameter>
-      </parameters>
-    </callback>
-    <bitfield name="PluginFlags"
-              doc="The plugin loading state"
-              c:type="GstPluginFlags">
-      <member name="cached" value="1" c:identifier="GST_PLUGIN_FLAG_CACHED"/>
-      <member name="blacklisted"
-              value="2"
-              c:identifier="GST_PLUGIN_FLAG_BLACKLISTED"/>
-    </bitfield>
-    <callback name="PluginInitFullFunc"
-              c:type="GstPluginInitFullFunc"
-              doc="A plugin should provide a pointer to a function of either #GstPluginInitFunc
-or this type in the plugin_desc struct.
-The function will be called by the loader at startup. One would then
-register each #GstPluginFeature. This version allows
-user data to be passed to init function (useful for bindings)."
-              version="0.10.24">
-      <return-value transfer-ownership="none">
-        <type name="boolean" c:type="gboolean"/>
-      </return-value>
-      <parameters>
-        <parameter name="plugin" transfer-ownership="none">
-          <type name="Plugin" c:type="GstPlugin*"/>
-        </parameter>
-        <parameter name="user_data" transfer-ownership="none" closure="1">
-          <type name="any" c:type="gpointer"/>
-        </parameter>
-      </parameters>
-    </callback>
-    <callback name="PluginInitFunc"
-              c:type="GstPluginInitFunc"
-              doc="A plugin should provide a pointer to a function of this type in the
-plugin_desc struct.
-This function will be called by the loader at startup. One would then
-register each #GstPluginFeature.">
-      <return-value transfer-ownership="none">
-        <type name="boolean" c:type="gboolean"/>
-      </return-value>
-      <parameters>
-        <parameter name="plugin" transfer-ownership="none">
-          <type name="Plugin" c:type="GstPlugin*"/>
-        </parameter>
-      </parameters>
-    </callback>
-    <record name="PluginPrivate" c:type="GstPluginPrivate">
-    </record>
-    <record name="Poll"
-            c:type="GstPoll"
-            doc="A set of file/network descriptors.">
-      <constructor name="new"
-                   c:identifier="gst_poll_new"
-                   doc="Create a new file descriptor set. If @controllable, it
-is possible to restart or flush a call to gst_poll_wait() with
-gst_poll_restart() and gst_poll_set_flushing() respectively.
-gst_poll_free()."
-                   version="0.10.18">
-        <return-value transfer-ownership="full">
-          <type name="Poll" c:type="GstPoll*"/>
-        </return-value>
-        <parameters>
-          <parameter name="controllable" transfer-ownership="none">
-            <type name="boolean" c:type="gboolean"/>
-          </parameter>
-        </parameters>
-      </constructor>
-      <constructor name="new_timer"
-                   c:identifier="gst_poll_new_timer"
-                   doc="Create a new poll object that can be used for scheduling cancellable
-timeouts.
-A timeout is performed with gst_poll_wait(). Multiple timeouts can be
-performed from different threads.
-gst_poll_free()."
-                   version="0.10.23">
-        <return-value transfer-ownership="full">
-          <type name="Poll" c:type="GstPoll*"/>
-        </return-value>
-      </constructor>
-      <method name="free"
-              c:identifier="gst_poll_free"
-              doc="Free a file descriptor set."
-              version="0.10.18">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-      </method>
-      <method name="add_fd"
-              c:identifier="gst_poll_add_fd"
-              doc="Add a file descriptor to the file descriptor set."
-              version="0.10.18">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="fd" transfer-ownership="none">
-            <type name="PollFD" c:type="GstPollFD*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="remove_fd"
-              c:identifier="gst_poll_remove_fd"
-              doc="Remove a file descriptor from the file descriptor set."
-              version="0.10.18">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="fd" transfer-ownership="none">
-            <type name="PollFD" c:type="GstPollFD*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="fd_ctl_write"
-              c:identifier="gst_poll_fd_ctl_write"
-              doc="Control whether the descriptor @fd in @set will be monitored for
-writability."
-              version="0.10.18">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="fd" transfer-ownership="none">
-            <type name="PollFD" c:type="GstPollFD*"/>
-          </parameter>
-          <parameter name="active" transfer-ownership="none">
-            <type name="boolean" c:type="gboolean"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="fd_ctl_read"
-              c:identifier="gst_poll_fd_ctl_read"
-              doc="Control whether the descriptor @fd in @set will be monitored for
-readability."
-              version="0.10.18">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="fd" transfer-ownership="none">
-            <type name="PollFD" c:type="GstPollFD*"/>
-          </parameter>
-          <parameter name="active" transfer-ownership="none">
-            <type name="boolean" c:type="gboolean"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="fd_ignored"
-              c:identifier="gst_poll_fd_ignored"
-              doc="Mark @fd as ignored so that the next call to gst_poll_wait() will yield
-the same result for @fd as last time. This function must be called if no
-operation (read/write/recv/send/etc.) will be performed on @fd before
-the next call to gst_poll_wait().
-The reason why this is needed is because the underlying implementation
-might not allow querying the fd more than once between calls to one of
-the re-enabling operations."
-              version="0.10.18">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="fd" transfer-ownership="none">
-            <type name="PollFD" c:type="GstPollFD*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="fd_has_closed"
-              c:identifier="gst_poll_fd_has_closed"
-              doc="Check if @fd in @set has closed the connection."
-              version="0.10.18">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="fd" transfer-ownership="none">
-            <type name="PollFD" c:type="GstPollFD*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="fd_has_error"
-              c:identifier="gst_poll_fd_has_error"
-              doc="Check if @fd in @set has an error."
-              version="0.10.18">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="fd" transfer-ownership="none">
-            <type name="PollFD" c:type="GstPollFD*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="fd_can_read"
-              c:identifier="gst_poll_fd_can_read"
-              doc="Check if @fd in @set has data to be read."
-              version="0.10.18">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="fd" transfer-ownership="none">
-            <type name="PollFD" c:type="GstPollFD*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="fd_can_write"
-              c:identifier="gst_poll_fd_can_write"
-              doc="Check if @fd in @set can be used for writing."
-              version="0.10.18">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="fd" transfer-ownership="none">
-            <type name="PollFD" c:type="GstPollFD*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="wait"
-              c:identifier="gst_poll_wait"
-              doc="Wait for activity on the file descriptors in @set. This function waits up to
-the specified @timeout.  A timeout of #GST_CLOCK_TIME_NONE waits forever.
-For #GstPoll objects created with gst_poll_new(), this function can only be
-called from a single thread at a time.  If called from multiple threads,
--1 will be returned with errno set to EPERM.
-This is not true for timer #GstPoll objects created with
-gst_poll_new_timer(), where it is allowed to have multiple threads waiting
-simultaneously.
-activity was detected after @timeout. If an error occurs, -1 is returned
-and errno is set."
-              version="0.10.18">
-        <return-value transfer-ownership="none">
-          <type name="int" c:type="gint"/>
-        </return-value>
-        <parameters>
-          <parameter name="timeout" transfer-ownership="none">
-            <type name="ClockTime" c:type="GstClockTime"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="set_controllable"
-              c:identifier="gst_poll_set_controllable"
-              doc="When @controllable is %TRUE, this function ensures that future calls to
-gst_poll_wait() will be affected by gst_poll_restart() and
-gst_poll_set_flushing()."
-              version="0.10.18">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="controllable" transfer-ownership="none">
-            <type name="boolean" c:type="gboolean"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="restart"
-              c:identifier="gst_poll_restart"
-              doc="Restart any gst_poll_wait() that is in progress. This function is typically
-used after adding or removing descriptors to @set.
-If @set is not controllable, then this call will have no effect."
-              version="0.10.18">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-      </method>
-      <method name="set_flushing"
-              c:identifier="gst_poll_set_flushing"
-              doc="When @flushing is %TRUE, this function ensures that current and future calls
-to gst_poll_wait() will return -1, with errno set to EBUSY.
-Unsetting the flushing state will restore normal operation of @set."
-              version="0.10.18">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="flushing" transfer-ownership="none">
-            <type name="boolean" c:type="gboolean"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="write_control"
-              c:identifier="gst_poll_write_control"
-              doc="Write a byte to the control socket of the controllable @set.
-This function is mostly useful for timer #GstPoll objects created with
-gst_poll_new_timer().
-It will make any current and future gst_poll_wait() function return with
-1, meaning the control socket is set. After an equal amount of calls to
-gst_poll_read_control() have been performed, calls to gst_poll_wait() will
-block again until their timeout expired.
-byte could not be written."
-              version="0.10.23">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-      </method>
-      <method name="read_control"
-              c:identifier="gst_poll_read_control"
-              doc="Read a byte from the control socket of the controllable @set.
-This function is mostly useful for timer #GstPoll objects created with
-gst_poll_new_timer().
-was no byte to read."
-              version="0.10.23">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-      </method>
-    </record>
-    <record name="PollFD" c:type="GstPollFD" doc="A file descriptor object.">
-      <field name="fd" writable="1">
-        <type name="int" c:type="int"/>
-      </field>
-      <field name="idx" writable="1">
-        <type name="int" c:type="gint"/>
-      </field>
-      <method name="init"
-              c:identifier="gst_poll_fd_init"
-              doc="Initializes @fd. Alternatively you can initialize it with
-#GST_POLL_FD_INIT."
-              version="0.10.18">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-      </method>
-    </record>
-    <interface name="Preset"
-               c:type="GstPreset"
-               doc="Opaque #GstPreset data structure."
-               glib:type-name="GstPreset"
-               glib:get-type="gst_preset_get_type"
-               glib:type-struct="PresetInterface">
-      <virtual-method name="get_preset_names" invoker="get_preset_names">
-        <return-value transfer-ownership="full">
-          <array c:type="gchar**">
-            <type name="utf8"/>
-          </array>
-        </return-value>
-      </virtual-method>
-      <virtual-method name="get_property_names" invoker="get_property_names">
-        <return-value transfer-ownership="full">
-          <array c:type="gchar**">
-            <type name="utf8"/>
-          </array>
-        </return-value>
-      </virtual-method>
-      <virtual-method name="load_preset" invoker="load_preset">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="name" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-        </parameters>
-      </virtual-method>
-      <virtual-method name="save_preset" invoker="save_preset">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="name" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-        </parameters>
-      </virtual-method>
-      <virtual-method name="rename_preset" invoker="rename_preset">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="old_name" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="new_name" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-        </parameters>
-      </virtual-method>
-      <virtual-method name="delete_preset" invoker="delete_preset">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="name" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-        </parameters>
-      </virtual-method>
-      <virtual-method name="set_meta" invoker="set_meta">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="name" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="tag" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="value" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-        </parameters>
-      </virtual-method>
-      <virtual-method name="get_meta" invoker="get_meta">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="name" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="tag" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="value" transfer-ownership="none">
-            <array c:type="gchar**">
-              <type name="utf8"/>
-            </array>
-          </parameter>
-        </parameters>
-      </virtual-method>
-      <method name="get_preset_names"
-              c:identifier="gst_preset_get_preset_names"
-              doc="Get a copy of preset names as a NULL terminated string array."
-              version="0.10.20">
-        <return-value transfer-ownership="full" doc="after usage.">
-          <array c:type="gchar**">
-            <type name="utf8"/>
-          </array>
-        </return-value>
-      </method>
-      <method name="get_property_names"
-              c:identifier="gst_preset_get_property_names"
-              doc="Get a the names of the GObject properties that can be used for presets."
-              version="0.10.20">
-        <return-value transfer-ownership="full" doc="after use.">
-          <array c:type="gchar**">
-            <type name="utf8"/>
-          </array>
-        </return-value>
-      </method>
-      <method name="load_preset"
-              c:identifier="gst_preset_load_preset"
-              doc="Load the given preset."
-              version="0.10.20">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="name" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="save_preset"
-              c:identifier="gst_preset_save_preset"
-              doc="Save the current object settings as a preset under the given name. If there
-is already a preset by this @name it will be overwritten."
-              version="0.10.20">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="name" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="rename_preset"
-              c:identifier="gst_preset_rename_preset"
-              doc="Renames a preset. If there is already a preset by the @new_name it will be
-overwritten."
-              version="0.10.20">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="old_name" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="new_name" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="delete_preset"
-              c:identifier="gst_preset_delete_preset"
-              doc="Delete the given preset."
-              version="0.10.20">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="name" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="set_meta"
-              c:identifier="gst_preset_set_meta"
-              doc="Sets a new @value for an existing meta data item or adds a new item. Meta
-data @tag names can be something like e.g. &quot;comment&quot;. Supplying %NULL for the"
-              version="0.10.20">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="name" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="tag" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="value" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_meta"
-              c:identifier="gst_preset_get_meta"
-              doc="Gets the @value for an existing meta data @tag. Meta data @tag names can be
-something like e.g. &quot;comment&quot;. Returned values need to be released when done.
-or no value for the given @tag"
-              version="0.10.20">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="name" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="tag" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="value" transfer-ownership="none">
-            <array c:type="gchar**">
-              <type name="utf8"/>
-            </array>
-          </parameter>
-        </parameters>
-      </method>
-    </interface>
-    <record name="PresetInterface"
-            c:type="GstPresetInterface"
-            glib:is-gtype-struct-for="Preset"
-            doc="#GstPreset interface.">
-      <field name="parent">
-        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
-      </field>
-      <field name="get_preset_names">
-        <callback name="get_preset_names" c:type="get_preset_names">
-          <return-value transfer-ownership="full">
-            <array c:type="gchar**">
-              <type name="utf8"/>
-            </array>
-          </return-value>
-          <parameters>
-            <parameter name="preset" transfer-ownership="none">
-              <type name="Preset" c:type="GstPreset*"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="get_property_names">
-        <callback name="get_property_names" c:type="get_property_names">
-          <return-value transfer-ownership="full">
-            <array c:type="gchar**">
-              <type name="utf8"/>
-            </array>
-          </return-value>
-          <parameters>
-            <parameter name="preset" transfer-ownership="none">
-              <type name="Preset" c:type="GstPreset*"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="load_preset">
-        <callback name="load_preset" c:type="load_preset">
-          <return-value transfer-ownership="none">
-            <type name="boolean" c:type="gboolean"/>
-          </return-value>
-          <parameters>
-            <parameter name="preset" transfer-ownership="none">
-              <type name="Preset" c:type="GstPreset*"/>
-            </parameter>
-            <parameter name="name" transfer-ownership="none">
-              <type name="utf8" c:type="gchar*"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="save_preset">
-        <callback name="save_preset" c:type="save_preset">
-          <return-value transfer-ownership="none">
-            <type name="boolean" c:type="gboolean"/>
-          </return-value>
-          <parameters>
-            <parameter name="preset" transfer-ownership="none">
-              <type name="Preset" c:type="GstPreset*"/>
-            </parameter>
-            <parameter name="name" transfer-ownership="none">
-              <type name="utf8" c:type="gchar*"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="rename_preset">
-        <callback name="rename_preset" c:type="rename_preset">
-          <return-value transfer-ownership="none">
-            <type name="boolean" c:type="gboolean"/>
-          </return-value>
-          <parameters>
-            <parameter name="preset" transfer-ownership="none">
-              <type name="Preset" c:type="GstPreset*"/>
-            </parameter>
-            <parameter name="old_name" transfer-ownership="none">
-              <type name="utf8" c:type="gchar*"/>
-            </parameter>
-            <parameter name="new_name" transfer-ownership="none">
-              <type name="utf8" c:type="gchar*"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="delete_preset">
-        <callback name="delete_preset" c:type="delete_preset">
-          <return-value transfer-ownership="none">
-            <type name="boolean" c:type="gboolean"/>
-          </return-value>
-          <parameters>
-            <parameter name="preset" transfer-ownership="none">
-              <type name="Preset" c:type="GstPreset*"/>
-            </parameter>
-            <parameter name="name" transfer-ownership="none">
-              <type name="utf8" c:type="gchar*"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="set_meta">
-        <callback name="set_meta" c:type="set_meta">
-          <return-value transfer-ownership="none">
-            <type name="boolean" c:type="gboolean"/>
-          </return-value>
-          <parameters>
-            <parameter name="preset" transfer-ownership="none">
-              <type name="Preset" c:type="GstPreset*"/>
-            </parameter>
-            <parameter name="name" transfer-ownership="none">
-              <type name="utf8" c:type="gchar*"/>
-            </parameter>
-            <parameter name="tag" transfer-ownership="none">
-              <type name="utf8" c:type="gchar*"/>
-            </parameter>
-            <parameter name="value" transfer-ownership="none">
-              <type name="utf8" c:type="gchar*"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="get_meta">
-        <callback name="get_meta" c:type="get_meta">
-          <return-value transfer-ownership="none">
-            <type name="boolean" c:type="gboolean"/>
-          </return-value>
-          <parameters>
-            <parameter name="preset" transfer-ownership="none">
-              <type name="Preset" c:type="GstPreset*"/>
-            </parameter>
-            <parameter name="name" transfer-ownership="none">
-              <type name="utf8" c:type="gchar*"/>
-            </parameter>
-            <parameter name="tag" transfer-ownership="none">
-              <type name="utf8" c:type="gchar*"/>
-            </parameter>
-            <parameter name="value" transfer-ownership="none">
-              <array c:type="gchar**">
-                <type name="utf8"/>
-              </array>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="_gst_reserved">
-        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
-          <type name="any"/>
-        </array>
-      </field>
-    </record>
-    <class name="ProxyPad"
-           c:type="GstProxyPad"
-           parent="Pad"
-           glib:type-name="GstProxyPad"
-           glib:get-type="gst_proxy_pad_get_type"
-           glib:type-struct="ProxyPadClass">
-      <field name="pad">
-        <type name="Pad" c:type="GstPad"/>
-      </field>
-      <field name="priv">
-        <type name="ProxyPadPrivate" c:type="GstProxyPadPrivate*"/>
-      </field>
-    </class>
-    <record name="ProxyPadClass"
-            c:type="GstProxyPadClass"
-            glib:is-gtype-struct-for="ProxyPad">
-      <field name="parent_class">
-        <type name="PadClass" c:type="GstPadClass"/>
-      </field>
-      <field name="_gst_reserved">
-        <array zero-terminated="0" c:type="gpointer" fixed-size="1">
-          <type name="any"/>
-        </array>
-      </field>
-    </record>
-    <record name="ProxyPadPrivate" c:type="GstProxyPadPrivate">
-    </record>
-    <record name="Query" c:type="GstQuery" doc="The #GstQuery structure.">
-      <field name="mini_object" writable="1">
-        <type name="MiniObject" c:type="GstMiniObject"/>
-      </field>
-      <field name="type" writable="1">
-        <type name="QueryType" c:type="GstQueryType"/>
-      </field>
-      <field name="structure" writable="1">
-        <type name="Structure" c:type="GstStructure*"/>
-      </field>
-      <field name="_gst_reserved" writable="1">
-        <type name="any" c:type="gpointer"/>
-      </field>
-      <constructor name="new_position"
-                   c:identifier="gst_query_new_position"
-                   doc="Constructs a new query stream position query object. Use gst_query_unref()
-when done with it. A position query is used to query the current position
-of playback in the streams, in some format.">
-        <return-value transfer-ownership="full">
-          <type name="Query" c:type="GstQuery*"/>
-        </return-value>
-        <parameters>
-          <parameter name="format" transfer-ownership="none">
-            <type name="Format" c:type="GstFormat"/>
-          </parameter>
-        </parameters>
-      </constructor>
-      <constructor name="new_duration"
-                   c:identifier="gst_query_new_duration"
-                   doc="Constructs a new stream duration query object to query in the given format.
-Use gst_query_unref() when done with it. A duration query will give the
-total length of the stream.">
-        <return-value transfer-ownership="full">
-          <type name="Query" c:type="GstQuery*"/>
-        </return-value>
-        <parameters>
-          <parameter name="format" transfer-ownership="none">
-            <type name="Format" c:type="GstFormat"/>
-          </parameter>
-        </parameters>
-      </constructor>
-      <constructor name="new_latency"
-                   c:identifier="gst_query_new_latency"
-                   doc="Constructs a new latency query object.
-Use gst_query_unref() when done with it. A latency query is usually performed
-by sinks to compensate for additional latency introduced by elements in the
-pipeline."
-                   version="0.10.12">
-        <return-value transfer-ownership="full">
-          <type name="Query" c:type="GstQuery*"/>
-        </return-value>
-      </constructor>
-      <constructor name="new_convert"
-                   c:identifier="gst_query_new_convert"
-                   doc="Constructs a new convert query object. Use gst_query_unref()
-when done with it. A convert query is used to ask for a conversion between
-one format and another.">
-        <return-value transfer-ownership="full">
-          <type name="Query" c:type="GstQuery*"/>
-        </return-value>
-        <parameters>
-          <parameter name="src_format" transfer-ownership="none">
-            <type name="Format" c:type="GstFormat"/>
-          </parameter>
-          <parameter name="value" transfer-ownership="none">
-            <type name="int64" c:type="gint64"/>
-          </parameter>
-          <parameter name="dest_format" transfer-ownership="none">
-            <type name="Format" c:type="GstFormat"/>
-          </parameter>
-        </parameters>
-      </constructor>
-      <constructor name="new_segment"
-                   c:identifier="gst_query_new_segment"
-                   doc="Constructs a new segment query object. Use gst_query_unref()
-when done with it. A segment query is used to discover information about the
-currently configured segment for playback.">
-        <return-value transfer-ownership="full">
-          <type name="Query" c:type="GstQuery*"/>
-        </return-value>
-        <parameters>
-          <parameter name="format" transfer-ownership="none">
-            <type name="Format" c:type="GstFormat"/>
-          </parameter>
-        </parameters>
-      </constructor>
-      <constructor name="new_application"
-                   c:identifier="gst_query_new_application"
-                   doc="Constructs a new custom application query object. Use gst_query_unref()
-when done with it.">
-        <return-value transfer-ownership="full">
-          <type name="Query" c:type="GstQuery*"/>
-        </return-value>
-        <parameters>
-          <parameter name="type" transfer-ownership="none">
-            <type name="QueryType" c:type="GstQueryType"/>
-          </parameter>
-          <parameter name="structure" transfer-ownership="none">
-            <type name="Structure" c:type="GstStructure*"/>
-          </parameter>
-        </parameters>
-      </constructor>
-      <constructor name="new_seeking"
-                   c:identifier="gst_query_new_seeking"
-                   doc="Constructs a new query object for querying seeking properties of
-the stream.">
-        <return-value transfer-ownership="full">
-          <type name="Query" c:type="GstQuery*"/>
-        </return-value>
-        <parameters>
-          <parameter name="format" transfer-ownership="none">
-            <type name="Format" c:type="GstFormat"/>
-          </parameter>
-        </parameters>
-      </constructor>
-      <constructor name="new_formats"
-                   c:identifier="gst_query_new_formats"
-                   doc="Constructs a new query object for querying formats of
-the stream."
-                   version="0.10.4">
-        <return-value transfer-ownership="full">
-          <type name="Query" c:type="GstQuery*"/>
-        </return-value>
-      </constructor>
-      <constructor name="new_buffering" c:identifier="gst_query_new_buffering">
-        <return-value transfer-ownership="full">
-          <type name="Query" c:type="GstQuery*"/>
-        </return-value>
-        <parameters>
-          <parameter name="format" transfer-ownership="none">
-            <type name="Format" c:type="GstFormat"/>
-          </parameter>
-        </parameters>
-      </constructor>
-      <constructor name="new_uri"
-                   c:identifier="gst_query_new_uri"
-                   doc="Constructs a new query URI query object. Use gst_query_unref()
-when done with it. An URI query is used to query the current URI
-that is used by the source or sink."
-                   version="0.10.22">
-        <return-value transfer-ownership="full">
-          <type name="Query" c:type="GstQuery*"/>
-        </return-value>
-      </constructor>
-      <method name="set_position"
-              c:identifier="gst_query_set_position"
-              doc="Answer a position query by setting the requested value in the given format.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="format" transfer-ownership="none">
-            <type name="Format" c:type="GstFormat"/>
-          </parameter>
-          <parameter name="cur" transfer-ownership="none">
-            <type name="int64" c:type="gint64"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="parse_position"
-              c:identifier="gst_query_parse_position"
-              doc="Parse a position query, writing the format into @format, and the position
-into @cur, if the respective parameters are non-NULL.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="format" transfer-ownership="none">
-            <type name="Format" c:type="GstFormat*"/>
-          </parameter>
-          <parameter name="cur" direction="out" transfer-ownership="full">
-            <type name="int64" c:type="gint64*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="set_duration"
-              c:identifier="gst_query_set_duration"
-              doc="Answer a duration query by setting the requested value in the given format.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="format" transfer-ownership="none">
-            <type name="Format" c:type="GstFormat"/>
-          </parameter>
-          <parameter name="duration" transfer-ownership="none">
-            <type name="int64" c:type="gint64"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="parse_duration"
-              c:identifier="gst_query_parse_duration"
-              doc="Parse a duration query answer. Write the format of the duration into @format,
-and the value into @duration, if the respective variables are non-NULL.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="format" transfer-ownership="none">
-            <type name="Format" c:type="GstFormat*"/>
-          </parameter>
-          <parameter name="duration" direction="out" transfer-ownership="full">
-            <type name="int64" c:type="gint64*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="set_latency"
-              c:identifier="gst_query_set_latency"
-              doc="Answer a latency query by setting the requested values in the given format."
-              version="0.10.12">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="live" transfer-ownership="none">
-            <type name="boolean" c:type="gboolean"/>
-          </parameter>
-          <parameter name="min_latency" transfer-ownership="none">
-            <type name="ClockTime" c:type="GstClockTime"/>
-          </parameter>
-          <parameter name="max_latency" transfer-ownership="none">
-            <type name="ClockTime" c:type="GstClockTime"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="parse_latency"
-              c:identifier="gst_query_parse_latency"
-              doc="Parse a latency query answer."
-              version="0.10.12">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="live" direction="out" transfer-ownership="full">
-            <type name="boolean" c:type="gboolean*"/>
-          </parameter>
-          <parameter name="min_latency" transfer-ownership="none">
-            <type name="ClockTime" c:type="GstClockTime*"/>
-          </parameter>
-          <parameter name="max_latency" transfer-ownership="none">
-            <type name="ClockTime" c:type="GstClockTime*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="set_convert"
-              c:identifier="gst_query_set_convert"
-              doc="Answer a convert query by setting the requested values.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="src_format" transfer-ownership="none">
-            <type name="Format" c:type="GstFormat"/>
-          </parameter>
-          <parameter name="src_value" transfer-ownership="none">
-            <type name="int64" c:type="gint64"/>
-          </parameter>
-          <parameter name="dest_format" transfer-ownership="none">
-            <type name="Format" c:type="GstFormat"/>
-          </parameter>
-          <parameter name="dest_value" transfer-ownership="none">
-            <type name="int64" c:type="gint64"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="parse_convert"
-              c:identifier="gst_query_parse_convert"
-              doc="Parse a convert query answer. Any of @src_format, @src_value, @dest_format,
-and @dest_value may be NULL, in which case that value is omitted.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="src_format" transfer-ownership="none">
-            <type name="Format" c:type="GstFormat*"/>
-          </parameter>
-          <parameter name="src_value"
-                     direction="out"
-                     transfer-ownership="full">
-            <type name="int64" c:type="gint64*"/>
-          </parameter>
-          <parameter name="dest_format" transfer-ownership="none">
-            <type name="Format" c:type="GstFormat*"/>
-          </parameter>
-          <parameter name="dest_value"
-                     direction="out"
-                     transfer-ownership="full">
-            <type name="int64" c:type="gint64*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="set_segment"
-              c:identifier="gst_query_set_segment"
-              doc="Answer a segment query by setting the requested values. The normal
-playback segment of a pipeline is 0 to duration at the default rate of
-1.0. If a seek was performed on the pipeline to play a different
-segment, this query will return the range specified in the last seek.
-playback range start and stop values expressed in @format.
-The values are always between 0 and the duration of the media and
-negative rates, playback will actually happen from @stop_value to">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="rate" transfer-ownership="none">
-            <type name="double" c:type="gdouble"/>
-          </parameter>
-          <parameter name="format" transfer-ownership="none">
-            <type name="Format" c:type="GstFormat"/>
-          </parameter>
-          <parameter name="start_value" transfer-ownership="none">
-            <type name="int64" c:type="gint64"/>
-          </parameter>
-          <parameter name="stop_value" transfer-ownership="none">
-            <type name="int64" c:type="gint64"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="parse_segment"
-              c:identifier="gst_query_parse_segment"
-              doc="Parse a segment query answer. Any of @rate, @format, @start_value, and
-See gst_query_set_segment() for an explanation of the function arguments.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="rate" direction="out" transfer-ownership="full">
-            <type name="double" c:type="gdouble*"/>
-          </parameter>
-          <parameter name="format" transfer-ownership="none">
-            <type name="Format" c:type="GstFormat*"/>
-          </parameter>
-          <parameter name="start_value"
-                     direction="out"
-                     transfer-ownership="full">
-            <type name="int64" c:type="gint64*"/>
-          </parameter>
-          <parameter name="stop_value"
-                     direction="out"
-                     transfer-ownership="full">
-            <type name="int64" c:type="gint64*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_structure"
-              c:identifier="gst_query_get_structure"
-              doc="Get the structure of a query.
-by the query and will therefore be freed when the query is unreffed.">
-        <return-value transfer-ownership="full">
-          <type name="Structure" c:type="GstStructure*"/>
-        </return-value>
-      </method>
-      <method name="set_seeking"
-              c:identifier="gst_query_set_seeking"
-              doc="Set the seeking query result fields in @query.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="format" transfer-ownership="none">
-            <type name="Format" c:type="GstFormat"/>
-          </parameter>
-          <parameter name="seekable" transfer-ownership="none">
-            <type name="boolean" c:type="gboolean"/>
-          </parameter>
-          <parameter name="segment_start" transfer-ownership="none">
-            <type name="int64" c:type="gint64"/>
-          </parameter>
-          <parameter name="segment_end" transfer-ownership="none">
-            <type name="int64" c:type="gint64"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="parse_seeking"
-              c:identifier="gst_query_parse_seeking"
-              doc="Parse a seeking query, writing the format into @format, and
-other results into the passed parameters, if the respective parameters
-are non-NULL">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="format" transfer-ownership="none">
-            <type name="Format" c:type="GstFormat*"/>
-          </parameter>
-          <parameter name="seekable" direction="out" transfer-ownership="full">
-            <type name="boolean" c:type="gboolean*"/>
-          </parameter>
-          <parameter name="segment_start"
-                     direction="out"
-                     transfer-ownership="full">
-            <type name="int64" c:type="gint64*"/>
-          </parameter>
-          <parameter name="segment_end"
-                     direction="out"
-                     transfer-ownership="full">
-            <type name="int64" c:type="gint64*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="set_formats"
-              c:identifier="gst_query_set_formats"
-              doc="Set the formats query result fields in @query. The number of formats passed
-must be equal to @n_formats.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="n_formats" transfer-ownership="none">
-            <type name="int" c:type="gint"/>
-          </parameter>
-          <parameter transfer-ownership="none">
-            <varargs>
-            </varargs>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="set_formatsv"
-              c:identifier="gst_query_set_formatsv"
-              doc="Set the formats query result fields in @query. The number of formats passed
-in the @formats array must be equal to @n_formats."
-              version="0.10.4">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="n_formats" transfer-ownership="none">
-            <type name="int" c:type="gint"/>
-          </parameter>
-          <parameter name="formats" transfer-ownership="none">
-            <type name="Format" c:type="GstFormat*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="parse_formats_length"
-              c:identifier="gst_query_parse_formats_length"
-              doc="Parse the number of formats in the formats @query."
-              version="0.10.4">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="n_formats"
-                     direction="out"
-                     transfer-ownership="full">
-            <type name="uint" c:type="guint*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="parse_formats_nth"
-              c:identifier="gst_query_parse_formats_nth"
-              doc="Parse the format query and retrieve the @nth format from it into
-set to GST_FORMAT_UNDEFINED."
-              version="0.10.4">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="nth" transfer-ownership="none">
-            <type name="uint" c:type="guint"/>
-          </parameter>
-          <parameter name="format" transfer-ownership="none">
-            <type name="Format" c:type="GstFormat*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="set_buffering_percent"
-              c:identifier="gst_query_set_buffering_percent">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="busy" transfer-ownership="none">
-            <type name="boolean" c:type="gboolean"/>
-          </parameter>
-          <parameter name="percent" transfer-ownership="none">
-            <type name="int" c:type="gint"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="parse_buffering_percent"
-              c:identifier="gst_query_parse_buffering_percent">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="busy" direction="out" transfer-ownership="full">
-            <type name="boolean" c:type="gboolean*"/>
-          </parameter>
-          <parameter name="percent" direction="out" transfer-ownership="full">
-            <type name="int" c:type="gint*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="set_buffering_stats"
-              c:identifier="gst_query_set_buffering_stats"
-              doc="Configures the buffering stats values in @query."
-              version="0.10.20">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="mode" transfer-ownership="none">
-            <type name="BufferingMode" c:type="GstBufferingMode"/>
-          </parameter>
-          <parameter name="avg_in" transfer-ownership="none">
-            <type name="int" c:type="gint"/>
-          </parameter>
-          <parameter name="avg_out" transfer-ownership="none">
-            <type name="int" c:type="gint"/>
-          </parameter>
-          <parameter name="buffering_left" transfer-ownership="none">
-            <type name="int64" c:type="gint64"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="parse_buffering_stats"
-              c:identifier="gst_query_parse_buffering_stats"
-              doc="Extracts the buffering stats values from @query."
-              version="0.10.20">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="mode" transfer-ownership="none">
-            <type name="BufferingMode" c:type="GstBufferingMode*"/>
-          </parameter>
-          <parameter name="avg_in" direction="out" transfer-ownership="full">
-            <type name="int" c:type="gint*"/>
-          </parameter>
-          <parameter name="avg_out" direction="out" transfer-ownership="full">
-            <type name="int" c:type="gint*"/>
-          </parameter>
-          <parameter name="buffering_left"
-                     direction="out"
-                     transfer-ownership="full">
-            <type name="int64" c:type="gint64*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="set_buffering_range"
-              c:identifier="gst_query_set_buffering_range"
-              doc="Set the available query result fields in @query."
-              version="0.10.20">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="format" transfer-ownership="none">
-            <type name="Format" c:type="GstFormat"/>
-          </parameter>
-          <parameter name="start" transfer-ownership="none">
-            <type name="int64" c:type="gint64"/>
-          </parameter>
-          <parameter name="stop" transfer-ownership="none">
-            <type name="int64" c:type="gint64"/>
-          </parameter>
-          <parameter name="estimated_total" transfer-ownership="none">
-            <type name="int64" c:type="gint64"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="parse_buffering_range"
-              c:identifier="gst_query_parse_buffering_range"
-              doc="Parse an available query, writing the format into @format, and
-other results into the passed parameters, if the respective parameters
-are non-NULL"
-              version="0.10.20">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="format" transfer-ownership="none">
-            <type name="Format" c:type="GstFormat*"/>
-          </parameter>
-          <parameter name="start" direction="out" transfer-ownership="full">
-            <type name="int64" c:type="gint64*"/>
-          </parameter>
-          <parameter name="stop" direction="out" transfer-ownership="full">
-            <type name="int64" c:type="gint64*"/>
-          </parameter>
-          <parameter name="estimated_total"
-                     direction="out"
-                     transfer-ownership="full">
-            <type name="int64" c:type="gint64*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="parse_uri"
-              c:identifier="gst_query_parse_uri"
-              doc="Parse an URI query, writing the URI into @uri as a newly
-allocated string, if the respective parameters are non-NULL.
-Free the string with g_free() after usage."
-              version="0.10.22">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="uri" transfer-ownership="none">
-            <array c:type="gchar**">
-              <type name="utf8"/>
-            </array>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="set_uri"
-              c:identifier="gst_query_set_uri"
-              doc="Answer a URI query by setting the requested URI."
-              version="0.10.22">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="uri" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-        </parameters>
-      </method>
-    </record>
-    <record name="QueryClass" c:type="GstQueryClass">
-      <field name="mini_object_class" writable="1">
-        <type name="MiniObjectClass" c:type="GstMiniObjectClass"/>
-      </field>
-      <field name="_gst_reserved" writable="1">
-        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
-          <type name="any"/>
-        </array>
-      </field>
-    </record>
-    <enumeration name="QueryType"
-                 doc="0.10.20.
-0.10.22.
-Standard predefined Query types"
-                 c:type="GstQueryType">
-      <member name="none" value="0" c:identifier="GST_QUERY_NONE"/>
-      <member name="position" value="1" c:identifier="GST_QUERY_POSITION"/>
-      <member name="duration" value="2" c:identifier="GST_QUERY_DURATION"/>
-      <member name="latency" value="3" c:identifier="GST_QUERY_LATENCY"/>
-      <member name="jitter" value="4" c:identifier="GST_QUERY_JITTER"/>
-      <member name="rate" value="5" c:identifier="GST_QUERY_RATE"/>
-      <member name="seeking" value="6" c:identifier="GST_QUERY_SEEKING"/>
-      <member name="segment" value="7" c:identifier="GST_QUERY_SEGMENT"/>
-      <member name="convert" value="8" c:identifier="GST_QUERY_CONVERT"/>
-      <member name="formats" value="9" c:identifier="GST_QUERY_FORMATS"/>
-      <member name="buffering" value="10" c:identifier="GST_QUERY_BUFFERING"/>
-      <member name="custom" value="11" c:identifier="GST_QUERY_CUSTOM"/>
-      <member name="uri" value="12" c:identifier="GST_QUERY_URI"/>
-    </enumeration>
-    <record name="QueryTypeDefinition"
-            c:type="GstQueryTypeDefinition"
-            doc="A Query Type definition">
-      <field name="value" writable="1">
-        <type name="QueryType" c:type="GstQueryType"/>
-      </field>
-      <field name="nick" writable="1">
-        <type name="utf8" c:type="gchar*"/>
-      </field>
-      <field name="description" writable="1">
-        <type name="utf8" c:type="gchar*"/>
-      </field>
-      <field name="quark" writable="1">
-        <type name="GLib.Quark" c:type="GQuark"/>
-      </field>
-    </record>
-    <enumeration name="Rank"
-                 doc="Element priority ranks. Defines the order in which the autoplugger (or
-similar rank-picking mechanisms, such as e.g. gst_element_make_from_uri())
-will choose this element over an alternative one with the same function.
-These constants serve as a rough guidance for defining the rank of a
-#GstPluginFeature. Any value is valid, including values bigger than"
-                 c:type="GstRank">
-      <member name="none" value="0" c:identifier="GST_RANK_NONE"/>
-      <member name="marginal" value="64" c:identifier="GST_RANK_MARGINAL"/>
-      <member name="secondary" value="128" c:identifier="GST_RANK_SECONDARY"/>
-      <member name="primary" value="256" c:identifier="GST_RANK_PRIMARY"/>
-    </enumeration>
-    <class name="Registry"
-           c:type="GstRegistry"
-           doc="Opaque #GstRegistry structure."
-           parent="Object"
-           glib:type-name="GstRegistry"
-           glib:get-type="gst_registry_get_type"
-           glib:type-struct="RegistryClass">
-      <function name="get_default"
-                c:identifier="gst_registry_get_default"
-                doc="Retrieves the default registry. The caller does not own a reference on the
-registry, as it is alive as long as GStreamer is initialized.">
-        <return-value transfer-ownership="full">
-          <type name="Registry" c:type="GstRegistry*"/>
-        </return-value>
-      </function>
-      <function name="fork_is_enabled"
-                c:identifier="gst_registry_fork_is_enabled"
-                doc="By default GStreamer will perform scanning and rebuilding of the
-registry file using a helper child process.
-Applications might want to disable this behaviour with the
-gst_registry_fork_set_enabled() function, in which case new plugins
-are scanned (and loaded) into the application process.
-rebuilding the registry."
-                version="0.10.10">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-      </function>
-      <function name="fork_set_enabled"
-                c:identifier="gst_registry_fork_set_enabled"
-                doc="Applications might want to disable/enable spawning of a child helper process
-when rebuilding the registry. See gst_registry_fork_is_enabled() for more
-information."
-                version="0.10.10">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="enabled" transfer-ownership="none">
-            <type name="boolean" c:type="gboolean"/>
-          </parameter>
-        </parameters>
-      </function>
-      <method name="scan_path"
-              c:identifier="gst_registry_scan_path"
-              doc="Scan the given path for plugins to add to the registry. The syntax of the
-path is specific to the registry.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="path" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="add_path"
-              c:identifier="gst_registry_add_path"
-              doc="Add the given path to the registry. The syntax of the
-path is specific to the registry. If the path has already been
-added, do nothing.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="path" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_path_list"
-              c:identifier="gst_registry_get_path_list"
-              doc="Get the list of paths for the given registry.
-MT safe.">
-        <return-value transfer-ownership="full">
-          <type name="GLib.List" c:type="GList*"/>
-        </return-value>
-      </method>
-      <method name="add_plugin"
-              c:identifier="gst_registry_add_plugin"
-              doc="Add the plugin to the registry. The plugin-added signal will be emitted.
-This function will sink @plugin.
-MT safe.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="plugin" transfer-ownership="none">
-            <type name="Plugin" c:type="GstPlugin*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="remove_plugin"
-              c:identifier="gst_registry_remove_plugin"
-              doc="Remove the plugin from the registry.
-MT safe.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="plugin" transfer-ownership="none">
-            <type name="Plugin" c:type="GstPlugin*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="add_feature"
-              c:identifier="gst_registry_add_feature"
-              doc="Add the feature to the registry. The feature-added signal will be emitted.
-This function sinks @feature.
-MT safe.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="feature" transfer-ownership="none">
-            <type name="PluginFeature" c:type="GstPluginFeature*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="remove_feature"
-              c:identifier="gst_registry_remove_feature"
-              doc="Remove the feature from the registry.
-MT safe.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="feature" transfer-ownership="none">
-            <type name="PluginFeature" c:type="GstPluginFeature*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_plugin_list"
-              c:identifier="gst_registry_get_plugin_list"
-              doc="Get a copy of all plugins registered in the given registry. The refcount
-of each element in the list in incremented.
-MT safe.">
-        <return-value transfer-ownership="full" doc="after usage.">
-          <type name="GLib.List" c:type="GList*"/>
-        </return-value>
-      </method>
-      <method name="plugin_filter"
-              c:identifier="gst_registry_plugin_filter"
-              doc="Runs a filter against all plugins in the registry and returns a #GList with
-the results. If the first flag is set, only the first match is
-returned (as a list with a single object).
-Every plugin is reffed; use gst_plugin_list_free() after use, which
-will unref again.
-MT safe.">
-        <return-value transfer-ownership="full" doc="after usage.">
-          <type name="GLib.List" c:type="GList*"/>
-        </return-value>
-        <parameters>
-          <parameter name="filter" transfer-ownership="none" scope="call">
-            <type name="PluginFilter" c:type="GstPluginFilter"/>
-          </parameter>
-          <parameter name="first" transfer-ownership="none">
-            <type name="boolean" c:type="gboolean"/>
-          </parameter>
-          <parameter name="user_data" transfer-ownership="none">
-            <type name="any" c:type="gpointer"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="feature_filter"
-              c:identifier="gst_registry_feature_filter"
-              doc="Runs a filter against all features of the plugins in the registry
-and returns a GList with the results.
-If the first flag is set, only the first match is
-returned (as a list with a single object).
-after usage.
-MT safe.">
-        <return-value transfer-ownership="full">
-          <type name="GLib.List" c:type="GList*"/>
-        </return-value>
-        <parameters>
-          <parameter name="filter" transfer-ownership="none" scope="call">
-            <type name="PluginFeatureFilter" c:type="GstPluginFeatureFilter"/>
-          </parameter>
-          <parameter name="first" transfer-ownership="none">
-            <type name="boolean" c:type="gboolean"/>
-          </parameter>
-          <parameter name="user_data" transfer-ownership="none">
-            <type name="any" c:type="gpointer"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_feature_list"
-              c:identifier="gst_registry_get_feature_list"
-              doc="Retrieves a #GList of #GstPluginFeature of @type.
-gst_plugin_feature_list_free() after usage.
-MT safe.">
-        <return-value transfer-ownership="full">
-          <type name="GLib.List" c:type="GList*"/>
-        </return-value>
-        <parameters>
-          <parameter name="type" transfer-ownership="none">
-            <type name="GType" c:type="GType"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_feature_list_by_plugin"
-              c:identifier="gst_registry_get_feature_list_by_plugin"
-              doc="Retrieves a #GList of features of the plugin with name @name.
-after usage.">
-        <return-value transfer-ownership="full">
-          <type name="GLib.List" c:type="GList*"/>
-        </return-value>
-        <parameters>
-          <parameter name="name" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_feature_list_cookie"
-              c:identifier="gst_registry_get_feature_list_cookie"
-              doc="Returns the registrys feature list cookie. This changes
-every time a feature is added or removed from the registry."
-              version="0.10.26">
-        <return-value transfer-ownership="none">
-          <type name="uint32" c:type="guint32"/>
-        </return-value>
-      </method>
-      <method name="find_plugin"
-              c:identifier="gst_registry_find_plugin"
-              doc="Find the plugin with the given name in the registry.
-The plugin will be reffed; caller is responsible for unreffing.
-gst_object_unref() after usage.
-MT safe.">
-        <return-value transfer-ownership="full">
-          <type name="Plugin" c:type="GstPlugin*"/>
-        </return-value>
-        <parameters>
-          <parameter name="name" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="find_feature"
-              c:identifier="gst_registry_find_feature"
-              doc="Find the pluginfeature with the given name and type in the registry.
-if the plugin was not found. gst_object_unref() after usage.
-MT safe.">
-        <return-value transfer-ownership="full">
-          <type name="PluginFeature" c:type="GstPluginFeature*"/>
-        </return-value>
-        <parameters>
-          <parameter name="name" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="type" transfer-ownership="none">
-            <type name="GType" c:type="GType"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="lookup"
-              c:identifier="gst_registry_lookup"
-              doc="Look up a plugin in the given registry with the given filename.
-If found, plugin is reffed.
-after usage.">
-        <return-value transfer-ownership="full">
-          <type name="Plugin" c:type="GstPlugin*"/>
-        </return-value>
-        <parameters>
-          <parameter name="filename" transfer-ownership="none">
-            <type name="utf8" c:type="char*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="lookup_feature"
-              c:identifier="gst_registry_lookup_feature"
-              doc="Find a #GstPluginFeature with @name in @registry.
-gst_object_unref() after usage.
-MT safe.">
-        <return-value transfer-ownership="full">
-          <type name="PluginFeature" c:type="GstPluginFeature*"/>
-        </return-value>
-        <parameters>
-          <parameter name="name" transfer-ownership="none">
-            <type name="utf8" c:type="char*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="xml_read_cache" c:identifier="gst_registry_xml_read_cache">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="location" transfer-ownership="none">
-            <type name="utf8" c:type="char*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="xml_write_cache"
-              c:identifier="gst_registry_xml_write_cache">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="location" transfer-ownership="none">
-            <type name="utf8" c:type="char*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <field name="object">
-        <type name="Object" c:type="GstObject"/>
-      </field>
-      <field name="plugins">
-        <type name="GLib.List" c:type="GList*"/>
-      </field>
-      <field name="features">
-        <type name="GLib.List" c:type="GList*"/>
-      </field>
-      <field name="paths">
-        <type name="GLib.List" c:type="GList*"/>
-      </field>
-      <field name="cache_file">
-        <type name="int" c:type="int"/>
-      </field>
-      <field name="feature_hash">
-        <type name="GLib.HashTable" c:type="GHashTable*"/>
-      </field>
-      <field name="basename_hash">
-        <type name="GLib.HashTable" c:type="GHashTable*"/>
-      </field>
-      <field name="priv">
-        <type name="RegistryPrivate" c:type="GstRegistryPrivate*"/>
-      </field>
-      <field name="_gst_reserved">
-        <array zero-terminated="0" c:type="gpointer" fixed-size="1">
-          <type name="any"/>
-        </array>
-      </field>
-      <glib:signal name="feature-added"
-                   doc="Signals that a feature has been added to the registry (possibly
-replacing a previously-added one by the same name)">
-        <return-value transfer-ownership="full">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="feature" transfer-ownership="none">
-            <type name="any" c:type="gpointer"/>
-          </parameter>
-        </parameters>
-      </glib:signal>
-      <glib:signal name="plugin-added"
-                   doc="Signals that a plugin has been added to the registry (possibly
-replacing a previously-added one by the same name)">
-        <return-value transfer-ownership="full">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="plugin" transfer-ownership="none">
-            <type name="any" c:type="gpointer"/>
-          </parameter>
-        </parameters>
-      </glib:signal>
-    </class>
-    <record name="RegistryClass"
-            c:type="GstRegistryClass"
-            glib:is-gtype-struct-for="Registry">
-      <field name="parent_class">
-        <type name="ObjectClass" c:type="GstObjectClass"/>
-      </field>
-      <field name="plugin_added">
-        <callback name="plugin_added" c:type="plugin_added">
-          <return-value transfer-ownership="none">
-            <type name="none" c:type="void"/>
-          </return-value>
-          <parameters>
-            <parameter name="registry" transfer-ownership="none">
-              <type name="Registry" c:type="GstRegistry*"/>
-            </parameter>
-            <parameter name="plugin" transfer-ownership="none">
-              <type name="Plugin" c:type="GstPlugin*"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="feature_added">
-        <callback name="feature_added" c:type="feature_added">
-          <return-value transfer-ownership="none">
-            <type name="none" c:type="void"/>
-          </return-value>
-          <parameters>
-            <parameter name="registry" transfer-ownership="none">
-              <type name="Registry" c:type="GstRegistry*"/>
-            </parameter>
-            <parameter name="feature" transfer-ownership="none">
-              <type name="PluginFeature" c:type="GstPluginFeature*"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="_gst_reserved">
-        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
-          <type name="any"/>
-        </array>
-      </field>
-    </record>
-    <record name="RegistryPrivate" c:type="GstRegistryPrivate">
-    </record>
-    <enumeration name="ResourceError"
-                 doc="category.  Make sure you add a custom message to the error call.
-deciding where to go while developing code.
-both reading and writing, or either (but unspecified which).
-Resource errors are for any resource used by an element:
-memory, files, network connections, process space, ...
-They&apos;re typically used by source and sink elements."
-                 c:type="GstResourceError"
-                 glib:error-quark="gst_resource_error_quark">
-      <member name="failed"
-              value="1"
-              c:identifier="GST_RESOURCE_ERROR_FAILED"/>
-      <member name="too_lazy"
-              value="2"
-              c:identifier="GST_RESOURCE_ERROR_TOO_LAZY"/>
-      <member name="not_found"
-              value="3"
-              c:identifier="GST_RESOURCE_ERROR_NOT_FOUND"/>
-      <member name="busy" value="4" c:identifier="GST_RESOURCE_ERROR_BUSY"/>
-      <member name="open_read"
-              value="5"
-              c:identifier="GST_RESOURCE_ERROR_OPEN_READ"/>
-      <member name="open_write"
-              value="6"
-              c:identifier="GST_RESOURCE_ERROR_OPEN_WRITE"/>
-      <member name="open_read_write"
-              value="7"
-              c:identifier="GST_RESOURCE_ERROR_OPEN_READ_WRITE"/>
-      <member name="close" value="8" c:identifier="GST_RESOURCE_ERROR_CLOSE"/>
-      <member name="read" value="9" c:identifier="GST_RESOURCE_ERROR_READ"/>
-      <member name="write" value="10" c:identifier="GST_RESOURCE_ERROR_WRITE"/>
-      <member name="seek" value="11" c:identifier="GST_RESOURCE_ERROR_SEEK"/>
-      <member name="sync" value="12" c:identifier="GST_RESOURCE_ERROR_SYNC"/>
-      <member name="settings"
-              value="13"
-              c:identifier="GST_RESOURCE_ERROR_SETTINGS"/>
-      <member name="no_space_left"
-              value="14"
-              c:identifier="GST_RESOURCE_ERROR_NO_SPACE_LEFT"/>
-      <member name="num_errors"
-              value="15"
-              c:identifier="GST_RESOURCE_ERROR_NUM_ERRORS"/>
-    </enumeration>
-    <constant name="SECOND" value="0">
-      <type name="int"/>
-    </constant>
-    <enumeration name="SearchMode"
-                 doc="The different search modes."
-                 version="0.10.23"
-                 c:type="GstSearchMode">
-      <member name="exact" value="0" c:identifier="GST_SEARCH_MODE_EXACT"/>
-      <member name="before" value="1" c:identifier="GST_SEARCH_MODE_BEFORE"/>
-      <member name="after" value="2" c:identifier="GST_SEARCH_MODE_AFTER"/>
-    </enumeration>
-    <bitfield name="SeekFlags"
-              doc="be considerably slower for some formats.
-faster but less accurate.
-elements to skip frames instead of generating all
-frames. Since 0.10.22.
-Flags to be used with gst_element_seek() or gst_event_new_seek(). All flags
-can be used together.
-A non flushing seek might take some time to perform as the currently
-playing data in the pipeline will not be cleared.
-An accurate seek might be slower for formats that don&apos;t have any indexes
-or timestamp markers in the stream. Specifying this flag might require a
-complete scan of the file in those cases.
-no EOS will be emmited by the element that performed the seek, but a
-#GST_MESSAGE_SEGMENT_DONE message will be posted on the bus by the element.
-When this message is posted, it is possible to send a new seek event to
-continue playback. With this seek method it is possible to perform seemless
-looping or simple linear editing.
-When doing fast forward (rate &gt; 1.0) or fast reverse (rate &lt; -1.0) trickmode
-playback, the @GST_SEEK_FLAG_SKIP flag can be used to instruct decoders
-and demuxers to adjust the playback rate by skipping frames. This can improve
-performance and decrease CPU usage because not all frames need to be decoded."
-              c:type="GstSeekFlags">
-      <member name="none" value="0" c:identifier="GST_SEEK_FLAG_NONE"/>
-      <member name="flush" value="1" c:identifier="GST_SEEK_FLAG_FLUSH"/>
-      <member name="accurate" value="2" c:identifier="GST_SEEK_FLAG_ACCURATE"/>
-      <member name="key_unit" value="4" c:identifier="GST_SEEK_FLAG_KEY_UNIT"/>
-      <member name="segment" value="8" c:identifier="GST_SEEK_FLAG_SEGMENT"/>
-      <member name="skip" value="16" c:identifier="GST_SEEK_FLAG_SKIP"/>
-    </bitfield>
-    <enumeration name="SeekType"
-                 doc="can&apos;t be used to seek relative to the current playback position - do a
-position query, calculate the desired position and then do an absolute
-position seek instead if that&apos;s what you want to do.
-The different types of seek events. When constructing a seek event with
-gst_event_new_seek(), a format, a seek method and optional flags are to
-be provided. The seek event is then inserted into the graph with
-gst_pad_send_event() or gst_element_send_event()."
-                 c:type="GstSeekType">
-      <member name="none" value="0" c:identifier="GST_SEEK_TYPE_NONE"/>
-      <member name="cur" value="1" c:identifier="GST_SEEK_TYPE_CUR"/>
-      <member name="set" value="2" c:identifier="GST_SEEK_TYPE_SET"/>
-      <member name="end" value="3" c:identifier="GST_SEEK_TYPE_END"/>
-    </enumeration>
-    <record name="Segment"
-            c:type="GstSegment"
-            doc="A helper structure that holds the configured region of
-interest in a media file."
-            glib:type-name="GstSegment"
-            glib:get-type="gst_segment_get_type">
-      <field name="rate" writable="1">
-        <type name="double" c:type="gdouble"/>
-      </field>
-      <field name="abs_rate" writable="1">
-        <type name="double" c:type="gdouble"/>
-      </field>
-      <field name="format" writable="1">
-        <type name="Format" c:type="GstFormat"/>
-      </field>
-      <field name="flags" writable="1">
-        <type name="SeekFlags" c:type="GstSeekFlags"/>
-      </field>
-      <field name="start" writable="1">
-        <type name="int64" c:type="gint64"/>
-      </field>
-      <field name="stop" writable="1">
-        <type name="int64" c:type="gint64"/>
-      </field>
-      <field name="time" writable="1">
-        <type name="int64" c:type="gint64"/>
-      </field>
-      <field name="accum" writable="1">
-        <type name="int64" c:type="gint64"/>
-      </field>
-      <field name="last_stop" writable="1">
-        <type name="int64" c:type="gint64"/>
-      </field>
-      <field name="duration" writable="1">
-        <type name="int64" c:type="gint64"/>
-      </field>
-      <field name="applied_rate" writable="1">
-        <type name="double" c:type="gdouble"/>
-      </field>
-      <field name="_gst_reserved" writable="1">
-        <array zero-terminated="0" c:type="guint8" fixed-size="0">
-          <type name="uint8"/>
-        </array>
-      </field>
-      <constructor name="new"
-                   c:identifier="gst_segment_new"
-                   doc="Allocate a new #GstSegment structure and initialize it using
-gst_segment_init().">
-        <return-value transfer-ownership="full">
-          <type name="Segment" c:type="GstSegment*"/>
-        </return-value>
-      </constructor>
-      <method name="copy"
-              c:identifier="gst_segment_copy"
-              doc="Create a copy of given @segment."
-              version="0.10.20">
-        <return-value transfer-ownership="full">
-          <type name="Segment" c:type="GstSegment*"/>
-        </return-value>
-      </method>
-      <method name="free"
-              c:identifier="gst_segment_free"
-              doc="Free the allocated segment @segment.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-      </method>
-      <method name="init"
-              c:identifier="gst_segment_init"
-              doc="The start/last_stop positions are set to 0 and the stop/duration
-fields are set to -1 (unknown). The default rate of 1.0 and no
-flags are set.
-Initialize @segment to its default values.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="format" transfer-ownership="none">
-            <type name="Format" c:type="GstFormat"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="set_duration"
-              c:identifier="gst_segment_set_duration"
-              doc="Set the duration of the segment to @duration. This function is mainly
-used by elements that perform seeking and know the total duration of the
-segment.
-This field should be set to allow seeking requests relative to the
-duration.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="format" transfer-ownership="none">
-            <type name="Format" c:type="GstFormat"/>
-          </parameter>
-          <parameter name="duration" transfer-ownership="none">
-            <type name="int64" c:type="gint64"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="set_last_stop"
-              c:identifier="gst_segment_set_last_stop"
-              doc="Set the last observed stop position in the segment to @position.
-This field should be set to allow seeking requests relative to the
-current playing position.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="format" transfer-ownership="none">
-            <type name="Format" c:type="GstFormat"/>
-          </parameter>
-          <parameter name="position" transfer-ownership="none">
-            <type name="int64" c:type="gint64"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="set_seek"
-              c:identifier="gst_segment_set_seek"
-              doc="Update the segment structure with the field values of a seek event (see
-gst_event_new_seek()).
-After calling this method, the segment field last_stop and time will
-contain the requested new position in the segment. The new requested
-position in the segment depends on @rate and @start_type and @stop_type.
-For positive @rate, the new position in the segment is the new @segment
-start field when it was updated with a @start_type different from
-#GST_SEEK_TYPE_NONE. If no update was performed on @segment start position
-(#GST_SEEK_TYPE_NONE), @start is ignored and @segment last_stop is
-unmodified.
-For negative @rate, the new position in the segment is the new @segment
-stop field when it was updated with a @stop_type different from
-#GST_SEEK_TYPE_NONE. If no stop was previously configured in the segment, the
-duration of the segment will be used to update the stop position.
-If no update was performed on @segment stop position (#GST_SEEK_TYPE_NONE),
-The applied rate of the segment will be set to 1.0 by default.
-If the caller can apply a rate change, it should update @segment
-rate and applied_rate after calling this function.
-last_stop field. This field can be FALSE if, for example, only the @rate
-has been changed but not the playback position.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="rate" transfer-ownership="none">
-            <type name="double" c:type="gdouble"/>
-          </parameter>
-          <parameter name="format" transfer-ownership="none">
-            <type name="Format" c:type="GstFormat"/>
-          </parameter>
-          <parameter name="flags" transfer-ownership="none">
-            <type name="SeekFlags" c:type="GstSeekFlags"/>
-          </parameter>
-          <parameter name="start_type" transfer-ownership="none">
-            <type name="SeekType" c:type="GstSeekType"/>
-          </parameter>
-          <parameter name="start" transfer-ownership="none">
-            <type name="int64" c:type="gint64"/>
-          </parameter>
-          <parameter name="stop_type" transfer-ownership="none">
-            <type name="SeekType" c:type="GstSeekType"/>
-          </parameter>
-          <parameter name="stop" transfer-ownership="none">
-            <type name="int64" c:type="gint64"/>
-          </parameter>
-          <parameter name="update" direction="out" transfer-ownership="full">
-            <type name="boolean" c:type="gboolean*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="set_newsegment"
-              c:identifier="gst_segment_set_newsegment"
-              doc="Update the segment structure with the field values of a new segment event and
-with a default applied_rate of 1.0."
-              version="0.10.6">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="update" transfer-ownership="none">
-            <type name="boolean" c:type="gboolean"/>
-          </parameter>
-          <parameter name="rate" transfer-ownership="none">
-            <type name="double" c:type="gdouble"/>
-          </parameter>
-          <parameter name="format" transfer-ownership="none">
-            <type name="Format" c:type="GstFormat"/>
-          </parameter>
-          <parameter name="start" transfer-ownership="none">
-            <type name="int64" c:type="gint64"/>
-          </parameter>
-          <parameter name="stop" transfer-ownership="none">
-            <type name="int64" c:type="gint64"/>
-          </parameter>
-          <parameter name="time" transfer-ownership="none">
-            <type name="int64" c:type="gint64"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="set_newsegment_full"
-              c:identifier="gst_segment_set_newsegment_full"
-              doc="Update the segment structure with the field values of a new segment event.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="update" transfer-ownership="none">
-            <type name="boolean" c:type="gboolean"/>
-          </parameter>
-          <parameter name="rate" transfer-ownership="none">
-            <type name="double" c:type="gdouble"/>
-          </parameter>
-          <parameter name="applied_rate" transfer-ownership="none">
-            <type name="double" c:type="gdouble"/>
-          </parameter>
-          <parameter name="format" transfer-ownership="none">
-            <type name="Format" c:type="GstFormat"/>
-          </parameter>
-          <parameter name="start" transfer-ownership="none">
-            <type name="int64" c:type="gint64"/>
-          </parameter>
-          <parameter name="stop" transfer-ownership="none">
-            <type name="int64" c:type="gint64"/>
-          </parameter>
-          <parameter name="time" transfer-ownership="none">
-            <type name="int64" c:type="gint64"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="to_stream_time"
-              c:identifier="gst_segment_to_stream_time"
-              doc="Translate @position to stream time using the currently configured
-segment. The @position value must be between @segment start and
-stop value.
-This function is typically used by elements that need to operate on
-the stream time of the buffers it receives, such as effect plugins.
-In those use cases, @position is typically the buffer timestamp or
-clock time that one wants to convert to the stream time.
-The stream time is always between 0 and the total duration of the
-media stream.
-was given.">
-        <return-value transfer-ownership="none">
-          <type name="int64" c:type="gint64"/>
-        </return-value>
-        <parameters>
-          <parameter name="format" transfer-ownership="none">
-            <type name="Format" c:type="GstFormat"/>
-          </parameter>
-          <parameter name="position" transfer-ownership="none">
-            <type name="int64" c:type="gint64"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="to_running_time"
-              c:identifier="gst_segment_to_running_time"
-              doc="Translate @position to the total running time using the currently configured
-and previously accumulated segments. Position is a value between @segment
-start and stop time.
-This function is typically used by elements that need to synchronize to the
-global clock in a pipeline. The runnning time is a constantly increasing value
-starting from 0. When gst_segment_init() is called, this value will reset to
-0.
-This function returns -1 if the position is outside of @segment start and stop.
-was given.">
-        <return-value transfer-ownership="none">
-          <type name="int64" c:type="gint64"/>
-        </return-value>
-        <parameters>
-          <parameter name="format" transfer-ownership="none">
-            <type name="Format" c:type="GstFormat"/>
-          </parameter>
-          <parameter name="position" transfer-ownership="none">
-            <type name="int64" c:type="gint64"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="to_position"
-              c:identifier="gst_segment_to_position"
-              doc="Convert @running_time into a position in the segment so that
-gst_segment_to_running_time() with that position returns @running_time.
--1 when @running_time is -1 or when it is not inside @segment."
-              version="0.10.24">
-        <return-value transfer-ownership="none">
-          <type name="int64" c:type="gint64"/>
-        </return-value>
-        <parameters>
-          <parameter name="format" transfer-ownership="none">
-            <type name="Format" c:type="GstFormat"/>
-          </parameter>
-          <parameter name="running_time" transfer-ownership="none">
-            <type name="int64" c:type="gint64"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="clip"
-              c:identifier="gst_segment_clip"
-              doc="Clip the given @start and @stop values to the segment boundaries given
-in @segment. @start and @stop are compared and clipped to @segment
-start and stop values.
-If the function returns FALSE, @start and @stop are known to fall
-outside of @segment and @clip_start and @clip_stop are not updated.
-When the function returns TRUE, @clip_start and @clip_stop will be
-updated. If @clip_start or @clip_stop are different from @start or @stop
-respectively, the region fell partially in the segment.
-Note that when @stop is -1, @clip_stop will be set to the end of the
-segment. Depending on the use case, this may or may not be what you want.
-completely in @segment, FALSE if the values are completely outside
-of the segment.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="format" transfer-ownership="none">
-            <type name="Format" c:type="GstFormat"/>
-          </parameter>
-          <parameter name="start" transfer-ownership="none">
-            <type name="int64" c:type="gint64"/>
-          </parameter>
-          <parameter name="stop" transfer-ownership="none">
-            <type name="int64" c:type="gint64"/>
-          </parameter>
-          <parameter name="clip_start"
-                     direction="out"
-                     transfer-ownership="full">
-            <type name="int64" c:type="gint64*"/>
-          </parameter>
-          <parameter name="clip_stop"
-                     direction="out"
-                     transfer-ownership="full">
-            <type name="int64" c:type="gint64*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="set_running_time"
-              c:identifier="gst_segment_set_running_time"
-              doc="Adjust the start/stop and accum values of @segment such that the next valid
-buffer will be one with @running_time.
-returned, @running_time is -1 or not in @segment."
-              version="0.10.24">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="format" transfer-ownership="none">
-            <type name="Format" c:type="GstFormat"/>
-          </parameter>
-          <parameter name="running_time" transfer-ownership="none">
-            <type name="int64" c:type="gint64"/>
-          </parameter>
-        </parameters>
-      </method>
-    </record>
-    <enumeration name="State"
-                 doc="process data. Sink elements however only accept one
-buffer and then block.
-the data is flowing.
-The possible states an element can be in. States can be changed using
-gst_element_set_state() and checked using gst_element_get_state()."
-                 c:type="GstState">
-      <member name="void_pending"
-              value="0"
-              c:identifier="GST_STATE_VOID_PENDING"/>
-      <member name="null" value="1" c:identifier="GST_STATE_NULL"/>
-      <member name="ready" value="2" c:identifier="GST_STATE_READY"/>
-      <member name="paused" value="3" c:identifier="GST_STATE_PAUSED"/>
-      <member name="playing" value="4" c:identifier="GST_STATE_PLAYING"/>
-    </enumeration>
-    <bitfield name="StateChange"
-              doc="&lt;itemizedlist&gt;
-&lt;listitem&gt;&lt;para&gt;
-The element must check if the resources it needs are available. Device
-sinks and -sources typically try to probe the device to constrain their
-caps.
-&lt;/para&gt;&lt;/listitem&gt;
-&lt;listitem&gt;&lt;para&gt;
-The element opens the device (in case feature need to be probed).
-&lt;/para&gt;&lt;/listitem&gt;
-&lt;/itemizedlist&gt;
-&lt;itemizedlist&gt;
-&lt;listitem&gt;&lt;para&gt;
-The element pads are activated in order to receive data in PAUSED.
-Streaming threads are started.
-&lt;/para&gt;&lt;/listitem&gt;
-&lt;listitem&gt;&lt;para&gt;
-Some elements might need to return ASYNC and complete the state change
-when they have enough information. It is a requirement for sinks to
-return ASYNC and complete the state change when they receive the first
-buffer or EOS event (preroll). Sinks also block the dataflow when in
-PAUSED.
-&lt;/para&gt;&lt;/listitem&gt;
-&lt;listitem&gt;&lt;para&gt;
-A pipeline resets the running_time to 0.
-&lt;/para&gt;&lt;/listitem&gt;
-&lt;listitem&gt;&lt;para&gt;
-Live sources return NO_PREROLL and don&apos;t generate data.
-&lt;/para&gt;&lt;/listitem&gt;
-&lt;/itemizedlist&gt;
-&lt;itemizedlist&gt;
-&lt;listitem&gt;&lt;para&gt;
-Most elements ignore this state change.
-&lt;/para&gt;&lt;/listitem&gt;
-&lt;listitem&gt;&lt;para&gt;
-The pipeline selects a clock and distributes this to all the children
-before setting them to PLAYING. This means that it is only alowed to
-synchronize on the clock in the PLAYING state.
-&lt;/para&gt;&lt;/listitem&gt;
-&lt;listitem&gt;&lt;para&gt;
-The pipeline uses the clock and the running_time to calculate the
-base_time. The base_time is distributed to all children when performing
-the state change.
-&lt;/para&gt;&lt;/listitem&gt;
-&lt;listitem&gt;&lt;para&gt;
-Sink elements stop blocking on the preroll buffer or event and start
-rendering the data.
-&lt;/para&gt;&lt;/listitem&gt;
-&lt;listitem&gt;&lt;para&gt;
-Sinks can post the EOS message in the PLAYING state. It is not allowed to
-post EOS when not in the PLAYING state.
-&lt;/para&gt;&lt;/listitem&gt;
-&lt;listitem&gt;&lt;para&gt;
-While streaming in PAUSED or PLAYING elements can create and remove
-sometimes pads.
-&lt;/para&gt;&lt;/listitem&gt;
-&lt;listitem&gt;&lt;para&gt;
-Live sources start generating data and return SUCCESS.
-&lt;/para&gt;&lt;/listitem&gt;
-&lt;/itemizedlist&gt;
-&lt;itemizedlist&gt;
-&lt;listitem&gt;&lt;para&gt;
-Most elements ignore this state change.
-&lt;/para&gt;&lt;/listitem&gt;
-&lt;listitem&gt;&lt;para&gt;
-The pipeline calculates the running_time based on the last selected clock
-and the base_time. It stores this information to continue playback when
-going back to the PLAYING state.
-&lt;/para&gt;&lt;/listitem&gt;
-&lt;listitem&gt;&lt;para&gt;
-Sinks unblock any clock wait calls.
-&lt;/para&gt;&lt;/listitem&gt;
-&lt;listitem&gt;&lt;para&gt;
-When a sink does not have a pending buffer to play, it returns ASYNC from
-this state change and completes the state change when it receives a new
-buffer or an EOS event.
-&lt;/para&gt;&lt;/listitem&gt;
-&lt;listitem&gt;&lt;para&gt;
-Any queued EOS messages are removed since they will be reposted when going
-back to the PLAYING state. The EOS messages are queued in GstBins.
-&lt;/para&gt;&lt;/listitem&gt;
-&lt;listitem&gt;&lt;para&gt;
-Live sources stop generating data and return NO_PREROLL.
-&lt;/para&gt;&lt;/listitem&gt;
-&lt;/itemizedlist&gt;
-&lt;itemizedlist&gt;
-&lt;listitem&gt;&lt;para&gt;
-Sinks unblock any waits in the preroll.
-&lt;/para&gt;&lt;/listitem&gt;
-&lt;listitem&gt;&lt;para&gt;
-Elements unblock any waits on devices
-&lt;/para&gt;&lt;/listitem&gt;
-&lt;listitem&gt;&lt;para&gt;
-Chain or get_range functions return WRONG_STATE.
-&lt;/para&gt;&lt;/listitem&gt;
-&lt;listitem&gt;&lt;para&gt;
-The element pads are deactivated so that streaming becomes impossible and
-all streaming threads are stopped.
-&lt;/para&gt;&lt;/listitem&gt;
-&lt;listitem&gt;&lt;para&gt;
-The sink forgets all negotiated formats
-&lt;/para&gt;&lt;/listitem&gt;
-&lt;listitem&gt;&lt;para&gt;
-Elements remove all sometimes pads
-&lt;/para&gt;&lt;/listitem&gt;
-&lt;/itemizedlist&gt;
-&lt;itemizedlist&gt;
-&lt;listitem&gt;&lt;para&gt;
-Elements close devices
-&lt;/para&gt;&lt;/listitem&gt;
-&lt;listitem&gt;&lt;para&gt;
-Elements reset any internal state.
-&lt;/para&gt;&lt;/listitem&gt;
-&lt;/itemizedlist&gt;
-These are the different state changes an element goes through.
-%GST_STATE_NULL &amp;rArr; %GST_STATE_PLAYING is called an upwards state change
-and %GST_STATE_PLAYING &amp;rArr; %GST_STATE_NULL a downwards state change."
-              c:type="GstStateChange">
-      <member name="null_to_ready"
-              value="10"
-              c:identifier="GST_STATE_CHANGE_NULL_TO_READY"/>
-      <member name="ready_to_paused"
-              value="19"
-              c:identifier="GST_STATE_CHANGE_READY_TO_PAUSED"/>
-      <member name="paused_to_playing"
-              value="28"
-              c:identifier="GST_STATE_CHANGE_PAUSED_TO_PLAYING"/>
-      <member name="playing_to_paused"
-              value="35"
-              c:identifier="GST_STATE_CHANGE_PLAYING_TO_PAUSED"/>
-      <member name="paused_to_ready"
-              value="26"
-              c:identifier="GST_STATE_CHANGE_PAUSED_TO_READY"/>
-      <member name="ready_to_null"
-              value="17"
-              c:identifier="GST_STATE_CHANGE_READY_TO_NULL"/>
-    </bitfield>
-    <enumeration name="StateChangeReturn"
-                 doc="cannot produce data in %GST_STATE_PAUSED.
-This typically happens with live sources.
-The possible return values from a state change function. Only"
-                 c:type="GstStateChangeReturn">
-      <member name="failure"
-              value="0"
-              c:identifier="GST_STATE_CHANGE_FAILURE"/>
-      <member name="success"
-              value="1"
-              c:identifier="GST_STATE_CHANGE_SUCCESS"/>
-      <member name="async" value="2" c:identifier="GST_STATE_CHANGE_ASYNC"/>
-      <member name="no_preroll"
-              value="3"
-              c:identifier="GST_STATE_CHANGE_NO_PREROLL"/>
-    </enumeration>
-    <record name="StaticCaps"
-            c:type="GstStaticCaps"
-            doc="Datastructure to initialize #GstCaps from a string description usually
-used in conjunction with GST_STATIC_CAPS() and gst_static_caps_get() to
-instantiate a #GstCaps.">
-      <field name="caps" writable="1">
-        <type name="Caps" c:type="GstCaps"/>
-      </field>
-      <field name="string" writable="1">
-        <type name="utf8" c:type="char*"/>
-      </field>
-      <field name="_gst_reserved" writable="1">
-        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
-          <type name="any"/>
-        </array>
-      </field>
-      <method name="get"
-              c:identifier="gst_static_caps_get"
-              doc="Converts a #GstStaticCaps to a #GstCaps.
-core holds an additional ref to the returned caps,
-use gst_caps_make_writable() on the returned caps to modify it.">
-        <return-value transfer-ownership="full">
-          <type name="Caps" c:type="GstCaps*"/>
-        </return-value>
-      </method>
-    </record>
-    <record name="StaticPadTemplate" c:type="GstStaticPadTemplate">
-      <field name="name_template" writable="1">
-        <type name="utf8" c:type="gchar*"/>
-      </field>
-      <field name="direction" writable="1">
-        <type name="PadDirection" c:type="GstPadDirection"/>
-      </field>
-      <field name="presence" writable="1">
-        <type name="PadPresence" c:type="GstPadPresence"/>
-      </field>
-      <field name="static_caps" writable="1">
-        <type name="StaticCaps" c:type="GstStaticCaps"/>
-      </field>
-      <method name="get"
-              c:identifier="gst_static_pad_template_get"
-              doc="Converts a #GstStaticPadTemplate into a #GstPadTemplate.">
-        <return-value transfer-ownership="full">
-          <type name="PadTemplate" c:type="GstPadTemplate*"/>
-        </return-value>
-      </method>
-      <method name="get_caps"
-              c:identifier="gst_static_pad_template_get_caps"
-              doc="Gets the capabilities of the static pad template.
-Unref after usage. Since the core holds an additional
-ref to the returned caps, use gst_caps_make_writable()
-on the returned caps to modify it.">
-        <return-value transfer-ownership="full">
-          <type name="Caps" c:type="GstCaps*"/>
-        </return-value>
-      </method>
-    </record>
-    <enumeration name="StreamError"
-                 doc="category.  Make sure you add a custom message to the error call.
-deciding where to go while developing code.
-this functionality yet.
-stream&apos;s type.
-of stream.
-stream&apos;s type.
-(for example, wrong caps).
-Stream errors are for anything related to the stream being processed:
-format errors, media type errors, ...
-They&apos;re typically used by decoders, demuxers, converters, ..."
-                 c:type="GstStreamError"
-                 glib:error-quark="gst_stream_error_quark">
-      <member name="failed" value="1" c:identifier="GST_STREAM_ERROR_FAILED"/>
-      <member name="too_lazy"
-              value="2"
-              c:identifier="GST_STREAM_ERROR_TOO_LAZY"/>
-      <member name="not_implemented"
-              value="3"
-              c:identifier="GST_STREAM_ERROR_NOT_IMPLEMENTED"/>
-      <member name="type_not_found"
-              value="4"
-              c:identifier="GST_STREAM_ERROR_TYPE_NOT_FOUND"/>
-      <member name="wrong_type"
-              value="5"
-              c:identifier="GST_STREAM_ERROR_WRONG_TYPE"/>
-      <member name="codec_not_found"
-              value="6"
-              c:identifier="GST_STREAM_ERROR_CODEC_NOT_FOUND"/>
-      <member name="decode" value="7" c:identifier="GST_STREAM_ERROR_DECODE"/>
-      <member name="encode" value="8" c:identifier="GST_STREAM_ERROR_ENCODE"/>
-      <member name="demux" value="9" c:identifier="GST_STREAM_ERROR_DEMUX"/>
-      <member name="mux" value="10" c:identifier="GST_STREAM_ERROR_MUX"/>
-      <member name="format" value="11" c:identifier="GST_STREAM_ERROR_FORMAT"/>
-      <member name="decrypt"
-              value="12"
-              c:identifier="GST_STREAM_ERROR_DECRYPT"/>
-      <member name="decrypt_nokey"
-              value="13"
-              c:identifier="GST_STREAM_ERROR_DECRYPT_NOKEY"/>
-      <member name="num_errors"
-              value="14"
-              c:identifier="GST_STREAM_ERROR_NUM_ERRORS"/>
-    </enumeration>
-    <enumeration name="StreamStatusType"
-                 doc="The type of a %GST_MESSAGE_STREAM_STATUS. The stream status messages inform the
-application of new streaming threads and their status."
-                 version="0.10.24"
-                 c:type="GstStreamStatusType">
-      <member name="create"
-              value="0"
-              c:identifier="GST_STREAM_STATUS_TYPE_CREATE"/>
-      <member name="enter"
-              value="1"
-              c:identifier="GST_STREAM_STATUS_TYPE_ENTER"/>
-      <member name="leave"
-              value="2"
-              c:identifier="GST_STREAM_STATUS_TYPE_LEAVE"/>
-      <member name="destroy"
-              value="3"
-              c:identifier="GST_STREAM_STATUS_TYPE_DESTROY"/>
-      <member name="start"
-              value="8"
-              c:identifier="GST_STREAM_STATUS_TYPE_START"/>
-      <member name="pause"
-              value="9"
-              c:identifier="GST_STREAM_STATUS_TYPE_PAUSE"/>
-      <member name="stop"
-              value="10"
-              c:identifier="GST_STREAM_STATUS_TYPE_STOP"/>
-    </enumeration>
-    <record name="Structure"
-            c:type="GstStructure"
-            doc="The GstStructure object. Most fields are private."
-            glib:type-name="GstStructure"
-            glib:get-type="gst_structure_get_type">
-      <field name="type" writable="1">
-        <type name="GType" c:type="GType"/>
-      </field>
-      <field name="name" writable="1">
-        <type name="GLib.Quark" c:type="GQuark"/>
-      </field>
-      <field name="parent_refcount" writable="1">
-        <type name="any" c:type="gint*"/>
-      </field>
-      <field name="fields" writable="1">
-        <type name="GLib.Array" c:type="GArray*"/>
-      </field>
-      <field name="_gst_reserved" writable="1">
-        <type name="any" c:type="gpointer"/>
-      </field>
-      <constructor name="new"
-                   c:identifier="gst_structure_new"
-                   doc="Creates a new #GstStructure with the given name.  Parses the
-list of variable arguments and sets fields to the values listed.
-Variable arguments should be passed as field name, field type,
-and value.  Last variable argument should be NULL.">
-        <return-value transfer-ownership="full">
-          <type name="Structure" c:type="GstStructure*"/>
-        </return-value>
-        <parameters>
-          <parameter name="name" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="firstfield" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter transfer-ownership="none">
-            <varargs>
-            </varargs>
-          </parameter>
-        </parameters>
-      </constructor>
-      <method name="copy"
-              c:identifier="gst_structure_copy"
-              doc="Duplicates a #GstStructure and all its fields and values.">
-        <return-value transfer-ownership="full">
-          <type name="Structure" c:type="GstStructure*"/>
-        </return-value>
-      </method>
-      <method name="set_parent_refcount"
-              c:identifier="gst_structure_set_parent_refcount"
-              doc="Sets the parent_refcount field of #GstStructure. This field is used to
-determine whether a structure is mutable or not. This function should only be
-called by code implementing parent objects of #GstStructure, as described in
-the MT Refcounting section of the design documents.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="refcount" direction="out" transfer-ownership="full">
-            <type name="int" c:type="gint*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="free"
-              c:identifier="gst_structure_free"
-              doc="Frees a #GstStructure and all its fields and values. The structure must not
-have a parent when this function is called.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-      </method>
-      <method name="get_name"
-              c:identifier="gst_structure_get_name"
-              doc="Get the name of @structure as a string.">
-        <return-value transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </return-value>
-      </method>
-      <method name="get_name_id"
-              c:identifier="gst_structure_get_name_id"
-              doc="Get the name of @structure as a GQuark.">
-        <return-value transfer-ownership="full">
-          <type name="GLib.Quark" c:type="GQuark"/>
-        </return-value>
-      </method>
-      <method name="has_name"
-              c:identifier="gst_structure_has_name"
-              doc="Checks if the structure has the given name">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="name" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="set_name"
-              c:identifier="gst_structure_set_name"
-              doc="Sets the name of the structure to the given @name.  The string
-provided is copied before being used. It must not be empty, start with a
-letter and can be followed by letters, numbers and any of &quot;/-_.:&quot;.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="name" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="id_set_value"
-              c:identifier="gst_structure_id_set_value"
-              doc="Sets the field with the given GQuark @field to @value.  If the field
-does not exist, it is created.  If the field exists, the previous
-value is replaced and freed.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="field" transfer-ownership="none">
-            <type name="GLib.Quark" c:type="GQuark"/>
-          </parameter>
-          <parameter name="value" transfer-ownership="none">
-            <type name="GObject.Value" c:type="GValue*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="set_value"
-              c:identifier="gst_structure_set_value"
-              doc="Sets the field with the given name @field to @value.  If the field
-does not exist, it is created.  If the field exists, the previous
-value is replaced and freed.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="fieldname" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="value" transfer-ownership="none">
-            <type name="GObject.Value" c:type="GValue*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="set"
-              c:identifier="gst_structure_set"
-              doc="Parses the variable arguments and sets fields accordingly.
-Variable arguments should be in the form field name, field type
-(as a GType), value(s).  The last variable argument should be NULL.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="fieldname" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter transfer-ownership="none">
-            <varargs>
-            </varargs>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="id_set"
-              c:identifier="gst_structure_id_set"
-              doc="Identical to gst_structure_set, except that field names are
-passed using the GQuark for the field name. This allows more efficient
-setting of the structure if the caller already knows the associated
-quark values.
-The last variable argument must be NULL."
-              version="0.10.10">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="fieldname" transfer-ownership="none">
-            <type name="GLib.Quark" c:type="GQuark"/>
-          </parameter>
-          <parameter transfer-ownership="none">
-            <varargs>
-            </varargs>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get"
-              c:identifier="gst_structure_get"
-              doc="Parses the variable arguments and reads fields from @structure accordingly.
-Variable arguments should be in the form field name, field type
-(as a GType), pointer(s) to a variable(s) to hold the return value(s).
-The last variable argument should be NULL.
-For refcounted (mini)objects you will acquire your own reference which
-you must release with a suitable _unref() when no longer needed. For
-strings and boxed types you will acquire a copy which you will need to
-release with either g_free() or the suiteable function for the boxed type.
-because the field requested did not exist, or was of a type other
-than the type specified), otherwise TRUE."
-              version="0.10.24">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="first_fieldname" transfer-ownership="none">
-            <type name="utf8" c:type="char*"/>
-          </parameter>
-          <parameter transfer-ownership="none">
-            <varargs>
-            </varargs>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="id_get"
-              c:identifier="gst_structure_id_get"
-              doc="Parses the variable arguments and reads fields from @structure accordingly.
-Variable arguments should be in the form field id quark, field type
-(as a GType), pointer(s) to a variable(s) to hold the return value(s).
-The last variable argument should be NULL (technically it should be a
-0 quark, but we require NULL so compilers that support it can check for
-the NULL terminator and warn if it&apos;s not there).
-This function is just like gst_structure_get() only that it is slightly
-more efficient since it saves the string-to-quark lookup in the global
-quark hashtable.
-For refcounted (mini)objects you will acquire your own reference which
-you must release with a suitable _unref() when no longer needed. For
-strings and boxed types you will acquire a copy which you will need to
-release with either g_free() or the suiteable function for the boxed type.
-because the field requested did not exist, or was of a type other
-than the type specified), otherwise TRUE."
-              version="0.10.24">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="first_field_id" transfer-ownership="none">
-            <type name="GLib.Quark" c:type="GQuark"/>
-          </parameter>
-          <parameter transfer-ownership="none">
-            <varargs>
-            </varargs>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="id_get_value"
-              c:identifier="gst_structure_id_get_value"
-              doc="Get the value of the field with GQuark @field.
-identifier.">
-        <return-value transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </return-value>
-        <parameters>
-          <parameter name="field" transfer-ownership="none">
-            <type name="GLib.Quark" c:type="GQuark"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_value"
-              c:identifier="gst_structure_get_value"
-              doc="Get the value of the field with name @fieldname.">
-        <return-value transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </return-value>
-        <parameters>
-          <parameter name="fieldname" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="remove_field"
-              c:identifier="gst_structure_remove_field"
-              doc="Removes the field with the given name.  If the field with the given
-name does not exist, the structure is unchanged.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="fieldname" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="remove_fields"
-              c:identifier="gst_structure_remove_fields"
-              doc="Removes the fields with the given names. If a field does not exist, the
-argument is ignored.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="fieldname" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter transfer-ownership="none">
-            <varargs>
-            </varargs>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="remove_all_fields"
-              c:identifier="gst_structure_remove_all_fields"
-              doc="Removes all fields in a GstStructure.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-      </method>
-      <method name="get_field_type"
-              c:identifier="gst_structure_get_field_type"
-              doc="Finds the field with the given name, and returns the type of the
-value it contains.  If the field is not found, G_TYPE_INVALID is
-returned.">
-        <return-value transfer-ownership="none">
-          <type name="GType" c:type="GType"/>
-        </return-value>
-        <parameters>
-          <parameter name="fieldname" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="foreach"
-              c:identifier="gst_structure_foreach"
-              doc="Calls the provided function once for each field in the #GstStructure. The
-function must not modify the fields. Also see gst_structure_map_in_place().
-FALSE otherwise.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="func"
-                     transfer-ownership="none"
-                     scope="call"
-                     closure="2">
-            <type name="StructureForeachFunc"
-                  c:type="GstStructureForeachFunc"/>
-          </parameter>
-          <parameter name="user_data" transfer-ownership="none">
-            <type name="any" c:type="gpointer"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="map_in_place"
-              c:identifier="gst_structure_map_in_place"
-              doc="Calls the provided function once for each field in the #GstStructure. In
-contrast to gst_structure_foreach(), the function may modify but not delete the
-fields. The structure must be mutable.
-FALSE otherwise.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="func"
-                     transfer-ownership="none"
-                     scope="call"
-                     closure="2">
-            <type name="StructureMapFunc" c:type="GstStructureMapFunc"/>
-          </parameter>
-          <parameter name="user_data" transfer-ownership="none">
-            <type name="any" c:type="gpointer"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="n_fields"
-              c:identifier="gst_structure_n_fields"
-              doc="Get the number of fields in the structure.">
-        <return-value transfer-ownership="none">
-          <type name="int" c:type="gint"/>
-        </return-value>
-      </method>
-      <method name="nth_field_name"
-              c:identifier="gst_structure_nth_field_name"
-              doc="Get the name of the given field number, counting from 0 onwards.">
-        <return-value transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </return-value>
-        <parameters>
-          <parameter name="index" transfer-ownership="none">
-            <type name="uint" c:type="guint"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="id_has_field"
-              c:identifier="gst_structure_id_has_field"
-              doc="Check if @structure contains a field named @field."
-              version="0.10.26">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="field" transfer-ownership="none">
-            <type name="GLib.Quark" c:type="GQuark"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="id_has_field_typed"
-              c:identifier="gst_structure_id_has_field_typed"
-              doc="Check if @structure contains a field named @field and with GType @type."
-              version="0.10.26">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="field" transfer-ownership="none">
-            <type name="GLib.Quark" c:type="GQuark"/>
-          </parameter>
-          <parameter name="type" transfer-ownership="none">
-            <type name="GType" c:type="GType"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="has_field"
-              c:identifier="gst_structure_has_field"
-              doc="Check if @structure contains a field named @fieldname.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="fieldname" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="has_field_typed"
-              c:identifier="gst_structure_has_field_typed"
-              doc="Check if @structure contains a field named @fieldname and with GType @type.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="fieldname" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="type" transfer-ownership="none">
-            <type name="GType" c:type="GType"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_boolean"
-              c:identifier="gst_structure_get_boolean"
-              doc="Sets the boolean pointed to by @value corresponding to the value of the
-given field.  Caller is responsible for making sure the field exists
-and has the correct type.
-with @fieldname or the existing field did not contain a boolean, this
-function returns FALSE.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="fieldname" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="value" direction="out" transfer-ownership="full">
-            <type name="boolean" c:type="gboolean*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_int"
-              c:identifier="gst_structure_get_int"
-              doc="Sets the int pointed to by @value corresponding to the value of the
-given field.  Caller is responsible for making sure the field exists
-and has the correct type.
-with @fieldname or the existing field did not contain an int, this function
-returns %FALSE.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="fieldname" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="value" direction="out" transfer-ownership="full">
-            <type name="int" c:type="gint*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_uint"
-              c:identifier="gst_structure_get_uint"
-              doc="Sets the uint pointed to by @value corresponding to the value of the
-given field.  Caller is responsible for making sure the field exists
-and has the correct type.
-with @fieldname or the existing field did not contain a uint, this function
-returns %FALSE."
-              version="0.10.15">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="fieldname" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="value" direction="out" transfer-ownership="full">
-            <type name="uint" c:type="guint*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_fourcc"
-              c:identifier="gst_structure_get_fourcc"
-              doc="Sets the Fourcc pointed to by @value corresponding to the value of the
-given field.  Caller is responsible for making sure the field exists
-and has the correct type.
-with @fieldname or the existing field did not contain a fourcc, this function
-returns FALSE.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="fieldname" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="value" direction="out" transfer-ownership="full">
-            <type name="uint32" c:type="guint32*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_double"
-              c:identifier="gst_structure_get_double"
-              doc="Sets the double pointed to by @value corresponding to the value of the
-given field.  Caller is responsible for making sure the field exists
-and has the correct type.
-with @fieldname or the existing field did not contain a double, this
-function returns FALSE.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="fieldname" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="value" direction="out" transfer-ownership="full">
-            <type name="double" c:type="gdouble*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_date"
-              c:identifier="gst_structure_get_date"
-              doc="Sets the date pointed to by @value corresponding to the date of the
-given field.  Caller is responsible for making sure the field exists
-and has the correct type.
-On success @value will point to a newly-allocated copy of the date which
-inconsistent with e.g. gst_structure_get_string() which doesn&apos;t return a
-copy of the string).
-with @fieldname or the existing field did not contain a data, this function
-returns FALSE.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="fieldname" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="value" transfer-ownership="none">
-            <type name="GLib.Date" c:type="GDate**"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_clock_time"
-              c:identifier="gst_structure_get_clock_time"
-              doc="Sets the clock time pointed to by @value corresponding to the clock time
-of the given field.  Caller is responsible for making sure the field exists
-and has the correct type.
-with @fieldname or the existing field did not contain a #GstClockTime, this
-function returns FALSE.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="fieldname" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="value" transfer-ownership="none">
-            <type name="ClockTime" c:type="GstClockTime*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_string"
-              c:identifier="gst_structure_get_string"
-              doc="Finds the field corresponding to @fieldname, and returns the string
-contained in the field&apos;s value.  Caller is responsible for making
-sure the field exists and has the correct type.
-The string should not be modified, and remains valid until the next
-call to a gst_structure_*() function with the given structure.
-or did not contain a string.">
-        <return-value transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </return-value>
-        <parameters>
-          <parameter name="fieldname" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_enum"
-              c:identifier="gst_structure_get_enum"
-              doc="Sets the int pointed to by @value corresponding to the value of the
-given field.  Caller is responsible for making sure the field exists,
-has the correct type and that the enumtype is correct.
-with @fieldname or the existing field did not contain an enum of the given
-type, this function returns FALSE.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="fieldname" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="enumtype" transfer-ownership="none">
-            <type name="GType" c:type="GType"/>
-          </parameter>
-          <parameter name="value" direction="out" transfer-ownership="full">
-            <type name="int" c:type="gint*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_fraction"
-              c:identifier="gst_structure_get_fraction"
-              doc="Sets the integers pointed to by @value_numerator and @value_denominator
-corresponding to the value of the given field.  Caller is responsible
-for making sure the field exists and has the correct type.
-with @fieldname or the existing field did not contain a GstFraction, this
-function returns FALSE.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="fieldname" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="value_numerator"
-                     direction="out"
-                     transfer-ownership="full">
-            <type name="int" c:type="gint*"/>
-          </parameter>
-          <parameter name="value_denominator"
-                     direction="out"
-                     transfer-ownership="full">
-            <type name="int" c:type="gint*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="to_string"
-              c:identifier="gst_structure_to_string"
-              doc="Converts @structure to a human-readable string representation.
-For debugging purposes its easier to do something like this:
-|[
-GST_LOG (&quot;structure is %&quot; GST_PTR_FORMAT, structure);
-]|
-This prints the structure in human readble form.
-usage.">
-        <return-value transfer-ownership="full" doc="after">
-          <type name="utf8" c:type="gchar*"/>
-        </return-value>
-      </method>
-      <method name="fixate_field_nearest_int"
-              c:identifier="gst_structure_fixate_field_nearest_int"
-              doc="Fixates a #GstStructure by changing the given field to the nearest
-integer to @target that is a subset of the existing field.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="field_name" transfer-ownership="none">
-            <type name="utf8" c:type="char*"/>
-          </parameter>
-          <parameter name="target" transfer-ownership="none">
-            <type name="int" c:type="int"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="fixate_field_nearest_double"
-              c:identifier="gst_structure_fixate_field_nearest_double"
-              doc="Fixates a #GstStructure by changing the given field to the nearest
-double to @target that is a subset of the existing field.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="field_name" transfer-ownership="none">
-            <type name="utf8" c:type="char*"/>
-          </parameter>
-          <parameter name="target" transfer-ownership="none">
-            <type name="double" c:type="double"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="fixate_field_boolean"
-              c:identifier="gst_structure_fixate_field_boolean"
-              doc="Fixates a #GstStructure by changing the given @field_name field to the given">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="field_name" transfer-ownership="none">
-            <type name="utf8" c:type="char*"/>
-          </parameter>
-          <parameter name="target" transfer-ownership="none">
-            <type name="boolean" c:type="gboolean"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="fixate_field_nearest_fraction"
-              c:identifier="gst_structure_fixate_field_nearest_fraction"
-              doc="Fixates a #GstStructure by changing the given field to the nearest
-fraction to @target_numerator/@target_denominator that is a subset
-of the existing field.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="field_name" transfer-ownership="none">
-            <type name="utf8" c:type="char*"/>
-          </parameter>
-          <parameter name="target_numerator" transfer-ownership="none">
-            <type name="int" c:type="gint"/>
-          </parameter>
-          <parameter name="target_denominator" transfer-ownership="none">
-            <type name="int" c:type="gint"/>
-          </parameter>
-        </parameters>
-      </method>
-    </record>
-    <enumeration name="StructureChangeType"
-                 doc="The type of a %GST_MESSAGE_STRUCTURE_CHANGE."
-                 version="0.10.22"
-                 c:type="GstStructureChangeType">
-      <member name="link"
-              value="0"
-              c:identifier="GST_STRUCTURE_CHANGE_TYPE_PAD_LINK"/>
-      <member name="unlink"
-              value="1"
-              c:identifier="GST_STRUCTURE_CHANGE_TYPE_PAD_UNLINK"/>
-    </enumeration>
-    <callback name="StructureForeachFunc"
-              c:type="GstStructureForeachFunc"
-              doc="A function that will be called in gst_structure_foreach(). The function may
-not modify @value.
-the foreach operation should stop with FALSE.">
-      <return-value transfer-ownership="none">
-        <type name="boolean" c:type="gboolean"/>
-      </return-value>
-      <parameters>
-        <parameter name="field_id" transfer-ownership="none">
-          <type name="GLib.Quark" c:type="GQuark"/>
-        </parameter>
-        <parameter name="value" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-        <parameter name="user_data" transfer-ownership="none" closure="2">
-          <type name="any" c:type="gpointer"/>
-        </parameter>
-      </parameters>
-    </callback>
-    <callback name="StructureMapFunc"
-              c:type="GstStructureMapFunc"
-              doc="A function that will be called in gst_structure_map_in_place(). The function
-may modify @value.
-the map operation should stop with FALSE.">
-      <return-value transfer-ownership="none">
-        <type name="boolean" c:type="gboolean"/>
-      </return-value>
-      <parameters>
-        <parameter name="field_id" transfer-ownership="none">
-          <type name="GLib.Quark" c:type="GQuark"/>
-        </parameter>
-        <parameter name="value" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-        <parameter name="user_data" transfer-ownership="none" closure="2">
-          <type name="any" c:type="gpointer"/>
-        </parameter>
-      </parameters>
-    </callback>
-    <class name="SystemClock"
-           c:type="GstSystemClock"
-           doc="The default implementation of a #GstClock that uses the system time."
-           parent="Clock"
-           glib:type-name="GstSystemClock"
-           glib:get-type="gst_system_clock_get_type"
-           glib:type-struct="SystemClockClass">
-      <function name="obtain"
-                c:identifier="gst_system_clock_obtain"
-                doc="Get a handle to the default system clock. The refcount of the
-clock will be increased so you need to unref the clock after
-usage.
-MT safe.">
-        <return-value transfer-ownership="full">
-          <type name="Clock" c:type="GstClock*"/>
-        </return-value>
-      </function>
-      <property name="clock-type" writable="1">
-        <type name="ClockType" c:type="GstClockType"/>
-      </property>
-      <field name="clock">
-        <type name="Clock" c:type="GstClock"/>
-      </field>
-      <field name="thread">
-        <type name="GLib.Thread" c:type="GThread*"/>
-      </field>
-      <field name="stopping">
-        <type name="boolean" c:type="gboolean"/>
-      </field>
-      <field name="priv">
-        <type name="SystemClockPrivate" c:type="GstSystemClockPrivate*"/>
-      </field>
-      <field name="_gst_reserved">
-        <array zero-terminated="0" c:type="gpointer" fixed-size="3">
-          <type name="any"/>
-        </array>
-      </field>
-    </class>
-    <record name="SystemClockClass"
-            c:type="GstSystemClockClass"
-            glib:is-gtype-struct-for="SystemClock">
-      <field name="parent_class">
-        <type name="ClockClass" c:type="GstClockClass"/>
-      </field>
-      <field name="_gst_reserved">
-        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
-          <type name="any"/>
-        </array>
-      </field>
-    </record>
-    <record name="SystemClockPrivate" c:type="GstSystemClockPrivate">
-    </record>
-    <constant name="TAG_ALBUM" value="album">
-      <type name="utf8"/>
-    </constant>
-    <constant name="TAG_ALBUM_ARTIST" value="album-artist">
-      <type name="utf8"/>
-    </constant>
-    <constant name="TAG_ALBUM_ARTIST_SORTNAME" value="album-artist-sortname">
-      <type name="utf8"/>
-    </constant>
-    <constant name="TAG_ALBUM_GAIN" value="replaygain-album-gain">
-      <type name="utf8"/>
-    </constant>
-    <constant name="TAG_ALBUM_PEAK" value="replaygain-album-peak">
-      <type name="utf8"/>
-    </constant>
-    <constant name="TAG_ALBUM_SORTNAME" value="album-sortname">
-      <type name="utf8"/>
-    </constant>
-    <constant name="TAG_ALBUM_VOLUME_COUNT" value="album-disc-count">
-      <type name="utf8"/>
-    </constant>
-    <constant name="TAG_ALBUM_VOLUME_NUMBER" value="album-disc-number">
-      <type name="utf8"/>
-    </constant>
-    <constant name="TAG_ARTIST" value="artist">
-      <type name="utf8"/>
-    </constant>
-    <constant name="TAG_ARTIST_SORTNAME" value="musicbrainz-sortname">
-      <type name="utf8"/>
-    </constant>
-    <constant name="TAG_ATTACHMENT" value="attachment">
-      <type name="utf8"/>
-    </constant>
-    <constant name="TAG_AUDIO_CODEC" value="audio-codec">
-      <type name="utf8"/>
-    </constant>
-    <constant name="TAG_BEATS_PER_MINUTE" value="beats-per-minute">
-      <type name="utf8"/>
-    </constant>
-    <constant name="TAG_BITRATE" value="bitrate">
-      <type name="utf8"/>
-    </constant>
-    <constant name="TAG_CODEC" value="codec">
-      <type name="utf8"/>
-    </constant>
-    <constant name="TAG_COMMENT" value="comment">
-      <type name="utf8"/>
-    </constant>
-    <constant name="TAG_COMPOSER" value="composer">
-      <type name="utf8"/>
-    </constant>
-    <constant name="TAG_COMPOSER_SORTNAME" value="composer-sortname">
-      <type name="utf8"/>
-    </constant>
-    <constant name="TAG_CONTACT" value="contact">
-      <type name="utf8"/>
-    </constant>
-    <constant name="TAG_CONTAINER_FORMAT" value="container-format">
-      <type name="utf8"/>
-    </constant>
-    <constant name="TAG_COPYRIGHT" value="copyright">
-      <type name="utf8"/>
-    </constant>
-    <constant name="TAG_COPYRIGHT_URI" value="copyright-uri">
-      <type name="utf8"/>
-    </constant>
-    <constant name="TAG_DATE" value="date">
-      <type name="utf8"/>
-    </constant>
-    <constant name="TAG_DESCRIPTION" value="description">
-      <type name="utf8"/>
-    </constant>
-    <constant name="TAG_DURATION" value="duration">
-      <type name="utf8"/>
-    </constant>
-    <constant name="TAG_ENCODER" value="encoder">
-      <type name="utf8"/>
-    </constant>
-    <constant name="TAG_ENCODER_VERSION" value="encoder-version">
-      <type name="utf8"/>
-    </constant>
-    <constant name="TAG_EXTENDED_COMMENT" value="extended-comment">
-      <type name="utf8"/>
-    </constant>
-    <constant name="TAG_GENRE" value="genre">
-      <type name="utf8"/>
-    </constant>
-    <constant name="TAG_GEO_LOCATION_CITY" value="geo-location-city">
-      <type name="utf8"/>
-    </constant>
-    <constant name="TAG_GEO_LOCATION_COUNTRY" value="geo-location-country">
-      <type name="utf8"/>
-    </constant>
-    <constant name="TAG_GEO_LOCATION_ELEVATION" value="geo-location-elevation">
-      <type name="utf8"/>
-    </constant>
-    <constant name="TAG_GEO_LOCATION_LATITUDE" value="geo-location-latitude">
-      <type name="utf8"/>
-    </constant>
-    <constant name="TAG_GEO_LOCATION_LONGITUDE" value="geo-location-longitude">
-      <type name="utf8"/>
-    </constant>
-    <constant name="TAG_GEO_LOCATION_NAME" value="geo-location-name">
-      <type name="utf8"/>
-    </constant>
-    <constant name="TAG_GEO_LOCATION_SUBLOCATION"
-              value="geo-location-sublocation">
-      <type name="utf8"/>
-    </constant>
-    <constant name="TAG_GROUPING" value="grouping">
-      <type name="utf8"/>
-    </constant>
-    <constant name="TAG_HOMEPAGE" value="homepage">
-      <type name="utf8"/>
-    </constant>
-    <constant name="TAG_IMAGE" value="image">
-      <type name="utf8"/>
-    </constant>
-    <constant name="TAG_ISRC" value="isrc">
-      <type name="utf8"/>
-    </constant>
-    <constant name="TAG_KEYWORDS" value="keywords">
-      <type name="utf8"/>
-    </constant>
-    <constant name="TAG_LANGUAGE_CODE" value="language-code">
-      <type name="utf8"/>
-    </constant>
-    <constant name="TAG_LICENSE" value="license">
-      <type name="utf8"/>
-    </constant>
-    <constant name="TAG_LICENSE_URI" value="license-uri">
-      <type name="utf8"/>
-    </constant>
-    <constant name="TAG_LOCATION" value="location">
-      <type name="utf8"/>
-    </constant>
-    <constant name="TAG_LYRICS" value="lyrics">
-      <type name="utf8"/>
-    </constant>
-    <constant name="TAG_MAXIMUM_BITRATE" value="maximum-bitrate">
-      <type name="utf8"/>
-    </constant>
-    <constant name="TAG_MINIMUM_BITRATE" value="minimum-bitrate">
-      <type name="utf8"/>
-    </constant>
-    <constant name="TAG_NOMINAL_BITRATE" value="nominal-bitrate">
-      <type name="utf8"/>
-    </constant>
-    <constant name="TAG_ORGANIZATION" value="organization">
-      <type name="utf8"/>
-    </constant>
-    <constant name="TAG_PERFORMER" value="performer">
-      <type name="utf8"/>
-    </constant>
-    <constant name="TAG_PREVIEW_IMAGE" value="preview-image">
-      <type name="utf8"/>
-    </constant>
-    <constant name="TAG_REFERENCE_LEVEL" value="replaygain-reference-level">
-      <type name="utf8"/>
-    </constant>
-    <constant name="TAG_SERIAL" value="serial">
-      <type name="utf8"/>
-    </constant>
-    <constant name="TAG_SHOW_EPISODE_NUMBER" value="show-episode-number">
-      <type name="utf8"/>
-    </constant>
-    <constant name="TAG_SHOW_NAME" value="show-name">
-      <type name="utf8"/>
-    </constant>
-    <constant name="TAG_SHOW_SEASON_NUMBER" value="show-season-number">
-      <type name="utf8"/>
-    </constant>
-    <constant name="TAG_SHOW_SORTNAME" value="show-sortname">
-      <type name="utf8"/>
-    </constant>
-    <constant name="TAG_SUBTITLE_CODEC" value="subtitle-codec">
-      <type name="utf8"/>
-    </constant>
-    <constant name="TAG_TITLE" value="title">
-      <type name="utf8"/>
-    </constant>
-    <constant name="TAG_TITLE_SORTNAME" value="title-sortname">
-      <type name="utf8"/>
-    </constant>
-    <constant name="TAG_TRACK_COUNT" value="track-count">
-      <type name="utf8"/>
-    </constant>
-    <constant name="TAG_TRACK_GAIN" value="replaygain-track-gain">
-      <type name="utf8"/>
-    </constant>
-    <constant name="TAG_TRACK_NUMBER" value="track-number">
-      <type name="utf8"/>
-    </constant>
-    <constant name="TAG_TRACK_PEAK" value="replaygain-track-peak">
-      <type name="utf8"/>
-    </constant>
-    <constant name="TAG_USER_RATING" value="user-rating">
-      <type name="utf8"/>
-    </constant>
-    <constant name="TAG_VERSION" value="version">
-      <type name="utf8"/>
-    </constant>
-    <constant name="TAG_VIDEO_CODEC" value="video-codec">
-      <type name="utf8"/>
-    </constant>
-    <constant name="TIME_FORMAT" value="u:%02u:%02u.%09u">
-      <type name="utf8"/>
-    </constant>
-    <enumeration name="TagFlag"
-                 doc="Extra tag flags used when registering tags."
-                 c:type="GstTagFlag">
-      <member name="undefined"
-              value="0"
-              c:identifier="GST_TAG_FLAG_UNDEFINED"/>
-      <member name="meta" value="1" c:identifier="GST_TAG_FLAG_META"/>
-      <member name="encoded" value="2" c:identifier="GST_TAG_FLAG_ENCODED"/>
-      <member name="decoded" value="3" c:identifier="GST_TAG_FLAG_DECODED"/>
-      <member name="count" value="4" c:identifier="GST_TAG_FLAG_COUNT"/>
-    </enumeration>
-    <callback name="TagForeachFunc"
-              c:type="GstTagForeachFunc"
-              doc="A function that will be called in gst_tag_list_foreach(). The function may
-not modify the tag list.">
-      <return-value transfer-ownership="none">
-        <type name="none" c:type="void"/>
-      </return-value>
-      <parameters>
-        <parameter name="list" transfer-ownership="none">
-          <type name="TagList" c:type="GstTagList*"/>
-        </parameter>
-        <parameter name="tag" transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </parameter>
-        <parameter name="user_data" transfer-ownership="none" closure="2">
-          <type name="any" c:type="gpointer"/>
-        </parameter>
-      </parameters>
-    </callback>
-    <record name="TagList"
-            c:type="GstTagList"
-            doc="Opaque #GstTagList data structure."
-            glib:type-name="GstTagList"
-            glib:get-type="gst_tag_list_get_type">
-      <constructor name="new"
-                   c:identifier="gst_tag_list_new"
-                   doc="Creates a new empty GstTagList.">
-        <return-value transfer-ownership="full">
-          <type name="TagList" c:type="GstTagList*"/>
-        </return-value>
-      </constructor>
-      <constructor name="new_full"
-                   c:identifier="gst_tag_list_new_full"
-                   doc="Creates a new taglist and appends the values for the given tags. It expects
-tag-value pairs like gst_tag_list_add(), and a NULL terminator after the
-last pair. The type of the values is implicit and is documented in the API
-reference, but can also be queried at runtime with gst_tag_get_type(). It
-is an error to pass a value of a type not matching the tag type into this
-function. The tag list will make copies of any arguments passed
-(e.g. strings, buffers).
-needed."
-                   version="0.10.24">
-        <return-value transfer-ownership="full" doc="when no longer">
-          <type name="TagList" c:type="GstTagList*"/>
-        </return-value>
-        <parameters>
-          <parameter name="tag" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter transfer-ownership="none">
-            <varargs>
-            </varargs>
-          </parameter>
-        </parameters>
-      </constructor>
-      <method name="copy"
-              c:identifier="gst_tag_list_copy"
-              doc="Copies a given #GstTagList.">
-        <return-value transfer-ownership="full">
-          <type name="TagList" c:type="GstTagList*"/>
-        </return-value>
-      </method>
-      <method name="is_empty"
-              c:identifier="gst_tag_list_is_empty"
-              doc="Checks if the given taglist is empty."
-              version="0.10.11">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-      </method>
-      <method name="insert"
-              c:identifier="gst_tag_list_insert"
-              doc="Inserts the tags of the @from list into the first list using the given mode.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="from" transfer-ownership="none">
-            <type name="TagList" c:type="GstTagList*"/>
-          </parameter>
-          <parameter name="mode" transfer-ownership="none">
-            <type name="TagMergeMode" c:type="GstTagMergeMode"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="merge"
-              c:identifier="gst_tag_list_merge"
-              doc="Merges the two given lists into a new list. If one of the lists is NULL, a
-copy of the other is returned. If both lists are NULL, NULL is returned.">
-        <return-value transfer-ownership="full">
-          <type name="TagList" c:type="GstTagList*"/>
-        </return-value>
-        <parameters>
-          <parameter name="list2" transfer-ownership="none">
-            <type name="TagList" c:type="GstTagList*"/>
-          </parameter>
-          <parameter name="mode" transfer-ownership="none">
-            <type name="TagMergeMode" c:type="GstTagMergeMode"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="free"
-              c:identifier="gst_tag_list_free"
-              doc="Frees the given list and all associated values.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-      </method>
-      <method name="get_tag_size"
-              c:identifier="gst_tag_list_get_tag_size"
-              doc="Checks how many value are stored in this tag list for the given tag.">
-        <return-value transfer-ownership="none">
-          <type name="uint" c:type="guint"/>
-        </return-value>
-        <parameters>
-          <parameter name="tag" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="add"
-              c:identifier="gst_tag_list_add"
-              doc="Sets the values for the given tags using the specified mode.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="mode" transfer-ownership="none">
-            <type name="TagMergeMode" c:type="GstTagMergeMode"/>
-          </parameter>
-          <parameter name="tag" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter transfer-ownership="none">
-            <varargs>
-            </varargs>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="add_values"
-              c:identifier="gst_tag_list_add_values"
-              doc="Sets the GValues for the given tags using the specified mode.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="mode" transfer-ownership="none">
-            <type name="TagMergeMode" c:type="GstTagMergeMode"/>
-          </parameter>
-          <parameter name="tag" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter transfer-ownership="none">
-            <varargs>
-            </varargs>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="add_value"
-              c:identifier="gst_tag_list_add_value"
-              doc="Sets the GValue for a given tag using the specified mode."
-              version="0.10.24">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="mode" transfer-ownership="none">
-            <type name="TagMergeMode" c:type="GstTagMergeMode"/>
-          </parameter>
-          <parameter name="tag" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="value" transfer-ownership="none">
-            <type name="GObject.Value" c:type="GValue*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="remove_tag"
-              c:identifier="gst_tag_list_remove_tag"
-              doc="Removes the given tag from the taglist.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="tag" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="foreach"
-              c:identifier="gst_tag_list_foreach"
-              doc="Calls the given function for each tag inside the tag list. Note that if there
-is no tag, the function won&apos;t be called at all.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="func"
-                     transfer-ownership="none"
-                     scope="call"
-                     closure="2">
-            <type name="TagForeachFunc" c:type="GstTagForeachFunc"/>
-          </parameter>
-          <parameter name="user_data" transfer-ownership="none">
-            <type name="any" c:type="gpointer"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_value_index"
-              c:identifier="gst_tag_list_get_value_index"
-              doc="Gets the value that is at the given index for the given tag in the given
-list.
-available or the tag doesn&apos;t have as many entries">
-        <return-value transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </return-value>
-        <parameters>
-          <parameter name="tag" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="index" transfer-ownership="none">
-            <type name="uint" c:type="guint"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_char"
-              c:identifier="gst_tag_list_get_char"
-              doc="Copies the contents for the given tag into the value, merging multiple values
-into one if multiple values are associated with the tag.
-given list.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="tag" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="value" transfer-ownership="full">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_char_index"
-              c:identifier="gst_tag_list_get_char_index"
-              doc="Gets the value that is at the given index for the given tag in the given
-list.
-given list.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="tag" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="index" transfer-ownership="none">
-            <type name="uint" c:type="guint"/>
-          </parameter>
-          <parameter name="value" transfer-ownership="full">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_uchar"
-              c:identifier="gst_tag_list_get_uchar"
-              doc="Copies the contents for the given tag into the value, merging multiple values
-into one if multiple values are associated with the tag.
-given list.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="tag" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="value" transfer-ownership="none">
-            <array c:type="guchar*">
-              <type name="uint8"/>
-            </array>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_uchar_index"
-              c:identifier="gst_tag_list_get_uchar_index"
-              doc="Gets the value that is at the given index for the given tag in the given
-list.
-given list.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="tag" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="index" transfer-ownership="none">
-            <type name="uint" c:type="guint"/>
-          </parameter>
-          <parameter name="value" transfer-ownership="none">
-            <array c:type="guchar*">
-              <type name="uint8"/>
-            </array>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_boolean"
-              c:identifier="gst_tag_list_get_boolean"
-              doc="Copies the contents for the given tag into the value, merging multiple values
-into one if multiple values are associated with the tag.
-given list.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="tag" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="value" direction="out" transfer-ownership="full">
-            <type name="boolean" c:type="gboolean*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_boolean_index"
-              c:identifier="gst_tag_list_get_boolean_index"
-              doc="Gets the value that is at the given index for the given tag in the given
-list.
-given list.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="tag" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="index" transfer-ownership="none">
-            <type name="uint" c:type="guint"/>
-          </parameter>
-          <parameter name="value" direction="out" transfer-ownership="full">
-            <type name="boolean" c:type="gboolean*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_int"
-              c:identifier="gst_tag_list_get_int"
-              doc="Copies the contents for the given tag into the value, merging multiple values
-into one if multiple values are associated with the tag.
-given list.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="tag" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="value" direction="out" transfer-ownership="full">
-            <type name="int" c:type="gint*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_int_index"
-              c:identifier="gst_tag_list_get_int_index"
-              doc="Gets the value that is at the given index for the given tag in the given
-list.
-given list.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="tag" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="index" transfer-ownership="none">
-            <type name="uint" c:type="guint"/>
-          </parameter>
-          <parameter name="value" direction="out" transfer-ownership="full">
-            <type name="int" c:type="gint*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_uint"
-              c:identifier="gst_tag_list_get_uint"
-              doc="Copies the contents for the given tag into the value, merging multiple values
-into one if multiple values are associated with the tag.
-given list.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="tag" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="value" direction="out" transfer-ownership="full">
-            <type name="uint" c:type="guint*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_uint_index"
-              c:identifier="gst_tag_list_get_uint_index"
-              doc="Gets the value that is at the given index for the given tag in the given
-list.
-given list.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="tag" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="index" transfer-ownership="none">
-            <type name="uint" c:type="guint"/>
-          </parameter>
-          <parameter name="value" direction="out" transfer-ownership="full">
-            <type name="uint" c:type="guint*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_long"
-              c:identifier="gst_tag_list_get_long"
-              doc="Copies the contents for the given tag into the value, merging multiple values
-into one if multiple values are associated with the tag.
-given list.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="tag" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="value" direction="out" transfer-ownership="full">
-            <type name="long" c:type="glong*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_long_index"
-              c:identifier="gst_tag_list_get_long_index"
-              doc="Gets the value that is at the given index for the given tag in the given
-list.
-given list.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="tag" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="index" transfer-ownership="none">
-            <type name="uint" c:type="guint"/>
-          </parameter>
-          <parameter name="value" direction="out" transfer-ownership="full">
-            <type name="long" c:type="glong*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_ulong"
-              c:identifier="gst_tag_list_get_ulong"
-              doc="Copies the contents for the given tag into the value, merging multiple values
-into one if multiple values are associated with the tag.
-given list.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="tag" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="value" direction="out" transfer-ownership="full">
-            <type name="ulong" c:type="gulong*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_ulong_index"
-              c:identifier="gst_tag_list_get_ulong_index"
-              doc="Gets the value that is at the given index for the given tag in the given
-list.
-given list.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="tag" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="index" transfer-ownership="none">
-            <type name="uint" c:type="guint"/>
-          </parameter>
-          <parameter name="value" direction="out" transfer-ownership="full">
-            <type name="ulong" c:type="gulong*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_int64"
-              c:identifier="gst_tag_list_get_int64"
-              doc="Copies the contents for the given tag into the value, merging multiple values
-into one if multiple values are associated with the tag.
-given list.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="tag" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="value" direction="out" transfer-ownership="full">
-            <type name="int64" c:type="gint64*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_int64_index"
-              c:identifier="gst_tag_list_get_int64_index"
-              doc="Gets the value that is at the given index for the given tag in the given
-list.
-given list.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="tag" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="index" transfer-ownership="none">
-            <type name="uint" c:type="guint"/>
-          </parameter>
-          <parameter name="value" direction="out" transfer-ownership="full">
-            <type name="int64" c:type="gint64*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_uint64"
-              c:identifier="gst_tag_list_get_uint64"
-              doc="Copies the contents for the given tag into the value, merging multiple values
-into one if multiple values are associated with the tag.
-given list.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="tag" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="value" direction="out" transfer-ownership="full">
-            <type name="uint64" c:type="guint64*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_uint64_index"
-              c:identifier="gst_tag_list_get_uint64_index"
-              doc="Gets the value that is at the given index for the given tag in the given
-list.
-given list.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="tag" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="index" transfer-ownership="none">
-            <type name="uint" c:type="guint"/>
-          </parameter>
-          <parameter name="value" direction="out" transfer-ownership="full">
-            <type name="uint64" c:type="guint64*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_float"
-              c:identifier="gst_tag_list_get_float"
-              doc="Copies the contents for the given tag into the value, merging multiple values
-into one if multiple values are associated with the tag.
-given list.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="tag" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="value" direction="out" transfer-ownership="full">
-            <type name="float" c:type="gfloat*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_float_index"
-              c:identifier="gst_tag_list_get_float_index"
-              doc="Gets the value that is at the given index for the given tag in the given
-list.
-given list.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="tag" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="index" transfer-ownership="none">
-            <type name="uint" c:type="guint"/>
-          </parameter>
-          <parameter name="value" direction="out" transfer-ownership="full">
-            <type name="float" c:type="gfloat*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_double"
-              c:identifier="gst_tag_list_get_double"
-              doc="Copies the contents for the given tag into the value, merging multiple values
-into one if multiple values are associated with the tag.
-given list.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="tag" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="value" direction="out" transfer-ownership="full">
-            <type name="double" c:type="gdouble*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_double_index"
-              c:identifier="gst_tag_list_get_double_index"
-              doc="Gets the value that is at the given index for the given tag in the given
-list.
-given list.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="tag" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="index" transfer-ownership="none">
-            <type name="uint" c:type="guint"/>
-          </parameter>
-          <parameter name="value" direction="out" transfer-ownership="full">
-            <type name="double" c:type="gdouble*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_string"
-              c:identifier="gst_tag_list_get_string"
-              doc="Copies the contents for the given tag into the value, possibly merging
-multiple values into one if multiple values are associated with the tag.
-Use gst_tag_list_get_string_index (list, tag, 0, value) if you want
-to retrieve the first string associated with this tag unmodified.
-The resulting string in @value will be in UTF-8 encoding and should be
-freed by the caller using g_free when no longer needed. Since 0.10.24 the
-returned string is also guaranteed to be non-NULL and non-empty.
-given list.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="tag" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="value" transfer-ownership="none">
-            <array c:type="gchar**">
-              <type name="utf8"/>
-            </array>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_string_index"
-              c:identifier="gst_tag_list_get_string_index"
-              doc="Gets the value that is at the given index for the given tag in the given
-list.
-The resulting string in @value will be in UTF-8 encoding and should be
-freed by the caller using g_free when no longer needed. Since 0.10.24 the
-returned string is also guaranteed to be non-NULL and non-empty.
-given list.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="tag" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="index" transfer-ownership="none">
-            <type name="uint" c:type="guint"/>
-          </parameter>
-          <parameter name="value" transfer-ownership="none">
-            <array c:type="gchar**">
-              <type name="utf8"/>
-            </array>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_pointer"
-              c:identifier="gst_tag_list_get_pointer"
-              doc="Copies the contents for the given tag into the value, merging multiple values
-into one if multiple values are associated with the tag.
-given list.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="tag" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="value" transfer-ownership="none">
-            <type name="any" c:type="gpointer*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_pointer_index"
-              c:identifier="gst_tag_list_get_pointer_index"
-              doc="Gets the value that is at the given index for the given tag in the given
-list.
-given list.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="tag" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="index" transfer-ownership="none">
-            <type name="uint" c:type="guint"/>
-          </parameter>
-          <parameter name="value" transfer-ownership="none">
-            <type name="any" c:type="gpointer*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_date"
-              c:identifier="gst_tag_list_get_date"
-              doc="Copies the first date for the given tag in the taglist into the variable
-pointed to by @value. Free the date with g_date_free() when it is no longer
-needed.
-given list or if it was #NULL.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="tag" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="value" transfer-ownership="none">
-            <type name="GLib.Date" c:type="GDate**"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_date_index"
-              c:identifier="gst_tag_list_get_date_index"
-              doc="Gets the date that is at the given index for the given tag in the given
-list and copies it into the variable pointed to by @value. Free the date
-with g_date_free() when it is no longer needed.
-given list or if it was #NULL.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="tag" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="index" transfer-ownership="none">
-            <type name="uint" c:type="guint"/>
-          </parameter>
-          <parameter name="value" transfer-ownership="none">
-            <type name="GLib.Date" c:type="GDate**"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_buffer"
-              c:identifier="gst_tag_list_get_buffer"
-              doc="Copies the first buffer for the given tag in the taglist into the variable
-pointed to by @value. Free the buffer with gst_buffer_unref() when it is
-no longer needed.
-given list or if it was #NULL."
-              version="0.10.23">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="tag" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="value" transfer-ownership="none">
-            <type name="Buffer" c:type="GstBuffer**"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_buffer_index"
-              c:identifier="gst_tag_list_get_buffer_index"
-              doc="Gets the buffer that is at the given index for the given tag in the given
-list and copies it into the variable pointed to by @value. Free the buffer
-with gst_buffer_unref() when it is no longer needed.
-given list or if it was #NULL."
-              version="0.10.23">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="tag" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="index" transfer-ownership="none">
-            <type name="uint" c:type="guint"/>
-          </parameter>
-          <parameter name="value" transfer-ownership="none">
-            <type name="Buffer" c:type="GstBuffer**"/>
-          </parameter>
-        </parameters>
-      </method>
-    </record>
-    <callback name="TagMergeFunc"
-              c:type="GstTagMergeFunc"
-              doc="A function for merging multiple values of a tag used when registering
-tags.">
-      <return-value transfer-ownership="none">
-        <type name="none" c:type="void"/>
-      </return-value>
-      <parameters>
-        <parameter name="dest" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-        <parameter name="src" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-      </parameters>
-    </callback>
-    <enumeration name="TagMergeMode"
-                 doc="The different tag merging modes are basically replace, overwrite and append,
-already in the element and (B) the ones that are supplied to the element (
-e.g. via gst_tag_setter_merge_tags() / gst_tag_setter_add_tags() or a
-%GST_EVENT_TAG), how are these tags merged?
-In the table below this is shown for the cases that a tag exists in the list
-(A) or does not exists (!A) and combinations thereof.
-&lt;table frame=&quot;all&quot; colsep=&quot;1&quot; rowsep=&quot;1&quot;&gt;
-&lt;title&gt;merge mode&lt;/title&gt;
-&lt;tgroup cols=&apos;5&apos; align=&apos;left&apos;&gt;
-&lt;thead&gt;
-&lt;row&gt;
-&lt;entry&gt;merge mode&lt;/entry&gt;
-&lt;entry&gt;A + B&lt;/entry&gt;
-&lt;entry&gt;A + !B&lt;/entry&gt;
-&lt;entry&gt;!A + B&lt;/entry&gt;
-&lt;entry&gt;!A + !B&lt;/entry&gt;
-&lt;/row&gt;
-&lt;/thead&gt;
-&lt;tbody&gt;
-&lt;row&gt;
-&lt;entry&gt;REPLACE_ALL&lt;/entry&gt;
-&lt;entry&gt;B&lt;/entry&gt;
-&lt;entry&gt;-&lt;/entry&gt;
-&lt;entry&gt;B&lt;/entry&gt;
-&lt;entry&gt;-&lt;/entry&gt;
-&lt;/row&gt;
-&lt;row&gt;
-&lt;entry&gt;REPLACE&lt;/entry&gt;
-&lt;entry&gt;B&lt;/entry&gt;
-&lt;entry&gt;A&lt;/entry&gt;
-&lt;entry&gt;B&lt;/entry&gt;
-&lt;entry&gt;-&lt;/entry&gt;
-&lt;/row&gt;
-&lt;row&gt;
-&lt;entry&gt;APPEND&lt;/entry&gt;
-&lt;entry&gt;A, B&lt;/entry&gt;
-&lt;entry&gt;A&lt;/entry&gt;
-&lt;entry&gt;B&lt;/entry&gt;
-&lt;entry&gt;-&lt;/entry&gt;
-&lt;/row&gt;
-&lt;row&gt;
-&lt;entry&gt;PREPEND&lt;/entry&gt;
-&lt;entry&gt;B, A&lt;/entry&gt;
-&lt;entry&gt;A&lt;/entry&gt;
-&lt;entry&gt;B&lt;/entry&gt;
-&lt;entry&gt;-&lt;/entry&gt;
-&lt;/row&gt;
-&lt;row&gt;
-&lt;entry&gt;KEEP&lt;/entry&gt;
-&lt;entry&gt;A&lt;/entry&gt;
-&lt;entry&gt;A&lt;/entry&gt;
-&lt;entry&gt;B&lt;/entry&gt;
-&lt;entry&gt;-&lt;/entry&gt;
-&lt;/row&gt;
-&lt;row&gt;
-&lt;entry&gt;KEEP_ALL&lt;/entry&gt;
-&lt;entry&gt;A&lt;/entry&gt;
-&lt;entry&gt;A&lt;/entry&gt;
-&lt;entry&gt;-&lt;/entry&gt;
-&lt;entry&gt;-&lt;/entry&gt;
-&lt;/row&gt;
-&lt;/tbody&gt;
-&lt;/tgroup&gt;
-&lt;/table&gt;"
-                 c:type="GstTagMergeMode">
-      <member name="undefined"
-              value="0"
-              c:identifier="GST_TAG_MERGE_UNDEFINED"/>
-      <member name="replace_all"
-              value="1"
-              c:identifier="GST_TAG_MERGE_REPLACE_ALL"/>
-      <member name="replace" value="2" c:identifier="GST_TAG_MERGE_REPLACE"/>
-      <member name="append" value="3" c:identifier="GST_TAG_MERGE_APPEND"/>
-      <member name="prepend" value="4" c:identifier="GST_TAG_MERGE_PREPEND"/>
-      <member name="keep" value="5" c:identifier="GST_TAG_MERGE_KEEP"/>
-      <member name="keep_all" value="6" c:identifier="GST_TAG_MERGE_KEEP_ALL"/>
-      <member name="count" value="7" c:identifier="GST_TAG_MERGE_COUNT"/>
-    </enumeration>
-    <interface name="TagSetter"
-               c:type="GstTagSetter"
-               doc="Opaque #GstTagSetter data structure."
-               glib:type-name="GstTagSetter"
-               glib:get-type="gst_tag_setter_get_type">
-      <prerequisite name="Element"/>
-      <method name="reset_tags"
-              c:identifier="gst_tag_setter_reset_tags"
-              doc="Reset the internal taglist. Elements should call this from within the
-state-change handler."
-              version="0.10.22">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-      </method>
-      <method name="merge_tags"
-              c:identifier="gst_tag_setter_merge_tags"
-              doc="Merges the given list into the setter&apos;s list using the given mode.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="list" transfer-ownership="none">
-            <type name="TagList" c:type="GstTagList*"/>
-          </parameter>
-          <parameter name="mode" transfer-ownership="none">
-            <type name="TagMergeMode" c:type="GstTagMergeMode"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="add_tags"
-              c:identifier="gst_tag_setter_add_tags"
-              doc="Adds the given tag / value pairs on the setter using the given merge mode.
-The list must be terminated with NULL.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="mode" transfer-ownership="none">
-            <type name="TagMergeMode" c:type="GstTagMergeMode"/>
-          </parameter>
-          <parameter name="tag" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter transfer-ownership="none">
-            <varargs>
-            </varargs>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="add_tag_values"
-              c:identifier="gst_tag_setter_add_tag_values"
-              doc="Adds the given tag / GValue pairs on the setter using the given merge mode.
-The list must be terminated with NULL.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="mode" transfer-ownership="none">
-            <type name="TagMergeMode" c:type="GstTagMergeMode"/>
-          </parameter>
-          <parameter name="tag" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter transfer-ownership="none">
-            <varargs>
-            </varargs>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="add_tag_value"
-              c:identifier="gst_tag_setter_add_tag_value"
-              doc="Adds the given tag / GValue pair on the setter using the given merge mode."
-              version="0.10.24">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="mode" transfer-ownership="none">
-            <type name="TagMergeMode" c:type="GstTagMergeMode"/>
-          </parameter>
-          <parameter name="tag" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="value" transfer-ownership="none">
-            <type name="GObject.Value" c:type="GValue*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_tag_list"
-              c:identifier="gst_tag_setter_get_tag_list"
-              doc="Returns the current list of tags the setter uses.  The list should not be
-modified or freed.
-or NULL if none is used.">
-        <return-value transfer-ownership="none">
-          <type name="TagList" c:type="GstTagList*"/>
-        </return-value>
-      </method>
-      <method name="set_tag_merge_mode"
-              c:identifier="gst_tag_setter_set_tag_merge_mode"
-              doc="Sets the given merge mode that is used for adding tags from events to tags
-specified by this interface. The default is #GST_TAG_MERGE_KEEP, which keeps
-the tags set with this interface and discards tags from events.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="mode" transfer-ownership="none">
-            <type name="TagMergeMode" c:type="GstTagMergeMode"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_tag_merge_mode"
-              c:identifier="gst_tag_setter_get_tag_merge_mode"
-              doc="Queries the mode by which tags inside the setter are overwritten by tags
-from events">
-        <return-value transfer-ownership="full">
-          <type name="TagMergeMode" c:type="GstTagMergeMode"/>
-        </return-value>
-      </method>
-    </interface>
-    <record name="TagSetterIFace"
-            c:type="GstTagSetterIFace"
-            doc="#GstTagSetterIFace interface.">
-      <field name="g_iface" writable="1">
-        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
-      </field>
-    </record>
-    <class name="Task"
-           c:type="GstTask"
-           doc="The #GstTask object."
-           parent="Object"
-           glib:type-name="GstTask"
-           glib:get-type="gst_task_get_type"
-           glib:type-struct="TaskClass">
-      <function name="cleanup_all"
-                c:identifier="gst_task_cleanup_all"
-                doc="Wait for all tasks to be stopped. This is mainly used internally
-to ensure proper cleanup of internal data structures in test suites.
-MT safe.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-      </function>
-      <function name="create"
-                c:identifier="gst_task_create"
-                doc="Create a new Task that will repeatedly call the provided @func
-with @data as a parameter. Typically the task will run in
-a new thread.
-The function cannot be changed after the task has been created. You
-must create a new #GstTask to change the function.
-This function will not yet create and start a thread. Use gst_task_start() or
-gst_task_pause() to create and start the GThread.
-Before the task can be used, a #GStaticRecMutex must be configured using the
-gst_task_set_lock() function. This lock will always be acquired while
-MT safe.">
-        <return-value transfer-ownership="full">
-          <type name="Task" c:type="GstTask*"/>
-        </return-value>
-        <parameters>
-          <parameter name="func"
-                     transfer-ownership="none"
-                     scope="call"
-                     closure="1">
-            <type name="TaskFunction" c:type="GstTaskFunction"/>
-          </parameter>
-          <parameter name="data" transfer-ownership="none">
-            <type name="any" c:type="gpointer"/>
-          </parameter>
-        </parameters>
-      </function>
-      <method name="set_lock"
-              c:identifier="gst_task_set_lock"
-              doc="Set the mutex used by the task. The mutex will be acquired before
-calling the #GstTaskFunction.
-This function has to be called before calling gst_task_pause() or
-gst_task_start().
-MT safe.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="mutex" transfer-ownership="none">
-            <type name="GLib.StaticRecMutex" c:type="GStaticRecMutex*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="set_priority"
-              c:identifier="gst_task_set_priority"
-              doc="Changes the priority of @task to @priority.
-MT safe."
-              version="0.10.24">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="priority" transfer-ownership="none">
-            <type name="GLib.ThreadPriority" c:type="GThreadPriority"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_pool"
-              c:identifier="gst_task_get_pool"
-              doc="Get the #GstTaskPool that this task will use for its streaming
-threads.
-MT safe.
-after usage."
-              version="0.10.24">
-        <return-value transfer-ownership="full">
-          <type name="TaskPool" c:type="GstTaskPool*"/>
-        </return-value>
-      </method>
-      <method name="set_pool"
-              c:identifier="gst_task_set_pool"
-              doc="Set @pool as the new GstTaskPool for @task. Any new streaming threads that
-will be created by @task will now use @pool.
-MT safe."
-              version="0.10.24">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="pool" transfer-ownership="none">
-            <type name="TaskPool" c:type="GstTaskPool*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="set_thread_callbacks"
-              c:identifier="gst_task_set_thread_callbacks"
-              doc="Set callbacks which will be executed when a new thread is needed, the thread
-function is entered and left and when the thread is joined.
-By default a thread for @task will be created from a default thread pool.
-Objects can use custom GThreads or can perform additional configuration of
-the threads (such as changing the thread priority) by installing callbacks.
-MT safe."
-              version="0.10.24">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="callbacks" transfer-ownership="none">
-            <type name="TaskThreadCallbacks" c:type="GstTaskThreadCallbacks*"/>
-          </parameter>
-          <parameter name="user_data" transfer-ownership="none">
-            <type name="any" c:type="gpointer"/>
-          </parameter>
-          <parameter name="notify" transfer-ownership="none" scope="call">
-            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_state"
-              c:identifier="gst_task_get_state"
-              doc="Get the current state of the task.
-MT safe.">
-        <return-value transfer-ownership="full">
-          <type name="TaskState" c:type="GstTaskState"/>
-        </return-value>
-      </method>
-      <method name="set_state"
-              c:identifier="gst_task_set_state"
-              doc="Sets the state of @task to @state.
-The @task must have a lock associated with it using
-gst_task_set_lock() when going to GST_TASK_STARTED or GST_TASK_PAUSED or
-this function will return %FALSE.
-MT safe."
-              version="0.10.24">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="state" transfer-ownership="none">
-            <type name="TaskState" c:type="GstTaskState"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="start"
-              c:identifier="gst_task_start"
-              doc="Starts @task. The @task must have a lock associated with it using
-gst_task_set_lock() or this function will return %FALSE.
-MT safe.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-      </method>
-      <method name="stop"
-              c:identifier="gst_task_stop"
-              doc="Stops @task. This method merely schedules the task to stop and
-will not wait for the task to have completely stopped. Use
-gst_task_join() to stop and wait for completion.
-MT safe.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-      </method>
-      <method name="pause"
-              c:identifier="gst_task_pause"
-              doc="Pauses @task. This method can also be called on a task in the
-stopped state, in which case a thread will be started and will remain
-in the paused state. This function does not wait for the task to complete
-the paused state.
-MT safe.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-      </method>
-      <method name="join"
-              c:identifier="gst_task_join"
-              doc="Joins @task. After this call, it is safe to unref the task
-and clean up the lock set with gst_task_set_lock().
-The task will automatically be stopped with this call.
-This function cannot be called from within a task function as this
-would cause a deadlock. The function will detect this and print a
-g_warning.
-MT safe.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-      </method>
-      <field name="object">
-        <type name="Object" c:type="GstObject"/>
-      </field>
-      <field name="state">
-        <type name="TaskState" c:type="GstTaskState"/>
-      </field>
-      <field name="cond">
-        <type name="GLib.Cond" c:type="GCond*"/>
-      </field>
-      <field name="lock">
-        <type name="GLib.StaticRecMutex" c:type="GStaticRecMutex*"/>
-      </field>
-      <field name="func">
-        <type name="TaskFunction" c:type="GstTaskFunction"/>
-      </field>
-      <field name="data">
-        <type name="any" c:type="gpointer"/>
-      </field>
-      <field name="running">
-        <type name="boolean" c:type="gboolean"/>
-      </field>
-      <union name="abidata" c:type="abidata">
-        <record name="ABI" c:type="ABI">
-          <field name="thread" writable="1">
-            <type name="GLib.Thread" c:type="GThread*"/>
-          </field>
-        </record>
-        <field name="_gst_reserved" writable="1">
-          <array zero-terminated="0" c:type="gpointer" fixed-size="3">
-            <type name="any"/>
-          </array>
-        </field>
-      </union>
-      <field name="priv">
-        <type name="TaskPrivate" c:type="GstTaskPrivate*"/>
-      </field>
-    </class>
-    <record name="TaskClass"
-            c:type="GstTaskClass"
-            glib:is-gtype-struct-for="Task">
-      <field name="parent_class">
-        <type name="ObjectClass" c:type="GstObjectClass"/>
-      </field>
-      <field name="pool">
-        <type name="TaskPool" c:type="GstTaskPool*"/>
-      </field>
-      <field name="_gst_reserved">
-        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
-          <type name="any"/>
-        </array>
-      </field>
-    </record>
-    <callback name="TaskFunction"
-              c:type="GstTaskFunction"
-              doc="A function that will repeatedly be called in the thread created by
-a #GstTask.">
-      <return-value transfer-ownership="none">
-        <type name="none" c:type="void"/>
-      </return-value>
-      <parameters>
-        <parameter name="data" transfer-ownership="none">
-          <type name="any" c:type="void*"/>
-        </parameter>
-      </parameters>
-    </callback>
-    <class name="TaskPool"
-           c:type="GstTaskPool"
-           doc="The #GstTaskPool object."
-           parent="Object"
-           glib:type-name="GstTaskPool"
-           glib:get-type="gst_task_pool_get_type"
-           glib:type-struct="TaskPoolClass">
-      <constructor name="new"
-                   c:identifier="gst_task_pool_new"
-                   doc="Create a new default task pool. The default task pool will use a regular
-GThreadPool for threads."
-                   version="0.10.24">
-        <return-value transfer-ownership="full" doc="after usage.">
-          <type name="TaskPool" c:type="GstTaskPool*"/>
-        </return-value>
-      </constructor>
-      <virtual-method name="prepare" invoker="prepare" throws="1">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-      </virtual-method>
-      <virtual-method name="cleanup" invoker="cleanup">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-      </virtual-method>
-      <virtual-method name="push" invoker="push" throws="1">
-        <return-value transfer-ownership="none">
-          <type name="any" c:type="gpointer"/>
-        </return-value>
-        <parameters>
-          <parameter name="func" transfer-ownership="none">
-            <type name="TaskPoolFunction" c:type="GstTaskPoolFunction"/>
-          </parameter>
-          <parameter name="user_data" transfer-ownership="none" closure="2">
-            <type name="any" c:type="gpointer"/>
-          </parameter>
-        </parameters>
-      </virtual-method>
-      <virtual-method name="join" invoker="join">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="id" transfer-ownership="none">
-            <type name="any" c:type="gpointer"/>
-          </parameter>
-        </parameters>
-      </virtual-method>
-      <method name="prepare"
-              c:identifier="gst_task_pool_prepare"
-              doc="Prepare the taskpool for accepting gst_task_pool_push() operations.
-MT safe."
-              version="0.10.24"
-              throws="1">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-      </method>
-      <method name="push"
-              c:identifier="gst_task_pool_push"
-              doc="Start the execution of a new thread from @pool.
-function. This pointer can be NULL, you must check @error to detect
-errors."
-              version="0.10.24"
-              throws="1">
-        <return-value transfer-ownership="none">
-          <type name="any" c:type="gpointer"/>
-        </return-value>
-        <parameters>
-          <parameter name="func"
-                     transfer-ownership="none"
-                     scope="call"
-                     closure="2">
-            <type name="TaskPoolFunction" c:type="GstTaskPoolFunction"/>
-          </parameter>
-          <parameter name="user_data" transfer-ownership="none">
-            <type name="any" c:type="gpointer"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="join"
-              c:identifier="gst_task_pool_join"
-              doc="Join a task and/or return it to the pool. @id is the id obtained from
-gst_task_pool_push()."
-              version="0.10.24">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="id" transfer-ownership="none">
-            <type name="any" c:type="gpointer"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="cleanup"
-              c:identifier="gst_task_pool_cleanup"
-              doc="Wait for all tasks to be stopped. This is mainly used internally
-to ensure proper cleanup of internal data structures in test suites.
-MT safe."
-              version="0.10.24">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-      </method>
-      <field name="object">
-        <type name="Object" c:type="GstObject"/>
-      </field>
-      <field name="pool">
-        <type name="GLib.ThreadPool" c:type="GThreadPool*"/>
-      </field>
-      <field name="_gst_reserved">
-        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
-          <type name="any"/>
-        </array>
-      </field>
-    </class>
-    <record name="TaskPoolClass"
-            c:type="GstTaskPoolClass"
-            glib:is-gtype-struct-for="TaskPool"
-            doc="The #GstTaskPoolClass object.">
-      <field name="parent_class">
-        <type name="ObjectClass" c:type="GstObjectClass"/>
-      </field>
-      <field name="prepare">
-        <callback name="prepare" c:type="prepare" throws="1">
-          <return-value transfer-ownership="none">
-            <type name="none" c:type="void"/>
-          </return-value>
-          <parameters>
-            <parameter name="pool" transfer-ownership="none">
-              <type name="TaskPool" c:type="GstTaskPool*"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="cleanup">
-        <callback name="cleanup" c:type="cleanup">
-          <return-value transfer-ownership="none">
-            <type name="none" c:type="void"/>
-          </return-value>
-          <parameters>
-            <parameter name="pool" transfer-ownership="none">
-              <type name="TaskPool" c:type="GstTaskPool*"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="push">
-        <callback name="push" c:type="push" throws="1">
-          <return-value transfer-ownership="none">
-            <type name="any" c:type="gpointer"/>
-          </return-value>
-          <parameters>
-            <parameter name="pool" transfer-ownership="none">
-              <type name="TaskPool" c:type="GstTaskPool*"/>
-            </parameter>
-            <parameter name="func" transfer-ownership="none">
-              <type name="TaskPoolFunction" c:type="GstTaskPoolFunction"/>
-            </parameter>
-            <parameter name="user_data" transfer-ownership="none" closure="2">
-              <type name="any" c:type="gpointer"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="join">
-        <callback name="join" c:type="join">
-          <return-value transfer-ownership="none">
-            <type name="none" c:type="void"/>
-          </return-value>
-          <parameters>
-            <parameter name="pool" transfer-ownership="none">
-              <type name="TaskPool" c:type="GstTaskPool*"/>
-            </parameter>
-            <parameter name="id" transfer-ownership="none">
-              <type name="any" c:type="gpointer"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="_gst_reserved">
-        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
-          <type name="any"/>
-        </array>
-      </field>
-    </record>
-    <callback name="TaskPoolFunction"
-              c:type="GstTaskPoolFunction"
-              doc="Task function, see gst_task_pool_push()."
-              version="0.10.24">
-      <return-value transfer-ownership="none">
-        <type name="none" c:type="void"/>
-      </return-value>
-      <parameters>
-        <parameter name="data" transfer-ownership="none">
-          <type name="any" c:type="void*"/>
-        </parameter>
-      </parameters>
-    </callback>
-    <record name="TaskPrivate" c:type="GstTaskPrivate">
-    </record>
-    <enumeration name="TaskState"
-                 doc="The different states a task can be in"
-                 c:type="GstTaskState">
-      <member name="started" value="0" c:identifier="GST_TASK_STARTED"/>
-      <member name="stopped" value="1" c:identifier="GST_TASK_STOPPED"/>
-      <member name="paused" value="2" c:identifier="GST_TASK_PAUSED"/>
-    </enumeration>
-    <record name="TaskThreadCallbacks"
-            c:type="GstTaskThreadCallbacks"
-            doc="thread enters its function.
-to leave its function
-Custom GstTask thread callback functions that can be installed."
-            version="0.10.24">
-      <field name="enter_thread">
-        <type name="any" c:type="pointer"/>
-      </field>
-      <field name="leave_thread">
-        <type name="any" c:type="pointer"/>
-      </field>
-      <field name="_gst_reserved" writable="1">
-        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
-          <type name="any"/>
-        </array>
-      </field>
-    </record>
-    <record name="Trace" c:type="GstTrace" doc="Opaque #GstTrace structure.">
-      <field name="filename" writable="1">
-        <type name="utf8" c:type="gchar*"/>
-      </field>
-      <field name="fd" writable="1">
-        <type name="int" c:type="int"/>
-      </field>
-      <field name="buf" writable="1">
-        <type name="TraceEntry" c:type="GstTraceEntry*"/>
-      </field>
-      <field name="bufsize" writable="1">
-        <type name="int" c:type="gint"/>
-      </field>
-      <field name="bufoffset" writable="1">
-        <type name="int" c:type="gint"/>
-      </field>
-      <constructor name="new"
-                   c:identifier="gst_trace_new"
-                   doc="Create a ringbuffer of @size in the file with @filename to
-store trace results in.">
-        <return-value transfer-ownership="full">
-          <type name="Trace" c:type="GstTrace*"/>
-        </return-value>
-        <parameters>
-          <parameter name="filename" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="size" transfer-ownership="none">
-            <type name="int" c:type="gint"/>
-          </parameter>
-        </parameters>
-      </constructor>
-      <method name="destroy"
-              c:identifier="gst_trace_destroy"
-              doc="Flush an close the previously allocated @trace.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-      </method>
-      <method name="flush"
-              c:identifier="gst_trace_flush"
-              doc="Flush any pending trace entries in @trace to the trace file.
-flushed.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-      </method>
-      <method name="text_flush"
-              c:identifier="gst_trace_text_flush"
-              doc="Flush any pending trace entries in @trace to the trace file,
-formatted as a text line with timestamp and sequence numbers.
-flushed.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-      </method>
-      <method name="set_default"
-              c:identifier="gst_trace_set_default"
-              doc="Set the default #GstTrace to @trace.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-      </method>
-    </record>
-    <record name="TraceEntry" c:type="GstTraceEntry">
-      <field name="timestamp" writable="1">
-        <type name="int64" c:type="gint64"/>
-      </field>
-      <field name="sequence" writable="1">
-        <type name="uint32" c:type="guint32"/>
-      </field>
-      <field name="data" writable="1">
-        <type name="uint32" c:type="guint32"/>
-      </field>
-      <field name="message" writable="1">
-        <array zero-terminated="0" c:type="gchar" fixed-size="112">
-          <type name="int8"/>
-        </array>
-      </field>
-    </record>
-    <record name="TypeFind"
-            c:type="GstTypeFind"
-            doc="Object that stores typefind callbacks. To use with #GstTypeFindFactory.">
-      <field name="peek">
-        <type name="any" c:type="pointer"/>
-      </field>
-      <field name="suggest">
-        <type name="any" c:type="pointer"/>
-      </field>
-      <field name="data" writable="1">
-        <type name="any" c:type="gpointer"/>
-      </field>
-      <field name="get_length">
-        <type name="any" c:type="pointer"/>
-      </field>
-      <field name="_gst_reserved" writable="1">
-        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
-          <type name="any"/>
-        </array>
-      </field>
-      <method name="peek"
-              c:identifier="gst_type_find_peek"
-              doc="Returns the @size bytes of the stream to identify beginning at offset. If
-offset is a positive number, the offset is relative to the beginning of the
-stream, if offset is a negative number the offset is relative to the end of
-the stream. The returned memory is valid until the typefinding function
-returns and must not be freed.">
-        <return-value transfer-ownership="full">
-          <array c:type="guint8*">
-            <type name="uint8"/>
-          </array>
-        </return-value>
-        <parameters>
-          <parameter name="offset" transfer-ownership="none">
-            <type name="int64" c:type="gint64"/>
-          </parameter>
-          <parameter name="size" transfer-ownership="none">
-            <type name="uint" c:type="guint"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="suggest"
-              c:identifier="gst_type_find_suggest"
-              doc="If a #GstTypeFindFunction calls this function it suggests the caps with the
-given probability. A #GstTypeFindFunction may supply different suggestions
-in one call.
-It is up to the caller of the #GstTypeFindFunction to interpret these values.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="probability" transfer-ownership="none">
-            <type name="uint" c:type="guint"/>
-          </parameter>
-          <parameter name="caps" transfer-ownership="none">
-            <type name="Caps" c:type="GstCaps*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="suggest_simple"
-              c:identifier="gst_type_find_suggest_simple"
-              doc="arguments passed to gst_structure_new() (ie. triplets of field name,
-field GType and field value)
-If a #GstTypeFindFunction calls this function it suggests the caps with the
-given probability. A #GstTypeFindFunction may supply different suggestions
-in one call. It is up to the caller of the #GstTypeFindFunction to interpret
-these values.
-This function is similar to gst_type_find_suggest(), only that instead of
-passing a #GstCaps argument you can create the caps on the fly in the same
-way as you can with gst_caps_new_simple().
-Make sure you terminate the list of arguments with a NULL argument and that
-the values passed have the correct type (in terms of width in bytes when
-passed to the vararg function - this applies particularly to gdouble and
-guint64 arguments)."
-              version="0.10.20">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="probability" transfer-ownership="none">
-            <type name="uint" c:type="guint"/>
-          </parameter>
-          <parameter name="media_type" transfer-ownership="none">
-            <type name="utf8" c:type="char*"/>
-          </parameter>
-          <parameter name="fieldname" transfer-ownership="none">
-            <type name="utf8" c:type="char*"/>
-          </parameter>
-          <parameter transfer-ownership="none">
-            <varargs>
-            </varargs>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_length"
-              c:identifier="gst_type_find_get_length"
-              doc="Get the length of the data stream.">
-        <return-value transfer-ownership="none">
-          <type name="uint64" c:type="guint64"/>
-        </return-value>
-      </method>
-    </record>
-    <class name="TypeFindFactory"
-           c:type="GstTypeFindFactory"
-           doc="Object that stores information about a typefind function."
-           parent="PluginFeature"
-           glib:type-name="GstTypeFindFactory"
-           glib:get-type="gst_type_find_factory_get_type"
-           glib:type-struct="TypeFindFactoryClass">
-      <function name="get_list"
-                c:identifier="gst_type_find_factory_get_list"
-                doc="Gets the list of all registered typefind factories. You must free the
-list using gst_plugin_feature_list_free.
-The returned factories are sorted by highest rank first, and then by
-factory name. (behaviour change since 0.10.26)">
-        <return-value transfer-ownership="full">
-          <type name="GLib.List" c:type="GList*"/>
-        </return-value>
-      </function>
-      <method name="get_extensions"
-              c:identifier="gst_type_find_factory_get_extensions"
-              doc="Gets the extensions associated with a #GstTypeFindFactory. The returned
-array should not be changed. If you need to change stuff in it, you should
-copy it using g_strdupv().  This function may return NULL to indicate
-a 0-length list.">
-        <return-value transfer-ownership="full">
-          <array c:type="gchar**">
-            <type name="utf8"/>
-          </array>
-        </return-value>
-      </method>
-      <method name="get_caps"
-              c:identifier="gst_type_find_factory_get_caps"
-              doc="Gets the #GstCaps associated with a typefind factory.">
-        <return-value transfer-ownership="full">
-          <type name="Caps" c:type="GstCaps*"/>
-        </return-value>
-      </method>
-      <method name="call_function"
-              c:identifier="gst_type_find_factory_call_function"
-              doc="members must be set.
-Calls the #GstTypeFindFunction associated with this factory.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="find" transfer-ownership="none">
-            <type name="TypeFind" c:type="GstTypeFind*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <field name="feature">
-        <type name="PluginFeature" c:type="GstPluginFeature"/>
-      </field>
-      <field name="function">
-        <type name="TypeFindFunction" c:type="GstTypeFindFunction"/>
-      </field>
-      <field name="extensions">
-        <type name="utf8" c:type="gchar**"/>
-      </field>
-      <field name="caps">
-        <type name="Caps" c:type="GstCaps*"/>
-      </field>
-      <field name="user_data">
-        <type name="any" c:type="gpointer"/>
-      </field>
-      <field name="user_data_notify">
-        <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
-      </field>
-      <field name="_gst_reserved">
-        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
-          <type name="any"/>
-        </array>
-      </field>
-    </class>
-    <record name="TypeFindFactoryClass"
-            c:type="GstTypeFindFactoryClass"
-            glib:is-gtype-struct-for="TypeFindFactory">
-      <field name="parent">
-        <type name="PluginFeatureClass" c:type="GstPluginFeatureClass"/>
-      </field>
-      <field name="_gst_reserved">
-        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
-          <type name="any"/>
-        </array>
-      </field>
-    </record>
-    <callback name="TypeFindFunction"
-              c:type="GstTypeFindFunction"
-              doc="A function that will be called by typefinding.">
-      <return-value transfer-ownership="none">
-        <type name="none" c:type="void"/>
-      </return-value>
-      <parameters>
-        <parameter name="find" transfer-ownership="none">
-          <type name="TypeFind" c:type="GstTypeFind*"/>
-        </parameter>
-        <parameter name="data" transfer-ownership="none">
-          <type name="any" c:type="gpointer"/>
-        </parameter>
-      </parameters>
-    </callback>
-    <enumeration name="TypeFindProbability"
-                 doc="The probability of the typefind function. Higher values have more certainty
-in doing a reliable typefind."
-                 c:type="GstTypeFindProbability">
-      <member name="minimum" value="1" c:identifier="GST_TYPE_FIND_MINIMUM"/>
-      <member name="possible"
-              value="50"
-              c:identifier="GST_TYPE_FIND_POSSIBLE"/>
-      <member name="likely" value="80" c:identifier="GST_TYPE_FIND_LIKELY"/>
-      <member name="nearly_certain"
-              value="99"
-              c:identifier="GST_TYPE_FIND_NEARLY_CERTAIN"/>
-      <member name="maximum" value="100" c:identifier="GST_TYPE_FIND_MAXIMUM"/>
-    </enumeration>
-    <record name="TypeNameData"
-            c:type="GstTypeNameData"
-            doc="Structure used for filtering based on @name and @type.">
-      <field name="name" writable="1">
-        <type name="utf8" c:type="gchar*"/>
-      </field>
-      <field name="type" writable="1">
-        <type name="GType" c:type="GType"/>
-      </field>
-    </record>
-    <interface name="URIHandler"
-               c:type="GstURIHandler"
-               doc="Opaque #GstURIHandler structure."
-               glib:type-name="GstURIHandler"
-               glib:get-type="gst_uri_handler_get_type"
-               glib:type-struct="URIHandlerInterface">
-      <virtual-method name="get_uri" invoker="get_uri">
-        <return-value transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </return-value>
-      </virtual-method>
-      <virtual-method name="set_uri" invoker="set_uri">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="uri" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-        </parameters>
-      </virtual-method>
-      <method name="get_uri_type"
-              c:identifier="gst_uri_handler_get_uri_type"
-              doc="Gets the type of the given URI handler
-Returns #GST_URI_UNKNOWN if the @handler isn&apos;t implemented correctly.">
-        <return-value transfer-ownership="none">
-          <type name="uint" c:type="guint"/>
-        </return-value>
-      </method>
-      <method name="get_protocols"
-              c:identifier="gst_uri_handler_get_protocols"
-              doc="Gets the list of protocols supported by @handler. This list may not be
-modified.
-Returns NULL if the @handler isn&apos;t implemented properly, or the @handler
-doesn&apos;t support any protocols.">
-        <return-value transfer-ownership="full">
-          <array c:type="gchar**">
-            <type name="utf8"/>
-          </array>
-        </return-value>
-      </method>
-      <method name="get_uri"
-              c:identifier="gst_uri_handler_get_uri"
-              doc="Gets the currently handled URI.
-Returns NULL if there are no URI currently handled. The returned
-string must not be modified or freed.">
-        <return-value transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </return-value>
-      </method>
-      <method name="set_uri"
-              c:identifier="gst_uri_handler_set_uri"
-              doc="Tries to set the URI of the given handler.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="uri" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="new_uri"
-              c:identifier="gst_uri_handler_new_uri"
-              doc="Emits the new-uri signal for a given handler, when that handler has a new URI.
-This function should only be called by URI handlers themselves.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="uri" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <glib:signal name="new-uri"
-                   doc="The URI of the given @handler has changed.">
-        <return-value transfer-ownership="full">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="uri" transfer-ownership="none">
-            <type name="utf8" c:type="gchararray"/>
-          </parameter>
-        </parameters>
-      </glib:signal>
-    </interface>
-    <record name="URIHandlerInterface"
-            c:type="GstURIHandlerInterface"
-            glib:is-gtype-struct-for="URIHandler"
-            doc="This is for use by bindings that need to pass context when creating a URI
-Handler. If implemented, get_protocols will be used in preference to
-Any #GstElement using this interface should implement these methods.">
-      <field name="parent">
-        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
-      </field>
-      <field name="new_uri">
-        <callback name="new_uri" c:type="new_uri">
-          <return-value transfer-ownership="none">
-            <type name="none" c:type="void"/>
-          </return-value>
-          <parameters>
-            <parameter name="handler" transfer-ownership="none">
-              <type name="URIHandler" c:type="GstURIHandler*"/>
-            </parameter>
-            <parameter name="uri" transfer-ownership="none">
-              <type name="utf8" c:type="gchar*"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="get_type">
-        <callback name="get_type" c:type="get_type">
-          <return-value transfer-ownership="full">
-            <type name="URIType" c:type="GstURIType"/>
-          </return-value>
-        </callback>
-      </field>
-      <field name="get_protocols">
-        <callback name="get_protocols" c:type="get_protocols">
-          <return-value transfer-ownership="full">
-            <array c:type="gchar**">
-              <type name="utf8"/>
-            </array>
-          </return-value>
-        </callback>
-      </field>
-      <field name="get_uri">
-        <callback name="get_uri" c:type="get_uri">
-          <return-value transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </return-value>
-          <parameters>
-            <parameter name="handler" transfer-ownership="none">
-              <type name="URIHandler" c:type="GstURIHandler*"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="set_uri">
-        <callback name="set_uri" c:type="set_uri">
-          <return-value transfer-ownership="none">
-            <type name="boolean" c:type="gboolean"/>
-          </return-value>
-          <parameters>
-            <parameter name="handler" transfer-ownership="none">
-              <type name="URIHandler" c:type="GstURIHandler*"/>
-            </parameter>
-            <parameter name="uri" transfer-ownership="none">
-              <type name="utf8" c:type="gchar*"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="get_type_full">
-        <callback name="get_type_full" c:type="get_type_full">
-          <return-value transfer-ownership="full">
-            <type name="URIType" c:type="GstURIType"/>
-          </return-value>
-          <parameters>
-            <parameter name="type" transfer-ownership="none">
-              <type name="GType" c:type="GType"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="get_protocols_full">
-        <callback name="get_protocols_full" c:type="get_protocols_full">
-          <return-value transfer-ownership="full">
-            <array c:type="gchar**">
-              <type name="utf8"/>
-            </array>
-          </return-value>
-          <parameters>
-            <parameter name="type" transfer-ownership="none">
-              <type name="GType" c:type="GType"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="_gst_reserved">
-        <array zero-terminated="0" c:type="gpointer" fixed-size="2">
-          <type name="any"/>
-        </array>
-      </field>
-    </record>
-    <enumeration name="URIType"
-                 doc="The different types of URI direction."
-                 c:type="GstURIType">
-      <member name="unknown" value="0" c:identifier="GST_URI_UNKNOWN"/>
-      <member name="sink" value="1" c:identifier="GST_URI_SINK"/>
-      <member name="src" value="2" c:identifier="GST_URI_SRC"/>
-    </enumeration>
-    <constant name="USECOND" value="0">
-      <type name="int"/>
-    </constant>
-    <constant name="VALUE_EQUAL" value="0">
-      <type name="int"/>
-    </constant>
-    <constant name="VALUE_GREATER_THAN" value="1">
-      <type name="int"/>
-    </constant>
-    <constant name="VALUE_LESS_THAN" value="-1">
-      <type name="int"/>
-    </constant>
-    <constant name="VALUE_UNORDERED" value="2">
-      <type name="int"/>
-    </constant>
-    <callback name="ValueCompareFunc"
-              c:type="GstValueCompareFunc"
-              doc="Used together with gst_value_compare() to compare #GValue items.
-or GST_VALUE_UNORDERED">
-      <return-value transfer-ownership="none">
-        <type name="int" c:type="gint"/>
-      </return-value>
-      <parameters>
-        <parameter name="value1" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-        <parameter name="value2" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-      </parameters>
-    </callback>
-    <callback name="ValueDeserializeFunc"
-              c:type="GstValueDeserializeFunc"
-              doc="Used by gst_value_deserialize() to parse a non-binary form into the #GValue.">
-      <return-value transfer-ownership="none">
-        <type name="boolean" c:type="gboolean"/>
-      </return-value>
-      <parameters>
-        <parameter name="dest" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-        <parameter name="s" transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </parameter>
-      </parameters>
-    </callback>
-    <callback name="ValueIntersectFunc"
-              c:type="GstValueIntersectFunc"
-              doc="Used by gst_value_intersect() to perform intersection for a specific #GValue
-type. If the intersection is non-empty, the result is
-placed in @dest and TRUE is returned.  If the intersection is
-empty, @dest is unmodified and FALSE is returned.
-Register a new implementation with gst_value_register_intersect_func().">
-      <return-value transfer-ownership="none">
-        <type name="boolean" c:type="gboolean"/>
-      </return-value>
-      <parameters>
-        <parameter name="dest" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-        <parameter name="value1" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-        <parameter name="value2" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-      </parameters>
-    </callback>
-    <callback name="ValueSerializeFunc"
-              c:type="GstValueSerializeFunc"
-              doc="Used by gst_value_serialize() to obtain a non-binary form of the #GValue.">
-      <return-value transfer-ownership="full">
-        <type name="utf8" c:type="gchar*"/>
-      </return-value>
-      <parameters>
-        <parameter name="value1" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-      </parameters>
-    </callback>
-    <callback name="ValueSubtractFunc"
-              c:type="GstValueSubtractFunc"
-              doc="Used by gst_value_subtract() to perform subtraction for a specific #GValue
-type. Register a new implementation with gst_value_register_subtract_func().">
-      <return-value transfer-ownership="none">
-        <type name="boolean" c:type="gboolean"/>
-      </return-value>
-      <parameters>
-        <parameter name="dest" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-        <parameter name="minuend" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-        <parameter name="subtrahend" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-      </parameters>
-    </callback>
-    <record name="ValueTable"
-            c:type="GstValueTable"
-            doc="VTable for the #GValue @type.">
-      <field name="type" writable="1">
-        <type name="GType" c:type="GType"/>
-      </field>
-      <field name="compare" writable="1">
-        <type name="ValueCompareFunc" c:type="GstValueCompareFunc"/>
-      </field>
-      <field name="serialize" writable="1">
-        <type name="ValueSerializeFunc" c:type="GstValueSerializeFunc"/>
-      </field>
-      <field name="deserialize" writable="1">
-        <type name="ValueDeserializeFunc" c:type="GstValueDeserializeFunc"/>
-      </field>
-      <field name="_gst_reserved" writable="1">
-        <array zero-terminated="0" c:type="void*" fixed-size="4">
-          <type name="any"/>
-        </array>
-      </field>
-    </record>
-    <callback name="ValueUnionFunc"
-              c:type="GstValueUnionFunc"
-              doc="Used by gst_value_union() to perform unification for a specific #GValue
-type. Register a new implementation with gst_value_register_union_func().">
-      <return-value transfer-ownership="none">
-        <type name="boolean" c:type="gboolean"/>
-      </return-value>
-      <parameters>
-        <parameter name="dest" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-        <parameter name="value1" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-        <parameter name="value2" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-      </parameters>
-    </callback>
-    <class name="XML"
-           c:type="GstXML"
-           doc="XML parser object"
-           parent="Object"
-           glib:type-name="GstXML"
-           glib:get-type="gst_xml_get_type"
-           glib:type-struct="XMLClass">
-      <constructor name="new"
-                   c:identifier="gst_xml_new"
-                   doc="Create a new GstXML parser object.">
-        <return-value transfer-ownership="full">
-          <type name="XML" c:type="GstXML*"/>
-        </return-value>
-      </constructor>
-      <function name="write"
-                c:identifier="gst_xml_write"
-                doc="Converts the given element into an XML presentation.">
-        <return-value transfer-ownership="full">
-          <type name="libxml2.DocPtr" c:type="xmlDocPtr"/>
-        </return-value>
-        <parameters>
-          <parameter name="element" transfer-ownership="none">
-            <type name="Element" c:type="GstElement*"/>
-          </parameter>
-        </parameters>
-      </function>
-      <function name="make_element"
-                c:identifier="gst_xml_make_element"
-                doc="Load the element from the XML description">
-        <return-value transfer-ownership="full">
-          <type name="Element" c:type="GstElement*"/>
-        </return-value>
-        <parameters>
-          <parameter name="cur" transfer-ownership="none">
-            <type name="libxml2.NodePtr" c:type="xmlNodePtr"/>
-          </parameter>
-          <parameter name="parent" transfer-ownership="none">
-            <type name="Object" c:type="GstObject*"/>
-          </parameter>
-        </parameters>
-      </function>
-      <virtual-method name="object_saved">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="object" transfer-ownership="none">
-            <type name="Object" c:type="GstObject*"/>
-          </parameter>
-          <parameter name="self" transfer-ownership="none">
-            <type name="libxml2.NodePtr" c:type="xmlNodePtr"/>
-          </parameter>
-        </parameters>
-      </virtual-method>
-      <method name="parse_doc"
-              c:identifier="gst_xml_parse_doc"
-              doc="Fills the GstXML object with the elements from the
-xmlDocPtr.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="doc" transfer-ownership="none">
-            <type name="libxml2.DocPtr" c:type="xmlDocPtr"/>
-          </parameter>
-          <parameter name="root" transfer-ownership="none">
-            <array c:type="guchar*">
-              <type name="uint8"/>
-            </array>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="parse_file"
-              c:identifier="gst_xml_parse_file"
-              doc="Fills the GstXML object with the corresponding elements from
-the XML file fname. Optionally it will only build the element from
-the element node root (if it is not NULL). This feature is useful
-if you only want to build a specific element from an XML file
-but not the pipeline it is embedded in.
-Pass &quot;-&quot; as fname to read from stdin. You can also pass a URI
-of any format that libxml supports, including http.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="fname" transfer-ownership="none">
-            <array c:type="guchar*">
-              <type name="uint8"/>
-            </array>
-          </parameter>
-          <parameter name="root" transfer-ownership="none">
-            <array c:type="guchar*">
-              <type name="uint8"/>
-            </array>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="parse_memory"
-              c:identifier="gst_xml_parse_memory"
-              doc="Fills the GstXML object with the corresponding elements from
-an in memory XML buffer.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="buffer" transfer-ownership="none">
-            <array c:type="guchar*">
-              <type name="uint8"/>
-            </array>
-          </parameter>
-          <parameter name="size" transfer-ownership="none">
-            <type name="uint" c:type="guint"/>
-          </parameter>
-          <parameter name="root" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_element"
-              c:identifier="gst_xml_get_element"
-              doc="This function is used to get a pointer to the GstElement corresponding
-to name in the pipeline description. You would use this if you have
-to do anything to the element after loading.">
-        <return-value transfer-ownership="full">
-          <type name="Element" c:type="GstElement*"/>
-        </return-value>
-        <parameters>
-          <parameter name="name" transfer-ownership="none">
-            <array c:type="guchar*">
-              <type name="uint8"/>
-            </array>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_topelements"
-              c:identifier="gst_xml_get_topelements"
-              doc="Retrieve a list of toplevel elements.
-of the list and must not free or modify the list. The caller also does not
-own a reference to any of the elements in the list and should obtain its own
-reference using gst_object_ref() if necessary.">
-        <return-value transfer-ownership="full">
-          <type name="GLib.List" c:type="GList*"/>
-        </return-value>
-      </method>
-      <field name="object">
-        <type name="Object" c:type="GstObject"/>
-      </field>
-      <field name="topelements">
-        <type name="GLib.List" c:type="GList*"/>
-      </field>
-      <field name="ns">
-        <type name="libxml2.NsPtr" c:type="xmlNsPtr"/>
-      </field>
-      <field name="_gst_reserved">
-        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
-          <type name="any"/>
-        </array>
-      </field>
-      <glib:signal name="object-loaded"
-                   doc="Signals that a new object has been deserialized.">
-        <return-value transfer-ownership="full">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="object" transfer-ownership="none">
-            <type name="Object" c:type="GstObject"/>
-          </parameter>
-          <parameter name="xml_node" transfer-ownership="none">
-            <type name="any" c:type="gpointer"/>
-          </parameter>
-        </parameters>
-      </glib:signal>
-    </class>
-    <record name="XMLClass"
-            c:type="GstXMLClass"
-            glib:is-gtype-struct-for="XML">
-      <field name="parent_class">
-        <type name="ObjectClass" c:type="GstObjectClass"/>
-      </field>
-      <field name="object_loaded">
-        <callback name="object_loaded" c:type="object_loaded">
-          <return-value transfer-ownership="none">
-            <type name="none" c:type="void"/>
-          </return-value>
-          <parameters>
-            <parameter name="xml" transfer-ownership="none">
-              <type name="XML" c:type="GstXML*"/>
-            </parameter>
-            <parameter name="object" transfer-ownership="none">
-              <type name="Object" c:type="GstObject*"/>
-            </parameter>
-            <parameter name="self" transfer-ownership="none">
-              <type name="libxml2.NodePtr" c:type="xmlNodePtr"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="object_saved">
-        <callback name="object_saved" c:type="object_saved">
-          <return-value transfer-ownership="none">
-            <type name="none" c:type="void"/>
-          </return-value>
-          <parameters>
-            <parameter name="xml" transfer-ownership="none">
-              <type name="XML" c:type="GstXML*"/>
-            </parameter>
-            <parameter name="object" transfer-ownership="none">
-              <type name="Object" c:type="GstObject*"/>
-            </parameter>
-            <parameter name="self" transfer-ownership="none">
-              <type name="libxml2.NodePtr" c:type="xmlNodePtr"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="_gst_reserved">
-        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
-          <type name="any"/>
-        </array>
-      </field>
-    </record>
-    <function name="alloc_trace_available"
-              c:identifier="gst_alloc_trace_available"
-              doc="Check if alloc tracing was compiled into the core
-tracing enabled.">
-      <return-value transfer-ownership="none">
-        <type name="boolean" c:type="gboolean"/>
-      </return-value>
-    </function>
-    <function name="alloc_trace_get"
-              c:identifier="gst_alloc_trace_get"
-              doc="Get the named alloc trace object.
-no alloc tracer was registered with that name.">
-      <return-value transfer-ownership="full">
-        <type name="AllocTrace" c:type="GstAllocTrace*"/>
-      </return-value>
-      <parameters>
-        <parameter name="name" transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="alloc_trace_list"
-              c:identifier="gst_alloc_trace_list"
-              doc="Get a list of all registered alloc trace objects.">
-      <return-value transfer-ownership="none">
-        <type name="GLib.List" c:type="GList*"/>
-      </return-value>
-    </function>
-    <function name="alloc_trace_live_all"
-              c:identifier="gst_alloc_trace_live_all"
-              doc="Get the total number of live registered alloc trace objects.">
-      <return-value transfer-ownership="none">
-        <type name="int" c:type="int"/>
-      </return-value>
-    </function>
-    <function name="alloc_trace_print_all"
-              c:identifier="gst_alloc_trace_print_all"
-              doc="Print the status of all registered alloc trace objects.">
-      <return-value transfer-ownership="none">
-        <type name="none" c:type="void"/>
-      </return-value>
-    </function>
-    <function name="alloc_trace_print_live"
-              c:identifier="gst_alloc_trace_print_live"
-              doc="Print the status of all registered alloc trace objects, ignoring those
-without live objects.">
-      <return-value transfer-ownership="none">
-        <type name="none" c:type="void"/>
-      </return-value>
-    </function>
-    <function name="alloc_trace_set_flags_all"
-              c:identifier="gst_alloc_trace_set_flags_all"
-              doc="Enable the specified options on all registered alloc trace
-objects.">
-      <return-value transfer-ownership="none">
-        <type name="none" c:type="void"/>
-      </return-value>
-      <parameters>
-        <parameter name="flags" transfer-ownership="none">
-          <type name="AllocTraceFlags" c:type="GstAllocTraceFlags"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="atomic_int_set"
-              c:identifier="gst_atomic_int_set"
-              doc="Unconditionally sets the atomic integer to @value."
-              deprecated="Use g_atomic_int_set().">
-      <return-value transfer-ownership="none">
-        <type name="none" c:type="void"/>
-      </return-value>
-      <parameters>
-        <parameter name="atomic_int" direction="out" transfer-ownership="full">
-          <type name="int" c:type="gint*"/>
-        </parameter>
-        <parameter name="value" transfer-ownership="none">
-          <type name="int" c:type="gint"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="buffer_try_new_and_alloc"
-              c:identifier="gst_buffer_try_new_and_alloc"
-              doc="Tries to create a newly allocated buffer with data of the given size. If
-the requested amount of memory can&apos;t be allocated, NULL will be returned.
-The buffer memory is not cleared.
-Note that when @size == 0, the buffer data pointer will be NULL.
-MT safe."
-              version="0.10.13">
-      <return-value transfer-ownership="full">
-        <type name="Buffer" c:type="GstBuffer*"/>
-      </return-value>
-      <parameters>
-        <parameter name="size" transfer-ownership="none">
-          <type name="uint" c:type="guint"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="caps_from_string"
-              c:identifier="gst_caps_from_string"
-              doc="Converts @caps from a string representation.">
-      <return-value transfer-ownership="full">
-        <type name="Caps" c:type="GstCaps*"/>
-      </return-value>
-      <parameters>
-        <parameter name="string" transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="caps_load_thyself"
-              c:identifier="gst_caps_load_thyself"
-              doc="Creates a #GstCaps from its XML serialization.">
-      <return-value transfer-ownership="full">
-        <type name="Caps" c:type="GstCaps*"/>
-      </return-value>
-      <parameters>
-        <parameter name="parent" transfer-ownership="none">
-          <type name="libxml2.NodePtr" c:type="xmlNodePtr"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="child_proxy_child_added"
-              c:identifier="gst_child_proxy_child_added"
-              doc="Emits the &quot;child-added&quot; signal.">
-      <return-value transfer-ownership="none">
-        <type name="none" c:type="void"/>
-      </return-value>
-      <parameters>
-        <parameter name="object" transfer-ownership="none">
-          <type name="Object" c:type="GstObject*"/>
-        </parameter>
-        <parameter name="child" transfer-ownership="none">
-          <type name="Object" c:type="GstObject*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="child_proxy_child_removed"
-              c:identifier="gst_child_proxy_child_removed"
-              doc="Emits the &quot;child-removed&quot; signal.">
-      <return-value transfer-ownership="none">
-        <type name="none" c:type="void"/>
-      </return-value>
-      <parameters>
-        <parameter name="object" transfer-ownership="none">
-          <type name="Object" c:type="GstObject*"/>
-        </parameter>
-        <parameter name="child" transfer-ownership="none">
-          <type name="Object" c:type="GstObject*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="child_proxy_get"
-              c:identifier="gst_child_proxy_get"
-              doc="Gets properties of the parent object and its children.">
-      <return-value transfer-ownership="none">
-        <type name="none" c:type="void"/>
-      </return-value>
-      <parameters>
-        <parameter name="object" transfer-ownership="none">
-          <type name="Object" c:type="GstObject*"/>
-        </parameter>
-        <parameter name="first_property_name" transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </parameter>
-        <parameter transfer-ownership="none">
-          <varargs>
-          </varargs>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="child_proxy_get_property"
-              c:identifier="gst_child_proxy_get_property"
-              doc="Gets a single property using the GstChildProxy mechanism.
-You are responsible for for freeing it by calling g_value_unset()">
-      <return-value transfer-ownership="none">
-        <type name="none" c:type="void"/>
-      </return-value>
-      <parameters>
-        <parameter name="object" transfer-ownership="none">
-          <type name="Object" c:type="GstObject*"/>
-        </parameter>
-        <parameter name="name" transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </parameter>
-        <parameter name="value" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="child_proxy_lookup"
-              c:identifier="gst_child_proxy_lookup"
-              doc="Looks up which object and #GParamSpec would be effected by the given @name.
-case the values for @pspec and @target are not modified. Unref @target after
-usage.
-MT safe.">
-      <return-value transfer-ownership="none">
-        <type name="boolean" c:type="gboolean"/>
-      </return-value>
-      <parameters>
-        <parameter name="object" transfer-ownership="none">
-          <type name="Object" c:type="GstObject*"/>
-        </parameter>
-        <parameter name="name" transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </parameter>
-        <parameter name="target" transfer-ownership="none">
-          <type name="Object" c:type="GstObject**"/>
-        </parameter>
-        <parameter name="pspec" transfer-ownership="none">
-          <type name="GObject.ParamSpec" c:type="GParamSpec**"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="child_proxy_set"
-              c:identifier="gst_child_proxy_set"
-              doc="Sets properties of the parent object and its children.">
-      <return-value transfer-ownership="none">
-        <type name="none" c:type="void"/>
-      </return-value>
-      <parameters>
-        <parameter name="object" transfer-ownership="none">
-          <type name="Object" c:type="GstObject*"/>
-        </parameter>
-        <parameter name="first_property_name" transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </parameter>
-        <parameter transfer-ownership="none">
-          <varargs>
-          </varargs>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="child_proxy_set_property"
-              c:identifier="gst_child_proxy_set_property"
-              doc="Sets a single property using the GstChildProxy mechanism.">
-      <return-value transfer-ownership="none">
-        <type name="none" c:type="void"/>
-      </return-value>
-      <parameters>
-        <parameter name="object" transfer-ownership="none">
-          <type name="Object" c:type="GstObject*"/>
-        </parameter>
-        <parameter name="name" transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </parameter>
-        <parameter name="value" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="class_signal_connect"
-              c:identifier="gst_class_signal_connect">
-      <return-value transfer-ownership="none">
-        <type name="uint" c:type="guint"/>
-      </return-value>
-      <parameters>
-        <parameter name="klass" transfer-ownership="none">
-          <type name="ObjectClass" c:type="GstObjectClass*"/>
-        </parameter>
-        <parameter name="name" transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </parameter>
-        <parameter name="func" transfer-ownership="none">
-          <type name="any" c:type="gpointer"/>
-        </parameter>
-        <parameter name="func_data" transfer-ownership="none">
-          <type name="any" c:type="gpointer"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="class_signal_emit_by_name"
-              c:identifier="gst_class_signal_emit_by_name"
-              doc="emits the named class signal.">
-      <return-value transfer-ownership="none">
-        <type name="none" c:type="void"/>
-      </return-value>
-      <parameters>
-        <parameter name="object" transfer-ownership="none">
-          <type name="Object" c:type="GstObject*"/>
-        </parameter>
-        <parameter name="name" transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </parameter>
-        <parameter name="self" transfer-ownership="none">
-          <type name="libxml2.NodePtr" c:type="xmlNodePtr"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="debug_add_log_function"
-              c:identifier="gst_debug_add_log_function"
-              doc="Adds the logging function to the list of logging functions.
-Be sure to use G_GNUC_NO_INSTRUMENT on that function, it is needed.">
-      <return-value transfer-ownership="none">
-        <type name="none" c:type="void"/>
-      </return-value>
-      <parameters>
-        <parameter name="func"
-                   transfer-ownership="none"
-                   scope="call"
-                   closure="1">
-          <type name="LogFunction" c:type="GstLogFunction"/>
-        </parameter>
-        <parameter name="data" transfer-ownership="none">
-          <type name="any" c:type="gpointer"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="debug_construct_term_color"
-              c:identifier="gst_debug_construct_term_color"
-              doc="Constructs a string that can be used for getting the desired color in color
-terminals.
-You need to free the string after use.">
-      <return-value transfer-ownership="full">
-        <type name="utf8" c:type="gchar*"/>
-      </return-value>
-      <parameters>
-        <parameter name="colorinfo" transfer-ownership="none">
-          <type name="uint" c:type="guint"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="debug_construct_win_color"
-              c:identifier="gst_debug_construct_win_color"
-              doc="Constructs an integer that can be used for getting the desired color in
-windows&apos; terminals (cmd.exe). As there is no mean to underline, we simply
-ignore this attribute.
-This function returns 0 on non-windows machines."
-              version="0.10.23">
-      <return-value transfer-ownership="none">
-        <type name="int" c:type="gint"/>
-      </return-value>
-      <parameters>
-        <parameter name="colorinfo" transfer-ownership="none">
-          <type name="uint" c:type="guint"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="debug_get_all_categories"
-              c:identifier="gst_debug_get_all_categories"
-              doc="Returns a snapshot of a all categories that are currently in use . This list
-may change anytime.
-The caller has to free the list after use.">
-      <return-value transfer-ownership="full">
-        <type name="GLib.SList" c:type="GSList*"/>
-      </return-value>
-    </function>
-    <function name="debug_get_default_threshold"
-              c:identifier="gst_debug_get_default_threshold"
-              doc="Returns the default threshold that is used for new categories.">
-      <return-value transfer-ownership="full">
-        <type name="DebugLevel" c:type="GstDebugLevel"/>
-      </return-value>
-    </function>
-    <function name="debug_is_active"
-              c:identifier="gst_debug_is_active"
-              doc="Checks if debugging output is activated.">
-      <return-value transfer-ownership="none">
-        <type name="boolean" c:type="gboolean"/>
-      </return-value>
-    </function>
-    <function name="debug_is_colored"
-              c:identifier="gst_debug_is_colored"
-              doc="Checks if the debugging output should be colored.">
-      <return-value transfer-ownership="none">
-        <type name="boolean" c:type="gboolean"/>
-      </return-value>
-    </function>
-    <function name="debug_level_get_name"
-              c:identifier="gst_debug_level_get_name"
-              doc="Get the string representation of a debugging level">
-      <return-value transfer-ownership="none">
-        <type name="utf8" c:type="gchar*"/>
-      </return-value>
-      <parameters>
-        <parameter name="level" transfer-ownership="none">
-          <type name="DebugLevel" c:type="GstDebugLevel"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="debug_log"
-              c:identifier="gst_debug_log"
-              doc="Logs the given message using the currently registered debugging handlers.">
-      <return-value transfer-ownership="none">
-        <type name="none" c:type="void"/>
-      </return-value>
-      <parameters>
-        <parameter name="category" transfer-ownership="none">
-          <type name="DebugCategory" c:type="GstDebugCategory*"/>
-        </parameter>
-        <parameter name="level" transfer-ownership="none">
-          <type name="DebugLevel" c:type="GstDebugLevel"/>
-        </parameter>
-        <parameter name="file" transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </parameter>
-        <parameter name="function" transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </parameter>
-        <parameter name="line" transfer-ownership="none">
-          <type name="int" c:type="gint"/>
-        </parameter>
-        <parameter name="object" transfer-ownership="none">
-          <type name="GObject.Object" c:type="GObject*"/>
-        </parameter>
-        <parameter name="format" transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </parameter>
-        <parameter transfer-ownership="none">
-          <varargs>
-          </varargs>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="debug_log_default"
-              c:identifier="gst_debug_log_default"
-              doc="The default logging handler used by GStreamer. Logging functions get called
-whenever a macro like GST_DEBUG or similar is used. This function outputs the
-message and additional info using the glib error handler.
-You can add other handlers by using gst_debug_add_log_function().
-And you can remove this handler by calling
-gst_debug_remove_log_function(gst_debug_log_default);">
-      <return-value transfer-ownership="none">
-        <type name="none" c:type="void"/>
-      </return-value>
-      <parameters>
-        <parameter name="category" transfer-ownership="none">
-          <type name="DebugCategory" c:type="GstDebugCategory*"/>
-        </parameter>
-        <parameter name="level" transfer-ownership="none">
-          <type name="DebugLevel" c:type="GstDebugLevel"/>
-        </parameter>
-        <parameter name="file" transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </parameter>
-        <parameter name="function" transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </parameter>
-        <parameter name="line" transfer-ownership="none">
-          <type name="int" c:type="gint"/>
-        </parameter>
-        <parameter name="object" transfer-ownership="none">
-          <type name="GObject.Object" c:type="GObject*"/>
-        </parameter>
-        <parameter name="message" transfer-ownership="none">
-          <type name="DebugMessage" c:type="GstDebugMessage*"/>
-        </parameter>
-        <parameter name="unused" transfer-ownership="none">
-          <type name="any" c:type="gpointer"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="debug_print_stack_trace"
-              c:identifier="gst_debug_print_stack_trace"
-              doc="If GST_ENABLE_FUNC_INSTRUMENTATION is defined a stacktrace is available for
-gstreamer code, which can be printed with this function.">
-      <return-value transfer-ownership="none">
-        <type name="none" c:type="void"/>
-      </return-value>
-    </function>
-    <function name="debug_remove_log_function"
-              c:identifier="gst_debug_remove_log_function"
-              doc="Removes all registered instances of the given logging functions.">
-      <return-value transfer-ownership="none">
-        <type name="uint" c:type="guint"/>
-      </return-value>
-      <parameters>
-        <parameter name="func" transfer-ownership="none" scope="call">
-          <type name="LogFunction" c:type="GstLogFunction"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="debug_remove_log_function_by_data"
-              c:identifier="gst_debug_remove_log_function_by_data"
-              doc="Removes all registered instances of log functions with the given user data.">
-      <return-value transfer-ownership="none">
-        <type name="uint" c:type="guint"/>
-      </return-value>
-      <parameters>
-        <parameter name="data" transfer-ownership="none">
-          <type name="any" c:type="gpointer"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="debug_set_active"
-              c:identifier="gst_debug_set_active"
-              doc="If activated, debugging messages are sent to the debugging
-handlers.
-It makes sense to deactivate it for speed issues.
-&lt;note&gt;&lt;para&gt;This function is not threadsafe. It makes sense to only call it
-during initialization.&lt;/para&gt;&lt;/note&gt;">
-      <return-value transfer-ownership="none">
-        <type name="none" c:type="void"/>
-      </return-value>
-      <parameters>
-        <parameter name="active" transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="debug_set_colored"
-              c:identifier="gst_debug_set_colored"
-              doc="Sets or unsets the use of coloured debugging output.">
-      <return-value transfer-ownership="none">
-        <type name="none" c:type="void"/>
-      </return-value>
-      <parameters>
-        <parameter name="colored" transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="debug_set_default_threshold"
-              c:identifier="gst_debug_set_default_threshold"
-              doc="Sets the default threshold to the given level and updates all categories to
-use this threshold.">
-      <return-value transfer-ownership="none">
-        <type name="none" c:type="void"/>
-      </return-value>
-      <parameters>
-        <parameter name="level" transfer-ownership="none">
-          <type name="DebugLevel" c:type="GstDebugLevel"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="debug_set_threshold_for_name"
-              c:identifier="gst_debug_set_threshold_for_name"
-              doc="Sets all categories which match the given glob style pattern to the given
-level.">
-      <return-value transfer-ownership="none">
-        <type name="none" c:type="void"/>
-      </return-value>
-      <parameters>
-        <parameter name="name" transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </parameter>
-        <parameter name="level" transfer-ownership="none">
-          <type name="DebugLevel" c:type="GstDebugLevel"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="debug_unset_threshold_for_name"
-              c:identifier="gst_debug_unset_threshold_for_name"
-              doc="Resets all categories with the given name back to the default level.">
-      <return-value transfer-ownership="none">
-        <type name="none" c:type="void"/>
-      </return-value>
-      <parameters>
-        <parameter name="name" transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="default_registry_check_feature_version"
-              c:identifier="gst_default_registry_check_feature_version"
-              doc="Checks whether a plugin feature by the given name exists in the
-default registry and whether its version is at least the
-version required.
-the same as the required version or newer, and #FALSE otherwise.">
-      <return-value transfer-ownership="none">
-        <type name="boolean" c:type="gboolean"/>
-      </return-value>
-      <parameters>
-        <parameter name="feature_name" transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </parameter>
-        <parameter name="min_major" transfer-ownership="none">
-          <type name="uint" c:type="guint"/>
-        </parameter>
-        <parameter name="min_minor" transfer-ownership="none">
-          <type name="uint" c:type="guint"/>
-        </parameter>
-        <parameter name="min_micro" transfer-ownership="none">
-          <type name="uint" c:type="guint"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="deinit"
-              c:identifier="gst_deinit"
-              doc="Clean up any resources created by GStreamer in gst_init().
-It is normally not needed to call this function in a normal application
-as the resources will automatically be freed when the program terminates.
-This function is therefore mostly used by testsuites and other memory
-profiling tools.
-After this call GStreamer (including this method) should not be used anymore.">
-      <return-value transfer-ownership="none">
-        <type name="none" c:type="void"/>
-      </return-value>
-    </function>
-    <function name="error_get_message"
-              c:identifier="gst_error_get_message"
-              doc="Get a string describing the error message in the current locale.
-current locale.">
-      <return-value transfer-ownership="full">
-        <type name="utf8" c:type="gchar*"/>
-      </return-value>
-      <parameters>
-        <parameter name="domain" transfer-ownership="none">
-          <type name="GLib.Quark" c:type="GQuark"/>
-        </parameter>
-        <parameter name="code" transfer-ownership="none">
-          <type name="int" c:type="gint"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="event_type_get_flags"
-              c:identifier="gst_event_type_get_flags"
-              doc="Gets the #GstEventTypeFlags associated with @type.">
-      <return-value transfer-ownership="full">
-        <type name="EventTypeFlags" c:type="GstEventTypeFlags"/>
-      </return-value>
-      <parameters>
-        <parameter name="type" transfer-ownership="none">
-          <type name="EventType" c:type="GstEventType"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="event_type_get_name"
-              c:identifier="gst_event_type_get_name"
-              doc="Get a printable name for the given event type. Do not modify or free.">
-      <return-value transfer-ownership="none">
-        <type name="utf8" c:type="gchar*"/>
-      </return-value>
-      <parameters>
-        <parameter name="type" transfer-ownership="none">
-          <type name="EventType" c:type="GstEventType"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="event_type_to_quark"
-              c:identifier="gst_event_type_to_quark"
-              doc="Get the unique quark for the given event type.">
-      <return-value transfer-ownership="full">
-        <type name="GLib.Quark" c:type="GQuark"/>
-      </return-value>
-      <parameters>
-        <parameter name="type" transfer-ownership="none">
-          <type name="EventType" c:type="GstEventType"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="filter_run"
-              c:identifier="gst_filter_run"
-              doc="Iterates over the elements in @list, calling @func with the
-list item data for each item.  If @func returns TRUE, @data is
-prepended to the list of results returned.  If @first is true,
-the search is halted after the first result is found.
-Since gst_filter_run() knows nothing about the type of @data, no
-reference will be taken (if @data refers to an object) and no copy of
-results.
-(the data contained in the list is a flat copy and does need to be
-unreferenced or freed).">
-      <return-value transfer-ownership="full" doc="when no longer needed">
-        <type name="GLib.List" c:type="GList*"/>
-      </return-value>
-      <parameters>
-        <parameter name="list" transfer-ownership="none">
-          <type name="GLib.List" c:type="GList*"/>
-        </parameter>
-        <parameter name="func" transfer-ownership="none" scope="call">
-          <type name="FilterFunc" c:type="GstFilterFunc"/>
-        </parameter>
-        <parameter name="first" transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </parameter>
-        <parameter name="user_data" transfer-ownership="none">
-          <type name="any" c:type="gpointer"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="flow_get_name"
-              c:identifier="gst_flow_get_name"
-              doc="Gets a string representing the given flow return.">
-      <return-value transfer-ownership="none">
-        <type name="utf8" c:type="gchar*"/>
-      </return-value>
-      <parameters>
-        <parameter name="ret" transfer-ownership="none">
-          <type name="FlowReturn" c:type="GstFlowReturn"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="flow_to_quark"
-              c:identifier="gst_flow_to_quark"
-              doc="Get the unique quark for the given GstFlowReturn.
-invalid return was specified.">
-      <return-value transfer-ownership="full">
-        <type name="GLib.Quark" c:type="GQuark"/>
-      </return-value>
-      <parameters>
-        <parameter name="ret" transfer-ownership="none">
-          <type name="FlowReturn" c:type="GstFlowReturn"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="format_get_by_nick"
-              c:identifier="gst_format_get_by_nick"
-              doc="Return the format registered with the given nick.
-if the format was not registered.">
-      <return-value transfer-ownership="full">
-        <type name="Format" c:type="GstFormat"/>
-      </return-value>
-      <parameters>
-        <parameter name="nick" transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="format_get_details"
-              c:identifier="gst_format_get_details"
-              doc="Get details about the given format.
-MT safe.">
-      <return-value transfer-ownership="none">
-        <type name="FormatDefinition" c:type="GstFormatDefinition*"/>
-      </return-value>
-      <parameters>
-        <parameter name="format" transfer-ownership="none">
-          <type name="Format" c:type="GstFormat"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="format_get_name"
-              c:identifier="gst_format_get_name"
-              doc="Get a printable name for the given format. Do not modify or free.
-the format is unknown.">
-      <return-value transfer-ownership="none">
-        <type name="utf8" c:type="gchar*"/>
-      </return-value>
-      <parameters>
-        <parameter name="format" transfer-ownership="none">
-          <type name="Format" c:type="GstFormat"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="format_iterate_definitions"
-              c:identifier="gst_format_iterate_definitions"
-              doc="Iterate all the registered formats. The format definition is read
-only.">
-      <return-value transfer-ownership="full">
-        <type name="Iterator" c:type="GstIterator*"/>
-      </return-value>
-    </function>
-    <function name="format_register"
-              c:identifier="gst_format_register"
-              doc="Create a new GstFormat based on the nick or return an
-already registered format with that nick.
-with the same nick.
-MT safe.">
-      <return-value transfer-ownership="full">
-        <type name="Format" c:type="GstFormat"/>
-      </return-value>
-      <parameters>
-        <parameter name="nick" transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </parameter>
-        <parameter name="description" transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="format_to_quark"
-              c:identifier="gst_format_to_quark"
-              doc="Get the unique quark for the given format.
-is unknown.">
-      <return-value transfer-ownership="full">
-        <type name="GLib.Quark" c:type="GQuark"/>
-      </return-value>
-      <parameters>
-        <parameter name="format" transfer-ownership="none">
-          <type name="Format" c:type="GstFormat"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="formats_contains"
-              c:identifier="gst_formats_contains"
-              doc="See if the given format is inside the format array.">
-      <return-value transfer-ownership="none">
-        <type name="boolean" c:type="gboolean"/>
-      </return-value>
-      <parameters>
-        <parameter name="formats" transfer-ownership="none">
-          <type name="Format" c:type="GstFormat*"/>
-        </parameter>
-        <parameter name="format" transfer-ownership="none">
-          <type name="Format" c:type="GstFormat"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="implements_interface_cast"
-              c:identifier="gst_implements_interface_cast"
-              doc="cast a given object to an interface type, and check whether this
-interface is supported for this specific instance.">
-      <return-value transfer-ownership="none">
-        <type name="any" c:type="gpointer"/>
-      </return-value>
-      <parameters>
-        <parameter name="from"
-                   transfer-ownership="none"
-                   doc="from which to cast to the interface">
-          <type name="any" c:type="gpointer"/>
-        </parameter>
-        <parameter name="type" transfer-ownership="none">
-          <type name="GType" c:type="GType"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="implements_interface_check"
-              c:identifier="gst_implements_interface_check"
-              doc="check a given object for an interface implementation, and check
-whether this interface is supported for this specific instance.">
-      <return-value transfer-ownership="none">
-        <type name="boolean" c:type="gboolean"/>
-      </return-value>
-      <parameters>
-        <parameter name="from"
-                   transfer-ownership="none"
-                   doc="from which to check from for the interface">
-          <type name="any" c:type="gpointer"/>
-        </parameter>
-        <parameter name="type" transfer-ownership="none">
-          <type name="GType" c:type="GType"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="init"
-              c:identifier="gst_init"
-              doc="Initializes the GStreamer library, setting up internal path lists,
-registering built-in elements, and loading standard plugins.
-Unless the plugin registry is disabled at compile time, the registry will be
-loaded. By default this will also check if the registry cache needs to be
-updated and rescan all plugins if needed. See gst_update_registry() for
-details and section
-&lt;link linkend=&quot;gst-running&quot;&gt;Running GStreamer Applications&lt;/link&gt;
-for how to disable automatic registry updates.
-This function should be called before calling any other GLib functions. If
-this is not an option, your program must initialise the GLib thread system
-using g_thread_init() before any other GLib functions are called.
-&lt;note&gt;&lt;para&gt;
-This function will terminate your program if it was unable to initialize
-GStreamer for some reason.  If you want your program to fall back,
-use gst_init_check() instead.
-&lt;/para&gt;&lt;/note&gt;
-functions in other glib-style libraries, such as gtk_init().  In
-particular, unknown command line options cause this function to
-abort program execution.">
-      <return-value transfer-ownership="none">
-        <type name="none" c:type="void"/>
-      </return-value>
-      <parameters>
-        <parameter name="argc"
-                   direction="inout"
-                   transfer-ownership="full"
-                   doc="pointer to application&apos;s argc">
-          <type name="int" c:type="int*"/>
-        </parameter>
-        <parameter name="argv"
-                   direction="inout"
-                   transfer-ownership="full"
-                   allow-none="1"
-                   doc="pointer to application&apos;s argv">
-          <array length="0" c:type="char**">
-            <type name="utf8"/>
-          </array>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="init_check"
-              c:identifier="gst_init_check"
-              doc="Initializes the GStreamer library, setting up internal path lists,
-registering built-in elements, and loading standard plugins.
-This function will return %FALSE if GStreamer could not be initialized
-for some reason.  If you want your program to fail fatally,
-use gst_init() instead.
-This function should be called before calling any other GLib functions. If
-this is not an option, your program must initialise the GLib thread system
-using g_thread_init() before any other GLib functions are called."
-              throws="1">
-      <return-value transfer-ownership="none">
-        <type name="boolean" c:type="gboolean"/>
-      </return-value>
-      <parameters>
-        <parameter name="argc"
-                   direction="inout"
-                   transfer-ownership="full"
-                   doc="pointer to application&apos;s argc">
-          <type name="int" c:type="int*"/>
-        </parameter>
-        <parameter name="argv"
-                   direction="inout"
-                   transfer-ownership="full"
-                   allow-none="1"
-                   doc="pointer to application&apos;s argv">
-          <array length="0" c:type="char**">
-            <type name="utf8"/>
-          </array>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="init_get_option_group"
-              c:identifier="gst_init_get_option_group"
-              doc="Returns a #GOptionGroup with GStreamer&apos;s argument specifications. The
-group is set up to use standard GOption callbacks, so when using this
-group in combination with GOption parsing methods, all argument parsing
-and initialization is automated.
-This function is useful if you want to integrate GStreamer with other
-libraries that use GOption (see g_option_context_add_group() ).
-If you use this function, you should make sure you initialise the GLib
-threading system as one of the very first things in your program
-(see the example at the beginning of this section).">
-      <return-value transfer-ownership="full">
-        <type name="GLib.OptionGroup" c:type="GOptionGroup*"/>
-      </return-value>
-    </function>
-    <function name="is_tag_list"
-              c:identifier="gst_is_tag_list"
-              doc="Checks if the given pointer is a taglist.">
-      <return-value transfer-ownership="none">
-        <type name="boolean" c:type="gboolean"/>
-      </return-value>
-      <parameters>
-        <parameter name="p" transfer-ownership="none">
-          <type name="any" c:type="gconstpointer"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="message_type_get_name"
-              c:identifier="gst_message_type_get_name"
-              doc="Get a printable name for the given message type. Do not modify or free.">
-      <return-value transfer-ownership="none">
-        <type name="utf8" c:type="gchar*"/>
-      </return-value>
-      <parameters>
-        <parameter name="type" transfer-ownership="none">
-          <type name="MessageType" c:type="GstMessageType"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="message_type_to_quark"
-              c:identifier="gst_message_type_to_quark"
-              doc="Get the unique quark for the given message type.">
-      <return-value transfer-ownership="full">
-        <type name="GLib.Quark" c:type="GQuark"/>
-      </return-value>
-      <parameters>
-        <parameter name="type" transfer-ownership="none">
-          <type name="MessageType" c:type="GstMessageType"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="param_spec_fraction"
-              c:identifier="gst_param_spec_fraction"
-              doc="This function creates a fraction GParamSpec for use by objects/elements
-that want to expose properties of fraction type. This function is typically
-used in connection with g_object_class_install_property() in a GObjects&apos;s
-instance_init function."
-              version="0.10.14">
-      <return-value transfer-ownership="full">
-        <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
-      </return-value>
-      <parameters>
-        <parameter name="name" transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </parameter>
-        <parameter name="nick" transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </parameter>
-        <parameter name="blurb" transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </parameter>
-        <parameter name="min_num" transfer-ownership="none">
-          <type name="int" c:type="gint"/>
-        </parameter>
-        <parameter name="min_denom" transfer-ownership="none">
-          <type name="int" c:type="gint"/>
-        </parameter>
-        <parameter name="max_num" transfer-ownership="none">
-          <type name="int" c:type="gint"/>
-        </parameter>
-        <parameter name="max_denom" transfer-ownership="none">
-          <type name="int" c:type="gint"/>
-        </parameter>
-        <parameter name="default_num" transfer-ownership="none">
-          <type name="int" c:type="gint"/>
-        </parameter>
-        <parameter name="default_denom" transfer-ownership="none">
-          <type name="int" c:type="gint"/>
-        </parameter>
-        <parameter name="flags" transfer-ownership="none">
-          <type name="GObject.ParamFlags" c:type="GParamFlags"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="param_spec_mini_object"
-              c:identifier="gst_param_spec_mini_object"
-              doc="Creates a new #GParamSpec instance that hold #GstMiniObject references.">
-      <return-value transfer-ownership="full">
-        <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
-      </return-value>
-      <parameters>
-        <parameter name="name" transfer-ownership="none">
-          <type name="utf8" c:type="char*"/>
-        </parameter>
-        <parameter name="nick" transfer-ownership="none">
-          <type name="utf8" c:type="char*"/>
-        </parameter>
-        <parameter name="blurb" transfer-ownership="none">
-          <type name="utf8" c:type="char*"/>
-        </parameter>
-        <parameter name="object_type" transfer-ownership="none">
-          <type name="GType" c:type="GType"/>
-        </parameter>
-        <parameter name="flags" transfer-ownership="none">
-          <type name="GObject.ParamFlags" c:type="GParamFlags"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="parse_bin_from_description"
-              c:identifier="gst_parse_bin_from_description"
-              doc="for unlinked source or sink pads within the bin
-This is a convenience wrapper around gst_parse_launch() to create a
-#GstBin from a gst-launch-style pipeline description. See
-gst_parse_launch() and the gst-launch man page for details about the
-syntax. Ghost pads on the bin for unlinked source or sink pads
-within the bin can automatically be created (but only a maximum of
-one ghost pad for each direction will be created; if you expect
-multiple unlinked source pads or multiple unlinked sink pads
-and want them all ghosted, you will have to create the ghost pads
-yourself)."
-              version="0.10.3"
-              throws="1">
-      <return-value transfer-ownership="full">
-        <type name="Element" c:type="GstElement*"/>
-      </return-value>
-      <parameters>
-        <parameter name="bin_description" transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </parameter>
-        <parameter name="ghost_unlinked_pads" transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="parse_bin_from_description_full"
-              c:identifier="gst_parse_bin_from_description_full"
-              doc="for unlinked source or sink pads within the bin
-This is a convenience wrapper around gst_parse_launch() to create a
-#GstBin from a gst-launch-style pipeline description. See
-gst_parse_launch() and the gst-launch man page for details about the
-syntax. Ghost pads on the bin for unlinked source or sink pads
-within the bin can automatically be created (but only a maximum of
-one ghost pad for each direction will be created; if you expect
-multiple unlinked source pads or multiple unlinked sink pads
-and want them all ghosted, you will have to create the ghost pads
-yourself)."
-              version="0.10.20"
-              throws="1">
-      <return-value transfer-ownership="full">
-        <type name="Element" c:type="GstElement*"/>
-      </return-value>
-      <parameters>
-        <parameter name="bin_description" transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </parameter>
-        <parameter name="ghost_unlinked_pads" transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </parameter>
-        <parameter name="context" transfer-ownership="none" doc="or %NULL">
-          <type name="ParseContext" c:type="GstParseContext*"/>
-        </parameter>
-        <parameter name="flags" transfer-ownership="none">
-          <type name="ParseFlags" c:type="GstParseFlags"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="parse_launch"
-              c:identifier="gst_parse_launch"
-              doc="Create a new pipeline based on command line syntax.
-Please note that you might get a return value that is not %NULL even though
-the @error is set. In this case there was a recoverable parsing error and you
-can try to play the pipeline.
-element is specified by the @pipeline_description, all elements are put into
-a #GstPipeline, which than is returned."
-              throws="1">
-      <return-value transfer-ownership="full">
-        <type name="Element" c:type="GstElement*"/>
-      </return-value>
-      <parameters>
-        <parameter name="pipeline_description" transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="parse_launch_full"
-              c:identifier="gst_parse_launch_full"
-              doc="Create a new pipeline based on command line syntax.
-Please note that you might get a return value that is not %NULL even though
-the @error is set. In this case there was a recoverable parsing error and you
-can try to play the pipeline.
-element is specified by the @pipeline_description, all elements are put into
-a #GstPipeline, which then is returned."
-              version="0.10.20"
-              throws="1">
-      <return-value transfer-ownership="full">
-        <type name="Element" c:type="GstElement*"/>
-      </return-value>
-      <parameters>
-        <parameter name="pipeline_description" transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </parameter>
-        <parameter name="context" transfer-ownership="none" doc="or %NULL">
-          <type name="ParseContext" c:type="GstParseContext*"/>
-        </parameter>
-        <parameter name="flags" transfer-ownership="none">
-          <type name="ParseFlags" c:type="GstParseFlags"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="parse_launchv"
-              c:identifier="gst_parse_launchv"
-              doc="Create a new element based on command line syntax.
-An error does not mean that the pipeline could not be constructed."
-              throws="1">
-      <return-value transfer-ownership="full">
-        <type name="Element" c:type="GstElement*"/>
-      </return-value>
-      <parameters>
-        <parameter name="argv" transfer-ownership="none">
-          <array c:type="gchar**">
-            <type name="utf8"/>
-          </array>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="parse_launchv_full"
-              c:identifier="gst_parse_launchv_full"
-              doc="Create a new element based on command line syntax.
-An error does not mean that the pipeline could not be constructed.
-partially-constructed bin or element will be returned and @error will be set
-(unless you passed #GST_PARSE_FLAG_FATAL_ERRORS in @flags, then %NULL will
-always be returned on failure)"
-              version="0.10.20"
-              throws="1">
-      <return-value transfer-ownership="full">
-        <type name="Element" c:type="GstElement*"/>
-      </return-value>
-      <parameters>
-        <parameter name="argv" transfer-ownership="none">
-          <array c:type="gchar**">
-            <type name="utf8"/>
-          </array>
-        </parameter>
-        <parameter name="context" transfer-ownership="none" doc="or %NULL">
-          <type name="ParseContext" c:type="GstParseContext*"/>
-        </parameter>
-        <parameter name="flags" transfer-ownership="none">
-          <type name="ParseFlags" c:type="GstParseFlags"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="print_element_args"
-              c:identifier="gst_print_element_args"
-              doc="Print the element argument in a human readable format in the given
-GString.">
-      <return-value transfer-ownership="none">
-        <type name="none" c:type="void"/>
-      </return-value>
-      <parameters>
-        <parameter name="buf" transfer-ownership="none">
-          <type name="GLib.String" c:type="GString*"/>
-        </parameter>
-        <parameter name="indent" transfer-ownership="none">
-          <type name="int" c:type="gint"/>
-        </parameter>
-        <parameter name="element" transfer-ownership="none">
-          <type name="Element" c:type="GstElement*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="print_pad_caps"
-              c:identifier="gst_print_pad_caps"
-              doc="Write the pad capabilities in a human readable format into
-the given GString.">
-      <return-value transfer-ownership="none">
-        <type name="none" c:type="void"/>
-      </return-value>
-      <parameters>
-        <parameter name="buf" transfer-ownership="none">
-          <type name="GLib.String" c:type="GString*"/>
-        </parameter>
-        <parameter name="indent" transfer-ownership="none">
-          <type name="int" c:type="gint"/>
-        </parameter>
-        <parameter name="pad" transfer-ownership="none">
-          <type name="Pad" c:type="GstPad*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="query_type_get_by_nick"
-              c:identifier="gst_query_type_get_by_nick"
-              doc="Get the query type registered with @nick.
-if the query was not registered.">
-      <return-value transfer-ownership="full">
-        <type name="QueryType" c:type="GstQueryType"/>
-      </return-value>
-      <parameters>
-        <parameter name="nick" transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="query_type_get_details"
-              c:identifier="gst_query_type_get_details"
-              doc="Get details about the given #GstQueryType.">
-      <return-value transfer-ownership="none">
-        <type name="QueryTypeDefinition" c:type="GstQueryTypeDefinition*"/>
-      </return-value>
-      <parameters>
-        <parameter name="type" transfer-ownership="none">
-          <type name="QueryType" c:type="GstQueryType"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="query_type_get_name"
-              c:identifier="gst_query_type_get_name"
-              doc="Get a printable name for the given query type. Do not modify or free.">
-      <return-value transfer-ownership="none">
-        <type name="utf8" c:type="gchar*"/>
-      </return-value>
-      <parameters>
-        <parameter name="query" transfer-ownership="none">
-          <type name="QueryType" c:type="GstQueryType"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="query_type_iterate_definitions"
-              c:identifier="gst_query_type_iterate_definitions"
-              doc="Get a #GstIterator of all the registered query types. The definitions
-iterated over are read only.">
-      <return-value transfer-ownership="full">
-        <type name="Iterator" c:type="GstIterator*"/>
-      </return-value>
-    </function>
-    <function name="query_type_register"
-              c:identifier="gst_query_type_register"
-              doc="Create a new GstQueryType based on the nick or return an
-already registered query with that nick
-with the same nick.">
-      <return-value transfer-ownership="full">
-        <type name="QueryType" c:type="GstQueryType"/>
-      </return-value>
-      <parameters>
-        <parameter name="nick" transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </parameter>
-        <parameter name="description" transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="query_type_to_quark"
-              c:identifier="gst_query_type_to_quark"
-              doc="Get the unique quark for the given query type.">
-      <return-value transfer-ownership="full">
-        <type name="GLib.Quark" c:type="GQuark"/>
-      </return-value>
-      <parameters>
-        <parameter name="query" transfer-ownership="none">
-          <type name="QueryType" c:type="GstQueryType"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="query_types_contains"
-              c:identifier="gst_query_types_contains"
-              doc="See if the given #GstQueryType is inside the @types query types array.">
-      <return-value transfer-ownership="none">
-        <type name="boolean" c:type="gboolean"/>
-      </return-value>
-      <parameters>
-        <parameter name="types" transfer-ownership="none">
-          <type name="QueryType" c:type="GstQueryType*"/>
-        </parameter>
-        <parameter name="type" transfer-ownership="none">
-          <type name="QueryType" c:type="GstQueryType"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="segtrap_is_enabled"
-              c:identifier="gst_segtrap_is_enabled"
-              doc="Some functions in the GStreamer core might install a custom SIGSEGV handler
-to better catch and report errors to the application. Currently this feature
-is enabled by default when loading plugins.
-Applications might want to disable this behaviour with the
-gst_segtrap_set_enabled() function. This is typically done if the application
-wants to install its own handler without GStreamer interfering."
-              version="0.10.10">
-      <return-value transfer-ownership="none">
-        <type name="boolean" c:type="gboolean"/>
-      </return-value>
-    </function>
-    <function name="segtrap_set_enabled"
-              c:identifier="gst_segtrap_set_enabled"
-              doc="Applications might want to disable/enable the SIGSEGV handling of
-the GStreamer core. See gst_segtrap_is_enabled() for more information."
-              version="0.10.10">
-      <return-value transfer-ownership="none">
-        <type name="none" c:type="void"/>
-      </return-value>
-      <parameters>
-        <parameter name="enabled" transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="structure_empty_new"
-              c:identifier="gst_structure_empty_new"
-              doc="Creates a new, empty #GstStructure with the given @name.
-See gst_structure_set_name() for constraints on the @name parameter.">
-      <return-value transfer-ownership="full">
-        <type name="Structure" c:type="GstStructure*"/>
-      </return-value>
-      <parameters>
-        <parameter name="name" transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="structure_from_string"
-              c:identifier="gst_structure_from_string"
-              doc="Creates a #GstStructure from a string representation.
-If end is not NULL, a pointer to the place inside the given string
-where parsing ended will be returned.
-be parsed. Free with gst_structure_free() after use.">
-      <return-value transfer-ownership="full">
-        <type name="Structure" c:type="GstStructure*"/>
-      </return-value>
-      <parameters>
-        <parameter name="string" transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </parameter>
-        <parameter name="end" transfer-ownership="none">
-          <array c:type="gchar**">
-            <type name="utf8"/>
-          </array>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="structure_id_empty_new"
-              c:identifier="gst_structure_id_empty_new"
-              doc="Creates a new, empty #GstStructure with the given name as a GQuark.">
-      <return-value transfer-ownership="full">
-        <type name="Structure" c:type="GstStructure*"/>
-      </return-value>
-      <parameters>
-        <parameter name="quark" transfer-ownership="none">
-          <type name="GLib.Quark" c:type="GQuark"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="structure_id_new"
-              c:identifier="gst_structure_id_new"
-              doc="Creates a new #GstStructure with the given name as a GQuark, followed by
-fieldname quark, GType, argument(s) &quot;triplets&quot; in the same format as
-gst_structure_id_set(). Basically a convenience wrapper around
-gst_structure_id_empty_new() and gst_structure_id_set().
-The last variable argument must be NULL (or 0)."
-              version="0.10.24">
-      <return-value transfer-ownership="full">
-        <type name="Structure" c:type="GstStructure*"/>
-      </return-value>
-      <parameters>
-        <parameter name="name_quark" transfer-ownership="none">
-          <type name="GLib.Quark" c:type="GQuark"/>
-        </parameter>
-        <parameter name="field_quark" transfer-ownership="none">
-          <type name="GLib.Quark" c:type="GQuark"/>
-        </parameter>
-        <parameter transfer-ownership="none">
-          <varargs>
-          </varargs>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="tag_exists"
-              c:identifier="gst_tag_exists"
-              doc="Checks if the given type is already registered.">
-      <return-value transfer-ownership="none">
-        <type name="boolean" c:type="gboolean"/>
-      </return-value>
-      <parameters>
-        <parameter name="tag" transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="tag_get_description"
-              c:identifier="gst_tag_get_description"
-              doc="Returns the human-readable description of this tag, You must not change or
-free this string.">
-      <return-value transfer-ownership="none">
-        <type name="utf8" c:type="gchar*"/>
-      </return-value>
-      <parameters>
-        <parameter name="tag" transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="tag_get_flag"
-              c:identifier="gst_tag_get_flag"
-              doc="Gets the flag of @tag.">
-      <return-value transfer-ownership="full">
-        <type name="TagFlag" c:type="GstTagFlag"/>
-      </return-value>
-      <parameters>
-        <parameter name="tag" transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="tag_get_nick" c:identifier="gst_tag_get_nick">
-      <return-value transfer-ownership="none">
-        <type name="utf8" c:type="gchar*"/>
-      </return-value>
-      <parameters>
-        <parameter name="tag" transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="tag_get_type"
-              c:identifier="gst_tag_get_type"
-              doc="Gets the #GType used for this tag.">
-      <return-value transfer-ownership="none">
-        <type name="GType" c:type="GType"/>
-      </return-value>
-      <parameters>
-        <parameter name="tag" transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="tag_is_fixed"
-              c:identifier="gst_tag_is_fixed"
-              doc="Checks if the given tag is fixed. A fixed tag can only contain one value.
-Unfixed tags can contain lists of values.">
-      <return-value transfer-ownership="none">
-        <type name="boolean" c:type="gboolean"/>
-      </return-value>
-      <parameters>
-        <parameter name="tag" transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="tag_list_copy_value"
-              c:identifier="gst_tag_list_copy_value"
-              doc="Copies the contents for the given tag into the value,
-merging multiple values into one if multiple values are associated
-with the tag.
-You must g_value_unset() the value after use.
-given list.">
-      <return-value transfer-ownership="none">
-        <type name="boolean" c:type="gboolean"/>
-      </return-value>
-      <parameters>
-        <parameter name="dest" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-        <parameter name="list" transfer-ownership="none">
-          <type name="TagList" c:type="GstTagList*"/>
-        </parameter>
-        <parameter name="tag" transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="tag_merge_strings_with_comma"
-              c:identifier="gst_tag_merge_strings_with_comma"
-              doc="This is a convenience function for the func argument of gst_tag_register().
-It concatenates all given strings using a comma. The tag must be registered
-as a G_TYPE_STRING or this function will fail.">
-      <return-value transfer-ownership="none">
-        <type name="none" c:type="void"/>
-      </return-value>
-      <parameters>
-        <parameter name="dest" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-        <parameter name="src" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="tag_merge_use_first"
-              c:identifier="gst_tag_merge_use_first"
-              doc="This is a convenience function for the func argument of gst_tag_register().
-It creates a copy of the first value from the list.">
-      <return-value transfer-ownership="none">
-        <type name="none" c:type="void"/>
-      </return-value>
-      <parameters>
-        <parameter name="dest" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-        <parameter name="src" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="tag_register"
-              c:identifier="gst_tag_register"
-              doc="Registers a new tag type for the use with GStreamer&apos;s type system. If a type
-with that name is already registered, that one is used.
-The old registration may have used a different type however. So don&apos;t rely
-on your supplied values.
-that there can only be one single value for this tag in a tag list and
-any additional values will silenty be discarded when being added (unless
-#GST_TAG_MERGE_REPLACE, #GST_TAG_MERGE_REPLACE_ALL, or
-#GST_TAG_MERGE_PREPEND is used as merge mode, in which case the new
-value will replace the old one in the list).
-The merge function will be called from gst_tag_list_copy_value() when
-it is required that one or more values for a tag be condensed into
-one single value. This may happen from gst_tag_list_get_string(),
-gst_tag_list_get_int(), gst_tag_list_get_double() etc. What will happen
-exactly in that case depends on how the tag was registered and if a
-merge function was supplied and if so which one.
-gst_tag_merge_strings_with_comma().">
-      <return-value transfer-ownership="none">
-        <type name="none" c:type="void"/>
-      </return-value>
-      <parameters>
-        <parameter name="name" transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </parameter>
-        <parameter name="flag" transfer-ownership="none">
-          <type name="TagFlag" c:type="GstTagFlag"/>
-        </parameter>
-        <parameter name="type" transfer-ownership="none">
-          <type name="GType" c:type="GType"/>
-        </parameter>
-        <parameter name="nick" transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </parameter>
-        <parameter name="blurb" transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </parameter>
-        <parameter name="func" transfer-ownership="none" scope="call">
-          <type name="TagMergeFunc" c:type="GstTagMergeFunc"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="trace_read_tsc"
-              c:identifier="gst_trace_read_tsc"
-              doc="Read a platform independent timer value that can be used in
-benchmarks.">
-      <return-value transfer-ownership="none">
-        <type name="none" c:type="void"/>
-      </return-value>
-      <parameters>
-        <parameter name="dst" direction="out" transfer-ownership="full">
-          <type name="int64" c:type="gint64*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="type_find_register"
-              c:identifier="gst_type_find_register"
-              doc="passing NULL only works in GStreamer 0.10.16 and later)
-succeeds
-is unloaded.
-is unloaded.
-Registers a new typefind function to be used for typefinding. After
-registering this function will be available for typefinding.
-This function is typically called during an element&apos;s plugin initialization.">
-      <return-value transfer-ownership="none">
-        <type name="boolean" c:type="gboolean"/>
-      </return-value>
-      <parameters>
-        <parameter name="plugin" transfer-ownership="none">
-          <type name="Plugin" c:type="GstPlugin*"/>
-        </parameter>
-        <parameter name="name" transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </parameter>
-        <parameter name="rank"
-                   transfer-ownership="none"
-                   doc="of this typefind function">
-          <type name="uint" c:type="guint"/>
-        </parameter>
-        <parameter name="func" transfer-ownership="none" scope="call">
-          <type name="TypeFindFunction" c:type="GstTypeFindFunction"/>
-        </parameter>
-        <parameter name="extensions" transfer-ownership="none">
-          <array c:type="gchar**">
-            <type name="utf8"/>
-          </array>
-        </parameter>
-        <parameter name="possible_caps" transfer-ownership="none">
-          <type name="Caps" c:type="GstCaps*"/>
-        </parameter>
-        <parameter name="data" transfer-ownership="none">
-          <type name="any" c:type="gpointer"/>
-        </parameter>
-        <parameter name="data_notify" transfer-ownership="none" scope="call">
-          <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="type_register_static_full"
-              c:identifier="gst_type_register_static_full"
-              doc="derive from
-Location of the default vtable inititalization function for interface
-types. (optional)
-Location of the default vtable finalization function for interface types.
-(optional)
-instantiatable types only).
-memory for (0 indicates no caching). Ignored on recent GLib&apos;s.
-for instantiatable types only).
-GValues of this type (usually only useful for fundamental types).
-Helper function which constructs a #GTypeInfo structure and registers a
-GType, but which generates less linker overhead than a static const
-#GTypeInfo structure. For further details of the parameters, please see
-#GTypeInfo in the GLib documentation.
-Registers type_name as the name of a new static type derived from
-parent_type. The value of flags determines the nature (e.g. abstract or
-not) of the type. It works by filling a GTypeInfo struct and calling
-g_type_register_static()."
-              version="0.10.14">
-      <return-value transfer-ownership="none">
-        <type name="GType" c:type="GType"/>
-      </return-value>
-      <parameters>
-        <parameter name="parent_type" transfer-ownership="none">
-          <type name="GType" c:type="GType"/>
-        </parameter>
-        <parameter name="type_name" transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </parameter>
-        <parameter name="class_size" transfer-ownership="none">
-          <type name="uint" c:type="guint"/>
-        </parameter>
-        <parameter name="base_init" transfer-ownership="none" scope="call">
-          <type name="GObject.BaseInitFunc" c:type="GBaseInitFunc"/>
-        </parameter>
-        <parameter name="base_finalize" transfer-ownership="none" scope="call">
-          <type name="GObject.BaseFinalizeFunc" c:type="GBaseFinalizeFunc"/>
-        </parameter>
-        <parameter name="class_init" transfer-ownership="none" scope="call">
-          <type name="GObject.ClassInitFunc" c:type="GClassInitFunc"/>
-        </parameter>
-        <parameter name="class_finalize"
-                   transfer-ownership="none"
-                   scope="call"
-                   closure="7">
-          <type name="GObject.ClassFinalizeFunc" c:type="GClassFinalizeFunc"/>
-        </parameter>
-        <parameter name="class_data" transfer-ownership="none">
-          <type name="any" c:type="gconstpointer"/>
-        </parameter>
-        <parameter name="instance_size"
-                   transfer-ownership="none"
-                   doc="structure (required for">
-          <type name="uint" c:type="guint"/>
-        </parameter>
-        <parameter name="n_preallocs"
-                   transfer-ownership="none"
-                   doc="instances to reserve">
-          <type name="uint16" c:type="guint16"/>
-        </parameter>
-        <parameter name="instance_init" transfer-ownership="none" scope="call">
-          <type name="GObject.InstanceInitFunc" c:type="GInstanceInitFunc"/>
-        </parameter>
-        <parameter name="value_table" transfer-ownership="none">
-          <type name="GObject.TypeValueTable" c:type="GTypeValueTable*"/>
-        </parameter>
-        <parameter name="flags" transfer-ownership="none">
-          <type name="GObject.TypeFlags" c:type="GTypeFlags"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="update_registry"
-              c:identifier="gst_update_registry"
-              doc="Forces GStreamer to re-scan its plugin paths and update the default
-plugin registry.
-Applications will almost never need to call this function, it is only
-useful if the application knows new plugins have been installed (or old
-ones removed) since the start of the application (or, to be precise, the
-first call to gst_init()) and the application wants to make use of any
-newly-installed plugins without restarting the application.
-Applications should assume that the registry update is neither atomic nor
-thread-safe and should therefore not have any dynamic pipelines running
-(including the playbin and decodebin elements) and should also not create
-any elements or access the GStreamer registry while the update is in
-progress.
-Note that this function may block for a significant amount of time.
-imply that there were changes), otherwise %FALSE."
-              version="0.10.12">
-      <return-value transfer-ownership="none">
-        <type name="boolean" c:type="gboolean"/>
-      </return-value>
-    </function>
-    <function name="uri_construct"
-              c:identifier="gst_uri_construct"
-              doc="Constructs a URI for a given valid protocol and location.
-is not valid, or the given location is NULL.">
-      <return-value transfer-ownership="full">
-        <type name="utf8" c:type="gchar*"/>
-      </return-value>
-      <parameters>
-        <parameter name="protocol" transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </parameter>
-        <parameter name="location" transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="uri_get_location"
-              c:identifier="gst_uri_get_location"
-              doc="Extracts the location out of a given valid URI, ie. the protocol and &quot;://&quot;
-are stripped from the URI, which means that the location returned includes
-the hostname if one is specified. The returned string must be freed using
-g_free().
-the URI does not contain a location, an empty string is returned.">
-      <return-value transfer-ownership="full">
-        <type name="utf8" c:type="gchar*"/>
-      </return-value>
-      <parameters>
-        <parameter name="uri" transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="uri_get_protocol"
-              c:identifier="gst_uri_get_protocol"
-              doc="Extracts the protocol out of a given valid URI. The returned string must be
-freed using g_free().">
-      <return-value transfer-ownership="full">
-        <type name="utf8" c:type="gchar*"/>
-      </return-value>
-      <parameters>
-        <parameter name="uri" transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="uri_has_protocol"
-              c:identifier="gst_uri_has_protocol"
-              doc="Checks if the protocol of a given valid URI matches @protocol."
-              version="0.10.4">
-      <return-value transfer-ownership="none">
-        <type name="boolean" c:type="gboolean"/>
-      </return-value>
-      <parameters>
-        <parameter name="uri" transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </parameter>
-        <parameter name="protocol" transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="uri_is_valid"
-              c:identifier="gst_uri_is_valid"
-              doc="Tests if the given string is a valid URI identifier. URIs start with a valid
-scheme followed by &quot;:&quot; and maybe a string identifying the location.">
-      <return-value transfer-ownership="none">
-        <type name="boolean" c:type="gboolean"/>
-      </return-value>
-      <parameters>
-        <parameter name="uri" transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="uri_protocol_is_supported"
-              c:identifier="gst_uri_protocol_is_supported"
-              doc="Checks if an element exists that supports the given URI protocol. Note
-that a positive return value does not imply that a subsequent call to
-gst_element_make_from_uri() is guaranteed to work."
-              version="0.10.13">
-      <return-value transfer-ownership="none">
-        <type name="boolean" c:type="gboolean"/>
-      </return-value>
-      <parameters>
-        <parameter name="type" transfer-ownership="none">
-          <type name="URIType" c:type="GstURIType"/>
-        </parameter>
-        <parameter name="protocol" transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="uri_protocol_is_valid"
-              c:identifier="gst_uri_protocol_is_valid"
-              doc="Tests if the given string is a valid protocol identifier. Protocols
-must consist of alphanumeric characters, &apos;+&apos;, &apos;-&apos; and &apos;.&apos; and must
-start with a alphabetic character. See RFC 3986 Section 3.1.">
-      <return-value transfer-ownership="none">
-        <type name="boolean" c:type="gboolean"/>
-      </return-value>
-      <parameters>
-        <parameter name="protocol" transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="util_array_binary_search"
-              c:identifier="gst_util_array_binary_search"
-              doc="Searches inside @array for @search_data by using the comparison function
-As @search_data is always passed as second argument to @search_func it&apos;s
-not required that @search_data has the same type as the array elements.
-The complexity of this search function is O(log (num_elements))."
-              version="0.10.23">
-      <return-value transfer-ownership="none">
-        <type name="any" c:type="gpointer"/>
-      </return-value>
-      <parameters>
-        <parameter name="array" transfer-ownership="none">
-          <type name="any" c:type="gpointer"/>
-        </parameter>
-        <parameter name="num_elements" transfer-ownership="none">
-          <type name="uint" c:type="guint"/>
-        </parameter>
-        <parameter name="element_size" transfer-ownership="none">
-          <type name="size_t" c:type="gsize"/>
-        </parameter>
-        <parameter name="search_func" transfer-ownership="none" scope="call">
-          <type name="GLib.CompareDataFunc" c:type="GCompareDataFunc"/>
-        </parameter>
-        <parameter name="mode" transfer-ownership="none">
-          <type name="SearchMode" c:type="GstSearchMode"/>
-        </parameter>
-        <parameter name="search_data" transfer-ownership="none">
-          <type name="any" c:type="gconstpointer"/>
-        </parameter>
-        <parameter name="user_data" transfer-ownership="none">
-          <type name="any" c:type="gpointer"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="util_double_to_fraction"
-              c:identifier="gst_util_double_to_fraction"
-              doc="Transforms a #gdouble to a fraction and simplifies
-the result."
-              version="0.10.26">
-      <return-value transfer-ownership="none">
-        <type name="none" c:type="void"/>
-      </return-value>
-      <parameters>
-        <parameter name="src" transfer-ownership="none">
-          <type name="double" c:type="gdouble"/>
-        </parameter>
-        <parameter name="dest_n" direction="out" transfer-ownership="full">
-          <type name="int" c:type="gint*"/>
-        </parameter>
-        <parameter name="dest_d" direction="out" transfer-ownership="full">
-          <type name="int" c:type="gint*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="util_dump_mem"
-              c:identifier="gst_util_dump_mem"
-              doc="Dumps the memory block into a hex representation. Useful for debugging.">
-      <return-value transfer-ownership="none">
-        <type name="none" c:type="void"/>
-      </return-value>
-      <parameters>
-        <parameter name="mem" transfer-ownership="none">
-          <array c:type="guchar*">
-            <type name="uint8"/>
-          </array>
-        </parameter>
-        <parameter name="size" transfer-ownership="none">
-          <type name="uint" c:type="guint"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="util_fraction_add"
-              c:identifier="gst_util_fraction_add"
-              doc="Adds the fractions @a_n/@a_d and @b_n/@b_d and stores
-the result in @res_n and @res_d."
-              version="0.10.26">
-      <return-value transfer-ownership="none">
-        <type name="boolean" c:type="gboolean"/>
-      </return-value>
-      <parameters>
-        <parameter name="a_n" transfer-ownership="none">
-          <type name="int" c:type="gint"/>
-        </parameter>
-        <parameter name="a_d" transfer-ownership="none">
-          <type name="int" c:type="gint"/>
-        </parameter>
-        <parameter name="b_n" transfer-ownership="none">
-          <type name="int" c:type="gint"/>
-        </parameter>
-        <parameter name="b_d" transfer-ownership="none">
-          <type name="int" c:type="gint"/>
-        </parameter>
-        <parameter name="res_n" direction="out" transfer-ownership="full">
-          <type name="int" c:type="gint*"/>
-        </parameter>
-        <parameter name="res_d" direction="out" transfer-ownership="full">
-          <type name="int" c:type="gint*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="util_fraction_multiply"
-              c:identifier="gst_util_fraction_multiply"
-              doc="Multiplies the fractions @a_n/@a_d and @b_n/@b_d and stores
-the result in @res_n and @res_d."
-              version="0.10.26">
-      <return-value transfer-ownership="none">
-        <type name="boolean" c:type="gboolean"/>
-      </return-value>
-      <parameters>
-        <parameter name="a_n" transfer-ownership="none">
-          <type name="int" c:type="gint"/>
-        </parameter>
-        <parameter name="a_d" transfer-ownership="none">
-          <type name="int" c:type="gint"/>
-        </parameter>
-        <parameter name="b_n" transfer-ownership="none">
-          <type name="int" c:type="gint"/>
-        </parameter>
-        <parameter name="b_d" transfer-ownership="none">
-          <type name="int" c:type="gint"/>
-        </parameter>
-        <parameter name="res_n" direction="out" transfer-ownership="full">
-          <type name="int" c:type="gint*"/>
-        </parameter>
-        <parameter name="res_d" direction="out" transfer-ownership="full">
-          <type name="int" c:type="gint*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="util_fraction_to_double"
-              c:identifier="gst_util_fraction_to_double"
-              doc="Transforms a #gdouble to a fraction and simplifies the result."
-              version="0.10.26">
-      <return-value transfer-ownership="none">
-        <type name="none" c:type="void"/>
-      </return-value>
-      <parameters>
-        <parameter name="src_n" transfer-ownership="none">
-          <type name="int" c:type="gint"/>
-        </parameter>
-        <parameter name="src_d" transfer-ownership="none">
-          <type name="int" c:type="gint"/>
-        </parameter>
-        <parameter name="dest" direction="out" transfer-ownership="full">
-          <type name="double" c:type="gdouble*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="util_gdouble_to_guint64"
-              c:identifier="gst_util_gdouble_to_guint64">
-      <return-value transfer-ownership="none">
-        <type name="uint64" c:type="guint64"/>
-      </return-value>
-      <parameters>
-        <parameter name="value" transfer-ownership="none">
-          <type name="double" c:type="gdouble"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="util_get_timestamp"
-              c:identifier="gst_util_get_timestamp"
-              doc="Get a timestamp as GstClockTime to be used for interval meassurements.
-The timestamp should not be interpreted in any other way."
-              version="0.10.16">
-      <return-value transfer-ownership="full">
-        <type name="ClockTime" c:type="GstClockTime"/>
-      </return-value>
-    </function>
-    <function name="util_greatest_common_divisor"
-              c:identifier="gst_util_greatest_common_divisor"
-              doc="Calculates the greatest common divisor of @a
-and @b."
-              version="0.10.26">
-      <return-value transfer-ownership="none">
-        <type name="int" c:type="gint"/>
-      </return-value>
-      <parameters>
-        <parameter name="a" transfer-ownership="none">
-          <type name="int" c:type="gint"/>
-        </parameter>
-        <parameter name="b" transfer-ownership="none">
-          <type name="int" c:type="gint"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="util_guint64_to_gdouble"
-              c:identifier="gst_util_guint64_to_gdouble">
-      <return-value transfer-ownership="none">
-        <type name="double" c:type="gdouble"/>
-      </return-value>
-      <parameters>
-        <parameter name="value" transfer-ownership="none">
-          <type name="uint64" c:type="guint64"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="util_seqnum_compare"
-              c:identifier="gst_util_seqnum_compare"
-              doc="Compare two sequence numbers, handling wraparound.
-The current implementation just returns (gint32)(@s1 - @s2).
-positive number if @s1 is after @s2."
-              version="0.10.22">
-      <return-value transfer-ownership="none">
-        <type name="int32" c:type="gint32"/>
-      </return-value>
-      <parameters>
-        <parameter name="s1" transfer-ownership="none">
-          <type name="uint32" c:type="guint32"/>
-        </parameter>
-        <parameter name="s2" transfer-ownership="none">
-          <type name="uint32" c:type="guint32"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="util_seqnum_next"
-              c:identifier="gst_util_seqnum_next"
-              doc="Return a constantly incrementing sequence number.
-This function is used internally to GStreamer to be able to determine which
-events and messages are &quot;the same&quot;. For example, elements may set the seqnum
-on a segment-done message to be the same as that of the last seek event, to
-indicate that event and the message correspond to the same segment.
-overflow back to 0 at some point. Use gst_util_seqnum_compare() to make sure
-you handle wraparound correctly."
-              version="0.10.22">
-      <return-value transfer-ownership="none">
-        <type name="uint32" c:type="guint32"/>
-      </return-value>
-    </function>
-    <function name="util_set_object_arg"
-              c:identifier="gst_util_set_object_arg"
-              doc="Convertes the string value to the type of the objects argument and
-sets the argument with it.
-Note that this function silently returns if @object has no property named">
-      <return-value transfer-ownership="none">
-        <type name="none" c:type="void"/>
-      </return-value>
-      <parameters>
-        <parameter name="object" transfer-ownership="none">
-          <type name="GObject.Object" c:type="GObject*"/>
-        </parameter>
-        <parameter name="name" transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </parameter>
-        <parameter name="value" transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="util_set_value_from_string"
-              c:identifier="gst_util_set_value_from_string"
-              doc="Converts the string to the type of the value and
-sets the value with it.
-Note that this function is dangerous as it does not return any indication
-if the conversion worked or not.">
-      <return-value transfer-ownership="none">
-        <type name="none" c:type="void"/>
-      </return-value>
-      <parameters>
-        <parameter name="value" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-        <parameter name="value_str" transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="util_uint64_scale"
-              c:identifier="gst_util_uint64_scale"
-              doc="Scale @val by the rational number @num / @denom, avoiding overflows and
-underflows and without loss of precision.
-This function can potentially be very slow if val and num are both
-greater than G_MAXUINT32.
-function returns G_MAXUINT64.  If the result is not exactly
-representable as an integer it is truncated.  See also
-gst_util_uint64_scale_round(), gst_util_uint64_scale_ceil(),
-gst_util_uint64_scale_int(), gst_util_uint64_scale_int_round(),
-gst_util_uint64_scale_int_ceil().">
-      <return-value transfer-ownership="none">
-        <type name="uint64" c:type="guint64"/>
-      </return-value>
-      <parameters>
-        <parameter name="val" transfer-ownership="none">
-          <type name="uint64" c:type="guint64"/>
-        </parameter>
-        <parameter name="num" transfer-ownership="none">
-          <type name="uint64" c:type="guint64"/>
-        </parameter>
-        <parameter name="denom" transfer-ownership="none">
-          <type name="uint64" c:type="guint64"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="util_uint64_scale_ceil"
-              c:identifier="gst_util_uint64_scale_ceil"
-              doc="Scale @val by the rational number @num / @denom, avoiding overflows and
-underflows and without loss of precision.
-This function can potentially be very slow if val and num are both
-greater than G_MAXUINT32.
-function returns G_MAXUINT64.  If the result is not exactly
-representable as an integer, it is rounded up.  See also
-gst_util_uint64_scale(), gst_util_uint64_scale_round(),
-gst_util_uint64_scale_int(), gst_util_uint64_scale_int_round(),
-gst_util_uint64_scale_int_ceil().">
-      <return-value transfer-ownership="none">
-        <type name="uint64" c:type="guint64"/>
-      </return-value>
-      <parameters>
-        <parameter name="val" transfer-ownership="none">
-          <type name="uint64" c:type="guint64"/>
-        </parameter>
-        <parameter name="num" transfer-ownership="none">
-          <type name="uint64" c:type="guint64"/>
-        </parameter>
-        <parameter name="denom" transfer-ownership="none">
-          <type name="uint64" c:type="guint64"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="util_uint64_scale_int"
-              c:identifier="gst_util_uint64_scale_int"
-              doc="Scale @val by the rational number @num / @denom, avoiding overflows and
-underflows and without loss of precision.  @num must be non-negative and
-function returns G_MAXUINT64.  If the result is not exactly
-representable as an integer, it is truncated.  See also
-gst_util_uint64_scale_int_round(), gst_util_uint64_scale_int_ceil(),
-gst_util_uint64_scale(), gst_util_uint64_scale_round(),
-gst_util_uint64_scale_ceil().">
-      <return-value transfer-ownership="none">
-        <type name="uint64" c:type="guint64"/>
-      </return-value>
-      <parameters>
-        <parameter name="val" transfer-ownership="none" doc="to scale.">
-          <type name="uint64" c:type="guint64"/>
-        </parameter>
-        <parameter name="num" transfer-ownership="none">
-          <type name="int" c:type="gint"/>
-        </parameter>
-        <parameter name="denom" transfer-ownership="none">
-          <type name="int" c:type="gint"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="util_uint64_scale_int_ceil"
-              c:identifier="gst_util_uint64_scale_int_ceil"
-              doc="Scale @val by the rational number @num / @denom, avoiding overflows and
-underflows and without loss of precision.  @num must be non-negative and
-function returns G_MAXUINT64.  If the result is not exactly
-representable as an integer, it is rounded up.  See also
-gst_util_uint64_scale_int(), gst_util_uint64_scale_int_round(),
-gst_util_uint64_scale(), gst_util_uint64_scale_round(),
-gst_util_uint64_scale_ceil().">
-      <return-value transfer-ownership="none">
-        <type name="uint64" c:type="guint64"/>
-      </return-value>
-      <parameters>
-        <parameter name="val" transfer-ownership="none" doc="to scale.">
-          <type name="uint64" c:type="guint64"/>
-        </parameter>
-        <parameter name="num" transfer-ownership="none">
-          <type name="int" c:type="gint"/>
-        </parameter>
-        <parameter name="denom" transfer-ownership="none">
-          <type name="int" c:type="gint"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="util_uint64_scale_int_round"
-              c:identifier="gst_util_uint64_scale_int_round"
-              doc="Scale @val by the rational number @num / @denom, avoiding overflows and
-underflows and without loss of precision.  @num must be non-negative and
-function returns G_MAXUINT64.  If the result is not exactly
-representable as an integer, it is rounded to the nearest integer
-(half-way cases are rounded up).  See also gst_util_uint64_scale_int(),
-gst_util_uint64_scale_int_ceil(), gst_util_uint64_scale(),
-gst_util_uint64_scale_round(), gst_util_uint64_scale_ceil().">
-      <return-value transfer-ownership="none">
-        <type name="uint64" c:type="guint64"/>
-      </return-value>
-      <parameters>
-        <parameter name="val" transfer-ownership="none" doc="to scale.">
-          <type name="uint64" c:type="guint64"/>
-        </parameter>
-        <parameter name="num" transfer-ownership="none">
-          <type name="int" c:type="gint"/>
-        </parameter>
-        <parameter name="denom" transfer-ownership="none">
-          <type name="int" c:type="gint"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="util_uint64_scale_round"
-              c:identifier="gst_util_uint64_scale_round"
-              doc="Scale @val by the rational number @num / @denom, avoiding overflows and
-underflows and without loss of precision.
-This function can potentially be very slow if val and num are both
-greater than G_MAXUINT32.
-function returns G_MAXUINT64.  If the result is not exactly
-representable as an integer, it is rounded to the nearest integer
-(half-way cases are rounded up).  See also gst_util_uint64_scale(),
-gst_util_uint64_scale_ceil(), gst_util_uint64_scale_int(),
-gst_util_uint64_scale_int_round(), gst_util_uint64_scale_int_ceil().">
-      <return-value transfer-ownership="none">
-        <type name="uint64" c:type="guint64"/>
-      </return-value>
-      <parameters>
-        <parameter name="val" transfer-ownership="none">
-          <type name="uint64" c:type="guint64"/>
-        </parameter>
-        <parameter name="num" transfer-ownership="none">
-          <type name="uint64" c:type="guint64"/>
-        </parameter>
-        <parameter name="denom" transfer-ownership="none">
-          <type name="uint64" c:type="guint64"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="value_array_append_value"
-              c:identifier="gst_value_array_append_value"
-              doc="Appends @append_value to the GstValueArray in @value.">
-      <return-value transfer-ownership="none">
-        <type name="none" c:type="void"/>
-      </return-value>
-      <parameters>
-        <parameter name="value" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-        <parameter name="append_value" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="value_array_get_size"
-              c:identifier="gst_value_array_get_size"
-              doc="Gets the number of values contained in @value.">
-      <return-value transfer-ownership="none">
-        <type name="uint" c:type="guint"/>
-      </return-value>
-      <parameters>
-        <parameter name="value" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="value_array_get_value"
-              c:identifier="gst_value_array_get_value"
-              doc="Gets the value that is a member of the array contained in @value and
-has the index @index.">
-      <return-value transfer-ownership="none">
-        <type name="GObject.Value" c:type="GValue*"/>
-      </return-value>
-      <parameters>
-        <parameter name="value" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-        <parameter name="index" transfer-ownership="none">
-          <type name="uint" c:type="guint"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="value_array_prepend_value"
-              c:identifier="gst_value_array_prepend_value"
-              doc="Prepends @prepend_value to the GstValueArray in @value.">
-      <return-value transfer-ownership="none">
-        <type name="none" c:type="void"/>
-      </return-value>
-      <parameters>
-        <parameter name="value" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-        <parameter name="prepend_value" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="value_can_compare"
-              c:identifier="gst_value_can_compare"
-              doc="Determines if @value1 and @value2 can be compared.">
-      <return-value transfer-ownership="none">
-        <type name="boolean" c:type="gboolean"/>
-      </return-value>
-      <parameters>
-        <parameter name="value1" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-        <parameter name="value2" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="value_can_intersect"
-              c:identifier="gst_value_can_intersect"
-              doc="Determines if intersecting two values will produce a valid result.
-Two values will produce a valid intersection if they have the same
-type, or if there is a method (registered by
-gst_value_register_intersect_func()) to calculate the intersection.">
-      <return-value transfer-ownership="none">
-        <type name="boolean" c:type="gboolean"/>
-      </return-value>
-      <parameters>
-        <parameter name="value1" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-        <parameter name="value2" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="value_can_subtract"
-              c:identifier="gst_value_can_subtract"
-              doc="Checks if it&apos;s possible to subtract @subtrahend from @minuend.">
-      <return-value transfer-ownership="none">
-        <type name="boolean" c:type="gboolean"/>
-      </return-value>
-      <parameters>
-        <parameter name="minuend" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-        <parameter name="subtrahend" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="value_can_union"
-              c:identifier="gst_value_can_union"
-              doc="Determines if @value1 and @value2 can be non-trivially unioned.
-Any two values can be trivially unioned by adding both of them
-to a GstValueList.  However, certain types have the possibility
-to be unioned in a simpler way.  For example, an integer range
-and an integer can be unioned if the integer is a subset of the
-integer range.  If there is the possibility that two values can
-be unioned, this function returns TRUE.
-be unioned.">
-      <return-value transfer-ownership="none">
-        <type name="boolean" c:type="gboolean"/>
-      </return-value>
-      <parameters>
-        <parameter name="value1" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-        <parameter name="value2" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="value_compare"
-              c:identifier="gst_value_compare"
-              doc="Compares @value1 and @value2.  If @value1 and @value2 cannot be
-compared, the function returns GST_VALUE_UNORDERED.  Otherwise,
-if @value1 is greater than @value2, GST_VALUE_GREATER_THAN is returned.
-If @value1 is less than @value2, GST_VALUE_LESS_THAN is returned.
-If the values are equal, GST_VALUE_EQUAL is returned.">
-      <return-value transfer-ownership="none">
-        <type name="int" c:type="gint"/>
-      </return-value>
-      <parameters>
-        <parameter name="value1" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-        <parameter name="value2" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="value_deserialize"
-              c:identifier="gst_value_deserialize"
-              doc="Tries to deserialize a string into the type specified by the given GValue.
-If the operation succeeds, TRUE is returned, FALSE otherwise.">
-      <return-value transfer-ownership="none">
-        <type name="boolean" c:type="gboolean"/>
-      </return-value>
-      <parameters>
-        <parameter name="dest" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-        <parameter name="src" transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="value_dup_mini_object"
-              c:identifier="gst_value_dup_mini_object"
-              doc="Get the contents of a %GST_TYPE_MINI_OBJECT derived #GValue,
-increasing its reference count."
-              version="0.10.20">
-      <return-value transfer-ownership="full">
-        <type name="MiniObject" c:type="GstMiniObject*"/>
-      </return-value>
-      <parameters>
-        <parameter name="value" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="value_fraction_multiply"
-              c:identifier="gst_value_fraction_multiply"
-              doc="Multiplies the two #GValue items containing a #GST_TYPE_FRACTION and sets">
-      <return-value transfer-ownership="none" doc="TRUE otherwise.">
-        <type name="boolean" c:type="gboolean"/>
-      </return-value>
-      <parameters>
-        <parameter name="product" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-        <parameter name="factor1" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-        <parameter name="factor2" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="value_fraction_subtract"
-              c:identifier="gst_value_fraction_subtract"
-              doc="Subtracts the @subtrahend from the @minuend and sets @dest to the result.">
-      <return-value transfer-ownership="none" doc="TRUE otherwise.">
-        <type name="boolean" c:type="gboolean"/>
-      </return-value>
-      <parameters>
-        <parameter name="dest" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-        <parameter name="minuend" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-        <parameter name="subtrahend" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="value_get_caps"
-              c:identifier="gst_value_get_caps"
-              doc="Gets the contents of @value.">
-      <return-value transfer-ownership="none">
-        <type name="Caps" c:type="GstCaps*"/>
-      </return-value>
-      <parameters>
-        <parameter name="value" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="value_get_date"
-              c:identifier="gst_value_get_date"
-              doc="Gets the contents of @value.">
-      <return-value transfer-ownership="none">
-        <type name="GLib.Date" c:type="GDate*"/>
-      </return-value>
-      <parameters>
-        <parameter name="value" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="value_get_double_range_max"
-              c:identifier="gst_value_get_double_range_max"
-              doc="Gets the maximum of the range specified by @value.">
-      <return-value transfer-ownership="none">
-        <type name="double" c:type="gdouble"/>
-      </return-value>
-      <parameters>
-        <parameter name="value" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="value_get_double_range_min"
-              c:identifier="gst_value_get_double_range_min"
-              doc="Gets the minimum of the range specified by @value.">
-      <return-value transfer-ownership="none">
-        <type name="double" c:type="gdouble"/>
-      </return-value>
-      <parameters>
-        <parameter name="value" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="value_get_fourcc"
-              c:identifier="gst_value_get_fourcc"
-              doc="Gets the #guint32 fourcc contained in @value.">
-      <return-value transfer-ownership="none">
-        <type name="uint32" c:type="guint32"/>
-      </return-value>
-      <parameters>
-        <parameter name="value" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="value_get_fraction_denominator"
-              c:identifier="gst_value_get_fraction_denominator"
-              doc="Gets the denominator of the fraction specified by @value.">
-      <return-value transfer-ownership="none">
-        <type name="int" c:type="gint"/>
-      </return-value>
-      <parameters>
-        <parameter name="value" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="value_get_fraction_numerator"
-              c:identifier="gst_value_get_fraction_numerator"
-              doc="Gets the numerator of the fraction specified by @value.">
-      <return-value transfer-ownership="none">
-        <type name="int" c:type="gint"/>
-      </return-value>
-      <parameters>
-        <parameter name="value" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="value_get_fraction_range_max"
-              c:identifier="gst_value_get_fraction_range_max"
-              doc="Gets the maximum of the range specified by @value.">
-      <return-value transfer-ownership="none">
-        <type name="GObject.Value" c:type="GValue*"/>
-      </return-value>
-      <parameters>
-        <parameter name="value" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="value_get_fraction_range_min"
-              c:identifier="gst_value_get_fraction_range_min"
-              doc="Gets the minimum of the range specified by @value.">
-      <return-value transfer-ownership="none">
-        <type name="GObject.Value" c:type="GValue*"/>
-      </return-value>
-      <parameters>
-        <parameter name="value" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="value_get_int_range_max"
-              c:identifier="gst_value_get_int_range_max"
-              doc="Gets the maximum of the range specified by @value.">
-      <return-value transfer-ownership="none">
-        <type name="int" c:type="gint"/>
-      </return-value>
-      <parameters>
-        <parameter name="value" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="value_get_int_range_min"
-              c:identifier="gst_value_get_int_range_min"
-              doc="Gets the minimum of the range specified by @value.">
-      <return-value transfer-ownership="none">
-        <type name="int" c:type="gint"/>
-      </return-value>
-      <parameters>
-        <parameter name="value" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="value_get_mini_object"
-              c:identifier="gst_value_get_mini_object"
-              doc="Get the contents of a %GST_TYPE_MINI_OBJECT derived #GValue.
-Does not increase the refcount of the returned object.">
-      <return-value transfer-ownership="full">
-        <type name="MiniObject" c:type="GstMiniObject*"/>
-      </return-value>
-      <parameters>
-        <parameter name="value" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="value_get_structure"
-              c:identifier="gst_value_get_structure"
-              doc="Gets the contents of @value."
-              version="0.10.15">
-      <return-value transfer-ownership="none">
-        <type name="Structure" c:type="GstStructure*"/>
-      </return-value>
-      <parameters>
-        <parameter name="value" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="value_init_and_copy"
-              c:identifier="gst_value_init_and_copy"
-              doc="Initialises the target value to be of the same type as source and then copies
-the contents from source to target.">
-      <return-value transfer-ownership="none">
-        <type name="none" c:type="void"/>
-      </return-value>
-      <parameters>
-        <parameter name="dest" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-        <parameter name="src" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="value_intersect"
-              c:identifier="gst_value_intersect"
-              doc="intersection value
-Calculates the intersection of two values.  If the values have
-a non-empty intersection, the value representing the intersection
-is placed in @dest.  If the intersection is non-empty, @dest is
-not modified.">
-      <return-value transfer-ownership="none">
-        <type name="boolean" c:type="gboolean"/>
-      </return-value>
-      <parameters>
-        <parameter name="dest" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-        <parameter name="value1" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-        <parameter name="value2" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="value_is_fixed"
-              c:identifier="gst_value_is_fixed"
-              doc="Tests if the given GValue, if available in a GstStructure (or any other
-ranges) value.">
-      <return-value transfer-ownership="none">
-        <type name="boolean" c:type="gboolean"/>
-      </return-value>
-      <parameters>
-        <parameter name="value" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="value_list_append_value"
-              c:identifier="gst_value_list_append_value"
-              doc="Appends @append_value to the GstValueList in @value.">
-      <return-value transfer-ownership="none">
-        <type name="none" c:type="void"/>
-      </return-value>
-      <parameters>
-        <parameter name="value" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-        <parameter name="append_value" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="value_list_concat"
-              c:identifier="gst_value_list_concat"
-              doc="Concatenates copies of @value1 and @value2 into a list.  Values that are not
-of type #GST_TYPE_LIST are treated as if they were lists of length 1.">
-      <return-value transfer-ownership="none">
-        <type name="none" c:type="void"/>
-      </return-value>
-      <parameters>
-        <parameter name="dest" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-        <parameter name="value1" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-        <parameter name="value2" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="value_list_get_size"
-              c:identifier="gst_value_list_get_size"
-              doc="Gets the number of values contained in @value.">
-      <return-value transfer-ownership="none">
-        <type name="uint" c:type="guint"/>
-      </return-value>
-      <parameters>
-        <parameter name="value" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="value_list_get_value"
-              c:identifier="gst_value_list_get_value"
-              doc="Gets the value that is a member of the list contained in @value and
-has the index @index.">
-      <return-value transfer-ownership="none">
-        <type name="GObject.Value" c:type="GValue*"/>
-      </return-value>
-      <parameters>
-        <parameter name="value" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-        <parameter name="index" transfer-ownership="none">
-          <type name="uint" c:type="guint"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="value_list_prepend_value"
-              c:identifier="gst_value_list_prepend_value"
-              doc="Prepends @prepend_value to the GstValueList in @value.">
-      <return-value transfer-ownership="none">
-        <type name="none" c:type="void"/>
-      </return-value>
-      <parameters>
-        <parameter name="value" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-        <parameter name="prepend_value" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="value_register"
-              c:identifier="gst_value_register"
-              doc="Registers functions to perform calculations on #GValue items of a given
-type. Each type can only be added once.">
-      <return-value transfer-ownership="none">
-        <type name="none" c:type="void"/>
-      </return-value>
-      <parameters>
-        <parameter name="table" transfer-ownership="none">
-          <type name="ValueTable" c:type="GstValueTable*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="value_register_intersect_func"
-              c:identifier="gst_value_register_intersect_func"
-              doc="Registers a function that is called to calculate the intersection
-of the values having the types @type1 and @type2.
-Intersect functions should be registered at startup before any pipelines are
-started, as gst_value_register_intersect_func() is not thread-safe and
-cannot be used at the same time as gst_value_intersect() or
-gst_value_can_intersect().">
-      <return-value transfer-ownership="none">
-        <type name="none" c:type="void"/>
-      </return-value>
-      <parameters>
-        <parameter name="type1" transfer-ownership="none">
-          <type name="GType" c:type="GType"/>
-        </parameter>
-        <parameter name="type2" transfer-ownership="none">
-          <type name="GType" c:type="GType"/>
-        </parameter>
-        <parameter name="func" transfer-ownership="none" scope="call">
-          <type name="ValueIntersectFunc" c:type="GstValueIntersectFunc"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="value_register_subtract_func"
-              c:identifier="gst_value_register_subtract_func"
-              doc="Registers @func as a function capable of subtracting the values of
-Subtract functions should be registered at startup before any pipelines are
-started, as gst_value_register_subtract_func() is not thread-safe and
-cannot be used at the same time as gst_value_subtract().">
-      <return-value transfer-ownership="none">
-        <type name="none" c:type="void"/>
-      </return-value>
-      <parameters>
-        <parameter name="minuend_type" transfer-ownership="none">
-          <type name="GType" c:type="GType"/>
-        </parameter>
-        <parameter name="subtrahend_type" transfer-ownership="none">
-          <type name="GType" c:type="GType"/>
-        </parameter>
-        <parameter name="func" transfer-ownership="none" scope="call">
-          <type name="ValueSubtractFunc" c:type="GstValueSubtractFunc"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="value_register_union_func"
-              c:identifier="gst_value_register_union_func"
-              doc="Registers a union function that can create a union between #GValue items
-of the type @type1 and @type2.
-Union functions should be registered at startup before any pipelines are
-started, as gst_value_register_union_func() is not thread-safe and cannot
-be used at the same time as gst_value_union() or gst_value_can_union().">
-      <return-value transfer-ownership="none">
-        <type name="none" c:type="void"/>
-      </return-value>
-      <parameters>
-        <parameter name="type1" transfer-ownership="none">
-          <type name="GType" c:type="GType"/>
-        </parameter>
-        <parameter name="type2" transfer-ownership="none">
-          <type name="GType" c:type="GType"/>
-        </parameter>
-        <parameter name="func" transfer-ownership="none" scope="call">
-          <type name="ValueUnionFunc" c:type="GstValueUnionFunc"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="value_serialize"
-              c:identifier="gst_value_serialize"
-              doc="tries to transform the given @value into a string representation that allows
-getting back this string later on using gst_value_deserialize().">
-      <return-value transfer-ownership="full">
-        <type name="utf8" c:type="gchar*"/>
-      </return-value>
-      <parameters>
-        <parameter name="value" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="value_set_caps"
-              c:identifier="gst_value_set_caps"
-              doc="Sets the contents of @value to @caps.  The actual
-#GstCaps structure is copied before it is used.">
-      <return-value transfer-ownership="none">
-        <type name="none" c:type="void"/>
-      </return-value>
-      <parameters>
-        <parameter name="value" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-        <parameter name="caps" transfer-ownership="none">
-          <type name="Caps" c:type="GstCaps*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="value_set_date"
-              c:identifier="gst_value_set_date"
-              doc="Sets the contents of @value to coorespond to @date.  The actual
-#GDate structure is copied before it is used.">
-      <return-value transfer-ownership="none">
-        <type name="none" c:type="void"/>
-      </return-value>
-      <parameters>
-        <parameter name="value" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-        <parameter name="date" transfer-ownership="none">
-          <type name="GLib.Date" c:type="GDate*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="value_set_double_range"
-              c:identifier="gst_value_set_double_range"
-              doc="Sets @value to the range specified by @start and @end.">
-      <return-value transfer-ownership="none">
-        <type name="none" c:type="void"/>
-      </return-value>
-      <parameters>
-        <parameter name="value" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-        <parameter name="start" transfer-ownership="none">
-          <type name="double" c:type="gdouble"/>
-        </parameter>
-        <parameter name="end" transfer-ownership="none">
-          <type name="double" c:type="gdouble"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="value_set_fourcc"
-              c:identifier="gst_value_set_fourcc"
-              doc="Sets @value to @fourcc.">
-      <return-value transfer-ownership="none">
-        <type name="none" c:type="void"/>
-      </return-value>
-      <parameters>
-        <parameter name="value" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-        <parameter name="fourcc" transfer-ownership="none">
-          <type name="uint32" c:type="guint32"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="value_set_fraction"
-              c:identifier="gst_value_set_fraction"
-              doc="Sets @value to the fraction specified by @numerator over @denominator.
-The fraction gets reduced to the smallest numerator and denominator,
-and if necessary the sign is moved to the numerator.">
-      <return-value transfer-ownership="none">
-        <type name="none" c:type="void"/>
-      </return-value>
-      <parameters>
-        <parameter name="value" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-        <parameter name="numerator" transfer-ownership="none">
-          <type name="int" c:type="gint"/>
-        </parameter>
-        <parameter name="denominator" transfer-ownership="none">
-          <type name="int" c:type="gint"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="value_set_fraction_range"
-              c:identifier="gst_value_set_fraction_range"
-              doc="Sets @value to the range specified by @start and @end.">
-      <return-value transfer-ownership="none">
-        <type name="none" c:type="void"/>
-      </return-value>
-      <parameters>
-        <parameter name="value" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-        <parameter name="start" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-        <parameter name="end" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="value_set_fraction_range_full"
-              c:identifier="gst_value_set_fraction_range_full"
-              doc="Sets @value to the range specified by @numerator_start/@denominator_start
-and @numerator_end/@denominator_end.">
-      <return-value transfer-ownership="none">
-        <type name="none" c:type="void"/>
-      </return-value>
-      <parameters>
-        <parameter name="value" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-        <parameter name="numerator_start" transfer-ownership="none">
-          <type name="int" c:type="gint"/>
-        </parameter>
-        <parameter name="denominator_start" transfer-ownership="none">
-          <type name="int" c:type="gint"/>
-        </parameter>
-        <parameter name="numerator_end" transfer-ownership="none">
-          <type name="int" c:type="gint"/>
-        </parameter>
-        <parameter name="denominator_end" transfer-ownership="none">
-          <type name="int" c:type="gint"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="value_set_int_range"
-              c:identifier="gst_value_set_int_range"
-              doc="Sets @value to the range specified by @start and @end.">
-      <return-value transfer-ownership="none">
-        <type name="none" c:type="void"/>
-      </return-value>
-      <parameters>
-        <parameter name="value" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-        <parameter name="start" transfer-ownership="none">
-          <type name="int" c:type="gint"/>
-        </parameter>
-        <parameter name="end" transfer-ownership="none">
-          <type name="int" c:type="gint"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="value_set_mini_object"
-              c:identifier="gst_value_set_mini_object"
-              doc="Set the contents of a %GST_TYPE_MINI_OBJECT derived #GValue to
-The caller retains ownership of the reference.">
-      <return-value transfer-ownership="none">
-        <type name="none" c:type="void"/>
-      </return-value>
-      <parameters>
-        <parameter name="value" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-        <parameter name="mini_object" transfer-ownership="none">
-          <type name="MiniObject" c:type="GstMiniObject*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="value_set_structure"
-              c:identifier="gst_value_set_structure"
-              doc="Sets the contents of @value to @structure.  The actual"
-              version="0.10.15">
-      <return-value transfer-ownership="none">
-        <type name="none" c:type="void"/>
-      </return-value>
-      <parameters>
-        <parameter name="value" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-        <parameter name="structure" transfer-ownership="none">
-          <type name="Structure" c:type="GstStructure*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="value_subtract"
-              c:identifier="gst_value_subtract"
-              doc="Subtracts @subtrahend from @minuend and stores the result in @dest.
-Note that this means subtraction as in sets, not as in mathematics.">
-      <return-value transfer-ownership="none">
-        <type name="boolean" c:type="gboolean"/>
-      </return-value>
-      <parameters>
-        <parameter name="dest" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-        <parameter name="minuend" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-        <parameter name="subtrahend" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="value_take_mini_object"
-              c:identifier="gst_value_take_mini_object"
-              doc="Set the contents of a %GST_TYPE_MINI_OBJECT derived #GValue to
-Takes over the ownership of the caller&apos;s reference to @mini_object;
-the caller doesn&apos;t have to unref it any more.">
-      <return-value transfer-ownership="none">
-        <type name="none" c:type="void"/>
-      </return-value>
-      <parameters>
-        <parameter name="value" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-        <parameter name="mini_object" transfer-ownership="none">
-          <type name="MiniObject" c:type="GstMiniObject*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="value_union"
-              c:identifier="gst_value_union"
-              doc="Creates a GValue corresponding to the union of @value1 and @value2.">
-      <return-value transfer-ownership="none">
-        <type name="boolean" c:type="gboolean"/>
-      </return-value>
-      <parameters>
-        <parameter name="dest" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-        <parameter name="value1" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-        <parameter name="value2" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="version"
-              c:identifier="gst_version"
-              doc="Gets the version number of the GStreamer library.">
-      <return-value transfer-ownership="none">
-        <type name="none" c:type="void"/>
-      </return-value>
-      <parameters>
-        <parameter name="major" direction="out" transfer-ownership="full">
-          <type name="uint" c:type="guint*"/>
-        </parameter>
-        <parameter name="minor" direction="out" transfer-ownership="full">
-          <type name="uint" c:type="guint*"/>
-        </parameter>
-        <parameter name="micro" direction="out" transfer-ownership="full">
-          <type name="uint" c:type="guint*"/>
-        </parameter>
-        <parameter name="nano" direction="out" transfer-ownership="full">
-          <type name="uint" c:type="guint*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="version_string"
-              c:identifier="gst_version_string"
-              doc="This function returns a string that is useful for describing this version">
-      <return-value transfer-ownership="full">
-        <type name="utf8" c:type="gchar*"/>
-      </return-value>
-    </function>
-  </namespace>
-</repository>
diff --git a/basis/gstreamer/authors.txt b/basis/gstreamer/authors.txt
deleted file mode 100644 (file)
index ce9bcc8..0000000
+++ /dev/null
@@ -1 +0,0 @@
-Anton Gorenko
\ No newline at end of file
diff --git a/basis/gstreamer/ffi/ffi.factor b/basis/gstreamer/ffi/ffi.factor
deleted file mode 100644 (file)
index ac31e7d..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-! Copyright (C) 2010 Anton Gorenko.
-! See http://factorcode.org/license.txt for BSD license.
-USING: alien alien.syntax alien.libraries combinators kernel
-system
-gobject-introspection glib.ffi gmodule.ffi gobject.ffi ;
-EXCLUDE: alien.c-types => pointer ;
-IN: gstreamer.ffi
-
-<<
-"gstreamer" {
-    { [ os winnt? ] [ drop ] }
-    { [ os macosx? ] [ drop ] }
-    { [ os unix? ] [ "libgstreamer-0.10.so" cdecl add-library ] }
-} cond
->>
-
-TYPEDEF: gpointer GstClockID
-TYPEDEF: guint64 GstClockTime
-TYPEDEF: gint64 GstClockTimeDiff
-
-! types from libxml2
-TYPEDEF: void* xmlNodePtr
-TYPEDEF: void* xmlDocPtr
-TYPEDEF: void* xmlNsPtr
-
-GIR: vocab:gstreamer/Gst-0.10.gir
-
diff --git a/basis/gstreamer/gstreamer.factor b/basis/gstreamer/gstreamer.factor
deleted file mode 100644 (file)
index 174fbc6..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-! Copyright (C) 2010 Anton Gorenko.
-! See http://factorcode.org/license.txt for BSD license.
-USING: gstreamer.ffi ;
-IN: gstreamer
-
diff --git a/basis/gstreamer/summary.txt b/basis/gstreamer/summary.txt
deleted file mode 100644 (file)
index 4094ff9..0000000
+++ /dev/null
@@ -1 +0,0 @@
-GStreamer binding
diff --git a/basis/gstreamer/tags.txt b/basis/gstreamer/tags.txt
deleted file mode 100755 (executable)
index bb863cf..0000000
+++ /dev/null
@@ -1 +0,0 @@
-bindings
index 06f7473aed44adb91bc35194edb60b4944aad3f5..3028dc70c8ce9ff043893785ceff6e53123acba3 100644 (file)
@@ -94,7 +94,7 @@ prepare-test-file
     test-file now
     [ set-file-access-time ] 2keep
     [ file-info accessed>> ]
-    [ [ [ truncate >integer ] change-second ] bi@ ] bi* =
+    [ [ [ truncate >integer ] change-second >gmt ] bi@ ] bi* =
 ] unit-test
 
 [ t ]
@@ -102,7 +102,7 @@ prepare-test-file
     test-file now
     [ set-file-modified-time ] 2keep
     [ file-info modified>> ]
-    [ [ [ truncate >integer ] change-second ] bi@ ] bi* =
+    [ [ [ truncate >integer ] change-second >gmt ] bi@ ] bi* =
 ] unit-test
 
 [ t ]
@@ -110,7 +110,7 @@ prepare-test-file
     test-file now [ dup 2array set-file-times ] 2keep
     [ file-info [ modified>> ] [ accessed>> ] bi ] dip
     3array
-    [ [ truncate >integer ] change-second ] map all-equal?
+    [ [ truncate >integer ] change-second >gmt ] map all-equal?
 ] unit-test
 
 [ ] [ test-file f now 2array set-file-times ] unit-test
index b8277412091d755b3e9947d6cbfd407bf677d1a2..3996a475ba37110ca58f01e3017fbfae2fbdd45b 100644 (file)
@@ -103,7 +103,7 @@ USING: math.matrices math.vectors tools.test math ;
 [ { 1 0 0 } ] [ { 0 1 0 } { 0 0 1 } cross ] unit-test
 [ { 0 1 0 } ] [ { 0 0 1 } { 1 0 0 } cross ] unit-test
 [ { 0.0 -0.707 0.707 } ] [ { 1.0 0.0 0.0 } { 0.0 0.707 0.707 } cross ] unit-test
-
+[ { 0 -2 2 } ] [ { -1 -1 -1 } { 1 -1 -1 } cross ] unit-test
 [ { 1 0 0 } ] [ { 1 1 0 } { 1 0 0 } proj ] unit-test
 
 [ { { 4181 6765 } { 6765 10946 } } ]
index 216d2c31bbb142bd7d104ba60abc1540d098d32d..35d6f380cbda6d7e18dceae5c6db9109962632fb 100644 (file)
@@ -114,6 +114,9 @@ IN: math.matrices
     [ [ { 1 2 0 } vshuffle ] [ { 2 0 1 } vshuffle ] bi* v* ]
     [ [ { 2 0 1 } vshuffle ] [ { 1 2 0 } vshuffle ] bi* v* ] 2bi v- ; inline
 
+:: normal ( vec1 vec2 vec3 -- vec4 )
+    vec2 vec1 v- vec3 vec1 v- cross normalize ; inline
+
 : proj ( v u -- w )
     [ [ v. ] [ norm-sq ] bi / ] keep n*v ;
 
index 3b8ae7d2b4ed9fdf5e8633ff72af29ff2683d366..5a0a98107cfa2baa76b9cc883d52449aaf29ccd6 100644 (file)
@@ -616,10 +616,14 @@ STRUCT: simd-struct
 
 ! Test cross product
 [ float-4{ 0.0 0.0 1.0 0.0 } ] [ float-4{ 1.0 0.0 0.0 0.0 } float-4{ 0.0 1.0 0.0 0.0 } cross ] unit-test
+[ float-4{ 0.0 0.0 1.0 0.0 } ] [ float-4{ 1.0 0.0 0.0 0.0 } float-4{ 0.0 1.0 0.0 0.0 } [ { float-4 float-4 } declare cross ] compile-call ] unit-test
 [ float-4{ 0.0 -1.0 0.0 0.0 } ] [ float-4{ 1.0 0.0 0.0 0.0 } float-4{ 0.0 0.0 1.0 0.0 } cross ] unit-test
+[ float-4{ 0.0 -1.0 0.0 0.0 } ] [ float-4{ 1.0 0.0 0.0 0.0 } float-4{ 0.0 0.0 1.0 0.0 } [ { float-4 float-4 } declare cross ] compile-call ] unit-test
 
 [ double-4{ 0.0 0.0 1.0 0.0 } ] [ double-4{ 1.0 0.0 0.0 0.0 } double-4{ 0.0 1.0 0.0 0.0 } cross ] unit-test
+[ double-4{ 0.0 0.0 1.0 0.0 } ] [ double-4{ 1.0 0.0 0.0 0.0 } double-4{ 0.0 1.0 0.0 0.0 } [ { double-4 double-4 } declare cross ] compile-call ] unit-test
 [ double-4{ 0.0 -1.0 0.0 0.0 } ] [ double-4{ 1.0 0.0 0.0 0.0 } double-4{ 0.0 0.0 1.0 0.0 } cross ] unit-test
+[ double-4{ 0.0 -1.0 0.0 0.0 } ] [ double-4{ 1.0 0.0 0.0 0.0 } double-4{ 0.0 0.0 1.0 0.0 } [ { double-4 double-4 } declare cross ] compile-call ] unit-test
 
 ! CSSA bug
 [ 4000000 ] [
index 2488f568dacb004a214d3fcb2764255c6b58d88a..d53f50c6d113f320cd6ac69c153e1e6367fb5966 100644 (file)
@@ -1,7 +1,5 @@
-! Copyright (C) 2008, 2009 Doug Coleman, Daniel Ehrenberg
-! See http://factorcode.org/license.txt for BSD license.
-USING: regexp tools.test kernel sequences regexp.parser regexp.private
-eval strings multiline accessors ;
+USING: arrays regexp tools.test kernel sequences regexp.parser
+regexp.private eval strings multiline accessors ;
 IN: regexp-tests
 
 [ f ] [ "b" "a*" <regexp> matches? ] unit-test
@@ -241,6 +239,9 @@ IN: regexp-tests
 [ t ] [ 3 "xabc" R/ abc/r match-index-from >boolean ] unit-test
 [ t ] [ 3 "xabc" R/ a[bB][cC]/r match-index-from >boolean ] unit-test
 
+[ 2 ] [ 0 "llamallol" R/ ll/ match-index-from ] unit-test
+[ 5 ] [ 8 "lolmallol" R/ lol/r match-index-from ] unit-test
+
 [ t ] [ "s@f" "[a-z.-]@[a-z]" <regexp> matches? ] unit-test
 [ f ] [ "a" "[a-z.-]@[a-z]" <regexp> matches? ] unit-test
 [ t ] [ ".o" "\\.[a-z]" <regexp> matches? ] unit-test
@@ -272,6 +273,10 @@ IN: regexp-tests
 
 [ "b" ] [ "aaaaaaaaaaaaaaaaaaaaaaab" "((a*)*b)*b" <regexp> first-match >string ] unit-test
 
+[ T{ slice { from 5 } { to 10 } { seq "hellohello" } } ]
+[ "hellohello" R/ hello/r first-match ]
+unit-test
+
 [ { "1" "2" "3" "4" } ]
 [ "1ABC2DEF3GHI4" R/ [A-Z]+/ re-split [ >string ] map ] unit-test
 
@@ -282,18 +287,52 @@ IN: regexp-tests
 
 [ { "a" "" } ] [ "a=" R/ =/ re-split [ >string ] map ] unit-test
 
+[ { "he" "o" } ] [ "hello" R/ l+/ re-split [ >string ] map ] unit-test
+
+[ { "h" "llo" } ] [ "hello" R/ e+/ re-split [ >string ] map ] unit-test
+
+[ { "" "h" "" "l" "l" "o" "" } ] [ "hello" R/ e*/ re-split [ >string ] map ] unit-test
+
+[ { { 0 5 "hellohello" } { 5 10 "hellohello" } } ]
+[ "hellohello" R/ hello/ [ 3array ] map-matches ]
+unit-test
+
+[ { { 5 10 "hellohello" } { 0 5 "hellohello" } } ]
+[ "hellohello" R/ hello/r [ 3array ] map-matches ]
+unit-test
+
 [ { "ABC" "DEF" "GHI" } ]
 [ "1ABC2DEF3GHI4" R/ [A-Z]+/ all-matching-subseqs ] unit-test
 
-[ 3 ]
-[ "1ABC2DEF3GHI4" R/ [A-Z]+/ count-matches ] unit-test
+[ { "ee" "e" } ] [ "heellohello" R/ e+/ all-matching-subseqs ] unit-test
+[ { "e" "ee" } ] [ "heellohello" R/ e+/r all-matching-subseqs ] unit-test
+
+[ 3 ] [ "1ABC2DEF3GHI4" R/ [A-Z]+/ count-matches ] unit-test
+
+[ 3 ] [ "1ABC2DEF3GHI4" R/ [A-Z]+/r count-matches ] unit-test
+
+[ 1 ] [ "" R/ / count-matches ] unit-test
+
+[ 1 ] [ "" R/ /r count-matches ] unit-test
+
+[ 0 ] [ "123" R/ [A-Z]+/ count-matches ] unit-test
+
+[ 0 ] [ "123" R/ [A-Z]+/r count-matches ] unit-test
+
+[ 6 ] [ "hello" R/ e*/ count-matches ] unit-test
+
+[ 6 ] [ "hello" R/ e*/r count-matches ] unit-test
+
+[ 11 ] [ "hello world" R/ l*/ count-matches ] unit-test
+
+[ 11 ] [ "hello world" R/ l*/r count-matches ] unit-test
+
+[ 1 ] [ "hello" R/ e+/ count-matches ] unit-test
 
-[ 0 ]
-[ "123" R/ [A-Z]+/ count-matches ] unit-test
+[ 2 ] [ "hello world" R/ l+/r count-matches ] unit-test
 
-[ "1.2.3.4." ]
-[ "1ABC2DEF3GHI4JK" R/ [A-Z]+/ "." re-replace ] unit-test
-  
+[ "1.2.3.4." ] [ "1ABC2DEF3GHI4JK" R/ [A-Z]+/ "." re-replace ] unit-test
+[ "XhXXlXlXoX XwXoXrXlXdX" ] [ "hello world" R/ e*/ "X" re-replace ] unit-test
 [ "-- title --" ] [ "== title ==" R/ =/ "-" re-replace ] unit-test
 
 [ "" ] [ "ab" "a(?!b)" <regexp> first-match >string ] unit-test
index bbfe44096749edda70412c5235c722e3997da19a..de0c1a03a7afdb867d2ea3d3fe145a184006c1ec 100644 (file)
@@ -50,33 +50,49 @@ PRIVATE>
 
 <PRIVATE
 
-:: (next-match) ( i string regexp quot: ( i string regexp -- j ) reverse? -- i start end ? )
-    i string regexp quot call dup [| j |
-        j i j
-        reverse? [ swap [ 1 + ] bi@ ] when
-        string
-    ] [ drop f f f f ] if ; inline
-
 : search-range ( i string reverse? -- seq )
-    [ drop dup 1 + -1 ] [ length 1 ] if range boa ; inline
+    [ drop -1 ] [ length ] if [a,b] ; inline
+
+:: (next-match) ( i string regexp quot: ( i string regexp -- j ) reverse? -- start end ? )
+    i string regexp quot call dup
+    [| j | reverse? [ j i ] [ i j ] if string ] [ drop f f f ] if ; inline
 
-:: next-match ( i string regexp quot: ( i string regexp -- j ) reverse? -- start end ? )
-    f f f f
+:: next-match ( i string regexp quot: ( i string regexp -- j ) reverse? -- start end ? )
+    f f f
     i string reverse? search-range
-    [ [ 2drop 2drop ] dip string regexp quot reverse? (next-match) dup ] find 2drop ; inline
+    [ [ 3drop ] dip string regexp quot reverse? (next-match) dup ] find 2drop ; inline
 
-: do-next-match ( i string regexp -- start end ? )
+: do-next-match ( i string regexp -- start end ? )
     dup next-match>>
-    execute( i string regexp -- i start end ? ) ; inline
-
-:: (each-match) ( ... i string regexp quot: ( ... start end string -- ... ) -- ... )
-    i string regexp do-next-match [| i' start end |
-        start end string quot call
-        i' string regexp quot (each-match)
-    ] [ 3drop ] if ; inline recursive
+    execute( i string regexp -- start end ? ) ; inline
+
+:: (each-match-forward) ( ... i string regexp quot: ( ... start end string -- ... ) -- ... )
+    i string length <= [
+        i string regexp do-next-match [| start end |
+            start end string quot call
+            start end eq? [ end 1 +  ] [ end ] if
+            string regexp quot (each-match-forward)
+        ] [ 2drop ] if
+    ] when ; inline recursive
+
+:: (each-match-backward) ( ... i string regexp quot: ( ... start end string -- ... ) -- ... )
+    i -1 >= [
+        i string regexp do-next-match [| start end |
+            start 1 + end 1 + string quot call
+            start end eq? [ start 1 - ] [ start ] if
+            string regexp quot (each-match-backward)
+        ] [ 2drop ] if
+    ] when ; inline recursive
+
+: (each-match) ( ... i string regexp quot: ( ... start end string -- ... ) -- ... )
+    over reverse-regexp? [ (each-match-backward) ] [ (each-match-forward) ] if ; inline
+
+GENERIC: match-iterator-start ( string regexp -- start )
+M: regexp match-iterator-start 2drop 0 ;
+M: reverse-regexp match-iterator-start drop length ;
 
 : prepare-match-iterator ( string regexp -- i string regexp )
-    [ check-string ] dip [ end/start nip ] 2keep ; inline
+    [ check-string ] dip [ match-iterator-start ] 2keep ; inline
 
 PRIVATE>
 
@@ -107,12 +123,14 @@ PRIVATE>
 
 PRIVATE>
 
-: first-match ( string regexp -- slice/f )
-    [ prepare-match-iterator do-next-match ] [ drop ] 2bi
-    '[ _ slice boa nip ] [ 3drop f ] if ;
+:: first-match ( string regexp -- slice/f )
+    string regexp prepare-match-iterator do-next-match [
+        regexp reverse-regexp? [ [ 1 + ] bi@ ] when
+        string slice boa
+    ] [ 2drop f ] if ;
 
 : re-contains? ( string regexp -- ? )
-    prepare-match-iterator do-next-match [ 3drop ] dip >boolean ;
+    prepare-match-iterator do-next-match [ 2drop ] dip >boolean ;
 
 : re-split ( string regexp -- seq )
     [ slice boa ] (re-split) ;
@@ -141,7 +159,7 @@ M: reverse-regexp compile-regexp ( regexp -- regexp )
 
 DEFER: compile-next-match
 
-: next-initial-word ( i string regexp -- start end string )
+: next-initial-word ( i string regexp -- start end string )
     [ compile-next-match ] with-compilation-unit do-next-match ;
 
 : compile-next-match ( regexp -- regexp )
@@ -149,7 +167,7 @@ DEFER: compile-next-match
         dup \ next-initial-word = [
             drop _ [ compile-regexp dfa>> def>> ] [ reverse-regexp? ] bi
             '[ { array-capacity string regexp } declare _ _ next-match ]
-            (( i string regexp -- start end string )) define-temp
+            (( i string regexp -- start end string )) define-temp
         ] when
     ] change-next-match ;
 
index fe72c6ddf5a3586b45921966f2fba706e8f9261c..da74a40a88d50439d85096628d36e79320dfa60a 100644 (file)
@@ -230,8 +230,8 @@ CONSTANT: poll-fd-events
 
 HOOK: init-io-event-source io-backend ( -- )
 
-M: c-io-backend init-io-event-source
-    ;
+M: f init-io-event-source ;
+M: c-io-backend init-io-event-source ;
 
 M: object init-io-event-source
     GSourceFuncs malloc-struct &free
index 5e91e5bfb7d44a00b088ccfcba25014d8bd16716..0c1aecad5270b61f6ab5c8b2a8a23d3ef537a68a 100644 (file)
@@ -106,12 +106,12 @@ M: f >label drop <gadget> ;
         { 5 5 } >>gap ; inline
 PRIVATE>
 
-: label-on-left ( gadget label -- button )
+: label-on-left ( gadget label -- track )
     label-on-left/right
         swap >label f track-add
         swap 1 track-add ;
 
-: label-on-right ( label gadget -- button )
+: label-on-right ( label gadget -- track )
     label-on-left/right
         swap f track-add
         swap >label 1 track-add ;
index 5aec400fbe1eae4c71c3a86113486e7c4a2b6725..722cdd998a43533fe40f429dcab574228fceae19 100644 (file)
@@ -273,8 +273,14 @@ test-server-slot-values
 ! Dynamically changing inheritance hierarchy
 TUPLE: electronic-device ;
 
+: computer?' ( a -- b ) computer? ;
+
+[ t ] [ laptop new computer?' ] unit-test
+
 [ ] [ "IN: classes.tuple.tests TUPLE: computer < electronic-device cpu ram ; C: <computer> computer C: <laptop> laptop C: <server> server" eval( -- ) ] unit-test
 
+[ t ] [ laptop new computer?' ] unit-test
+
 [ f ] [ electronic-device laptop class<= ] unit-test
 [ t ] [ server electronic-device class<= ] unit-test
 [ t ] [ laptop server class-or electronic-device class<= ] unit-test
diff --git a/extra/clutter/Clutter-1.0.gir b/extra/clutter/Clutter-1.0.gir
new file mode 100644 (file)
index 0000000..fd67f1e
--- /dev/null
@@ -0,0 +1,27859 @@
+<?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.0"
+            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="ClutterJson" version="1.0"/>
+  <include name="Cogl" version="1.0"/>
+  <include name="GL" version="1.0"/>
+  <include name="GLib" version="2.0"/>
+  <include name="GObject" version="2.0"/>
+  <include name="Pango" version="1.0"/>
+  <include name="PangoCairo" version="1.0"/>
+  <include name="PangoFT2" version="1.0"/>
+  <include name="cairo" version="1.0"/>
+  <include name="fontconfig" version="2.0"/>
+  <include name="freetype2" version="2.0"/>
+  <package name="gobject-2.0"/>
+  <package name="pango"/>
+  <package name="pangocairo"/>
+  <c:include name="clutter/clutter.h"/>
+  <namespace name="Clutter"
+             version="1.0"
+             shared-library="libclutter-glx-1.0.so.0"
+             c:prefix="Clutter">
+    <constant name="0" value="48">
+      <type name="int"/>
+    </constant>
+    <constant name="1" value="49">
+      <type name="int"/>
+    </constant>
+    <constant name="2" value="50">
+      <type name="int"/>
+    </constant>
+    <constant name="3" value="51">
+      <type name="int"/>
+    </constant>
+    <constant name="3270_AltCursor" value="64784">
+      <type name="int"/>
+    </constant>
+    <constant name="3270_Attn" value="64782">
+      <type name="int"/>
+    </constant>
+    <constant name="3270_BackTab" value="64773">
+      <type name="int"/>
+    </constant>
+    <constant name="3270_ChangeScreen" value="64793">
+      <type name="int"/>
+    </constant>
+    <constant name="3270_Copy" value="64789">
+      <type name="int"/>
+    </constant>
+    <constant name="3270_CursorBlink" value="64783">
+      <type name="int"/>
+    </constant>
+    <constant name="3270_CursorSelect" value="64796">
+      <type name="int"/>
+    </constant>
+    <constant name="3270_DeleteWord" value="64794">
+      <type name="int"/>
+    </constant>
+    <constant name="3270_Duplicate" value="64769">
+      <type name="int"/>
+    </constant>
+    <constant name="3270_Enter" value="64798">
+      <type name="int"/>
+    </constant>
+    <constant name="3270_EraseEOF" value="64774">
+      <type name="int"/>
+    </constant>
+    <constant name="3270_EraseInput" value="64775">
+      <type name="int"/>
+    </constant>
+    <constant name="3270_ExSelect" value="64795">
+      <type name="int"/>
+    </constant>
+    <constant name="3270_FieldMark" value="64770">
+      <type name="int"/>
+    </constant>
+    <constant name="3270_Ident" value="64787">
+      <type name="int"/>
+    </constant>
+    <constant name="3270_Jump" value="64786">
+      <type name="int"/>
+    </constant>
+    <constant name="3270_KeyClick" value="64785">
+      <type name="int"/>
+    </constant>
+    <constant name="3270_Left2" value="64772">
+      <type name="int"/>
+    </constant>
+    <constant name="3270_PA1" value="64778">
+      <type name="int"/>
+    </constant>
+    <constant name="3270_PA2" value="64779">
+      <type name="int"/>
+    </constant>
+    <constant name="3270_PA3" value="64780">
+      <type name="int"/>
+    </constant>
+    <constant name="3270_Play" value="64790">
+      <type name="int"/>
+    </constant>
+    <constant name="3270_PrintScreen" value="64797">
+      <type name="int"/>
+    </constant>
+    <constant name="3270_Quit" value="64777">
+      <type name="int"/>
+    </constant>
+    <constant name="3270_Record" value="64792">
+      <type name="int"/>
+    </constant>
+    <constant name="3270_Reset" value="64776">
+      <type name="int"/>
+    </constant>
+    <constant name="3270_Right2" value="64771">
+      <type name="int"/>
+    </constant>
+    <constant name="3270_Rule" value="64788">
+      <type name="int"/>
+    </constant>
+    <constant name="3270_Setup" value="64791">
+      <type name="int"/>
+    </constant>
+    <constant name="3270_Test" value="64781">
+      <type name="int"/>
+    </constant>
+    <constant name="4" value="52">
+      <type name="int"/>
+    </constant>
+    <constant name="5" value="53">
+      <type name="int"/>
+    </constant>
+    <constant name="6" value="54">
+      <type name="int"/>
+    </constant>
+    <constant name="7" value="55">
+      <type name="int"/>
+    </constant>
+    <constant name="8" value="56">
+      <type name="int"/>
+    </constant>
+    <constant name="9" value="57">
+      <type name="int"/>
+    </constant>
+    <constant name="A" value="65">
+      <type name="int"/>
+    </constant>
+    <constant name="AE" value="198">
+      <type name="int"/>
+    </constant>
+    <constant name="Aacute" value="193">
+      <type name="int"/>
+    </constant>
+    <constant name="Abelowdot" value="16785056">
+      <type name="int"/>
+    </constant>
+    <constant name="Abreve" value="451">
+      <type name="int"/>
+    </constant>
+    <constant name="Abreveacute" value="16785070">
+      <type name="int"/>
+    </constant>
+    <constant name="Abrevebelowdot" value="16785078">
+      <type name="int"/>
+    </constant>
+    <constant name="Abrevegrave" value="16785072">
+      <type name="int"/>
+    </constant>
+    <constant name="Abrevehook" value="16785074">
+      <type name="int"/>
+    </constant>
+    <constant name="Abrevetilde" value="16785076">
+      <type name="int"/>
+    </constant>
+    <constant name="AccessX_Enable" value="65136">
+      <type name="int"/>
+    </constant>
+    <constant name="AccessX_Feedback_Enable" value="65137">
+      <type name="int"/>
+    </constant>
+    <constant name="Acircumflex" value="194">
+      <type name="int"/>
+    </constant>
+    <constant name="Acircumflexacute" value="16785060">
+      <type name="int"/>
+    </constant>
+    <constant name="Acircumflexbelowdot" value="16785068">
+      <type name="int"/>
+    </constant>
+    <constant name="Acircumflexgrave" value="16785062">
+      <type name="int"/>
+    </constant>
+    <constant name="Acircumflexhook" value="16785064">
+      <type name="int"/>
+    </constant>
+    <constant name="Acircumflextilde" value="16785066">
+      <type name="int"/>
+    </constant>
+    <class name="Actor"
+           c:type="ClutterActor"
+           doc="Base class for actors."
+           parent="GObject.InitiallyUnowned"
+           abstract="1"
+           glib:type-name="ClutterActor"
+           glib:get-type="clutter_actor_get_type"
+           glib:type-struct="ActorClass">
+      <implements name="Scriptable"/>
+      <virtual-method name="show_all" invoker="show_all">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="hide_all" invoker="hide_all">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="map"
+                      invoker="map"
+                      doc="The ::map virtual functon must be overridden in order to call
+clutter_actor_map() on any child actors if the actor is not a
+#ClutterContainer.  When overriding, it is mandatory to chain up
+to the parent implementation."
+                      version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="unmap"
+                      invoker="unmap"
+                      doc="The ::unmap virtual functon must be overridden in order to call
+clutter_actor_unmap() on any child actors if the actor is not a
+#ClutterContainer.  When overriding, it is mandatory to chain up
+to the parent implementation."
+                      version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_preferred_width" invoker="get_preferred_width">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="for_height" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+          <parameter name="min_width_p"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <type name="float" c:type="gfloat*"/>
+          </parameter>
+          <parameter name="natural_width_p"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <type name="float" c:type="gfloat*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_preferred_height"
+                      invoker="get_preferred_height">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="for_width" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+          <parameter name="min_height_p"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <type name="float" c:type="gfloat*"/>
+          </parameter>
+          <parameter name="natural_height_p"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <type name="float" c:type="gfloat*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="allocate" invoker="allocate">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="box" transfer-ownership="none">
+            <type name="ActorBox" c:type="ClutterActorBox*"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="AllocationFlags" c:type="ClutterAllocationFlags"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="apply_transform">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="matrix" transfer-ownership="none">
+            <type name="Cogl.Matrix" c:type="CoglMatrix*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="set_flags"
+              c:identifier="clutter_actor_set_flags"
+              doc="Sets @flags on @self
+This function will emit notifications for the changed properties"
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="ActorFlags" c:type="ClutterActorFlags"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="unset_flags"
+              c:identifier="clutter_actor_unset_flags"
+              doc="Unsets @flags on @self
+This function will emit notifications for the changed properties"
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="ActorFlags" c:type="ClutterActorFlags"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_flags"
+              c:identifier="clutter_actor_get_flags"
+              doc="Retrieves the flags set on @self"
+              version="1.0">
+        <return-value transfer-ownership="full">
+          <type name="ActorFlags" c:type="ClutterActorFlags"/>
+        </return-value>
+      </method>
+      <method name="show"
+              c:identifier="clutter_actor_show"
+              doc="Flags an actor to be displayed. An actor that isn&apos;t shown will not
+be rendered on the stage.
+Actors are visible by default.
+If this function is called on an actor without a parent, the
+#ClutterActor:show-on-set-parent will be set to %TRUE as a side
+effect.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="show_all"
+              c:identifier="clutter_actor_show_all"
+              doc="Calls clutter_actor_show() on all children of an actor (if any)."
+              version="0.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="hide"
+              c:identifier="clutter_actor_hide"
+              doc="Flags an actor to be hidden. A hidden actor will not be
+rendered on the stage.
+Actors are visible by default.
+If this function is called on an actor without a parent, the
+#ClutterActor:show-on-set-parent property will be set to %FALSE
+as a side-effect.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="hide_all"
+              c:identifier="clutter_actor_hide_all"
+              doc="Calls clutter_actor_hide() on all child actors (if any)."
+              version="0.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="realize"
+              c:identifier="clutter_actor_realize"
+              doc="Realization informs the actor that it is attached to a stage. It
+can use this to allocate resources if it wanted to delay allocation
+until it would be rendered. However it is perfectly acceptable for
+an actor to create resources before being realized because Clutter
+only ever has a single rendering context so that actor is free to
+be moved from one stage to another.
+This function does nothing if the actor is already realized.
+Because a realized actor must have realized parent actors, calling
+clutter_actor_realize() will also realize all parents of the actor.
+This function does not realize child actors, except in the special
+case that realizing the stage, when the stage is visible, will
+suddenly map (and thus realize) the children of the stage.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="unrealize"
+              c:identifier="clutter_actor_unrealize"
+              doc="Unrealization informs the actor that it may be being destroyed or
+moved to another stage. The actor may want to destroy any
+underlying graphics resources at this point. However it is
+perfectly acceptable for it to retain the resources until the actor
+is destroyed because Clutter only ever uses a single rendering
+context and all of the graphics resources are valid on any stage.
+Because mapped actors must be realized, actors may not be
+unrealized if they are mapped. This function hides the actor to be
+sure it isn&apos;t mapped, an application-visible side effect that you
+may not be expecting.
+This function should not really be in the public API, because
+there isn&apos;t a good reason to call it. ClutterActor will already
+unrealize things for you when it&apos;s important to do so.
+If you were using clutter_actor_unrealize() in a dispose
+implementation, then don&apos;t, just chain up to ClutterActor&apos;s
+dispose.
+If you were using clutter_actor_unrealize() to implement
+unrealizing children of your container, then don&apos;t, ClutterActor
+will already take care of that.
+If you were using clutter_actor_unrealize() to re-realize to
+create your resources in a different way, then use
+_clutter_actor_rerealize() (inside Clutter) or just call your
+code that recreates your resources directly (outside Clutter).">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="map"
+              c:identifier="clutter_actor_map"
+              doc="Sets the %CLUTTER_ACTOR_MAPPED flag on the actor and possibly maps
+and realizes its children if they are visible. Does nothing if the
+actor is not visible.
+#ClutterActor::map virtual function in an actor and you need to map
+the children of that actor. It is not necessary to call this
+if you implement #ClutterContainer because the default implementation
+will automatically map children of containers.
+When overriding map, it is mandatory to chain up to the parent
+implementation."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="unmap"
+              c:identifier="clutter_actor_unmap"
+              doc="Unsets the %CLUTTER_ACTOR_MAPPED flag on the actor and possibly
+unmaps its children if they were mapped.
+#ClutterActor::unmap virtual function in an actor and you need to
+unmap the children of that actor. It is not necessary to call this
+if you implement #ClutterContainer because the default implementation
+will automatically unmap children of containers.
+When overriding unmap, it is mandatory to chain up to the parent
+implementation."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="paint"
+              c:identifier="clutter_actor_paint"
+              doc="Renders the actor to display.
+This function should not be called directly by applications.
+Call clutter_actor_queue_redraw() to queue paints, instead.
+This function will emit the #ClutterActor::paint signal.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="queue_redraw"
+              c:identifier="clutter_actor_queue_redraw"
+              doc="Queues up a redraw of an actor and any children. The redraw occurs
+once the main loop becomes idle (after the current batch of events
+has been processed, roughly).
+Applications rarely need to call this, as redraws are handled
+automatically by modification functions.
+This function will not do anything if @self is not visible, or
+if the actor is inside an invisible part of the scenegraph.
+Also be aware that painting is a NOP for actors with an opacity of
+0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="queue_relayout"
+              c:identifier="clutter_actor_queue_relayout"
+              doc="Indicates that the actor&apos;s size request or other layout-affecting
+properties may have changed. This function is used inside #ClutterActor
+subclass implementations, not by applications directly.
+Queueing a new layout automatically queues a redraw as well."
+              version="0.8">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="destroy"
+              c:identifier="clutter_actor_destroy"
+              doc="Destroys an actor.  When an actor is destroyed, it will break any
+references it holds to other objects.  If the actor is inside a
+container, the actor will be removed.
+When you destroy a container, its children will be destroyed as well.
+clutter_stage_get_default().">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="set_request_mode"
+              c:identifier="clutter_actor_set_request_mode"
+              doc="Sets the geometry request mode of @self.
+The @mode determines the order for invoking
+clutter_actor_get_preferred_width() and
+clutter_actor_get_preferred_height()"
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="mode" transfer-ownership="none">
+            <type name="RequestMode" c:type="ClutterRequestMode"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_request_mode"
+              c:identifier="clutter_actor_get_request_mode"
+              doc="Retrieves the geometry request mode of @self"
+              version="1.2">
+        <return-value transfer-ownership="full">
+          <type name="RequestMode" c:type="ClutterRequestMode"/>
+        </return-value>
+      </method>
+      <method name="get_preferred_width"
+              c:identifier="clutter_actor_get_preferred_width"
+              doc="Computes the requested minimum and natural widths for an actor,
+optionally depending on the specified height, or if they are
+already computed, returns the cached values.
+An actor may not get its request - depending on the layout
+manager that&apos;s in effect.
+A request should not incorporate the actor&apos;s scale or anchor point;
+those transformations do not affect layout, only rendering."
+              version="0.8">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="for_height"
+                     transfer-ownership="none"
+                     doc=" or a negative value to indicate that no height is defined">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+          <parameter name="min_width_p"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="return location for minimum width, or %NULL">
+            <type name="float" c:type="gfloat*"/>
+          </parameter>
+          <parameter name="natural_width_p"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="return location for the natural width, or %NULL">
+            <type name="float" c:type="gfloat*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_preferred_height"
+              c:identifier="clutter_actor_get_preferred_height"
+              doc="Computes the requested minimum and natural heights for an actor,
+or if they are already computed, returns the cached values.
+An actor may not get its request - depending on the layout
+manager that&apos;s in effect.
+A request should not incorporate the actor&apos;s scale or anchor point;
+those transformations do not affect layout, only rendering."
+              version="0.8">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="for_width"
+                     transfer-ownership="none"
+                     doc=" or a negative value to indicate that no width is defined">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+          <parameter name="min_height_p"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="return location for minimum height, or %NULL">
+            <type name="float" c:type="gfloat*"/>
+          </parameter>
+          <parameter name="natural_height_p"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="return location for natural height, or %NULL">
+            <type name="float" c:type="gfloat*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_preferred_size"
+              c:identifier="clutter_actor_get_preferred_size"
+              doc="Computes the preferred minimum and natural size of an actor, taking into
+account the actor&apos;s geometry management (either height-for-width
+or width-for-height).
+The width and height used to compute the preferred height and preferred
+width are the actor&apos;s natural ones.
+If you need to control the height for the preferred width, or the width for
+the preferred height, you should use clutter_actor_get_preferred_width()
+and clutter_actor_get_preferred_height(), and check the actor&apos;s preferred
+geometry management using the #ClutterActor:request-mode property."
+              version="0.8">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="min_width_p"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="return location for the minimum width, or %NULL">
+            <type name="float" c:type="gfloat*"/>
+          </parameter>
+          <parameter name="min_height_p"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="return location for the minimum height, or %NULL">
+            <type name="float" c:type="gfloat*"/>
+          </parameter>
+          <parameter name="natural_width_p"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="return location for the natural width, or %NULL">
+            <type name="float" c:type="gfloat*"/>
+          </parameter>
+          <parameter name="natural_height_p"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="return location for the natural height, or %NULL">
+            <type name="float" c:type="gfloat*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="allocate"
+              c:identifier="clutter_actor_allocate"
+              doc="Called by the parent of an actor to assign the actor its size.
+Should never be called by applications (except when implementing
+a container or layout manager).
+Actors can know from their allocation box whether they have moved
+with respect to their parent actor. The @flags parameter describes
+additional information about the allocation, for instance whether
+the parent has moved with respect to the stage, for example because
+a grandparent&apos;s origin has moved."
+              version="0.8">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="box" transfer-ownership="none">
+            <type name="ActorBox" c:type="ClutterActorBox*"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="AllocationFlags" c:type="ClutterAllocationFlags"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="allocate_preferred_size"
+              c:identifier="clutter_actor_allocate_preferred_size"
+              doc="Allocates the natural size of @self.
+This function is a utility call for #ClutterActor implementations
+that allocates the actor&apos;s preferred natural size. It can be used
+by fixed layout managers (like #ClutterGroup or so called
+&apos;composite actors&apos;) inside the ClutterActor::allocate
+implementation to give each child exactly how much space it
+requires.
+This function is not meant to be used by applications. It is also
+not meant to be used outside the implementation of the
+ClutterActor::allocate virtual function."
+              version="0.8">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="AllocationFlags" c:type="ClutterAllocationFlags"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="allocate_available_size"
+              c:identifier="clutter_actor_allocate_available_size"
+              doc="Allocates @self taking into account the #ClutterActor&lt;!-- --&gt;&apos;s
+preferred size, but limiting it to the maximum available width
+and height provided.
+This function will do the right thing when dealing with the
+actor&apos;s request mode.
+The implementation of this function is equivalent to:
+|[
+if (request_mode == CLUTTER_REQUEST_HEIGHT_FOR_WIDTH)
+{
+clutter_actor_get_preferred_width (self, available_height,
+&amp;amp;min_width,
+&amp;amp;natural_width);
+width = CLAMP (natural_width, min_width, available_width);
+clutter_actor_get_preferred_height (self, width,
+&amp;amp;min_height,
+&amp;amp;natural_height);
+height = CLAMP (natural_height, min_height, available_height);
+}
+else
+{
+clutter_actor_get_preferred_height (self, available_width,
+&amp;amp;min_height,
+&amp;amp;natural_height);
+height = CLAMP (natural_height, min_height, available_height);
+clutter_actor_get_preferred_width (self, height,
+&amp;amp;min_width,
+&amp;amp;natural_width);
+width = CLAMP (natural_width, min_width, available_width);
+}
+box.x1 = x; box.y1 = y;
+box.x2 = box.x1 + available_width;
+box.y2 = box.y1 + available_height;
+clutter_actor_allocate (self, &amp;amp;box, flags);
+]|
+This function can be used by fluid layout managers to allocate
+an actor&apos;s preferred size without making it bigger than the area
+available for the container."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="x" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+          <parameter name="available_width"
+                     transfer-ownership="none"
+                     doc=" actor&apos;s natural width">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+          <parameter name="available_height"
+                     transfer-ownership="none"
+                     doc=" actor&apos;s natural height">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="AllocationFlags" c:type="ClutterAllocationFlags"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_allocation_box"
+              c:identifier="clutter_actor_get_allocation_box"
+              doc="Gets the layout box an actor has been assigned. The allocation can
+only be assumed valid inside a paint() method; anywhere else, it
+may be out-of-date.
+An allocation does not incorporate the actor&apos;s scale or anchor point;
+those transformations do not affect layout, only rendering.
+&lt;note&gt;Do not call any of the clutter_actor_get_allocation_*() family
+of functions inside the implementation of the get_preferred_width()
+or get_preferred_height() virtual functions.&lt;/note&gt;"
+              version="0.8">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="box"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none"
+                     doc="the function fills this in with the actor&apos;s allocation">
+            <type name="ActorBox" c:type="ClutterActorBox*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_allocation_geometry"
+              c:identifier="clutter_actor_get_allocation_geometry"
+              doc="Gets the layout box an actor has been assigned.  The allocation can
+only be assumed valid inside a paint() method; anywhere else, it
+may be out-of-date.
+An allocation does not incorporate the actor&apos;s scale or anchor point;
+those transformations do not affect layout, only rendering.
+The returned rectangle is in pixels."
+              version="0.8">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="geom"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none"
+                     doc="allocation geometry in pixels">
+            <type name="Geometry" c:type="ClutterGeometry*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_allocation_vertices"
+              c:identifier="clutter_actor_get_allocation_vertices"
+              doc="Calculates the transformed coordinates of the four corners of the
+actor in the plane of @ancestor. The returned vertices relate to
+the #ClutterActorBox coordinates as follows:
+&lt;itemizedlist&gt;
+&lt;listitem&gt;&lt;para&gt;@verts[0] contains (x1, y1)&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;@verts[1] contains (x2, y1)&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;@verts[2] contains (x1, y2)&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;@verts[3] contains (x2, y2)&lt;/para&gt;&lt;/listitem&gt;
+&lt;/itemizedlist&gt;
+If @ancestor is %NULL the ancestor will be the #ClutterStage. In
+this case, the coordinates returned will be the coordinates on
+the stage before the projection is applied. This is different from
+the behaviour of clutter_actor_get_abs_allocation_vertices()."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="ancestor"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="A #ClutterActor to calculate the vertices against, or %NULL to use the default #ClutterStage">
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter name="verts"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none"
+                     doc="return location for an array of 4 #ClutterVertex in which to store the result.">
+            <array c:type="ClutterVertex" fixed-size="4">
+              <type name="Vertex"/>
+            </array>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_geometry"
+              c:identifier="clutter_actor_set_geometry"
+              doc="Sets the actor&apos;s fixed position and forces its minimum and natural
+size, in pixels. This means the untransformed actor will have the
+given geometry. This is the same as calling clutter_actor_set_position()
+and clutter_actor_set_size().">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="geometry" transfer-ownership="none">
+            <type name="Geometry" c:type="ClutterGeometry*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_geometry"
+              c:identifier="clutter_actor_get_geometry"
+              doc="Gets the size and position of an actor relative to its parent
+actor. This is the same as calling clutter_actor_get_position() and
+clutter_actor_get_size(). It tries to &quot;do what you mean&quot; and get the
+requested size and position if the actor&apos;s allocation is invalid.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="geometry"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none"
+                     doc="A location to store actors #ClutterGeometry">
+            <type name="Geometry" c:type="ClutterGeometry*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_size" c:identifier="clutter_actor_set_size">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="width" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+          <parameter name="height" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_size"
+              c:identifier="clutter_actor_get_size"
+              doc="This function tries to &quot;do what you mean&quot; and return
+the size an actor will have. If the actor has a valid
+allocation, the allocation will be returned; otherwise,
+the actors natural size request will be returned.
+If you care whether you get the request vs. the allocation, you
+should probably call a different function like
+clutter_actor_get_allocation_box() or
+clutter_actor_get_preferred_width()."
+              version="0.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="width"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="return location for the width, or %NULL.">
+            <type name="float" c:type="gfloat*"/>
+          </parameter>
+          <parameter name="height"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="return location for the height, or %NULL.">
+            <type name="float" c:type="gfloat*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_transformed_size"
+              c:identifier="clutter_actor_get_transformed_size"
+              doc="Gets the absolute size of an actor in pixels, taking into account the
+scaling factors.
+If the actor has a valid allocation, the allocated size will be used.
+If the actor has not a valid allocation then the preferred size will
+be transformed and returned.
+If you want the transformed allocation, see
+clutter_actor_get_abs_allocation_vertices() instead.
+&lt;note&gt;When the actor (or one of its ancestors) is rotated around the
+X or Y axis, it no longer appears as on the stage as a rectangle, but
+as a generic quadrangle; in that case this function returns the size
+of the smallest rectangle that encapsulates the entire quad. Please
+note that in this case no assumptions can be made about the relative
+position of this envelope to the absolute position of the actor, as
+returned by clutter_actor_get_transformed_position(); if you need this
+information, you need to use clutter_actor_get_abs_allocation_vertices()
+to get the coords of the actual quadrangle.&lt;/note&gt;"
+              version="0.8">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="width"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="return location for the width, or %NULL">
+            <type name="float" c:type="gfloat*"/>
+          </parameter>
+          <parameter name="height"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="return location for the height, or %NULL">
+            <type name="float" c:type="gfloat*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_position" c:identifier="clutter_actor_set_position">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="x" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_position"
+              c:identifier="clutter_actor_get_position"
+              doc="This function tries to &quot;do what you mean&quot; and tell you where the
+actor is, prior to any transformations. Retrieves the fixed
+position of an actor in pixels, if one has been set; otherwise, if
+the allocation is valid, returns the actor&apos;s allocated position;
+otherwise, returns 0,0.
+The returned position is in pixels."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="x"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="return location for the X coordinate, or %NULL">
+            <type name="float" c:type="gfloat*"/>
+          </parameter>
+          <parameter name="y"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="return location for the Y coordinate, or %NULL">
+            <type name="float" c:type="gfloat*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_transformed_position"
+              c:identifier="clutter_actor_get_transformed_position"
+              doc="Gets the absolute position of an actor, in pixels relative to the stage."
+              version="0.8">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="x"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="return location for the X coordinate, or %NULL">
+            <type name="float" c:type="gfloat*"/>
+          </parameter>
+          <parameter name="y"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="return location for the Y coordinate, or %NULL">
+            <type name="float" c:type="gfloat*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_fixed_position_set"
+              c:identifier="clutter_actor_get_fixed_position_set"
+              doc="Checks whether an actor has a fixed position set (and will thus be
+unaffected by any layout manager)."
+              version="0.8">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_fixed_position_set"
+              c:identifier="clutter_actor_set_fixed_position_set"
+              doc="Sets whether an actor has a fixed position set (and will thus be
+unaffected by any layout manager)."
+              version="0.8">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="is_set" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_width"
+              c:identifier="clutter_actor_get_width"
+              doc="Retrieves the width of a #ClutterActor.
+If the actor has a valid allocation, this function will return the
+width of the allocated area given to the actor.
+If the actor does not have a valid allocation, this function will
+return the actor&apos;s natural width, that is the preferred width of
+the actor.
+If you care whether you get the preferred width or the width that
+has been assigned to the actor, you should probably call a different
+function like clutter_actor_get_allocation_box() to retrieve the
+allocated size or clutter_actor_get_preferred_width() to retrieve the
+preferred width.
+If an actor has a fixed width, for instance a width that has been
+assigned using clutter_actor_set_width(), the width returned will
+be the same value.">
+        <return-value transfer-ownership="none">
+          <type name="float" c:type="gfloat"/>
+        </return-value>
+      </method>
+      <method name="get_height"
+              c:identifier="clutter_actor_get_height"
+              doc="Retrieves the height of a #ClutterActor.
+If the actor has a valid allocation, this function will return the
+height of the allocated area given to the actor.
+If the actor does not have a valid allocation, this function will
+return the actor&apos;s natural height, that is the preferred height of
+the actor.
+If you care whether you get the preferred height or the height that
+has been assigned to the actor, you should probably call a different
+function like clutter_actor_get_allocation_box() to retrieve the
+allocated size or clutter_actor_get_preferred_height() to retrieve the
+preferred height.
+If an actor has a fixed height, for instance a height that has been
+assigned using clutter_actor_set_height(), the height returned will
+be the same value.">
+        <return-value transfer-ownership="none">
+          <type name="float" c:type="gfloat"/>
+        </return-value>
+      </method>
+      <method name="set_width" c:identifier="clutter_actor_set_width">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="width" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_height" c:identifier="clutter_actor_set_height">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="height" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_x" c:identifier="clutter_actor_get_x">
+        <return-value transfer-ownership="none">
+          <type name="float" c:type="gfloat"/>
+        </return-value>
+      </method>
+      <method name="get_y" c:identifier="clutter_actor_get_y">
+        <return-value transfer-ownership="none">
+          <type name="float" c:type="gfloat"/>
+        </return-value>
+      </method>
+      <method name="set_x"
+              c:identifier="clutter_actor_set_x"
+              doc="Sets the actor&apos;s X coordinate, relative to its parent, in pixels.
+Overrides any layout manager and forces a fixed position for
+the actor."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="x" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_y"
+              c:identifier="clutter_actor_set_y"
+              doc="Sets the actor&apos;s Y coordinate, relative to its parent, in pixels.#
+Overrides any layout manager and forces a fixed position for
+the actor."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="y" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_rotation"
+              c:identifier="clutter_actor_set_rotation"
+              doc="Sets the rotation angle of @self around the given axis.
+The rotation center coordinates used depend on the value of @axis:
+&lt;itemizedlist&gt;
+&lt;listitem&gt;&lt;para&gt;%CLUTTER_X_AXIS requires @y and @z&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;%CLUTTER_Y_AXIS requires @x and @z&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;%CLUTTER_Z_AXIS requires @x and @y&lt;/para&gt;&lt;/listitem&gt;
+&lt;/itemizedlist&gt;
+The rotation coordinates are relative to the anchor point of the
+actor, set using clutter_actor_set_anchor_point(). If no anchor
+point is set, the upper left corner is assumed as the origin."
+              version="0.8">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="axis" transfer-ownership="none">
+            <type name="RotateAxis" c:type="ClutterRotateAxis"/>
+          </parameter>
+          <parameter name="angle" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="x" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+          <parameter name="z" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_z_rotation_from_gravity"
+              c:identifier="clutter_actor_set_z_rotation_from_gravity"
+              doc="Sets the rotation angle of @self around the Z axis using the center
+point specified as a compass point. For example to rotate such that
+the center of the actor remains static you can use
+%CLUTTER_GRAVITY_CENTER. If the actor changes size the center point
+will move accordingly."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="angle" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="gravity" transfer-ownership="none">
+            <type name="Gravity" c:type="ClutterGravity"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_rotation"
+              c:identifier="clutter_actor_get_rotation"
+              doc="Retrieves the angle and center of rotation on the given axis,
+set using clutter_actor_set_rotation()."
+              version="0.8">
+        <return-value transfer-ownership="none">
+          <type name="double" c:type="gdouble"/>
+        </return-value>
+        <parameters>
+          <parameter name="axis" transfer-ownership="none">
+            <type name="RotateAxis" c:type="ClutterRotateAxis"/>
+          </parameter>
+          <parameter name="x"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     doc="return value for the X coordinate of the center of rotation">
+            <type name="float" c:type="gfloat*"/>
+          </parameter>
+          <parameter name="y"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     doc="return value for the Y coordinate of the center of rotation">
+            <type name="float" c:type="gfloat*"/>
+          </parameter>
+          <parameter name="z"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     doc="return value for the Z coordinate of the center of rotation">
+            <type name="float" c:type="gfloat*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_z_rotation_gravity"
+              c:identifier="clutter_actor_get_z_rotation_gravity"
+              doc="Retrieves the center for the rotation around the Z axis as a
+compass direction. If the center was specified in pixels or units
+this will return %CLUTTER_GRAVITY_NONE."
+              version="1.0">
+        <return-value transfer-ownership="full">
+          <type name="Gravity" c:type="ClutterGravity"/>
+        </return-value>
+      </method>
+      <method name="set_opacity"
+              c:identifier="clutter_actor_set_opacity"
+              doc="Sets the actor&apos;s opacity, with zero being completely transparent and
+255 (0xff) being fully opaque.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="opacity" transfer-ownership="none">
+            <type name="uint8" c:type="guint8"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_opacity"
+              c:identifier="clutter_actor_get_opacity"
+              doc="Retrieves the opacity value of an actor, as set by
+clutter_actor_set_opacity().
+For retrieving the absolute opacity of the actor inside a paint
+virtual function, see clutter_actor_get_paint_opacity().">
+        <return-value transfer-ownership="none">
+          <type name="uint8" c:type="guint8"/>
+        </return-value>
+      </method>
+      <method name="get_paint_opacity"
+              c:identifier="clutter_actor_get_paint_opacity"
+              doc="Retrieves the absolute opacity of the actor, as it appears on the stage.
+This function traverses the hierarchy chain and composites the opacity of
+the actor with that of its parents.
+This function is intended for subclasses to use in the paint virtual
+function, to paint themselves with the correct opacity."
+              version="0.8">
+        <return-value transfer-ownership="none">
+          <type name="uint8" c:type="guint8"/>
+        </return-value>
+      </method>
+      <method name="get_paint_visibility"
+              c:identifier="clutter_actor_get_paint_visibility"
+              doc="Retrieves the &apos;paint&apos; visibility of an actor recursively checking for non
+visible parents.
+This is by definition the same as CLUTTER_ACTOR_IS_MAPPED()."
+              version="0.8.4">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_name"
+              c:identifier="clutter_actor_set_name"
+              doc="Sets the given name to @self. The name can be used to identify
+a #ClutterActor.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_name"
+              c:identifier="clutter_actor_get_name"
+              doc="Retrieves the name of @self.
+owned by the actor and should not be modified or freed.">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_gid"
+              c:identifier="clutter_actor_get_gid"
+              doc="Retrieves the unique id for @self."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="uint32" c:type="guint32"/>
+        </return-value>
+      </method>
+      <method name="set_clip"
+              c:identifier="clutter_actor_set_clip"
+              doc="Sets clip area for @self. The clip area is always computed from the
+upper left corner of the actor, even if the anchor point is set
+otherwise."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="xoff" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+          <parameter name="yoff" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+          <parameter name="width" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+          <parameter name="height" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_clip" c:identifier="clutter_actor_remove_clip">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="has_clip"
+              c:identifier="clutter_actor_has_clip"
+              doc="Determines whether the actor has a clip area set or not."
+              version="0.1.1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_clip"
+              c:identifier="clutter_actor_get_clip"
+              doc="Gets the clip area for @self, if any is set"
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="xoff"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="return location for the X offset of the clip rectangle, or %NULL">
+            <type name="float" c:type="gfloat*"/>
+          </parameter>
+          <parameter name="yoff"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="return location for the Y offset of the clip rectangle, or %NULL">
+            <type name="float" c:type="gfloat*"/>
+          </parameter>
+          <parameter name="width"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="return location for the width of the clip rectangle, or %NULL">
+            <type name="float" c:type="gfloat*"/>
+          </parameter>
+          <parameter name="height"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="return location for the height of the clip rectangle, or %NULL">
+            <type name="float" c:type="gfloat*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_parent"
+              c:identifier="clutter_actor_set_parent"
+              doc="Sets the parent of @self to @parent.  The opposite function is
+clutter_actor_unparent().
+This function should not be used by applications, but by custom
+container actor subclasses.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="parent" transfer-ownership="none">
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_parent"
+              c:identifier="clutter_actor_get_parent"
+              doc="Retrieves the parent of @self.
+if no parent is set">
+        <return-value transfer-ownership="none"
+                      doc="The #ClutterActor parent, or %NULL">
+          <type name="Actor" c:type="ClutterActor*"/>
+        </return-value>
+      </method>
+      <method name="reparent"
+              c:identifier="clutter_actor_reparent"
+              doc="This function resets the parent actor of @self.  It is
+logically equivalent to calling clutter_actor_unparent()
+and clutter_actor_set_parent(), but more efficiently
+implemented, ensures the child is not finalized
+when unparented, and emits the parent-set signal only
+one time."
+              version="0.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="new_parent" transfer-ownership="none">
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="unparent"
+              c:identifier="clutter_actor_unparent"
+              doc="Removes the parent of @self.
+This function should not be used in applications.  It should be called by
+implementations of container actors, to dissociate a child from the
+container."
+              version="0.1.1">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_stage"
+              c:identifier="clutter_actor_get_stage"
+              doc="Retrieves the #ClutterStage where @actor is contained."
+              version="0.8">
+        <return-value transfer-ownership="none"
+                      doc="the stage containing the actor, or %NULL">
+          <type name="Actor" c:type="ClutterActor*"/>
+        </return-value>
+      </method>
+      <method name="raise"
+              c:identifier="clutter_actor_raise"
+              doc="Puts @self above @below.
+Both actors must have the same parent, and the parent must implement
+the #ClutterContainer interface
+This function is the equivalent of clutter_container_raise_child().">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="below"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="A #ClutterActor to raise above.">
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="lower"
+              c:identifier="clutter_actor_lower"
+              doc="Puts @self below @above.
+Both actors must have the same parent, and the parent must implement
+the #ClutterContainer interface.
+This function is the equivalent of clutter_container_lower_child().">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="above"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="A #ClutterActor to lower below">
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="raise_top"
+              c:identifier="clutter_actor_raise_top"
+              doc="Raises @self to the top.
+This function calls clutter_actor_raise() internally.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="lower_bottom"
+              c:identifier="clutter_actor_lower_bottom"
+              doc="Lowers @self to the bottom.
+This function calls clutter_actor_lower() internally.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="set_depth"
+              c:identifier="clutter_actor_set_depth"
+              doc="Sets the Z coordinate of @self to @depth.
+The unit used by @depth is dependant on the perspective setup. See
+also clutter_stage_set_perspective().">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="depth" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_depth"
+              c:identifier="clutter_actor_get_depth"
+              doc="Retrieves the depth of @self.">
+        <return-value transfer-ownership="none">
+          <type name="float" c:type="gfloat"/>
+        </return-value>
+      </method>
+      <method name="set_scale"
+              c:identifier="clutter_actor_set_scale"
+              doc="Scales an actor with the given factors. The scaling is relative to
+the scale center and the anchor point. The scale center is
+unchanged by this function and defaults to 0,0."
+              version="0.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="scale_x" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="scale_y" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_scale_full"
+              c:identifier="clutter_actor_set_scale_full"
+              doc="Scales an actor with the given factors around the given center
+point. The center point is specified in pixels relative to the
+anchor point (usually the top left corner of the actor)."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="scale_x" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="scale_y" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="center_x" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+          <parameter name="center_y" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_scale_with_gravity"
+              c:identifier="clutter_actor_set_scale_with_gravity"
+              doc="Scales an actor with the given factors around the given
+center point. The center point is specified as one of the compass
+directions in #ClutterGravity. For example, setting it to north
+will cause the top of the actor to remain unchanged and the rest of
+the actor to expand left, right and downwards."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="scale_x" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="scale_y" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="gravity"
+                     transfer-ownership="none"
+                     doc=" direction.">
+            <type name="Gravity" c:type="ClutterGravity"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_scale"
+              c:identifier="clutter_actor_get_scale"
+              doc="Retrieves an actors scale factors."
+              version="0.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="scale_x"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="Location to store horizonal scale factor, or %NULL.">
+            <type name="double" c:type="gdouble*"/>
+          </parameter>
+          <parameter name="scale_y"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="Location to store vertical scale factor, or %NULL.">
+            <type name="double" c:type="gdouble*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_scale_center"
+              c:identifier="clutter_actor_get_scale_center"
+              doc="Retrieves the scale center coordinate in pixels relative to the top
+left corner of the actor. If the scale center was specified using a
+#ClutterGravity this will calculate the pixel offset using the
+current size of the actor."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="center_x"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="Location to store the X position of the scale center, or %NULL.">
+            <type name="float" c:type="gfloat*"/>
+          </parameter>
+          <parameter name="center_y"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="Location to store the Y position of the scale center, or %NULL.">
+            <type name="float" c:type="gfloat*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_scale_gravity"
+              c:identifier="clutter_actor_get_scale_gravity"
+              doc="Retrieves the scale center as a compass direction. If the scale
+center was specified in pixels or units this will return
+%CLUTTER_GRAVITY_NONE."
+              version="1.0">
+        <return-value transfer-ownership="full">
+          <type name="Gravity" c:type="ClutterGravity"/>
+        </return-value>
+      </method>
+      <method name="move_by"
+              c:identifier="clutter_actor_move_by"
+              doc="Moves an actor by the specified distance relative to its current
+position in pixels.
+This function modifies the fixed position of an actor and thus removes
+it from any layout management. Another way to move an actor is with an
+anchor point, see clutter_actor_set_anchor_point()."
+              version="0.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="dx" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+          <parameter name="dy" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_reactive"
+              c:identifier="clutter_actor_set_reactive"
+              doc="Sets @actor as reactive. Reactive actors will receive events."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="reactive" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_reactive"
+              c:identifier="clutter_actor_get_reactive"
+              doc="Checks whether @actor is marked as reactive."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="event"
+              c:identifier="clutter_actor_event"
+              doc="This function is used to emit an event on the main stage.
+You should rarely need to use this function, except for
+synthetising events.
+if the actor handled the event, or %FALSE if the event was
+not handled"
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="none">
+            <type name="Event" c:type="ClutterEvent*"/>
+          </parameter>
+          <parameter name="capture" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_shader"
+              c:identifier="clutter_actor_set_shader"
+              doc="Sets the #ClutterShader to be used when rendering @self.
+If @shader is %NULL it will unset any currently set shader
+for the actor."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="shader"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="a #ClutterShader or %NULL to unset the shader.">
+            <type name="Shader" c:type="ClutterShader*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_shader"
+              c:identifier="clutter_actor_get_shader"
+              doc="Queries the currently set #ClutterShader on @self.
+or %NULL if no shader is set."
+              version="0.6">
+        <return-value transfer-ownership="none"
+                      doc="The currently set #ClutterShader">
+          <type name="Shader" c:type="ClutterShader*"/>
+        </return-value>
+      </method>
+      <method name="set_shader_param"
+              c:identifier="clutter_actor_set_shader_param"
+              doc="Sets the value for a named parameter of the shader applied
+to @actor."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="param" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_shader_param_int"
+              c:identifier="clutter_actor_set_shader_param_int"
+              doc="Sets the value for a named int parameter of the shader applied to"
+              version="0.8">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="param" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_shader_param_float"
+              c:identifier="clutter_actor_set_shader_param_float"
+              doc="Sets the value for a named float parameter of the shader applied
+to @actor."
+              version="0.8">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="param" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_anchor_point"
+              c:identifier="clutter_actor_set_anchor_point"
+              doc="Sets an anchor point for @self. The anchor point is a point in the
+coordinate space of an actor to which the actor position within its
+parent is relative; the default is (0, 0), i.e. the top-left corner
+of the actor."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="anchor_x" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+          <parameter name="anchor_y" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="move_anchor_point"
+              c:identifier="clutter_actor_move_anchor_point"
+              doc="Sets an anchor point for the actor, and adjusts the actor postion so that
+the relative position of the actor toward its parent remains the same."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="anchor_x" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+          <parameter name="anchor_y" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_anchor_point"
+              c:identifier="clutter_actor_get_anchor_point"
+              doc="Gets the current anchor point of the @actor in pixels."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="anchor_x"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     doc="return location for the X coordinate of the anchor point">
+            <type name="float" c:type="gfloat*"/>
+          </parameter>
+          <parameter name="anchor_y"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     doc="return location for the Y coordinate of the anchor point">
+            <type name="float" c:type="gfloat*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_anchor_point_gravity"
+              c:identifier="clutter_actor_get_anchor_point_gravity"
+              doc="Retrieves the anchor position expressed as a #ClutterGravity. If
+the anchor point was specified using pixels or units this will
+return %CLUTTER_GRAVITY_NONE."
+              version="1.0">
+        <return-value transfer-ownership="full">
+          <type name="Gravity" c:type="ClutterGravity"/>
+        </return-value>
+      </method>
+      <method name="set_anchor_point_from_gravity"
+              c:identifier="clutter_actor_set_anchor_point_from_gravity"
+              doc="Sets an anchor point on the actor, based on the given gravity (this is a
+convenience function wrapping clutter_actor_set_anchor_point()).
+Since version 1.0 the anchor point will be stored as a gravity so
+that if the actor changes size then the anchor point will move. For
+example, if you set the anchor point to %CLUTTER_GRAVITY_SOUTH_EAST
+and later double the size of the actor, the anchor point will move
+to the bottom right."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="gravity" transfer-ownership="none">
+            <type name="Gravity" c:type="ClutterGravity"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="move_anchor_point_from_gravity"
+              c:identifier="clutter_actor_move_anchor_point_from_gravity"
+              doc="Sets an anchor point on the actor based on the given gravity, adjusting the
+actor postion so that its relative position within its parent remains
+unchanged.
+Since version 1.0 the anchor point will be stored as a gravity so
+that if the actor changes size then the anchor point will move. For
+example, if you set the anchor point to %CLUTTER_GRAVITY_SOUTH_EAST
+and later double the size of the actor, the anchor point will move
+to the bottom right."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="gravity" transfer-ownership="none">
+            <type name="Gravity" c:type="ClutterGravity"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="transform_stage_point"
+              c:identifier="clutter_actor_transform_stage_point">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="x" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+          <parameter name="x_out"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <type name="float" c:type="gfloat*"/>
+          </parameter>
+          <parameter name="y_out"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <type name="float" c:type="gfloat*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="is_rotated"
+              c:identifier="clutter_actor_is_rotated"
+              doc="Checks whether any rotation is applied to the actor."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="is_scaled"
+              c:identifier="clutter_actor_is_scaled"
+              doc="Checks whether the actor is scaled in either dimension."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="should_pick_paint"
+              c:identifier="clutter_actor_should_pick_paint"
+              doc="Should be called inside the implementation of the
+#ClutterActor::pick virtual function in order to check whether
+the actor should paint itself in pick mode or not.
+This function should never be called directly by applications.
+%FALSE otherwise">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_abs_allocation_vertices"
+              c:identifier="clutter_actor_get_abs_allocation_vertices"
+              doc="Calculates the transformed screen coordinates of the four corners of
+the actor; the returned vertices relate to the #ClutterActorBox
+coordinates  as follows:
+&lt;itemizedlist&gt;
+&lt;listitem&gt;&lt;para&gt;v[0] contains (x1, y1)&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;v[1] contains (x2, y1)&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;v[2] contains (x1, y2)&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;v[3] contains (x2, y2)&lt;/para&gt;&lt;/listitem&gt;
+&lt;/itemizedlist&gt;"
+              version="0.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="verts"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none"
+                     doc="Pointer to a location of an array of 4 #ClutterVertex where to store the result.">
+            <array c:type="ClutterVertex" fixed-size="4">
+              <type name="Vertex"/>
+            </array>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="apply_transform_to_point"
+              c:identifier="clutter_actor_apply_transform_to_point"
+              doc="Transforms @point in coordinates relative to the actor
+into screen-relative coordinates with the current actor
+transformation (i.e. scale, rotation, etc)"
+              version="0.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="point" transfer-ownership="none">
+            <type name="Vertex" c:type="ClutterVertex*"/>
+          </parameter>
+          <parameter name="vertex" transfer-ownership="none">
+            <type name="Vertex" c:type="ClutterVertex*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="apply_relative_transform_to_point"
+              c:identifier="clutter_actor_apply_relative_transform_to_point"
+              doc="Transforms @point in coordinates relative to the actor into
+ancestor-relative coordinates using the relevant transform
+stack (i.e. scale, rotation, etc).
+If @ancestor is %NULL the ancestor will be the #ClutterStage. In
+this case, the coordinates returned will be the coordinates on
+the stage before the projection is applied. This is different from
+the behaviour of clutter_actor_apply_transform_to_point()."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="ancestor"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="A #ClutterActor ancestor, or %NULL to use the default #ClutterStage">
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter name="point" transfer-ownership="none">
+            <type name="Vertex" c:type="ClutterVertex*"/>
+          </parameter>
+          <parameter name="vertex" transfer-ownership="none">
+            <type name="Vertex" c:type="ClutterVertex*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="grab_key_focus"
+              c:identifier="clutter_actor_grab_key_focus"
+              doc="Sets the key focus of the #ClutterStage including @self
+to this #ClutterActor."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_pango_context"
+              c:identifier="clutter_actor_get_pango_context"
+              doc="Retrieves the #PangoContext for @self. The actor&apos;s #PangoContext
+is already configured using the appropriate font map, resolution
+and font options.
+Unlike clutter_actor_create_pango_context(), this context is owend
+by the #ClutterActor and it will be updated each time the options
+stored by the #ClutterBackend change.
+You can use the returned #PangoContext to create a #PangoLayout
+and render text using cogl_pango_render_layout() to reuse the
+glyphs cache also used by Clutter.
+The returned #PangoContext is owned by the actor and should not be
+unreferenced by the application code"
+              version="1.0">
+        <return-value transfer-ownership="none"
+                      doc="the #PangoContext for a #ClutterActor.">
+          <type name="Pango.Context" c:type="PangoContext*"/>
+        </return-value>
+      </method>
+      <method name="create_pango_context"
+              c:identifier="clutter_actor_create_pango_context"
+              doc="Creates a #PangoContext for the given actor. The #PangoContext
+is already configured using the appropriate font map, resolution
+and font options.
+See also clutter_actor_get_pango_context().
+on the returned value to deallocate its resources"
+              version="1.0">
+        <return-value transfer-ownership="full">
+          <type name="Pango.Context" c:type="PangoContext*"/>
+        </return-value>
+      </method>
+      <method name="create_pango_layout"
+              c:identifier="clutter_actor_create_pango_layout"
+              doc="Creates a new #PangoLayout from the same #PangoContext used
+by the #ClutterActor. The #PangoLayout is already configured
+with the font map, resolution and font options, and the
+given @text.
+If you want to keep around a #PangoLayout created by this
+function you will have to connect to the #ClutterBackend::font-changed
+and #ClutterBackend::resolution-changed signals, and call
+pango_layout_context_changed() in response to them.
+when done"
+              version="1.0">
+        <return-value transfer-ownership="full">
+          <type name="Pango.Layout" c:type="PangoLayout*"/>
+        </return-value>
+        <parameters>
+          <parameter name="text"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="the text to set on the #PangoLayout, or %NULL">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_transformation_matrix"
+              c:identifier="clutter_actor_get_transformation_matrix"
+              doc="Retrieves the transformations applied to @self"
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="matrix"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none"
+                     doc="the return location for a #CoglMatrix">
+            <type name="Cogl.Matrix" c:type="CoglMatrix*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="is_in_clone_paint"
+              c:identifier="clutter_actor_is_in_clone_paint"
+              doc="Checks whether @self is being currently painted by a #ClutterClone
+This function is useful only inside the ::paint virtual function
+implementations or within handlers for the #ClutterActor::paint
+signal
+This function should not be used by applications
+by a #ClutterClone, and %FALSE otherwise"
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="has_pointer"
+              c:identifier="clutter_actor_has_pointer"
+              doc="Checks whether an actor contains the the pointer of a
+#ClutterInputDevice
+%FALSE otherwise"
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_text_direction"
+              c:identifier="clutter_actor_set_text_direction"
+              doc="Sets the #ClutterTextDirection for an actor
+The passed text direction must not be %CLUTTER_TEXT_DIRECTION_DEFAULT
+If @self implements #ClutterContainer then this function will recurse
+inside all the children of @self (including the internal ones).
+Composite actors not implementing #ClutterContainer, or actors requiring
+special handling when the text direction changes, should connect to
+the #GObject::notify signal for the #ClutterActor:text-direction property"
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="text_dir" transfer-ownership="none">
+            <type name="TextDirection" c:type="ClutterTextDirection"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_text_direction"
+              c:identifier="clutter_actor_get_text_direction"
+              doc="Retrieves the value set using clutter_actor_set_text_direction()
+If no text direction has been previously set, the default text
+direction, as returned by clutter_get_default_text_direction(), will
+be returned instead"
+              version="1.2">
+        <return-value transfer-ownership="full">
+          <type name="TextDirection" c:type="ClutterTextDirection"/>
+        </return-value>
+      </method>
+      <method name="push_internal"
+              c:identifier="clutter_actor_push_internal"
+              doc="Should be used by actors implementing the #ClutterContainer and with
+internal children added through clutter_actor_set_parent(), for instance:
+|[
+static void
+my_actor_init (MyActor *self)
+{
+self-&gt;priv = SELF_ACTOR_GET_PRIVATE (self);
+clutter_actor_push_internal (CLUTTER_ACTOR (self));
+/&amp;ast; calling clutter_actor_set_parent() now will result in
+&amp;ast; the internal flag being set on a child of MyActor
+&amp;ast;/
+self-&gt;priv-&gt;background_tex = clutter_texture_new ();
+clutter_actor_set_parent (self-&gt;priv-&gt;background_tex,
+CLUTTER_ACTOR (self));
+self-&gt;priv-&gt;label = clutter_text_new ();
+clutter_actor_set_parent (self-&gt;priv-&gt;label,
+CLUTTER_ACTOR (self));
+clutter_actor_pop_internal (CLUTTER_ACTOR (self));
+/&amp;ast; calling clutter_actor_set_parent() now will not result in
+&amp;ast; the internal flag being set on a child of MyActor
+&amp;ast;/
+}
+]|
+This function will be used by Clutter to toggle an &quot;internal child&quot;
+flag whenever clutter_actor_set_parent() is called; internal children
+are handled differently by Clutter, specifically when destroying their
+parent.
+Call clutter_actor_pop_internal() when you finished adding internal
+children.
+Nested calls to clutter_actor_push_internal() are allowed, but each
+one must by followed by a clutter_actor_pop_internal() call."
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="pop_internal"
+              c:identifier="clutter_actor_pop_internal"
+              doc="Disables the effects of clutter_actor_pop_internal()"
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="animate"
+              c:identifier="clutter_actor_animate"
+              doc="Animates the given list of properties of @actor between the current
+value for each property and a new final value. The animation has a
+definite duration and a speed given by the @mode.
+For example, this:
+|[
+clutter_actor_animate (rectangle, CLUTTER_LINEAR, 250,
+&quot;width&quot;, 100.0,
+&quot;height&quot;, 100.0,
+NULL);
+]|
+will make width and height properties of the #ClutterActor &quot;rectangle&quot;
+grow linearly between the current value and 100 pixels, in 250 milliseconds.
+The animation @mode is a logical id, either from the #ClutterAnimationMode
+enumeration of from clutter_alpha_register_func().
+All the properties specified will be animated between the current value
+and the final value. If a property should be set at the beginning of
+the animation but not updated during the animation, it should be prefixed
+by the &quot;fixed::&quot; string, for instance:
+|[
+clutter_actor_animate (actor, CLUTTER_EASE_IN_SINE, 100,
+&quot;rotation-angle-z&quot;, 360.0,
+&quot;fixed::rotation-center-z&quot;, &amp;amp;center,
+NULL);
+]|
+Will animate the &quot;rotation-angle-z&quot; property between the current value
+and 360 degrees, and set the &quot;rotation-center-z&quot; property to the fixed
+value of the #ClutterVertex &quot;center&quot;.
+This function will implicitly create a #ClutterAnimation object which
+will be assigned to the @actor and will be returned to the developer
+to control the animation or to know when the animation has been
+completed.
+If a name argument starts with &quot;signal::&quot;, &quot;signal-after::&quot;,
+&quot;signal-swapped::&quot; or &quot;signal-swapped-after::&quot; the two following arguments
+are used as callback function and data for a signal handler installed on
+the #ClutterAnimation object for the specified signal name, for instance:
+|[
+static void
+on_animation_completed (ClutterAnimation *animation,
+ClutterActor     *actor)
+{
+clutter_actor_hide (actor);
+}
+clutter_actor_animate (actor, CLUTTER_EASE_IN_CUBIC, 100,
+&quot;opacity&quot;, 0,
+&quot;signal::completed&quot;, on_animation_completed, actor,
+NULL);
+]|
+or, to automatically destroy an actor at the end of the animation:
+|[
+clutter_actor_animate (actor, CLUTTER_EASE_IN_CUBIC, 100,
+&quot;opacity&quot;, 0,
+&quot;signal-swapped-after::completed&quot;,
+clutter_actor_destroy,
+actor,
+NULL);
+]|
+The &quot;signal::&quot; modifier is the equivalent of using g_signal_connect();
+the &quot;signal-after::&quot; modifier is the equivalent of using
+g_signal_connect_after() or g_signal_connect_data() with the
+%G_CONNECT_AFTER; the &quot;signal-swapped::&quot; modifier is the equivalent
+of using g_signal_connect_swapped() or g_signal_connect_data() with the
+%G_CONNECT_SWAPPED flah; finally, the &quot;signal-swapped-after::&quot; modifier
+is the equivalent of using g_signal_connect_data() with both the
+%G_CONNECT_AFTER and %G_CONNECT_SWAPPED flags. The clutter_actor_animate()
+function will not keep track of multiple connections to the same signal,
+so it is your responsability to avoid them when calling
+clutter_actor_animate() multiple times on the same actor.
+Calling this function on an actor that is already being animated
+will cause the current animation to change with the new final values,
+the new easing mode and the new duration - that is, this code:
+|[
+clutter_actor_animate (actor, CLUTTER_LINEAR, 250,
+&quot;width&quot;, 100.0,
+&quot;height&quot;, 100.0,
+NULL);
+clutter_actor_animate (actor, CLUTTER_EASE_IN_CUBIC, 500,
+&quot;x&quot;, 100.0,
+&quot;y&quot;, 100.0,
+&quot;width&quot;, 200.0,
+NULL);
+]|
+is the equivalent of:
+|[
+clutter_actor_animate (actor, CLUTTER_EASE_IN_CUBIC, 500,
+&quot;x&quot;, 100.0,
+&quot;y&quot;, 100.0,
+&quot;width&quot;, 200.0,
+&quot;height&quot;, 100.0,
+NULL);
+]|
+&lt;note&gt;Unless the animation is looping, the #ClutterAnimation created by
+clutter_actor_animate() will become invalid as soon as it is
+complete.&lt;/note&gt;
+Since the created #ClutterAnimation instance attached to @actor
+is guaranteed to be valid throughout the #ClutterAnimation::completed
+signal emission chain, you will not be able to create a new animation
+using clutter_actor_animate() on the same @actor from within the
+#ClutterAnimation::completed signal handler unless you use
+g_signal_connect_after() to connect the callback function, for instance:
+|[
+static void
+on_animation_completed (ClutterAnimation *animation,
+ClutterActor     *actor)
+{
+clutter_actor_animate (actor, CLUTTER_EASE_OUT_CUBIC, 250,
+&quot;x&quot;, 500.0,
+&quot;y&quot;, 500.0,
+NULL);
+}
+...
+animation = clutter_actor_animate (actor, CLUTTER_EASE_IN_CUBIC, 250,
+&quot;x&quot;, 100.0,
+&quot;y&quot;, 100.0,
+NULL);
+g_signal_connect (animation, &quot;completed&quot;,
+G_CALLBACK (on_animation_completed),
+actor);
+...
+]|
+owned by the #ClutterActor and should not be unreferenced with
+g_object_unref()"
+              version="1.0">
+        <return-value transfer-ownership="none"
+                      doc="a #ClutterAnimation object. The object is">
+          <type name="Animation" c:type="ClutterAnimation*"/>
+        </return-value>
+        <parameters>
+          <parameter name="mode" transfer-ownership="none">
+            <type name="ulong" c:type="gulong"/>
+          </parameter>
+          <parameter name="duration" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="first_property_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="animate_with_timeline"
+              c:identifier="clutter_actor_animate_with_timeline"
+              doc="Animates the given list of properties of @actor between the current
+value for each property and a new final value. The animation has a
+definite duration given by @timeline and a speed given by the @mode.
+See clutter_actor_animate() for further details.
+This function is useful if you want to use an existing timeline
+to animate @actor.
+owned by the #ClutterActor and should not be unreferenced with
+g_object_unref()"
+              version="1.0">
+        <return-value transfer-ownership="none"
+                      doc="a #ClutterAnimation object. The object is">
+          <type name="Animation" c:type="ClutterAnimation*"/>
+        </return-value>
+        <parameters>
+          <parameter name="mode" transfer-ownership="none">
+            <type name="ulong" c:type="gulong"/>
+          </parameter>
+          <parameter name="timeline" transfer-ownership="none">
+            <type name="Timeline" c:type="ClutterTimeline*"/>
+          </parameter>
+          <parameter name="first_property_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="animate_with_alpha"
+              c:identifier="clutter_actor_animate_with_alpha"
+              doc="Animates the given list of properties of @actor between the current
+value for each property and a new final value. The animation has a
+definite behaviour given by the passed @alpha.
+See clutter_actor_animate() for further details.
+This function is useful if you want to use an existing #ClutterAlpha
+to animate @actor.
+#ClutterActor and should not be unreferenced with g_object_unref()"
+              version="1.0">
+        <return-value transfer-ownership="none"
+                      doc="a #ClutterAnimation object. The object is owned by the">
+          <type name="Animation" c:type="ClutterAnimation*"/>
+        </return-value>
+        <parameters>
+          <parameter name="alpha" transfer-ownership="none">
+            <type name="Alpha" c:type="ClutterAlpha*"/>
+          </parameter>
+          <parameter name="first_property_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="animatev"
+              c:identifier="clutter_actor_animatev"
+              doc="Animates the given list of properties of @actor between the current
+value for each property and a new final value. The animation has a
+definite duration and a speed given by the @mode.
+This is the vector-based variant of clutter_actor_animate(), useful
+for language bindings.
+&lt;warning&gt;Unlike clutter_actor_animate(), this function will not
+allow you to specify &quot;signal::&quot; names and callbacks.&lt;/warning&gt;
+owned by the #ClutterActor and should not be unreferenced with
+g_object_unref()"
+              version="1.0">
+        <return-value transfer-ownership="none"
+                      doc="a #ClutterAnimation object. The object is">
+          <type name="Animation" c:type="ClutterAnimation*"/>
+        </return-value>
+        <parameters>
+          <parameter name="mode" transfer-ownership="none">
+            <type name="ulong" c:type="gulong"/>
+          </parameter>
+          <parameter name="duration" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="n_properties" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="properties"
+                     transfer-ownership="none"
+                     doc="a vector containing the property names to set">
+            <array length="3" c:type="gchar*">
+              <type name="utf8"/>
+            </array>
+          </parameter>
+          <parameter name="values"
+                     transfer-ownership="none"
+                     doc="a vector containing the property values to set">
+            <array length="3" c:type="GValue*">
+              <type name="GObject.Value"/>
+            </array>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="animate_with_timelinev"
+              c:identifier="clutter_actor_animate_with_timelinev"
+              doc="Animates the given list of properties of @actor between the current
+value for each property and a new final value. The animation has a
+definite duration given by @timeline and a speed given by the @mode.
+See clutter_actor_animate() for further details.
+This function is useful if you want to use an existing timeline
+to animate @actor.
+This is the vector-based variant of clutter_actor_animate_with_timeline(),
+useful for language bindings.
+&lt;warning&gt;Unlike clutter_actor_animate_with_timeline(), this function
+will not allow you to specify &quot;signal::&quot; names and callbacks.&lt;/warning&gt;
+owned by the #ClutterActor and should not be unreferenced with
+g_object_unref()"
+              version="1.0">
+        <return-value transfer-ownership="none"
+                      doc="a #ClutterAnimation object. The object is">
+          <type name="Animation" c:type="ClutterAnimation*"/>
+        </return-value>
+        <parameters>
+          <parameter name="mode" transfer-ownership="none">
+            <type name="ulong" c:type="gulong"/>
+          </parameter>
+          <parameter name="timeline" transfer-ownership="none">
+            <type name="Timeline" c:type="ClutterTimeline*"/>
+          </parameter>
+          <parameter name="n_properties" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="properties"
+                     transfer-ownership="none"
+                     doc="a vector containing the property names to set">
+            <array length="3" c:type="gchar*">
+              <type name="utf8"/>
+            </array>
+          </parameter>
+          <parameter name="values"
+                     transfer-ownership="none"
+                     doc="a vector containing the property values to set">
+            <array length="3" c:type="GValue*">
+              <type name="GObject.Value"/>
+            </array>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="animate_with_alphav"
+              c:identifier="clutter_actor_animate_with_alphav"
+              doc="Animates the given list of properties of @actor between the current
+value for each property and a new final value. The animation has a
+definite behaviour given by the passed @alpha.
+See clutter_actor_animate() for further details.
+This function is useful if you want to use an existing #ClutterAlpha
+to animate @actor.
+This is the vector-based variant of clutter_actor_animate_with_alpha(),
+useful for language bindings.
+&lt;warning&gt;Unlike clutter_actor_animate_with_alpha(), this function will
+not allow you to specify &quot;signal::&quot; names and callbacks.&lt;/warning&gt;
+#ClutterActor and should not be unreferenced with g_object_unref()"
+              version="1.0">
+        <return-value transfer-ownership="none"
+                      doc="a #ClutterAnimation object. The object is owned by the">
+          <type name="Animation" c:type="ClutterAnimation*"/>
+        </return-value>
+        <parameters>
+          <parameter name="alpha" transfer-ownership="none">
+            <type name="Alpha" c:type="ClutterAlpha*"/>
+          </parameter>
+          <parameter name="n_properties" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="properties"
+                     transfer-ownership="none"
+                     doc="a vector containing the property names to set">
+            <array length="2" c:type="gchar*">
+              <type name="utf8"/>
+            </array>
+          </parameter>
+          <parameter name="values"
+                     transfer-ownership="none"
+                     doc="a vector containing the property values to set">
+            <array length="2" c:type="GValue*">
+              <type name="GObject.Value"/>
+            </array>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_animation"
+              c:identifier="clutter_actor_get_animation"
+              doc="Retrieves the #ClutterAnimation used by @actor, if clutter_actor_animate()
+has been called on @actor."
+              version="1.0">
+        <return-value transfer-ownership="none"
+                      doc="a #ClutterAnimation, or %NULL">
+          <type name="Animation" c:type="ClutterAnimation*"/>
+        </return-value>
+      </method>
+      <property name="allocation"
+                version="0.8"
+                doc="The allocation for the actor, in pixels
+This is property is read-only, but you might monitor it to know when an
+actor moves or resizes">
+        <type name="ActorBox" c:type="ClutterActorBox"/>
+      </property>
+      <property name="anchor-gravity"
+                version="1.0"
+                writable="1"
+                doc="The anchor point expressed as a #ClutterGravity">
+        <type name="Gravity" c:type="ClutterGravity"/>
+      </property>
+      <property name="anchor-x"
+                version="0.8"
+                writable="1"
+                doc="The X coordinate of an actor&apos;s anchor point, relative to
+the actor coordinate space, in pixels">
+        <type name="float" c:type="gfloat"/>
+      </property>
+      <property name="anchor-y"
+                version="0.8"
+                writable="1"
+                doc="The Y coordinate of an actor&apos;s anchor point, relative to
+the actor coordinate space, in pixels">
+        <type name="float" c:type="gfloat"/>
+      </property>
+      <property name="clip"
+                writable="1"
+                doc="The clip region for the actor, in actor-relative coordinates
+Every part of the actor outside the clip region will not be
+painted">
+        <type name="Geometry" c:type="ClutterGeometry"/>
+      </property>
+      <property name="clip-to-allocation"
+                version="1.0"
+                writable="1"
+                doc="Whether the clip region should track the allocated area
+of the actor.
+This property is ignored if a clip area has been explicitly
+set using clutter_actor_set_clip().">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="depth"
+                version="0.6"
+                writable="1"
+                doc="The position of the actor on the Z axis">
+        <type name="float" c:type="gfloat"/>
+      </property>
+      <property name="fixed-position-set"
+                version="0.8"
+                writable="1"
+                doc="This flag controls whether the #ClutterActor:fixed-x and
+#ClutterActor:fixed-y properties are used">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="fixed-x"
+                version="0.8"
+                writable="1"
+                doc="The fixed X position of the actor in pixels.
+Writing this property sets #ClutterActor:fixed-position-set
+property as well, as a side effect">
+        <type name="float" c:type="gfloat"/>
+      </property>
+      <property name="fixed-y"
+                version="0.8"
+                writable="1"
+                doc="The fixed Y position of the actor in pixels.
+Writing this property sets the #ClutterActor:fixed-position-set
+property as well, as a side effect">
+        <type name="float" c:type="gfloat"/>
+      </property>
+      <property name="has-clip"
+                doc="Whether the actor has the #ClutterActor:clip property set or not">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="has-pointer"
+                version="1.2"
+                doc="Whether the actor contains the pointer of a #ClutterInputDevice
+or not.">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="height"
+                writable="1"
+                doc="Height of the actor (in pixels).  If written, forces the minimum and
+natural size request of the actor to the given height. If read, returns
+the allocated height if available, otherwise the height request.">
+        <type name="float" c:type="gfloat"/>
+      </property>
+      <property name="mapped"
+                version="1.0"
+                doc="Whether the actor is mapped (will be painted when the stage
+to which it belongs is mapped)">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="min-height"
+                version="0.8"
+                writable="1"
+                doc="A forced minimum height request for the actor, in pixels
+Writing this property sets the #ClutterActor:min-height-set property
+as well, as a side effect. This property overrides the usual height
+request of the actor.">
+        <type name="float" c:type="gfloat"/>
+      </property>
+      <property name="min-height-set"
+                version="0.8"
+                writable="1"
+                doc="This flag controls whether the #ClutterActor:min-height property
+is used">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="min-width"
+                version="0.8"
+                writable="1"
+                doc="A forced minimum width request for the actor, in pixels
+Writing this property sets the #ClutterActor:min-width-set property
+as well, as a side effect.
+his property overrides the usual width request of the actor.">
+        <type name="float" c:type="gfloat"/>
+      </property>
+      <property name="min-width-set"
+                version="0.8"
+                writable="1"
+                doc="This flag controls whether the #ClutterActor:min-width property
+is used">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="name"
+                version="0.2"
+                writable="1"
+                doc="The name of the actor">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <property name="natural-height"
+                version="0.8"
+                writable="1"
+                doc="A forced natural height request for the actor, in pixels
+Writing this property sets the #ClutterActor:natural-height-set
+property as well, as a side effect. This property overrides the
+usual height request of the actor">
+        <type name="float" c:type="gfloat"/>
+      </property>
+      <property name="natural-height-set"
+                version="0.8"
+                writable="1"
+                doc="This flag controls whether the #ClutterActor:natural-height property
+is used">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="natural-width"
+                version="0.8"
+                writable="1"
+                doc="A forced natural width request for the actor, in pixels
+Writing this property sets the #ClutterActor:natural-width-set
+property as well, as a side effect. This property overrides the
+usual width request of the actor">
+        <type name="float" c:type="gfloat"/>
+      </property>
+      <property name="natural-width-set"
+                version="0.8"
+                writable="1"
+                doc="This flag controls whether the #ClutterActor:natural-width property
+is used">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="opacity"
+                writable="1"
+                doc="Opacity of an actor, between 0 (fully transparent) and
+255 (fully opaque)">
+        <type name="uint" c:type="guint"/>
+      </property>
+      <property name="reactive"
+                version="0.6"
+                writable="1"
+                doc="Whether the actor is reactive to events or not
+Only reactive actors will emit event-related signals">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="realized"
+                version="1.0"
+                doc="Whether the actor has been realized">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="request-mode"
+                version="0.8"
+                writable="1"
+                doc="Request mode for the #ClutterActor. The request mode determines the
+type of geometry management used by the actor, either height for width
+(the default) or width for height.
+For actors implementing height for width, the parent container should get
+the preferred width first, and then the preferred height for that width.
+For actors implementing width for height, the parent container should get
+the preferred height first, and then the preferred width for that height.
+For instance:
+|[
+ClutterRequestMode mode;
+gfloat natural_width, min_width;
+gfloat natural_height, min_height;
+mode = clutter_actor_get_request_mode (child);
+if (mode == CLUTTER_REQUEST_HEIGHT_FOR_WIDTH)
+{
+clutter_actor_get_preferred_width (child, -1,
+&amp;amp;min_width,
+&amp;amp;natural_width);
+clutter_actor_get_preferred_height (child, natural_width,
+&amp;amp;min_height,
+&amp;amp;natural_height);
+}
+else
+{
+clutter_actor_get_preferred_height (child, -1,
+&amp;amp;min_height,
+&amp;amp;natural_height);
+clutter_actor_get_preferred_width (child, natural_height,
+&amp;amp;min_width,
+&amp;amp;natural_width);
+}
+]|
+will retrieve the minimum and natural width and height depending on the
+preferred request mode of the #ClutterActor &quot;child&quot;.
+The clutter_actor_get_preferred_size() function will implement this
+check for you.">
+        <type name="RequestMode" c:type="ClutterRequestMode"/>
+      </property>
+      <property name="rotation-angle-x"
+                version="0.6"
+                writable="1"
+                doc="The rotation angle on the X axis">
+        <type name="double" c:type="gdouble"/>
+      </property>
+      <property name="rotation-angle-y"
+                version="0.6"
+                writable="1"
+                doc="The rotation angle on the Y axis">
+        <type name="double" c:type="gdouble"/>
+      </property>
+      <property name="rotation-angle-z"
+                version="0.6"
+                writable="1"
+                doc="The rotation angle on the Z axis">
+        <type name="double" c:type="gdouble"/>
+      </property>
+      <property name="rotation-center-x"
+                version="0.6"
+                writable="1"
+                doc="The rotation center on the X axis.">
+        <type name="Vertex" c:type="ClutterVertex"/>
+      </property>
+      <property name="rotation-center-y"
+                version="0.6"
+                writable="1"
+                doc="The rotation center on the Y axis.">
+        <type name="Vertex" c:type="ClutterVertex"/>
+      </property>
+      <property name="rotation-center-z"
+                version="0.6"
+                writable="1"
+                doc="The rotation center on the Z axis.">
+        <type name="Vertex" c:type="ClutterVertex"/>
+      </property>
+      <property name="rotation-center-z-gravity"
+                version="1.0"
+                writable="1"
+                doc="The rotation center on the Z axis expressed as a #ClutterGravity.">
+        <type name="Gravity" c:type="ClutterGravity"/>
+      </property>
+      <property name="scale-center-x"
+                version="1.0"
+                writable="1"
+                doc="The horizontal center point for scaling">
+        <type name="float" c:type="gfloat"/>
+      </property>
+      <property name="scale-center-y"
+                version="1.0"
+                writable="1"
+                doc="The vertical center point for scaling">
+        <type name="float" c:type="gfloat"/>
+      </property>
+      <property name="scale-gravity"
+                version="1.0"
+                writable="1"
+                doc="The center point for scaling expressed as a #ClutterGravity">
+        <type name="Gravity" c:type="ClutterGravity"/>
+      </property>
+      <property name="scale-x"
+                version="0.6"
+                writable="1"
+                doc="The horizontal scale of the actor">
+        <type name="double" c:type="gdouble"/>
+      </property>
+      <property name="scale-y"
+                version="0.6"
+                writable="1"
+                doc="The vertical scale of the actor">
+        <type name="double" c:type="gdouble"/>
+      </property>
+      <property name="show-on-set-parent"
+                version="0.8"
+                writable="1"
+                doc="If %TRUE, the actor is automatically shown when parented.
+Calling clutter_actor_hide() on an actor which has not been
+parented will set this property to %FALSE as a side effect.">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="text-direction" writable="1">
+        <type name="TextDirection" c:type="ClutterTextDirection"/>
+      </property>
+      <property name="visible"
+                writable="1"
+                doc="Whether the actor is set to be visible or not
+See also #ClutterActor:mapped">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="width"
+                writable="1"
+                doc="Width of the actor (in pixels). If written, forces the minimum and
+natural size request of the actor to the given width. If read, returns
+the allocated width if available, otherwise the width request.">
+        <type name="float" c:type="gfloat"/>
+      </property>
+      <property name="x"
+                writable="1"
+                doc="X coordinate of the actor in pixels. If written, forces a fixed
+position for the actor. If read, returns the fixed position if any,
+otherwise the allocation if available, otherwise 0.">
+        <type name="float" c:type="gfloat"/>
+      </property>
+      <property name="y"
+                writable="1"
+                doc="Y coordinate of the actor in pixels. If written, forces a fixed
+position for the actor.  If read, returns the fixed position if
+any, otherwise the allocation if available, otherwise 0.">
+        <type name="float" c:type="gfloat"/>
+      </property>
+      <field name="parent_instance">
+        <type name="GObject.InitiallyUnowned" c:type="GInitiallyUnowned"/>
+      </field>
+      <field name="flags">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+      <field name="private_flags">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+      <field name="priv">
+        <type name="ActorPrivate" c:type="ClutterActorPrivate*"/>
+      </field>
+      <glib:signal name="allocation-changed"
+                   doc="The ::allocation-changed signal is emitted when the
+#ClutterActor:allocation property changes. Usually, application
+code should just use the notifications for the :allocation property
+but if you want to track the allocation flags as well, for instance
+to know whether the absolute origin of @actor changed, then you might
+want use this signal instead."
+                   version="1.0">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="box" transfer-ownership="none">
+            <type name="ActorBox" c:type="ClutterActorBox"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="AllocationFlags" c:type="ClutterAllocationFlags"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="button-press-event"
+                   doc="The ::button-press-event signal is emitted each time a mouse button
+is pressed on @actor.
+or %FALSE to continue the emission."
+                   version="0.6">
+        <return-value transfer-ownership="full">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="none">
+            <type name="Event" c:type="ClutterEvent"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="button-release-event"
+                   doc="The ::button-release-event signal is emitted each time a mouse button
+is released on @actor.
+or %FALSE to continue the emission."
+                   version="0.6">
+        <return-value transfer-ownership="full">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="none">
+            <type name="Event" c:type="ClutterEvent"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="captured-event"
+                   doc="The ::captured-event signal is emitted when an event is captured
+by Clutter. This signal will be emitted starting from the top-level
+container (the #ClutterStage) to the actor which received the event
+going down the hierarchy. This signal can be used to intercept every
+event before the specialized events (like
+ClutterActor::button-press-event or ::key-released-event) are
+emitted.
+or %FALSE to continue the emission."
+                   version="0.6">
+        <return-value transfer-ownership="full">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="none">
+            <type name="Event" c:type="ClutterEvent"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="destroy"
+                   doc="The ::destroy signal is emitted when an actor is destroyed,
+either by direct invocation of clutter_actor_destroy() or
+when the #ClutterGroup that contains the actor is destroyed."
+                   version="0.2">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="enter-event"
+                   doc="The ::enter-event signal is emitted when the pointer enters the @actor
+or %FALSE to continue the emission."
+                   version="0.6">
+        <return-value transfer-ownership="full">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="none">
+            <type name="Event" c:type="ClutterEvent"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="event"
+                   doc="The ::event signal is emitted each time an event is received
+by the @actor. This signal will be emitted on every actor,
+following the hierarchy chain, until it reaches the top-level
+container (the #ClutterStage).
+or %FALSE to continue the emission."
+                   version="0.6">
+        <return-value transfer-ownership="full">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="none">
+            <type name="Event" c:type="ClutterEvent"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="hide"
+                   doc="The ::hide signal is emitted when an actor is no longer rendered
+on the stage."
+                   version="0.2">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="key-focus-in"
+                   doc="The ::focus-in signal is emitted when @actor recieves key focus."
+                   version="0.6">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="key-focus-out"
+                   doc="The ::key-focus-out signal is emitted when @actor loses key focus."
+                   version="0.6">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="key-press-event"
+                   doc="The ::key-press-event signal is emitted each time a keyboard button
+is pressed while @actor has key focus (see clutter_stage_set_key_focus()).
+or %FALSE to continue the emission."
+                   version="0.6">
+        <return-value transfer-ownership="full">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="none">
+            <type name="Event" c:type="ClutterEvent"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="key-release-event"
+                   doc="The ::key-release-event signal is emitted each time a keyboard button
+is released while @actor has key focus (see
+clutter_stage_set_key_focus()).
+or %FALSE to continue the emission."
+                   version="0.6">
+        <return-value transfer-ownership="full">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="none">
+            <type name="Event" c:type="ClutterEvent"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="leave-event"
+                   doc="The ::leave-event signal is emitted when the pointer leaves the @actor.
+or %FALSE to continue the emission."
+                   version="0.6">
+        <return-value transfer-ownership="full">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="none">
+            <type name="Event" c:type="ClutterEvent"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="motion-event"
+                   doc="The ::motion-event signal is emitted each time the mouse pointer is
+moved over @actor.
+or %FALSE to continue the emission."
+                   version="0.6">
+        <return-value transfer-ownership="full">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="none">
+            <type name="Event" c:type="ClutterEvent"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="paint"
+                   doc="The ::paint signal is emitted each time an actor is being painted.
+Subclasses of #ClutterActor should override the class signal handler
+and paint themselves in that function.
+It is possible to connect a handler to the ::paint signal in order
+to set up some custom aspect of a paint."
+                   version="0.8">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="parent-set"
+                   doc="This signal is emitted when the parent of the actor changes."
+                   version="0.2">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="old_parent" transfer-ownership="none">
+            <type name="Actor" c:type="ClutterActor"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="pick"
+                   doc="The ::pick signal is emitted each time an actor is being painted
+in &quot;pick mode&quot;. The pick mode is used to identify the actor during
+the event handling phase, or by clutter_stage_get_actor_at_pos().
+The actor should paint its shape using the passed @pick_color.
+Subclasses of #ClutterActor should override the class signal handler
+and paint themselves in that function.
+It is possible to connect a handler to the ::pick signal in order
+to set up some custom aspect of a paint in pick mode."
+                   version="1.0">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="color" transfer-ownership="none">
+            <type name="Color" c:type="ClutterColor"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="queue-redraw"
+                   doc="The ::queue_redraw signal is emitted when clutter_actor_queue_redraw()
+is called on @origin.
+The default implementation for #ClutterActor chains up to the
+parent actor and queues a redraw on the parent, thus &quot;bubbling&quot;
+the redraw queue up through the actor graph. The default
+implementation for #ClutterStage queues a clutter_redraw() in a
+main loop idle handler.
+Note that the @origin actor may be the stage, or a container; it
+does not have to be a leaf node in the actor graph.
+Toolkits embedding a #ClutterStage which require a redraw and
+relayout cycle can stop the emission of this signal using the
+GSignal API, redraw the UI and then call clutter_redraw()
+themselves, like:
+|[
+static void
+on_redraw_complete (void)
+{
+/&amp;ast; execute the Clutter drawing pipeline &amp;ast;/
+clutter_redraw ();
+}
+static void
+on_stage_queue_redraw (ClutterStage *stage)
+{
+/&amp;ast; this prevents the default handler to run &amp;ast;/
+g_signal_stop_emission_by_name (stage, &quot;queue-redraw&quot;);
+/&amp;ast; queue a redraw with the host toolkit and call
+&amp;ast; a function when the redraw has been completed
+&amp;ast;/
+queue_a_redraw (G_CALLBACK (on_redraw_complete));
+}
+]|
+&lt;note&gt;&lt;para&gt;This signal is emitted before the Clutter paint
+pipeline is executed. If you want to know when the pipeline has
+been completed you should connect to the ::paint signal on the
+Stage with g_signal_connect_after().&lt;/para&gt;&lt;/note&gt;"
+                   version="1.0">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="origin" transfer-ownership="none">
+            <type name="Actor" c:type="ClutterActor"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="queue-relayout">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="realize"
+                   doc="The ::realize signal is emitted each time an actor is being
+realized."
+                   version="0.8">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="scroll-event"
+                   doc="The ::scroll-event signal is emitted each time the mouse is
+scrolled on @actor
+or %FALSE to continue the emission."
+                   version="0.6">
+        <return-value transfer-ownership="full">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="none">
+            <type name="Event" c:type="ClutterEvent"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="show"
+                   doc="The ::show signal is emitted when an actor is visible and
+rendered on the stage."
+                   version="0.2">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="unrealize"
+                   doc="The ::unrealize signal is emitted each time an actor is being
+unrealized."
+                   version="0.8">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+    </class>
+    <record name="ActorBox"
+            c:type="ClutterActorBox"
+            doc="Bounding box of an actor. The coordinates of the top left and right bottom
+corners of an actor. The coordinates of the two points are expressed in
+pixels with sub-pixel precision"
+            glib:type-name="ClutterActorBox"
+            glib:get-type="clutter_actor_box_get_type">
+      <field name="x1" writable="1">
+        <type name="float" c:type="gfloat"/>
+      </field>
+      <field name="y1" writable="1">
+        <type name="float" c:type="gfloat"/>
+      </field>
+      <field name="x2" writable="1">
+        <type name="float" c:type="gfloat"/>
+      </field>
+      <field name="y2" writable="1">
+        <type name="float" c:type="gfloat"/>
+      </field>
+      <constructor name="new"
+                   c:identifier="clutter_actor_box_new"
+                   doc="Allocates a new #ClutterActorBox using the passed coordinates
+for the top left and bottom right points
+clutter_actor_box_free() to free the resources"
+                   version="1.0">
+        <return-value transfer-ownership="full">
+          <type name="ActorBox" c:type="ClutterActorBox*"/>
+        </return-value>
+        <parameters>
+          <parameter name="x_1" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+          <parameter name="y_1" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+          <parameter name="x_2" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+          <parameter name="y_2" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="copy"
+              c:identifier="clutter_actor_box_copy"
+              doc="Copies @box
+clutter_actor_box_free() to free the allocated resources"
+              version="1.0">
+        <return-value transfer-ownership="full">
+          <type name="ActorBox" c:type="ClutterActorBox*"/>
+        </return-value>
+      </method>
+      <method name="free"
+              c:identifier="clutter_actor_box_free"
+              doc="Frees a #ClutterActorBox allocated using clutter_actor_box_new()
+or clutter_actor_box_copy()"
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="equal"
+              c:identifier="clutter_actor_box_equal"
+              doc="Checks @box_a and @box_b for equality"
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="box_b" transfer-ownership="none">
+            <type name="ActorBox" c:type="ClutterActorBox*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_x"
+              c:identifier="clutter_actor_box_get_x"
+              doc="Retrieves the X coordinate of the origin of @box"
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="float" c:type="gfloat"/>
+        </return-value>
+      </method>
+      <method name="get_y"
+              c:identifier="clutter_actor_box_get_y"
+              doc="Retrieves the Y coordinate of the origin of @box"
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="float" c:type="gfloat"/>
+        </return-value>
+      </method>
+      <method name="get_width"
+              c:identifier="clutter_actor_box_get_width"
+              doc="Retrieves the width of the @box"
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="float" c:type="gfloat"/>
+        </return-value>
+      </method>
+      <method name="get_height"
+              c:identifier="clutter_actor_box_get_height"
+              doc="Retrieves the height of the @box"
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="float" c:type="gfloat"/>
+        </return-value>
+      </method>
+      <method name="get_origin"
+              c:identifier="clutter_actor_box_get_origin"
+              doc="Retrieves the origin of @box"
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="x"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="return location for the X coordinate, or %NULL">
+            <type name="float" c:type="gfloat*"/>
+          </parameter>
+          <parameter name="y"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="return location for the Y coordinate, or %NULL">
+            <type name="float" c:type="gfloat*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_size"
+              c:identifier="clutter_actor_box_get_size"
+              doc="Retrieves the size of @box"
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="width"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="return location for the width, or %NULL">
+            <type name="float" c:type="gfloat*"/>
+          </parameter>
+          <parameter name="height"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="return location for the height, or %NULL">
+            <type name="float" c:type="gfloat*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_area"
+              c:identifier="clutter_actor_box_get_area"
+              doc="Retrieves the area of @box"
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="float" c:type="gfloat"/>
+        </return-value>
+      </method>
+      <method name="contains"
+              c:identifier="clutter_actor_box_contains"
+              doc="Checks whether a point with @x, @y coordinates is contained
+withing @box"
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="x" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="from_vertices"
+              c:identifier="clutter_actor_box_from_vertices"
+              doc="Calculates the bounding box represented by the four vertices; for details
+of the vertex array see clutter_actor_get_abs_allocation_vertices()."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="verts"
+                     transfer-ownership="none"
+                     doc="array of four #ClutterVertex">
+            <array c:type="ClutterVertex" fixed-size="4">
+              <type name="Vertex"/>
+            </array>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="interpolate"
+              c:identifier="clutter_actor_box_interpolate"
+              doc="Interpolates between @initial and @final #ClutterActorBox&lt;!-- --&gt;es
+using @progress"
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="final" transfer-ownership="none">
+            <type name="ActorBox" c:type="ClutterActorBox*"/>
+          </parameter>
+          <parameter name="progress" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="result"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none"
+                     doc="return location for the interpolation">
+            <type name="ActorBox" c:type="ClutterActorBox*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="clamp_to_pixel"
+              c:identifier="clutter_actor_box_clamp_to_pixel"
+              doc="Clamps the components of @box to the nearest integer"
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+    </record>
+    <record name="ActorClass"
+            c:type="ClutterActorClass"
+            glib:is-gtype-struct-for="Actor"
+            doc="Base class for actors.">
+      <field name="parent_class">
+        <type name="GObject.InitiallyUnownedClass"
+              c:type="GInitiallyUnownedClass"/>
+      </field>
+      <field name="show">
+        <callback name="show" c:type="show">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="show_all">
+        <callback name="show_all" c:type="show_all">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="hide">
+        <callback name="hide" c:type="hide">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="hide_all">
+        <callback name="hide_all" c:type="hide_all">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="realize">
+        <callback name="realize" c:type="realize">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="unrealize">
+        <callback name="unrealize" c:type="unrealize">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="map">
+        <callback name="map" c:type="map">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="unmap">
+        <callback name="unmap" c:type="unmap">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="paint">
+        <callback name="paint" c:type="paint">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="parent_set">
+        <callback name="parent_set" c:type="parent_set">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+            <parameter name="old_parent" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="destroy">
+        <callback name="destroy" c:type="destroy">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="pick">
+        <callback name="pick" c:type="pick">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+            <parameter name="color" transfer-ownership="none">
+              <type name="Color" c:type="ClutterColor*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="queue_redraw">
+        <callback name="queue_redraw" c:type="queue_redraw">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+            <parameter name="leaf_that_queued" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_preferred_width">
+        <callback name="get_preferred_width" c:type="get_preferred_width">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+            <parameter name="for_height" transfer-ownership="none">
+              <type name="float" c:type="gfloat"/>
+            </parameter>
+            <parameter name="min_width_p"
+                       direction="out"
+                       caller-allocates="0"
+                       transfer-ownership="full">
+              <type name="float" c:type="gfloat*"/>
+            </parameter>
+            <parameter name="natural_width_p"
+                       direction="out"
+                       caller-allocates="0"
+                       transfer-ownership="full">
+              <type name="float" c:type="gfloat*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_preferred_height">
+        <callback name="get_preferred_height" c:type="get_preferred_height">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+            <parameter name="for_width" transfer-ownership="none">
+              <type name="float" c:type="gfloat"/>
+            </parameter>
+            <parameter name="min_height_p"
+                       direction="out"
+                       caller-allocates="0"
+                       transfer-ownership="full">
+              <type name="float" c:type="gfloat*"/>
+            </parameter>
+            <parameter name="natural_height_p"
+                       direction="out"
+                       caller-allocates="0"
+                       transfer-ownership="full">
+              <type name="float" c:type="gfloat*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="allocate">
+        <callback name="allocate" c:type="allocate">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+            <parameter name="box" transfer-ownership="none">
+              <type name="ActorBox" c:type="ClutterActorBox*"/>
+            </parameter>
+            <parameter name="flags" transfer-ownership="none">
+              <type name="AllocationFlags" c:type="ClutterAllocationFlags"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="apply_transform">
+        <callback name="apply_transform" c:type="apply_transform">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+            <parameter name="matrix" transfer-ownership="none">
+              <type name="Cogl.Matrix" c:type="CoglMatrix*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="event">
+        <callback name="event" c:type="event">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+            <parameter name="event" transfer-ownership="none">
+              <type name="Event" c:type="ClutterEvent*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="button_press_event">
+        <callback name="button_press_event" c:type="button_press_event">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+            <parameter name="event" transfer-ownership="none">
+              <type name="ButtonEvent" c:type="ClutterButtonEvent*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="button_release_event">
+        <callback name="button_release_event" c:type="button_release_event">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+            <parameter name="event" transfer-ownership="none">
+              <type name="ButtonEvent" c:type="ClutterButtonEvent*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="scroll_event">
+        <callback name="scroll_event" c:type="scroll_event">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+            <parameter name="event" transfer-ownership="none">
+              <type name="ScrollEvent" c:type="ClutterScrollEvent*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="key_press_event">
+        <callback name="key_press_event" c:type="key_press_event">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+            <parameter name="event" transfer-ownership="none">
+              <type name="KeyEvent" c:type="ClutterKeyEvent*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="key_release_event">
+        <callback name="key_release_event" c:type="key_release_event">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+            <parameter name="event" transfer-ownership="none">
+              <type name="KeyEvent" c:type="ClutterKeyEvent*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="motion_event">
+        <callback name="motion_event" c:type="motion_event">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+            <parameter name="event" transfer-ownership="none">
+              <type name="MotionEvent" c:type="ClutterMotionEvent*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="enter_event">
+        <callback name="enter_event" c:type="enter_event">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+            <parameter name="event" transfer-ownership="none">
+              <type name="CrossingEvent" c:type="ClutterCrossingEvent*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="leave_event">
+        <callback name="leave_event" c:type="leave_event">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+            <parameter name="event" transfer-ownership="none">
+              <type name="CrossingEvent" c:type="ClutterCrossingEvent*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="captured_event">
+        <callback name="captured_event" c:type="captured_event">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+            <parameter name="event" transfer-ownership="none">
+              <type name="Event" c:type="ClutterEvent*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="key_focus_in">
+        <callback name="key_focus_in" c:type="key_focus_in">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="key_focus_out">
+        <callback name="key_focus_out" c:type="key_focus_out">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="queue_relayout">
+        <callback name="queue_relayout" c:type="queue_relayout">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_padding_dummy">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="31">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <bitfield name="ActorFlags"
+              doc="Flags used to signal the state of an actor."
+              glib:type-name="ClutterActorFlags"
+              glib:get-type="clutter_actor_flags_get_type"
+              c:type="ClutterActorFlags">
+      <member name="mapped"
+              value="2"
+              c:identifier="CLUTTER_ACTOR_MAPPED"
+              glib:nick="mapped"/>
+      <member name="realized"
+              value="4"
+              c:identifier="CLUTTER_ACTOR_REALIZED"
+              glib:nick="realized"/>
+      <member name="reactive"
+              value="8"
+              c:identifier="CLUTTER_ACTOR_REACTIVE"
+              glib:nick="reactive"/>
+      <member name="visible"
+              value="16"
+              c:identifier="CLUTTER_ACTOR_VISIBLE"
+              glib:nick="visible"/>
+      <member name="no_layout"
+              value="32"
+              c:identifier="CLUTTER_ACTOR_NO_LAYOUT"
+              glib:nick="no-layout"/>
+    </bitfield>
+    <record name="ActorPrivate" c:type="ClutterActorPrivate">
+    </record>
+    <constant name="Adiaeresis" value="196">
+      <type name="int"/>
+    </constant>
+    <constant name="Agrave" value="192">
+      <type name="int"/>
+    </constant>
+    <constant name="Ahook" value="16785058">
+      <type name="int"/>
+    </constant>
+    <bitfield name="AllocationFlags"
+              doc="Flags passed to the #ClutterActor::allocate() virtual function and
+to the clutter_actor_allocate() function"
+              version="1.0"
+              glib:type-name="ClutterAllocationFlags"
+              glib:get-type="clutter_allocation_flags_get_type"
+              c:type="ClutterAllocationFlags">
+      <member name="allocation_none"
+              value="0"
+              c:identifier="CLUTTER_ALLOCATION_NONE"
+              glib:nick="allocation-none"/>
+      <member name="absolute_origin_changed"
+              value="2"
+              c:identifier="CLUTTER_ABSOLUTE_ORIGIN_CHANGED"
+              glib:nick="absolute-origin-changed"/>
+    </bitfield>
+    <class name="Alpha"
+           c:type="ClutterAlpha"
+           doc="#ClutterAlpha combines a #ClutterTimeline and a function.
+The contents of the #ClutterAlpha structure are private and should
+only be accessed using the provided API."
+           version="0.2"
+           parent="GObject.InitiallyUnowned"
+           glib:type-name="ClutterAlpha"
+           glib:get-type="clutter_alpha_get_type"
+           glib:type-struct="AlphaClass">
+      <implements name="Scriptable"/>
+      <constructor name="new"
+                   c:identifier="clutter_alpha_new"
+                   doc="Creates a new #ClutterAlpha instance.  You must set a function
+to compute the alpha value using clutter_alpha_set_func() and
+bind a #ClutterTimeline object to the #ClutterAlpha instance
+using clutter_alpha_set_timeline().
+You should use the newly created #ClutterAlpha instance inside
+a #ClutterBehaviour object."
+                   version="0.2">
+        <return-value transfer-ownership="full">
+          <type name="Alpha" c:type="ClutterAlpha*"/>
+        </return-value>
+      </constructor>
+      <constructor name="new_full"
+                   c:identifier="clutter_alpha_new_full"
+                   doc="Creates a new #ClutterAlpha instance and sets the timeline
+and animation mode.
+See also clutter_alpha_set_timeline() and clutter_alpha_set_mode()."
+                   version="1.0">
+        <return-value transfer-ownership="full">
+          <type name="Alpha" c:type="ClutterAlpha*"/>
+        </return-value>
+        <parameters>
+          <parameter name="timeline" transfer-ownership="none">
+            <type name="Timeline" c:type="ClutterTimeline*"/>
+          </parameter>
+          <parameter name="mode" transfer-ownership="none">
+            <type name="ulong" c:type="gulong"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_with_func"
+                   c:identifier="clutter_alpha_new_with_func"
+                   doc="Creates a new #ClutterAlpha instances and sets the timeline
+and the alpha function.
+This function will not register @func as a global alpha function.
+See also clutter_alpha_set_timeline() and clutter_alpha_set_func()."
+                   version="1.0">
+        <return-value transfer-ownership="full">
+          <type name="Alpha" c:type="ClutterAlpha*"/>
+        </return-value>
+        <parameters>
+          <parameter name="timeline" transfer-ownership="none">
+            <type name="Timeline" c:type="ClutterTimeline*"/>
+          </parameter>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     scope="notified"
+                     closure="2"
+                     destroy="3">
+            <type name="AlphaFunc" c:type="ClutterAlphaFunc"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+          <parameter name="destroy" transfer-ownership="none" scope="call">
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <function name="register_func"
+                c:identifier="clutter_alpha_register_func"
+                doc="Registers a global alpha function and returns its logical id
+to be used by clutter_alpha_set_mode() or by #ClutterAnimation.
+The logical id is always greater than %CLUTTER_ANIMATION_LAST."
+                version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="ulong" c:type="gulong"/>
+        </return-value>
+        <parameters>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="1">
+            <type name="AlphaFunc" c:type="ClutterAlphaFunc"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="register_closure"
+                c:identifier="clutter_alpha_register_closure"
+                doc="#GClosure variant of clutter_alpha_register_func().
+Registers a global alpha function and returns its logical id
+to be used by clutter_alpha_set_mode() or by #ClutterAnimation.
+The logical id is always greater than %CLUTTER_ANIMATION_LAST."
+                version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="ulong" c:type="gulong"/>
+        </return-value>
+        <parameters>
+          <parameter name="closure" transfer-ownership="none">
+            <type name="GObject.Closure" c:type="GClosure*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <method name="get_alpha"
+              c:identifier="clutter_alpha_get_alpha"
+              doc="Query the current alpha value."
+              version="0.2">
+        <return-value transfer-ownership="none">
+          <type name="double" c:type="gdouble"/>
+        </return-value>
+      </method>
+      <method name="set_func"
+              c:identifier="clutter_alpha_set_func"
+              doc="Sets the #ClutterAlphaFunc function used to compute
+the alpha value at each frame of the #ClutterTimeline
+bound to @alpha.
+This function will not register @func as a global alpha function."
+              version="0.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     scope="notified"
+                     closure="2"
+                     destroy="3">
+            <type name="AlphaFunc" c:type="ClutterAlphaFunc"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+          <parameter name="destroy" transfer-ownership="none" scope="call">
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_closure"
+              c:identifier="clutter_alpha_set_closure"
+              doc="Sets the #GClosure used to compute the alpha value at each
+frame of the #ClutterTimeline bound to @alpha."
+              version="0.8">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="closure" transfer-ownership="none">
+            <type name="GObject.Closure" c:type="GClosure*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_timeline"
+              c:identifier="clutter_alpha_set_timeline"
+              doc="Binds @alpha to @timeline."
+              version="0.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="timeline" transfer-ownership="none">
+            <type name="Timeline" c:type="ClutterTimeline*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_timeline"
+              c:identifier="clutter_alpha_get_timeline"
+              doc="Gets the #ClutterTimeline bound to @alpha."
+              version="0.2">
+        <return-value transfer-ownership="none"
+                      doc="a #ClutterTimeline instance">
+          <type name="Timeline" c:type="ClutterTimeline*"/>
+        </return-value>
+      </method>
+      <method name="set_mode"
+              c:identifier="clutter_alpha_set_mode"
+              doc="Sets the progress function of @alpha using the symbolic value
+of @mode, as taken by the #ClutterAnimationMode enumeration or
+using the value returned by clutter_alpha_register_func()."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="mode" transfer-ownership="none">
+            <type name="ulong" c:type="gulong"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_mode"
+              c:identifier="clutter_alpha_get_mode"
+              doc="Retrieves the #ClutterAnimationMode used by @alpha."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="ulong" c:type="gulong"/>
+        </return-value>
+      </method>
+      <property name="alpha"
+                version="0.2"
+                doc="The alpha value as computed by the alpha function. The linear
+interval is 0.0 to 1.0, but the Alpha allows overshooting by
+one unit in each direction, so the valid interval is -1.0 to 2.0.">
+        <type name="double" c:type="gdouble"/>
+      </property>
+      <property name="mode"
+                version="1.0"
+                writable="1"
+                construct="1"
+                doc="The progress function logical id - either a value from the
+#ClutterAnimationMode enumeration or a value returned by
+clutter_alpha_register_func().
+If %CLUTTER_CUSTOM_MODE is used then the function set using
+clutter_alpha_set_closure() or clutter_alpha_set_func()
+will be used.">
+        <type name="ulong" c:type="gulong"/>
+      </property>
+      <property name="timeline"
+                version="0.2"
+                writable="1"
+                doc="A #ClutterTimeline instance used to drive the alpha function.">
+        <type name="Timeline" c:type="ClutterTimeline"/>
+      </property>
+      <field name="parent">
+        <type name="GObject.InitiallyUnowned" c:type="GInitiallyUnowned"/>
+      </field>
+      <field name="priv">
+        <type name="AlphaPrivate" c:type="ClutterAlphaPrivate*"/>
+      </field>
+    </class>
+    <record name="AlphaClass"
+            c:type="ClutterAlphaClass"
+            glib:is-gtype-struct-for="Alpha"
+            doc="Base class for #ClutterAlpha"
+            version="0.2">
+      <field name="parent_class">
+        <type name="GObject.InitiallyUnownedClass"
+              c:type="GInitiallyUnownedClass"/>
+      </field>
+      <field name="clutter_alpha_1">
+        <callback name="clutter_alpha_1" c:type="_clutter_alpha_1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_alpha_2">
+        <callback name="clutter_alpha_2" c:type="_clutter_alpha_2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_alpha_3">
+        <callback name="clutter_alpha_3" c:type="_clutter_alpha_3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_alpha_4">
+        <callback name="clutter_alpha_4" c:type="_clutter_alpha_4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_alpha_5">
+        <callback name="clutter_alpha_5" c:type="_clutter_alpha_5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <callback name="AlphaFunc"
+              c:type="ClutterAlphaFunc"
+              doc="A function returning a value depending on the position of
+the #ClutterTimeline bound to @alpha."
+              version="0.2">
+      <return-value transfer-ownership="none">
+        <type name="double" c:type="gdouble"/>
+      </return-value>
+      <parameters>
+        <parameter name="alpha" transfer-ownership="none">
+          <type name="Alpha" c:type="ClutterAlpha*"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="1">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <record name="AlphaPrivate" c:type="ClutterAlphaPrivate">
+    </record>
+    <constant name="Alt_L" value="65513">
+      <type name="int"/>
+    </constant>
+    <constant name="Alt_R" value="65514">
+      <type name="int"/>
+    </constant>
+    <constant name="Amacron" value="960">
+      <type name="int"/>
+    </constant>
+    <interface name="Animatable"
+               c:type="ClutterAnimatable"
+               doc="#ClutterAnimatable is an opaque structure whose members cannot be directly
+accessed"
+               version="1.0"
+               glib:type-name="ClutterAnimatable"
+               glib:get-type="clutter_animatable_get_type"
+               glib:type-struct="AnimatableIface">
+      <virtual-method name="animate_property" invoker="animate_property">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="animation" transfer-ownership="none">
+            <type name="Animation" c:type="ClutterAnimation*"/>
+          </parameter>
+          <parameter name="property_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="initial_value" transfer-ownership="none">
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+          <parameter name="final_value" transfer-ownership="none">
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+          <parameter name="progress" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="animate_property"
+              c:identifier="clutter_animatable_animate_property"
+              doc="Calls the animate_property() virtual function for @animatable.
+The @initial_value and @final_value #GValue&lt;!-- --&gt;s must contain
+the same type; @value must have been initialized to the same
+type of @initial_value and @final_value.
+All implementation of the #ClutterAnimatable interface must
+implement this function.
+be applied to the #ClutterAnimatable, and %FALSE otherwise"
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="animation" transfer-ownership="none">
+            <type name="Animation" c:type="ClutterAnimation*"/>
+          </parameter>
+          <parameter name="property_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="initial_value" transfer-ownership="none">
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+          <parameter name="final_value" transfer-ownership="none">
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+          <parameter name="progress" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+    </interface>
+    <record name="AnimatableIface"
+            c:type="ClutterAnimatableIface"
+            glib:is-gtype-struct-for="Animatable"
+            doc="Base interface for #GObject&lt;!-- --&gt;s that can be animated by a
+a #ClutterAnimation."
+            version="1.0">
+      <field name="parent_iface">
+        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+      </field>
+      <field name="animate_property">
+        <callback name="animate_property" c:type="animate_property">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="animatable" transfer-ownership="none">
+              <type name="Animatable" c:type="ClutterAnimatable*"/>
+            </parameter>
+            <parameter name="animation" transfer-ownership="none">
+              <type name="Animation" c:type="ClutterAnimation*"/>
+            </parameter>
+            <parameter name="property_name" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+            <parameter name="initial_value" transfer-ownership="none">
+              <type name="GObject.Value" c:type="GValue*"/>
+            </parameter>
+            <parameter name="final_value" transfer-ownership="none">
+              <type name="GObject.Value" c:type="GValue*"/>
+            </parameter>
+            <parameter name="progress" transfer-ownership="none">
+              <type name="double" c:type="gdouble"/>
+            </parameter>
+            <parameter name="value" transfer-ownership="none">
+              <type name="GObject.Value" c:type="GValue*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+    </record>
+    <class name="Animation"
+           c:type="ClutterAnimation"
+           doc="The #ClutterAnimation structure contains only private data and should
+be accessed using the provided functions."
+           version="1.0"
+           parent="GObject.Object"
+           glib:type-name="ClutterAnimation"
+           glib:get-type="clutter_animation_get_type"
+           glib:type-struct="AnimationClass">
+      <implements name="Scriptable"/>
+      <constructor name="new"
+                   c:identifier="clutter_animation_new"
+                   doc="Creates a new #ClutterAnimation instance. You should set the
+#GObject to be animated using clutter_animation_set_object(),
+set the duration with clutter_animation_set_duration() and the
+easing mode using clutter_animation_set_mode().
+Use clutter_animation_bind() or clutter_animation_bind_interval()
+to define the properties to be animated. The interval and the
+animated properties can be updated at runtime.
+The clutter_actor_animate() and relative family of functions provide
+an easy way to animate a #ClutterActor and automatically manage the
+lifetime of a #ClutterAnimation instance, so you should consider using
+those functions instead of manually creating an animation.
+to release the associated resources"
+                   version="1.0">
+        <return-value transfer-ownership="full">
+          <type name="Animation" c:type="ClutterAnimation*"/>
+        </return-value>
+      </constructor>
+      <method name="set_object"
+              c:identifier="clutter_animation_set_object"
+              doc="Attaches @animation to @object. The #ClutterAnimation will take a
+reference on @object."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="GObject.Object" c:type="GObject*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_object"
+              c:identifier="clutter_animation_get_object"
+              doc="Retrieves the #GObject attached to @animation."
+              version="1.0">
+        <return-value transfer-ownership="none" doc="a #GObject">
+          <type name="GObject.Object" c:type="GObject*"/>
+        </return-value>
+      </method>
+      <method name="set_mode"
+              c:identifier="clutter_animation_set_mode"
+              doc="Sets the animation @mode of @animation. The animation @mode is
+a logical id, either coming from the #ClutterAnimationMode enumeration
+or the return value of clutter_alpha_register_func().
+This function will also set #ClutterAnimation:alpha if needed."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="mode" transfer-ownership="none">
+            <type name="ulong" c:type="gulong"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_mode"
+              c:identifier="clutter_animation_get_mode"
+              doc="Retrieves the animation mode of @animation, as set by
+clutter_animation_set_mode()."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="ulong" c:type="gulong"/>
+        </return-value>
+      </method>
+      <method name="set_duration"
+              c:identifier="clutter_animation_set_duration"
+              doc="Sets the duration of @animation in milliseconds.
+This function will set #ClutterAnimation:alpha and
+#ClutterAnimation:timeline if needed."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="msecs" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_duration"
+              c:identifier="clutter_animation_get_duration"
+              doc="Retrieves the duration of @animation, in milliseconds."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="set_loop"
+              c:identifier="clutter_animation_set_loop"
+              doc="Sets whether @animation should loop over itself once finished.
+A looping #ClutterAnimation will not emit the #ClutterAnimation::completed
+signal when finished.
+This function will set #ClutterAnimation:alpha and
+#ClutterAnimation:timeline if needed."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="loop" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_loop"
+              c:identifier="clutter_animation_get_loop"
+              doc="Retrieves whether @animation is looping."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_timeline"
+              c:identifier="clutter_animation_set_timeline"
+              doc="Sets the #ClutterTimeline used by @animation."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="timeline"
+                     transfer-ownership="none"
+                     doc=" current #ClutterTimeline">
+            <type name="Timeline" c:type="ClutterTimeline*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_timeline"
+              c:identifier="clutter_animation_get_timeline"
+              doc="Retrieves the #ClutterTimeline used by @animation"
+              version="1.0">
+        <return-value transfer-ownership="none"
+                      doc="the timeline used by the animation">
+          <type name="Timeline" c:type="ClutterTimeline*"/>
+        </return-value>
+      </method>
+      <method name="set_alpha"
+              c:identifier="clutter_animation_set_alpha"
+              doc="Sets @alpha as the #ClutterAlpha used by @animation.
+If @alpha is not %NULL, the #ClutterAnimation will take ownership
+of the #ClutterAlpha instance."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="alpha" transfer-ownership="none">
+            <type name="Alpha" c:type="ClutterAlpha*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_alpha"
+              c:identifier="clutter_animation_get_alpha"
+              doc="Retrieves the #ClutterAlpha used by @animation."
+              version="1.0">
+        <return-value transfer-ownership="none"
+                      doc="the alpha object used by the animation">
+          <type name="Alpha" c:type="ClutterAlpha*"/>
+        </return-value>
+      </method>
+      <method name="bind"
+              c:identifier="clutter_animation_bind"
+              doc="Adds a single property with name @property_name to the
+animation @animation.  For more information about animations,
+see clutter_actor_animate().
+This method returns the animation primarily to make chained
+calls convenient in language bindings."
+              version="1.0">
+        <return-value transfer-ownership="none" doc="The animation itself.">
+          <type name="Animation" c:type="ClutterAnimation*"/>
+        </return-value>
+        <parameters>
+          <parameter name="property_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="final" transfer-ownership="none">
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="bind_interval"
+              c:identifier="clutter_animation_bind_interval"
+              doc="Binds @interval to the @property_name of the #GObject
+attached to @animation. The #ClutterAnimation will take
+ownership of the passed #ClutterInterval.  For more information
+about animations, see clutter_actor_animate().
+If you need to update the interval instance use
+clutter_animation_update_property() instead."
+              version="1.0">
+        <return-value transfer-ownership="none" doc="The animation itself.">
+          <type name="Animation" c:type="ClutterAnimation*"/>
+        </return-value>
+        <parameters>
+          <parameter name="property_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="interval"
+                     transfer-ownership="full"
+                     doc="a #ClutterInterval">
+            <type name="Interval" c:type="ClutterInterval*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="has_property"
+              c:identifier="clutter_animation_has_property"
+              doc="Checks whether @animation is controlling @property_name.
+#ClutterAnimation, %FALSE otherwise"
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="property_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="update"
+              c:identifier="clutter_animation_update"
+              doc="Updates the @final value of the interval for @property_name"
+              version="1.0">
+        <return-value transfer-ownership="none" doc="The animation itself.">
+          <type name="Animation" c:type="ClutterAnimation*"/>
+        </return-value>
+        <parameters>
+          <parameter name="property_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="final" transfer-ownership="none">
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="update_interval"
+              c:identifier="clutter_animation_update_interval"
+              doc="Changes the @interval for @property_name. The #ClutterAnimation
+will take ownership of the passed #ClutterInterval."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="property_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="interval" transfer-ownership="none">
+            <type name="Interval" c:type="ClutterInterval*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="unbind_property"
+              c:identifier="clutter_animation_unbind_property"
+              doc="Removes @property_name from the list of animated properties."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="property_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_interval"
+              c:identifier="clutter_animation_get_interval"
+              doc="Retrieves the #ClutterInterval associated to @property_name
+inside @animation.
+property with the same name was found. The returned interval is
+owned by the #ClutterAnimation and should not be unreferenced"
+              version="1.0">
+        <return-value transfer-ownership="none"
+                      doc="a #ClutterInterval or %NULL if no">
+          <type name="Interval" c:type="ClutterInterval*"/>
+        </return-value>
+        <parameters>
+          <parameter name="property_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="completed"
+              c:identifier="clutter_animation_completed"
+              doc="Emits the ::completed signal on @animation
+When using this function with a #ClutterAnimation created
+by the clutter_actor_animate() family of functions, @animation
+will be unreferenced and it will not be valid anymore,
+unless g_object_ref() was called before calling this function
+or unless a reference was taken inside a handler for the
+#ClutterAnimation::completed signal"
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <property name="alpha"
+                version="1.0"
+                writable="1"
+                doc="The #ClutterAlpha used by the animation.">
+        <type name="Alpha" c:type="ClutterAlpha"/>
+      </property>
+      <property name="duration"
+                version="1.0"
+                writable="1"
+                doc="The duration of the animation, expressed in milliseconds.">
+        <type name="uint" c:type="guint"/>
+      </property>
+      <property name="loop"
+                version="1.0"
+                writable="1"
+                doc="Whether the animation should loop.">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="mode"
+                version="1.0"
+                writable="1"
+                doc="The animation mode, either a value from #ClutterAnimationMode
+or a value returned by clutter_alpha_register_func(). The
+default value is %CLUTTER_LINEAR.">
+        <type name="ulong" c:type="gulong"/>
+      </property>
+      <property name="object"
+                version="1.0"
+                writable="1"
+                doc="The #GObject to which the animation applies.">
+        <type name="GObject.Object" c:type="GObject"/>
+      </property>
+      <property name="timeline"
+                version="1.0"
+                writable="1"
+                doc="The #ClutterTimeline used by the animation.">
+        <type name="Timeline" c:type="ClutterTimeline"/>
+      </property>
+      <field name="parent_instance">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="priv">
+        <type name="AnimationPrivate" c:type="ClutterAnimationPrivate*"/>
+      </field>
+      <glib:signal name="completed"
+                   doc="The ::completed signal is emitted once the animation has
+been completed.
+The @animation instance is guaranteed to be valid for the entire
+duration of the signal emission chain."
+                   version="1.0">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="started"
+                   doc="The ::started signal is emitted once the animation has been
+started"
+                   version="1.0">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+    </class>
+    <record name="AnimationClass"
+            c:type="ClutterAnimationClass"
+            glib:is-gtype-struct-for="Animation"
+            doc="The #ClutterAnimationClass structure contains only private data and
+should be accessed using the provided functions."
+            version="1.0">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="started">
+        <callback name="started" c:type="started">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="animation" transfer-ownership="none">
+              <type name="Animation" c:type="ClutterAnimation*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="completed">
+        <callback name="completed" c:type="completed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="animation" transfer-ownership="none">
+              <type name="Animation" c:type="ClutterAnimation*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="clutter_reserved1">
+        <callback name="clutter_reserved1" c:type="_clutter_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_reserved2">
+        <callback name="clutter_reserved2" c:type="_clutter_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_reserved3">
+        <callback name="clutter_reserved3" c:type="_clutter_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_reserved4">
+        <callback name="clutter_reserved4" c:type="_clutter_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_reserved5">
+        <callback name="clutter_reserved5" c:type="_clutter_reserved5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_reserved6">
+        <callback name="clutter_reserved6" c:type="_clutter_reserved6">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_reserved7">
+        <callback name="clutter_reserved7" c:type="_clutter_reserved7">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_reserved8">
+        <callback name="clutter_reserved8" c:type="_clutter_reserved8">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <enumeration name="AnimationMode"
+                 doc="The animation modes used by #ClutterAlpha and #ClutterAnimation. This
+enumeration can be expanded in later versions of Clutter. See the
+#ClutterAlpha documentation for a graph of all the animation modes.
+Every global alpha function registered using clutter_alpha_register_func()
+or clutter_alpha_register_closure() will have a logical id greater than
+%CLUTTER_ANIMATION_LAST."
+                 version="1.0"
+                 glib:type-name="ClutterAnimationMode"
+                 glib:get-type="clutter_animation_mode_get_type"
+                 c:type="ClutterAnimationMode">
+      <member name="custom_mode"
+              value="0"
+              c:identifier="CLUTTER_CUSTOM_MODE"
+              glib:nick="custom-mode"/>
+      <member name="linear"
+              value="1"
+              c:identifier="CLUTTER_LINEAR"
+              glib:nick="linear"/>
+      <member name="ease_in_quad"
+              value="2"
+              c:identifier="CLUTTER_EASE_IN_QUAD"
+              glib:nick="ease-in-quad"/>
+      <member name="ease_out_quad"
+              value="3"
+              c:identifier="CLUTTER_EASE_OUT_QUAD"
+              glib:nick="ease-out-quad"/>
+      <member name="ease_in_out_quad"
+              value="4"
+              c:identifier="CLUTTER_EASE_IN_OUT_QUAD"
+              glib:nick="ease-in-out-quad"/>
+      <member name="ease_in_cubic"
+              value="5"
+              c:identifier="CLUTTER_EASE_IN_CUBIC"
+              glib:nick="ease-in-cubic"/>
+      <member name="ease_out_cubic"
+              value="6"
+              c:identifier="CLUTTER_EASE_OUT_CUBIC"
+              glib:nick="ease-out-cubic"/>
+      <member name="ease_in_out_cubic"
+              value="7"
+              c:identifier="CLUTTER_EASE_IN_OUT_CUBIC"
+              glib:nick="ease-in-out-cubic"/>
+      <member name="ease_in_quart"
+              value="8"
+              c:identifier="CLUTTER_EASE_IN_QUART"
+              glib:nick="ease-in-quart"/>
+      <member name="ease_out_quart"
+              value="9"
+              c:identifier="CLUTTER_EASE_OUT_QUART"
+              glib:nick="ease-out-quart"/>
+      <member name="ease_in_out_quart"
+              value="10"
+              c:identifier="CLUTTER_EASE_IN_OUT_QUART"
+              glib:nick="ease-in-out-quart"/>
+      <member name="ease_in_quint"
+              value="11"
+              c:identifier="CLUTTER_EASE_IN_QUINT"
+              glib:nick="ease-in-quint"/>
+      <member name="ease_out_quint"
+              value="12"
+              c:identifier="CLUTTER_EASE_OUT_QUINT"
+              glib:nick="ease-out-quint"/>
+      <member name="ease_in_out_quint"
+              value="13"
+              c:identifier="CLUTTER_EASE_IN_OUT_QUINT"
+              glib:nick="ease-in-out-quint"/>
+      <member name="ease_in_sine"
+              value="14"
+              c:identifier="CLUTTER_EASE_IN_SINE"
+              glib:nick="ease-in-sine"/>
+      <member name="ease_out_sine"
+              value="15"
+              c:identifier="CLUTTER_EASE_OUT_SINE"
+              glib:nick="ease-out-sine"/>
+      <member name="ease_in_out_sine"
+              value="16"
+              c:identifier="CLUTTER_EASE_IN_OUT_SINE"
+              glib:nick="ease-in-out-sine"/>
+      <member name="ease_in_expo"
+              value="17"
+              c:identifier="CLUTTER_EASE_IN_EXPO"
+              glib:nick="ease-in-expo"/>
+      <member name="ease_out_expo"
+              value="18"
+              c:identifier="CLUTTER_EASE_OUT_EXPO"
+              glib:nick="ease-out-expo"/>
+      <member name="ease_in_out_expo"
+              value="19"
+              c:identifier="CLUTTER_EASE_IN_OUT_EXPO"
+              glib:nick="ease-in-out-expo"/>
+      <member name="ease_in_circ"
+              value="20"
+              c:identifier="CLUTTER_EASE_IN_CIRC"
+              glib:nick="ease-in-circ"/>
+      <member name="ease_out_circ"
+              value="21"
+              c:identifier="CLUTTER_EASE_OUT_CIRC"
+              glib:nick="ease-out-circ"/>
+      <member name="ease_in_out_circ"
+              value="22"
+              c:identifier="CLUTTER_EASE_IN_OUT_CIRC"
+              glib:nick="ease-in-out-circ"/>
+      <member name="ease_in_elastic"
+              value="23"
+              c:identifier="CLUTTER_EASE_IN_ELASTIC"
+              glib:nick="ease-in-elastic"/>
+      <member name="ease_out_elastic"
+              value="24"
+              c:identifier="CLUTTER_EASE_OUT_ELASTIC"
+              glib:nick="ease-out-elastic"/>
+      <member name="ease_in_out_elastic"
+              value="25"
+              c:identifier="CLUTTER_EASE_IN_OUT_ELASTIC"
+              glib:nick="ease-in-out-elastic"/>
+      <member name="ease_in_back"
+              value="26"
+              c:identifier="CLUTTER_EASE_IN_BACK"
+              glib:nick="ease-in-back"/>
+      <member name="ease_out_back"
+              value="27"
+              c:identifier="CLUTTER_EASE_OUT_BACK"
+              glib:nick="ease-out-back"/>
+      <member name="ease_in_out_back"
+              value="28"
+              c:identifier="CLUTTER_EASE_IN_OUT_BACK"
+              glib:nick="ease-in-out-back"/>
+      <member name="ease_in_bounce"
+              value="29"
+              c:identifier="CLUTTER_EASE_IN_BOUNCE"
+              glib:nick="ease-in-bounce"/>
+      <member name="ease_out_bounce"
+              value="30"
+              c:identifier="CLUTTER_EASE_OUT_BOUNCE"
+              glib:nick="ease-out-bounce"/>
+      <member name="ease_in_out_bounce"
+              value="31"
+              c:identifier="CLUTTER_EASE_IN_OUT_BOUNCE"
+              glib:nick="ease-in-out-bounce"/>
+      <member name="animation_last"
+              value="32"
+              c:identifier="CLUTTER_ANIMATION_LAST"
+              glib:nick="animation-last"/>
+    </enumeration>
+    <record name="AnimationPrivate" c:type="ClutterAnimationPrivate">
+    </record>
+    <class name="Animator"
+           c:type="ClutterAnimator"
+           doc="The #ClutterAnimator structure contains only private data and
+should be accessed using the provided API"
+           version="1.2"
+           parent="GObject.Object"
+           glib:type-name="ClutterAnimator"
+           glib:get-type="clutter_animator_get_type"
+           glib:type-struct="AnimatorClass">
+      <implements name="Scriptable"/>
+      <constructor name="new"
+                   c:identifier="clutter_animator_new"
+                   doc="Creates a new #ClutterAnimator instance"
+                   version="1.2">
+        <return-value transfer-ownership="full">
+          <type name="Animator" c:type="ClutterAnimator*"/>
+        </return-value>
+      </constructor>
+      <method name="set_key"
+              c:identifier="clutter_animator_set_key"
+              doc="Sets a single key in the #ClutterAnimator for the @property_name of"
+              version="1.2">
+        <return-value transfer-ownership="none" doc="The animator instance">
+          <type name="Animator" c:type="ClutterAnimator*"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="GObject.Object" c:type="GObject*"/>
+          </parameter>
+          <parameter name="property_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="mode" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="progress"
+                     transfer-ownership="none"
+                     doc=" value applies">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set"
+              c:identifier="clutter_animator_set"
+              doc="Adds multiple keys to a #ClutterAnimator, specifying the value a given
+property should have at a given progress of the animation. The mode
+specified is the mode used when going to this key from the previous key of
+the @property_name
+If a given (object, property, progress) tuple already exist the mode and
+value will be replaced with the new values."
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="first_object" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+          <parameter name="first_property_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="first_mode" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="first_progress"
+                     transfer-ownership="none"
+                     doc=" range is a normalized floating point value between 0 and 1">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_keys"
+              c:identifier="clutter_animator_get_keys"
+              doc="Returns a list of pointers to opaque structures with accessor functions
+that describe the keys added to an animator.
+list of #ClutterAnimatorKey&lt;!-- --&gt;s; the contents of the list are owned
+by the #ClutterAnimator, but you should free the returned list when done,
+using g_list_free()"
+              version="1.2">
+        <return-value transfer-ownership="container" doc="a">
+          <type name="GLib.List" c:type="GList*">
+            <type name="AnimatorKey"/>
+          </type>
+        </return-value>
+        <parameters>
+          <parameter name="object"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="a #GObject to search for, or %NULL for all objects">
+            <type name="GObject.Object" c:type="GObject*"/>
+          </parameter>
+          <parameter name="property_name"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="a specific property name to query for, or %NULL for all properties">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="progress"
+                     transfer-ownership="none"
+                     doc=" progresses">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_key"
+              c:identifier="clutter_animator_remove_key"
+              doc="Removes all keys matching the conditions specificed in the arguments."
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="a #GObject to search for, or %NULL for all">
+            <type name="GObject.Object" c:type="GObject*"/>
+          </parameter>
+          <parameter name="property_name"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="a specific property name to query for, or %NULL for all">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="progress" transfer-ownership="none" doc=" for all">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="start"
+              c:identifier="clutter_animator_start"
+              doc="Start the ClutterAnimator, this is a thin wrapper that rewinds
+and starts the animators current timeline."
+              version="1.2">
+        <return-value transfer-ownership="full">
+          <type name="Timeline" c:type="ClutterTimeline*"/>
+        </return-value>
+      </method>
+      <method name="compute_value"
+              c:identifier="clutter_animator_compute_value"
+              doc="Compute the value for a managed property at a given progress.
+If the property is an ease-in property, the current value of the property
+on the object will be used as the starting point for computation.
+an error occurs or the progress is before any of the keys) %FALSE is
+returned and the #GValue is left untouched"
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="GObject.Object" c:type="GObject*"/>
+          </parameter>
+          <parameter name="property_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="progress" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_timeline"
+              c:identifier="clutter_animator_get_timeline"
+              doc="Get the timeline hooked up for driving the #ClutterAnimator"
+              version="1.2">
+        <return-value transfer-ownership="none"
+                      doc="the #ClutterTimeline that drives the animator">
+          <type name="Timeline" c:type="ClutterTimeline*"/>
+        </return-value>
+      </method>
+      <method name="set_timeline"
+              c:identifier="clutter_animator_set_timeline"
+              doc="Sets an external timeline that will be used for driving the animation"
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="timeline" transfer-ownership="none">
+            <type name="Timeline" c:type="ClutterTimeline*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_duration"
+              c:identifier="clutter_animator_get_duration"
+              doc="Retrieves the current duration of an animator"
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="set_duration"
+              c:identifier="clutter_animator_set_duration"
+              doc="Runs the timeline of the #ClutterAnimator with a duration in msecs
+as specified."
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="duration" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="property_get_ease_in"
+              c:identifier="clutter_animator_property_get_ease_in"
+              doc="Checks if a property value is to be eased into the animation."
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="GObject.Object" c:type="GObject*"/>
+          </parameter>
+          <parameter name="property_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="property_set_ease_in"
+              c:identifier="clutter_animator_property_set_ease_in"
+              doc="Sets whether a property value is to be eased into the animation."
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="GObject.Object" c:type="GObject*"/>
+          </parameter>
+          <parameter name="property_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="ease_in" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="property_get_interpolation"
+              c:identifier="clutter_animator_property_get_interpolation"
+              doc="Get the interpolation used by animator for a property on a particular
+object."
+              version="1.2">
+        <return-value transfer-ownership="full">
+          <type name="Interpolation" c:type="ClutterInterpolation"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="GObject.Object" c:type="GObject*"/>
+          </parameter>
+          <parameter name="property_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="property_set_interpolation"
+              c:identifier="clutter_animator_property_set_interpolation"
+              doc="Set the interpolation method to use, %CLUTTER_INTERPOLATION_LINEAR causes
+the values to linearly change between the values, and
+%CLUTTER_INTERPOLATION_CUBIC causes the values to smoothly change between
+the values."
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="GObject.Object" c:type="GObject*"/>
+          </parameter>
+          <parameter name="property_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="interpolation" transfer-ownership="none">
+            <type name="Interpolation" c:type="ClutterInterpolation"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="duration"
+                version="1.2"
+                writable="1"
+                doc="The duration of the #ClutterTimeline used by the #ClutterAnimator
+to drive the animation">
+        <type name="uint" c:type="guint"/>
+      </property>
+      <property name="timeline"
+                version="1.2"
+                writable="1"
+                doc="The #ClutterTimeline used by the #ClutterAnimator to drive the
+animation">
+        <type name="Timeline" c:type="ClutterTimeline"/>
+      </property>
+      <field name="parent_instance">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="priv">
+        <type name="AnimatorPrivate" c:type="ClutterAnimatorPrivate*"/>
+      </field>
+    </class>
+    <record name="AnimatorClass"
+            c:type="ClutterAnimatorClass"
+            glib:is-gtype-struct-for="Animator"
+            doc="The #ClutterAnimatorClass structure contains only private data"
+            version="1.2">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="_padding_dummy">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="16">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <record name="AnimatorKey"
+            c:type="ClutterAnimatorKey"
+            doc="A key frame inside a #ClutterAnimator"
+            version="1.2"
+            glib:type-name="ClutterAnimatorKey"
+            glib:get-type="clutter_animator_key_get_type">
+      <method name="get_object"
+              c:identifier="clutter_animator_key_get_object"
+              doc="Retrieves the object a key applies to."
+              version="1.2">
+        <return-value transfer-ownership="none"
+                      doc="the object an animator_key exist for.">
+          <type name="GObject.Object" c:type="GObject*"/>
+        </return-value>
+      </method>
+      <method name="get_property_name"
+              c:identifier="clutter_animator_key_get_property_name"
+              doc="Retrieves the name of the property a key applies to."
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_property_type"
+              c:identifier="clutter_animator_key_get_property_type"
+              doc="Retrieves the #GType of the property a key applies to
+You can use this type to initialize the #GValue to pass to
+clutter_animator_key_get_value()"
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="GType" c:type="GType"/>
+        </return-value>
+      </method>
+      <method name="get_mode"
+              c:identifier="clutter_animator_key_get_mode"
+              doc="Retrieves the mode of a #ClutterAnimator key, for the first key of a
+property for an object this represents the whether the animation is
+open ended and or curved for the remainding keys for the property it
+represents the easing mode."
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="ulong" c:type="gulong"/>
+        </return-value>
+      </method>
+      <method name="get_progress"
+              c:identifier="clutter_animator_key_get_progress"
+              doc="Retrieves the progress of an clutter_animator_key"
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="double" c:type="gdouble"/>
+        </return-value>
+      </method>
+      <method name="get_value"
+              c:identifier="clutter_animator_key_get_value"
+              doc="Retrieves a copy of the value for a #ClutterAnimatorKey.
+The passed in #GValue needs to be already initialized for the value
+type of the key or to a type that allow transformation from the value
+type of the key.
+Use g_value_unset() when done.
+%FALSE otherwise"
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="value" transfer-ownership="none">
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <record name="AnimatorPrivate" c:type="ClutterAnimatorPrivate">
+    </record>
+    <record name="AnyEvent"
+            c:type="ClutterAnyEvent"
+            doc="Common members for a #ClutterEvent"
+            version="0.2">
+      <field name="type" writable="1">
+        <type name="EventType" c:type="ClutterEventType"/>
+      </field>
+      <field name="time" writable="1">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+      <field name="flags" writable="1">
+        <type name="EventFlags" c:type="ClutterEventFlags"/>
+      </field>
+      <field name="stage" writable="1">
+        <type name="Stage" c:type="ClutterStage*"/>
+      </field>
+      <field name="source" writable="1">
+        <type name="Actor" c:type="ClutterActor*"/>
+      </field>
+    </record>
+    <constant name="Aogonek" value="417">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_0" value="16778848">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_1" value="16778849">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_2" value="16778850">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_3" value="16778851">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_4" value="16778852">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_5" value="16778853">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_6" value="16778854">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_7" value="16778855">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_8" value="16778856">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_9" value="16778857">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_ain" value="1497">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_alef" value="1479">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_alefmaksura" value="1513">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_beh" value="1480">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_comma" value="1452">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_dad" value="1494">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_dal" value="1487">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_damma" value="1519">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_dammatan" value="1516">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_ddal" value="16778888">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_farsi_yeh" value="16778956">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_fatha" value="1518">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_fathatan" value="1515">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_feh" value="1505">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_fullstop" value="16778964">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_gaf" value="16778927">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_ghain" value="1498">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_ha" value="1511">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_hah" value="1485">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_hamza" value="1473">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_hamza_above" value="16778836">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_hamza_below" value="16778837">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_hamzaonalef" value="1475">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_hamzaonwaw" value="1476">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_hamzaonyeh" value="1478">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_hamzaunderalef" value="1477">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_heh" value="1511">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_heh_doachashmee" value="16778942">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_heh_goal" value="16778945">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_jeem" value="1484">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_jeh" value="16778904">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_kaf" value="1507">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_kasra" value="1520">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_kasratan" value="1517">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_keheh" value="16778921">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_khah" value="1486">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_lam" value="1508">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_madda_above" value="16778835">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_maddaonalef" value="1474">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_meem" value="1509">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_noon" value="1510">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_noon_ghunna" value="16778938">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_peh" value="16778878">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_percent" value="16778858">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_qaf" value="1506">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_question_mark" value="1471">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_ra" value="1489">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_rreh" value="16778897">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_sad" value="1493">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_seen" value="1491">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_semicolon" value="1467">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_shadda" value="1521">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_sheen" value="1492">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_sukun" value="1522">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_superscript_alef" value="16778864">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_switch" value="65406">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_tah" value="1495">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_tatweel" value="1504">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_tcheh" value="16778886">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_teh" value="1482">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_tehmarbuta" value="1481">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_thal" value="1488">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_theh" value="1483">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_tteh" value="16778873">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_veh" value="16778916">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_waw" value="1512">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_yeh" value="1514">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_yeh_baree" value="16778962">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_zah" value="1496">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_zain" value="1490">
+      <type name="int"/>
+    </constant>
+    <constant name="Aring" value="197">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_AT" value="16778552">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_AYB" value="16778545">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_BEN" value="16778546">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_CHA" value="16778569">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_DA" value="16778548">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_DZA" value="16778561">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_E" value="16778551">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_FE" value="16778582">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_GHAT" value="16778562">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_GIM" value="16778547">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_HI" value="16778565">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_HO" value="16778560">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_INI" value="16778555">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_JE" value="16778571">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_KE" value="16778580">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_KEN" value="16778559">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_KHE" value="16778557">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_LYUN" value="16778556">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_MEN" value="16778564">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_NU" value="16778566">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_O" value="16778581">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_PE" value="16778570">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_PYUR" value="16778579">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_RA" value="16778572">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_RE" value="16778576">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_SE" value="16778573">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_SHA" value="16778567">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_TCHE" value="16778563">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_TO" value="16778553">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_TSA" value="16778558">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_TSO" value="16778577">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_TYUN" value="16778575">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_VEV" value="16778574">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_VO" value="16778568">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_VYUN" value="16778578">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_YECH" value="16778549">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_ZA" value="16778550">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_ZHE" value="16778554">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_accent" value="16778587">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_amanak" value="16778588">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_apostrophe" value="16778586">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_at" value="16778600">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_ayb" value="16778593">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_ben" value="16778594">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_but" value="16778589">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_cha" value="16778617">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_da" value="16778596">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_dza" value="16778609">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_e" value="16778599">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_exclam" value="16778588">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_fe" value="16778630">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_full_stop" value="16778633">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_ghat" value="16778610">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_gim" value="16778595">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_hi" value="16778613">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_ho" value="16778608">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_hyphen" value="16778634">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_ini" value="16778603">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_je" value="16778619">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_ke" value="16778628">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_ken" value="16778607">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_khe" value="16778605">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_ligature_ew" value="16778631">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_lyun" value="16778604">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_men" value="16778612">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_nu" value="16778614">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_o" value="16778629">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_paruyk" value="16778590">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_pe" value="16778618">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_pyur" value="16778627">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_question" value="16778590">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_ra" value="16778620">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_re" value="16778624">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_se" value="16778621">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_separation_mark" value="16778589">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_sha" value="16778615">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_shesht" value="16778587">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_tche" value="16778611">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_to" value="16778601">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_tsa" value="16778606">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_tso" value="16778625">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_tyun" value="16778623">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_verjaket" value="16778633">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_vev" value="16778622">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_vo" value="16778616">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_vyun" value="16778626">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_yech" value="16778597">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_yentamna" value="16778634">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_za" value="16778598">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_zhe" value="16778602">
+      <type name="int"/>
+    </constant>
+    <constant name="Atilde" value="195">
+      <type name="int"/>
+    </constant>
+    <constant name="AudibleBell_Enable" value="65146">
+      <type name="int"/>
+    </constant>
+    <constant name="B" value="66">
+      <type name="int"/>
+    </constant>
+    <constant name="Babovedot" value="16784898">
+      <type name="int"/>
+    </constant>
+    <constant name="BackSpace" value="65288">
+      <type name="int"/>
+    </constant>
+    <class name="Backend"
+           c:type="ClutterBackend"
+           parent="GObject.Object"
+           abstract="1"
+           glib:type-name="ClutterBackend"
+           glib:get-type="clutter_backend_get_type"
+           glib:type-struct="BackendClass">
+      <virtual-method name="pre_parse" throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="post_parse" throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="create_stage" throws="1">
+        <return-value transfer-ownership="full">
+          <type name="StageWindow" c:type="ClutterStageWindow*"/>
+        </return-value>
+        <parameters>
+          <parameter name="wrapper" transfer-ownership="none">
+            <type name="Stage" c:type="ClutterStage*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="init_events">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="init_features">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="add_options">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="group" transfer-ownership="none">
+            <type name="GLib.OptionGroup" c:type="GOptionGroup*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_features">
+        <return-value transfer-ownership="full">
+          <type name="FeatureFlags" c:type="ClutterFeatureFlags"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="redraw">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="stage" transfer-ownership="none">
+            <type name="Stage" c:type="ClutterStage*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="create_context" throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="ensure_context">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="stage" transfer-ownership="none">
+            <type name="Stage" c:type="ClutterStage*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_device_manager">
+        <return-value transfer-ownership="full">
+          <type name="DeviceManager" c:type="ClutterDeviceManager*"/>
+        </return-value>
+      </virtual-method>
+      <method name="set_resolution"
+              c:identifier="clutter_backend_set_resolution"
+              doc="Sets the resolution for font handling on the screen. This is a
+scale factor between points specified in a #PangoFontDescription
+and cairo units. The default value is 96, meaning that a 10 point
+font will be 13 units high. (10 * 96. / 72. = 13.3).
+Applications should never need to call this function."
+              version="0.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="dpi"
+                     transfer-ownership="none"
+                     doc=" actually involved; the terminology is conventional).">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_resolution"
+              c:identifier="clutter_backend_get_resolution"
+              doc="Gets the resolution for font handling on the screen; see
+clutter_backend_set_resolution() for full details.
+has been set."
+              version="0.4">
+        <return-value transfer-ownership="none">
+          <type name="double" c:type="gdouble"/>
+        </return-value>
+      </method>
+      <method name="set_double_click_time"
+              c:identifier="clutter_backend_set_double_click_time"
+              doc="Sets the maximum time between two button press events, used to
+verify whether it&apos;s a double click event or not."
+              version="0.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="msec" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_double_click_time"
+              c:identifier="clutter_backend_get_double_click_time"
+              doc="Gets the maximum time between two button press events, as set
+by clutter_backend_set_double_click_time()."
+              version="0.4">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="set_double_click_distance"
+              c:identifier="clutter_backend_set_double_click_distance"
+              doc="Sets the maximum distance used to verify a double click event."
+              version="0.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="distance" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_double_click_distance"
+              c:identifier="clutter_backend_get_double_click_distance"
+              doc="Retrieves the distance used to verify a double click event"
+              version="0.4">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="set_font_options"
+              c:identifier="clutter_backend_set_font_options"
+              doc="Sets the new font options for @backend. The #ClutterBackend will
+copy the #cairo_font_options_t.
+If @options is %NULL, the first following call to
+clutter_backend_get_font_options() will return the default font
+options for @backend.
+This function is intended for actors creating a Pango layout
+using the PangoCairo API."
+              version="0.8">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="options" transfer-ownership="none">
+            <type name="cairo.FontOptions" c:type="cairo_font_options_t*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_font_options"
+              c:identifier="clutter_backend_get_font_options"
+              doc="Retrieves the font options for @backend.
+The returned #cairo_font_options_t is owned by the backend and should
+not be modified or freed"
+              version="0.8">
+        <return-value transfer-ownership="none"
+                      doc="the font options of the #ClutterBackend.">
+          <type name="cairo.FontOptions" c:type="cairo_font_options_t*"/>
+        </return-value>
+      </method>
+      <method name="set_font_name"
+              c:identifier="clutter_backend_set_font_name"
+              doc="Sets the default font to be used by Clutter. The @font_name string
+must either be %NULL, which means that the font name from the
+default #ClutterBackend will be used; or be something that can
+be parsed by the pango_font_description_from_string() function."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="font_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_font_name"
+              c:identifier="clutter_backend_get_font_name"
+              doc="Retrieves the default font name as set by
+clutter_backend_set_font_name().
+owned by the #ClutterBackend and should never be modified or freed"
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <field name="parent_instance">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="priv">
+        <type name="BackendPrivate" c:type="ClutterBackendPrivate*"/>
+      </field>
+      <glib:signal name="font-changed">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="resolution-changed">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+    </class>
+    <record name="BackendClass"
+            c:type="ClutterBackendClass"
+            glib:is-gtype-struct-for="Backend">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="pre_parse">
+        <callback name="pre_parse" c:type="pre_parse" throws="1">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="backend" transfer-ownership="none">
+              <type name="Backend" c:type="ClutterBackend*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="post_parse">
+        <callback name="post_parse" c:type="post_parse" throws="1">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="backend" transfer-ownership="none">
+              <type name="Backend" c:type="ClutterBackend*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="create_stage">
+        <callback name="create_stage" c:type="create_stage" throws="1">
+          <return-value transfer-ownership="full">
+            <type name="StageWindow" c:type="ClutterStageWindow*"/>
+          </return-value>
+          <parameters>
+            <parameter name="backend" transfer-ownership="none">
+              <type name="Backend" c:type="ClutterBackend*"/>
+            </parameter>
+            <parameter name="wrapper" transfer-ownership="none">
+              <type name="Stage" c:type="ClutterStage*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="init_events">
+        <callback name="init_events" c:type="init_events">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="backend" transfer-ownership="none">
+              <type name="Backend" c:type="ClutterBackend*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="init_features">
+        <callback name="init_features" c:type="init_features">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="backend" transfer-ownership="none">
+              <type name="Backend" c:type="ClutterBackend*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="add_options">
+        <callback name="add_options" c:type="add_options">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="backend" transfer-ownership="none">
+              <type name="Backend" c:type="ClutterBackend*"/>
+            </parameter>
+            <parameter name="group" transfer-ownership="none">
+              <type name="GLib.OptionGroup" c:type="GOptionGroup*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_features">
+        <callback name="get_features" c:type="get_features">
+          <return-value transfer-ownership="full">
+            <type name="FeatureFlags" c:type="ClutterFeatureFlags"/>
+          </return-value>
+          <parameters>
+            <parameter name="backend" transfer-ownership="none">
+              <type name="Backend" c:type="ClutterBackend*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="redraw">
+        <callback name="redraw" c:type="redraw">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="backend" transfer-ownership="none">
+              <type name="Backend" c:type="ClutterBackend*"/>
+            </parameter>
+            <parameter name="stage" transfer-ownership="none">
+              <type name="Stage" c:type="ClutterStage*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="create_context">
+        <callback name="create_context" c:type="create_context" throws="1">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="backend" transfer-ownership="none">
+              <type name="Backend" c:type="ClutterBackend*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="ensure_context">
+        <callback name="ensure_context" c:type="ensure_context">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="backend" transfer-ownership="none">
+              <type name="Backend" c:type="ClutterBackend*"/>
+            </parameter>
+            <parameter name="stage" transfer-ownership="none">
+              <type name="Stage" c:type="ClutterStage*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_device_manager">
+        <callback name="get_device_manager" c:type="get_device_manager">
+          <return-value transfer-ownership="full">
+            <type name="DeviceManager" c:type="ClutterDeviceManager*"/>
+          </return-value>
+          <parameters>
+            <parameter name="backend" transfer-ownership="none">
+              <type name="Backend" c:type="ClutterBackend*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="resolution_changed">
+        <callback name="resolution_changed" c:type="resolution_changed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="backend" transfer-ownership="none">
+              <type name="Backend" c:type="ClutterBackend*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="font_changed">
+        <callback name="font_changed" c:type="font_changed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="backend" transfer-ownership="none">
+              <type name="Backend" c:type="ClutterBackend*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+    </record>
+    <record name="BackendPrivate" c:type="ClutterBackendPrivate">
+    </record>
+    <constant name="Begin" value="65368">
+      <type name="int"/>
+    </constant>
+    <class name="Behaviour"
+           c:type="ClutterBehaviour"
+           doc="#ClutterBehaviour-struct contains only private data and should
+be accessed with the functions below."
+           version="0.2"
+           parent="GObject.Object"
+           abstract="1"
+           glib:type-name="ClutterBehaviour"
+           glib:get-type="clutter_behaviour_get_type"
+           glib:type-struct="BehaviourClass">
+      <implements name="Scriptable"/>
+      <virtual-method name="alpha_notify">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="alpha_value" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="apply"
+              c:identifier="clutter_behaviour_apply"
+              doc="Applies @behave to @actor.  This function adds a reference on
+the actor."
+              version="0.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove"
+              c:identifier="clutter_behaviour_remove"
+              doc="Removes @actor from the list of #ClutterActor&lt;!-- --&gt;s to which"
+              version="0.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_all"
+              c:identifier="clutter_behaviour_remove_all"
+              doc="Removes every actor from the list that @behave holds."
+              version="0.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="actors_foreach"
+              c:identifier="clutter_behaviour_actors_foreach"
+              doc="Calls @func for every actor driven by @behave."
+              version="0.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="2">
+            <type name="BehaviourForeachFunc"
+                  c:type="ClutterBehaviourForeachFunc"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_n_actors"
+              c:identifier="clutter_behaviour_get_n_actors"
+              doc="Gets the number of actors this behaviour is applied too."
+              version="0.2">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_nth_actor"
+              c:identifier="clutter_behaviour_get_nth_actor"
+              doc="Gets an actor the behaviour was applied to referenced by index num."
+              version="0.2">
+        <return-value transfer-ownership="none"
+                      doc="A Clutter actor or NULL if @index_ is invalid.">
+          <type name="Actor" c:type="ClutterActor*"/>
+        </return-value>
+        <parameters>
+          <parameter name="index_" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_actors"
+              c:identifier="clutter_behaviour_get_actors"
+              doc="Retrieves all the actors to which @behave applies. It is not recommended
+for derived classes to use this in there alpha notify method but use
+#clutter_behaviour_actors_foreach as it avoids alot of needless allocations.
+actors. You should free the returned list with g_slist_free() when
+finished using it."
+              version="0.2">
+        <return-value transfer-ownership="container" doc="a list of">
+          <type name="GLib.SList" c:type="GSList*">
+            <type name="Actor"/>
+          </type>
+        </return-value>
+      </method>
+      <method name="get_alpha"
+              c:identifier="clutter_behaviour_get_alpha"
+              doc="Retrieves the #ClutterAlpha object bound to @behave.
+object has been bound to this behaviour."
+              version="0.2">
+        <return-value transfer-ownership="none"
+                      doc="a #ClutterAlpha object, or %NULL if no alpha">
+          <type name="Alpha" c:type="ClutterAlpha*"/>
+        </return-value>
+      </method>
+      <method name="set_alpha"
+              c:identifier="clutter_behaviour_set_alpha"
+              doc="Binds @alpha to a #ClutterBehaviour. The #ClutterAlpha object
+used by #ClutterAlpha a new value of the alpha parameter is
+computed by the alpha function; the value should be used by
+the #ClutterBehaviour to update one or more properties of the
+actors to which the behaviour applies.
+If @alpha is not %NULL, the #ClutterBehaviour will take ownership
+of the #ClutterAlpha instance."
+              version="0.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="alpha" transfer-ownership="none">
+            <type name="Alpha" c:type="ClutterAlpha*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="is_applied"
+              c:identifier="clutter_behaviour_is_applied"
+              doc="Check if @behave applied to  @actor."
+              version="0.4">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="alpha"
+                version="0.2"
+                writable="1"
+                doc="The #ClutterAlpha object used to drive this behaviour. A #ClutterAlpha
+object binds a #ClutterTimeline and a function which computes a value
+(the &quot;alpha&quot;) depending on the time. Each time the alpha value changes
+the alpha-notify virtual function is called.">
+        <type name="Alpha" c:type="ClutterAlpha"/>
+      </property>
+      <field name="parent">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="priv">
+        <type name="BehaviourPrivate" c:type="ClutterBehaviourPrivate*"/>
+      </field>
+      <glib:signal name="applied"
+                   doc="The ::apply signal is emitted each time the behaviour is applied
+to an actor."
+                   version="0.4">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <type name="Actor" c:type="ClutterActor"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="removed"
+                   doc="The ::removed signal is emitted each time a behaviour is not applied
+to an actor anymore.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <type name="Actor" c:type="ClutterActor"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <record name="BehaviourClass"
+            c:type="ClutterBehaviourClass"
+            glib:is-gtype-struct-for="Behaviour">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="alpha_notify">
+        <callback name="alpha_notify" c:type="alpha_notify">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="behave" transfer-ownership="none">
+              <type name="Behaviour" c:type="ClutterBehaviour*"/>
+            </parameter>
+            <parameter name="alpha_value" transfer-ownership="none">
+              <type name="double" c:type="gdouble"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="applied">
+        <callback name="applied" c:type="applied">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="behave" transfer-ownership="none">
+              <type name="Behaviour" c:type="ClutterBehaviour*"/>
+            </parameter>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="removed">
+        <callback name="removed" c:type="removed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="behave" transfer-ownership="none">
+              <type name="Behaviour" c:type="ClutterBehaviour*"/>
+            </parameter>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="clutter_behaviour1">
+        <callback name="clutter_behaviour1" c:type="_clutter_behaviour1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_behaviour2">
+        <callback name="clutter_behaviour2" c:type="_clutter_behaviour2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_behaviour3">
+        <callback name="clutter_behaviour3" c:type="_clutter_behaviour3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_behaviour4">
+        <callback name="clutter_behaviour4" c:type="_clutter_behaviour4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_behaviour5">
+        <callback name="clutter_behaviour5" c:type="_clutter_behaviour5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_behaviour6">
+        <callback name="clutter_behaviour6" c:type="_clutter_behaviour6">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <class name="BehaviourDepth"
+           c:type="ClutterBehaviourDepth"
+           doc="The #ClutterBehaviourDepth structure contains only private data
+and should be accessed using the provided API"
+           version="0.2"
+           parent="Behaviour"
+           glib:type-name="ClutterBehaviourDepth"
+           glib:get-type="clutter_behaviour_depth_get_type"
+           glib:type-struct="BehaviourDepthClass">
+      <implements name="Scriptable"/>
+      <constructor name="new"
+                   c:identifier="clutter_behaviour_depth_new"
+                   doc="Creates a new #ClutterBehaviourDepth which can be used to control
+the ClutterActor:depth property of a set of #ClutterActor&lt;!-- --&gt;s."
+                   version="0.4">
+        <return-value transfer-ownership="full">
+          <type name="BehaviourDepth" c:type="ClutterBehaviour*"/>
+        </return-value>
+        <parameters>
+          <parameter name="alpha" transfer-ownership="none">
+            <type name="Alpha" c:type="ClutterAlpha*"/>
+          </parameter>
+          <parameter name="depth_start" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="depth_end" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="set_bounds"
+              c:identifier="clutter_behaviour_depth_set_bounds"
+              doc="Sets the boundaries of the @behaviour."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="depth_start" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="depth_end" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_bounds"
+              c:identifier="clutter_behaviour_depth_get_bounds"
+              doc="Gets the boundaries of the @behaviour"
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="depth_start"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+          <parameter name="depth_end"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="depth-end"
+                version="0.4"
+                writable="1"
+                doc="End depth level to apply to the actors.">
+        <type name="int" c:type="gint"/>
+      </property>
+      <property name="depth-start"
+                version="0.4"
+                writable="1"
+                doc="Start depth level to apply to the actors.">
+        <type name="int" c:type="gint"/>
+      </property>
+      <field name="parent_instance">
+        <type name="Behaviour" c:type="ClutterBehaviour"/>
+      </field>
+      <field name="priv">
+        <type name="BehaviourDepthPrivate"
+              c:type="ClutterBehaviourDepthPrivate*"/>
+      </field>
+    </class>
+    <record name="BehaviourDepthClass"
+            c:type="ClutterBehaviourDepthClass"
+            glib:is-gtype-struct-for="BehaviourDepth"
+            doc="The #ClutterBehaviourDepthClass structure contains only private data"
+            version="0.2">
+      <field name="parent_class">
+        <type name="BehaviourClass" c:type="ClutterBehaviourClass"/>
+      </field>
+    </record>
+    <record name="BehaviourDepthPrivate" c:type="ClutterBehaviourDepthPrivate">
+    </record>
+    <class name="BehaviourEllipse"
+           c:type="ClutterBehaviourEllipse"
+           doc="The #ClutterBehaviourEllipse struct contains only private data
+and should be accessed using the provided API"
+           version="0.4"
+           parent="Behaviour"
+           glib:type-name="ClutterBehaviourEllipse"
+           glib:get-type="clutter_behaviour_ellipse_get_type"
+           glib:type-struct="BehaviourEllipseClass">
+      <implements name="Scriptable"/>
+      <constructor name="new"
+                   c:identifier="clutter_behaviour_ellipse_new"
+                   doc="Creates a behaviour that drives actors along an elliptical path with
+given center, width and height; the movement starts at @start
+degrees (with 0 corresponding to 12 o&apos;clock) and ends at @end
+degrees. Angles greated than 360 degrees get clamped to the canonical
+interval &lt;0, 360); if @start is equal to @end, the behaviour will
+rotate by exacly 360 degrees."
+                   version="0.4">
+        <return-value transfer-ownership="full">
+          <type name="BehaviourEllipse" c:type="ClutterBehaviour*"/>
+        </return-value>
+        <parameters>
+          <parameter name="alpha" transfer-ownership="none">
+            <type name="Alpha" c:type="ClutterAlpha*"/>
+          </parameter>
+          <parameter name="x" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="width" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="height" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="direction" transfer-ownership="none">
+            <type name="RotateDirection" c:type="ClutterRotateDirection"/>
+          </parameter>
+          <parameter name="start" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="end" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="set_center"
+              c:identifier="clutter_behaviour_ellipse_set_center"
+              doc="Sets the center of the elliptical path to the point represented by knot."
+              version="0.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="x" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_center"
+              c:identifier="clutter_behaviour_ellipse_get_center"
+              doc="Gets the center of the elliptical path path."
+              version="0.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="x"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+          <parameter name="y"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_width"
+              c:identifier="clutter_behaviour_ellipse_set_width"
+              doc="Sets the width of the elliptical path."
+              version="0.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="width" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_width"
+              c:identifier="clutter_behaviour_ellipse_get_width"
+              doc="Gets the width of the elliptical path."
+              version="0.4">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="set_height"
+              c:identifier="clutter_behaviour_ellipse_set_height"
+              doc="Sets the height of the elliptical path."
+              version="0.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="height" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_height"
+              c:identifier="clutter_behaviour_ellipse_get_height"
+              doc="Gets the height of the elliptical path."
+              version="0.4">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="set_angle_start"
+              c:identifier="clutter_behaviour_ellipse_set_angle_start"
+              doc="Sets the angle at which movement starts; angles &gt;= 360 degress get clamped
+to the canonical interval &lt;0, 360)."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="angle_start" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_angle_start"
+              c:identifier="clutter_behaviour_ellipse_get_angle_start"
+              doc="Gets the angle at which movements starts."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="double" c:type="gdouble"/>
+        </return-value>
+      </method>
+      <method name="set_angle_end"
+              c:identifier="clutter_behaviour_ellipse_set_angle_end"
+              doc="Sets the angle at which movement ends; angles &gt;= 360 degress get clamped
+to the canonical interval &lt;0, 360)."
+              version="0.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="angle_end" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_angle_end"
+              c:identifier="clutter_behaviour_ellipse_get_angle_end"
+              doc="Gets the at which movements ends."
+              version="0.4">
+        <return-value transfer-ownership="none">
+          <type name="double" c:type="gdouble"/>
+        </return-value>
+      </method>
+      <method name="set_angle_tilt"
+              c:identifier="clutter_behaviour_ellipse_set_angle_tilt"
+              doc="Sets the angle at which the ellipse should be tilted around it&apos;s center."
+              version="0.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="axis" transfer-ownership="none">
+            <type name="RotateAxis" c:type="ClutterRotateAxis"/>
+          </parameter>
+          <parameter name="angle_tilt"
+                     transfer-ownership="none"
+                     doc=" degrees.">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_angle_tilt"
+              c:identifier="clutter_behaviour_ellipse_get_angle_tilt"
+              doc="Gets the tilt of the ellipse around the center in the given axis."
+              version="0.4">
+        <return-value transfer-ownership="none">
+          <type name="double" c:type="gdouble"/>
+        </return-value>
+        <parameters>
+          <parameter name="axis" transfer-ownership="none">
+            <type name="RotateAxis" c:type="ClutterRotateAxis"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_tilt"
+              c:identifier="clutter_behaviour_ellipse_set_tilt"
+              doc="Sets the angles at which the ellipse should be tilted around it&apos;s center."
+              version="0.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="angle_tilt_x" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="angle_tilt_y" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="angle_tilt_z" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_tilt"
+              c:identifier="clutter_behaviour_ellipse_get_tilt"
+              doc="Gets the tilt of the ellipse around the center in Y axis."
+              version="0.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="angle_tilt_x"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <type name="double" c:type="gdouble*"/>
+          </parameter>
+          <parameter name="angle_tilt_y"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <type name="double" c:type="gdouble*"/>
+          </parameter>
+          <parameter name="angle_tilt_z"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <type name="double" c:type="gdouble*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_direction"
+              c:identifier="clutter_behaviour_ellipse_get_direction"
+              doc="Retrieves the #ClutterRotateDirection used by the ellipse behaviour."
+              version="0.4">
+        <return-value transfer-ownership="full">
+          <type name="RotateDirection" c:type="ClutterRotateDirection"/>
+        </return-value>
+      </method>
+      <method name="set_direction"
+              c:identifier="clutter_behaviour_ellipse_set_direction"
+              doc="Sets the rotation direction used by the ellipse behaviour."
+              version="0.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="direction" transfer-ownership="none">
+            <type name="RotateDirection" c:type="ClutterRotateDirection"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="angle-end"
+                version="0.4"
+                writable="1"
+                doc="The final angle to where the rotation should end.">
+        <type name="double" c:type="gdouble"/>
+      </property>
+      <property name="angle-start"
+                version="0.4"
+                writable="1"
+                doc="The initial angle from where the rotation should start.">
+        <type name="double" c:type="gdouble"/>
+      </property>
+      <property name="angle-tilt-x"
+                version="0.4"
+                writable="1"
+                doc="The tilt angle for the rotation around center in X axis">
+        <type name="double" c:type="gdouble"/>
+      </property>
+      <property name="angle-tilt-y"
+                version="0.4"
+                writable="1"
+                doc="The tilt angle for the rotation around center in Y axis">
+        <type name="double" c:type="gdouble"/>
+      </property>
+      <property name="angle-tilt-z"
+                version="0.4"
+                writable="1"
+                doc="The tilt angle for the rotation on the Z axis">
+        <type name="double" c:type="gdouble"/>
+      </property>
+      <property name="center"
+                version="0.4"
+                writable="1"
+                doc="The center of the ellipse.">
+        <type name="Knot" c:type="ClutterKnot"/>
+      </property>
+      <property name="direction"
+                version="0.4"
+                writable="1"
+                doc="The direction of the rotation.">
+        <type name="RotateDirection" c:type="ClutterRotateDirection"/>
+      </property>
+      <property name="height"
+                version="0.4"
+                writable="1"
+                doc="Height of the ellipse, in pixels">
+        <type name="int" c:type="gint"/>
+      </property>
+      <property name="width"
+                version="0.4"
+                writable="1"
+                doc="Width of the ellipse, in pixels">
+        <type name="int" c:type="gint"/>
+      </property>
+      <field name="parent_instance">
+        <type name="Behaviour" c:type="ClutterBehaviour"/>
+      </field>
+      <field name="priv">
+        <type name="BehaviourEllipsePrivate"
+              c:type="ClutterBehaviourEllipsePrivate*"/>
+      </field>
+    </class>
+    <record name="BehaviourEllipseClass"
+            c:type="ClutterBehaviourEllipseClass"
+            glib:is-gtype-struct-for="BehaviourEllipse"
+            doc="The #ClutterBehaviourEllipseClass struct contains only private data"
+            version="0.4">
+      <field name="parent_class">
+        <type name="BehaviourClass" c:type="ClutterBehaviourClass"/>
+      </field>
+    </record>
+    <record name="BehaviourEllipsePrivate"
+            c:type="ClutterBehaviourEllipsePrivate">
+    </record>
+    <callback name="BehaviourForeachFunc"
+              c:type="ClutterBehaviourForeachFunc"
+              doc="This function is passed to clutter_behaviour_foreach_actor() and
+will be called for each actor driven by @behaviour."
+              version="0.2">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="behaviour" transfer-ownership="none">
+          <type name="Behaviour" c:type="ClutterBehaviour*"/>
+        </parameter>
+        <parameter name="actor" transfer-ownership="none">
+          <type name="Actor" c:type="ClutterActor*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <class name="BehaviourOpacity"
+           c:type="ClutterBehaviourOpacity"
+           doc="The #ClutterBehaviourOpacity structure contains only private data and
+should be accessed using the provided API"
+           version="0.2"
+           parent="Behaviour"
+           glib:type-name="ClutterBehaviourOpacity"
+           glib:get-type="clutter_behaviour_opacity_get_type"
+           glib:type-struct="BehaviourOpacityClass">
+      <implements name="Scriptable"/>
+      <constructor name="new"
+                   c:identifier="clutter_behaviour_opacity_new"
+                   doc="Creates a new #ClutterBehaviourOpacity object, driven by @alpha
+which controls the opacity property of every actor, making it
+change in the interval between @opacity_start and @opacity_end."
+                   version="0.2">
+        <return-value transfer-ownership="full">
+          <type name="BehaviourOpacity" c:type="ClutterBehaviour*"/>
+        </return-value>
+        <parameters>
+          <parameter name="alpha" transfer-ownership="none">
+            <type name="Alpha" c:type="ClutterAlpha*"/>
+          </parameter>
+          <parameter name="opacity_start" transfer-ownership="none">
+            <type name="uint8" c:type="guint8"/>
+          </parameter>
+          <parameter name="opacity_end" transfer-ownership="none">
+            <type name="uint8" c:type="guint8"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="set_bounds"
+              c:identifier="clutter_behaviour_opacity_set_bounds"
+              doc="Sets the initial and final levels of the opacity applied by @behaviour
+on each actor it controls."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="opacity_start" transfer-ownership="none">
+            <type name="uint8" c:type="guint8"/>
+          </parameter>
+          <parameter name="opacity_end" transfer-ownership="none">
+            <type name="uint8" c:type="guint8"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_bounds"
+              c:identifier="clutter_behaviour_opacity_get_bounds"
+              doc="Gets the initial and final levels of the opacity applied by @behaviour
+on each actor it controls."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="opacity_start" transfer-ownership="none">
+            <array c:type="guint8*">
+              <type name="uint8"/>
+            </array>
+          </parameter>
+          <parameter name="opacity_end" transfer-ownership="none">
+            <array c:type="guint8*">
+              <type name="uint8"/>
+            </array>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="opacity-end"
+                version="0.2"
+                writable="1"
+                doc="Final opacity level of the behaviour.">
+        <type name="uint" c:type="guint"/>
+      </property>
+      <property name="opacity-start"
+                version="0.2"
+                writable="1"
+                doc="Initial opacity level of the behaviour.">
+        <type name="uint" c:type="guint"/>
+      </property>
+      <field name="parent">
+        <type name="Behaviour" c:type="ClutterBehaviour"/>
+      </field>
+      <field name="priv">
+        <type name="BehaviourOpacityPrivate"
+              c:type="ClutterBehaviourOpacityPrivate*"/>
+      </field>
+    </class>
+    <record name="BehaviourOpacityClass"
+            c:type="ClutterBehaviourOpacityClass"
+            glib:is-gtype-struct-for="BehaviourOpacity"
+            doc="The #ClutterBehaviourOpacityClas structure contains only private data"
+            version="0.2">
+      <field name="parent_class">
+        <type name="BehaviourClass" c:type="ClutterBehaviourClass"/>
+      </field>
+    </record>
+    <record name="BehaviourOpacityPrivate"
+            c:type="ClutterBehaviourOpacityPrivate">
+    </record>
+    <class name="BehaviourPath"
+           c:type="ClutterBehaviourPath"
+           doc="The #ClutterBehaviourPath structure contains only private data
+and should be accessed using the provided API"
+           version="0.2"
+           parent="Behaviour"
+           glib:type-name="ClutterBehaviourPath"
+           glib:get-type="clutter_behaviour_path_get_type"
+           glib:type-struct="BehaviourPathClass">
+      <implements name="Scriptable"/>
+      <constructor name="new"
+                   c:identifier="clutter_behaviour_path_new"
+                   doc="Creates a new path behaviour. You can use this behaviour to drive
+actors along the nodes of a path, described by @path.
+This will claim the floating reference on the #ClutterPath so you
+do not need to unref if it."
+                   version="0.2">
+        <return-value transfer-ownership="full">
+          <type name="BehaviourPath" c:type="ClutterBehaviour*"/>
+        </return-value>
+        <parameters>
+          <parameter name="alpha" transfer-ownership="none">
+            <type name="Alpha" c:type="ClutterAlpha*"/>
+          </parameter>
+          <parameter name="path" transfer-ownership="none">
+            <type name="Path" c:type="ClutterPath*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_with_description"
+                   c:identifier="clutter_behaviour_path_new_with_description"
+                   doc="Creates a new path behaviour using the path described by @desc. See
+clutter_path_add_string() for a description of the format."
+                   version="1.0">
+        <return-value transfer-ownership="full">
+          <type name="BehaviourPath" c:type="ClutterBehaviour*"/>
+        </return-value>
+        <parameters>
+          <parameter name="alpha" transfer-ownership="none">
+            <type name="Alpha" c:type="ClutterAlpha*"/>
+          </parameter>
+          <parameter name="desc" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_with_knots"
+                   c:identifier="clutter_behaviour_path_new_with_knots"
+                   doc="Creates a new path behaviour that will make the actors visit all of
+the given knots in order with straight lines in between.
+A path will be created where the first knot is used in a
+%CLUTTER_PATH_MOVE_TO and the subsequent knots are used in
+%CLUTTER_PATH_LINE_TO&lt;!-- --&gt;s."
+                   version="1.0">
+        <return-value transfer-ownership="full">
+          <type name="BehaviourPath" c:type="ClutterBehaviour*"/>
+        </return-value>
+        <parameters>
+          <parameter name="alpha" transfer-ownership="none">
+            <type name="Alpha" c:type="ClutterAlpha*"/>
+          </parameter>
+          <parameter name="knots" transfer-ownership="none">
+            <type name="Knot" c:type="ClutterKnot*"/>
+          </parameter>
+          <parameter name="n_knots" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="set_path"
+              c:identifier="clutter_behaviour_path_set_path"
+              doc="Change the path that the actors will follow. This will take the
+floating reference on the #ClutterPath so you do not need to unref
+it."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="path" transfer-ownership="none">
+            <type name="Path" c:type="ClutterPath*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_path"
+              c:identifier="clutter_behaviour_path_get_path"
+              doc="Get the current path of the behaviour"
+              version="1.0">
+        <return-value transfer-ownership="none" doc="the path">
+          <type name="Path" c:type="ClutterPath*"/>
+        </return-value>
+      </method>
+      <property name="path" writable="1">
+        <type name="Path" c:type="ClutterPath"/>
+      </property>
+      <field name="parent">
+        <type name="Behaviour" c:type="ClutterBehaviour"/>
+      </field>
+      <field name="priv">
+        <type name="BehaviourPathPrivate"
+              c:type="ClutterBehaviourPathPrivate*"/>
+      </field>
+      <glib:signal name="knot-reached"
+                   doc="This signal is emitted each time a node defined inside the path
+is reached."
+                   version="0.2">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="knot_num" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <record name="BehaviourPathClass"
+            c:type="ClutterBehaviourPathClass"
+            glib:is-gtype-struct-for="BehaviourPath">
+      <field name="parent_class">
+        <type name="BehaviourClass" c:type="ClutterBehaviourClass"/>
+      </field>
+      <field name="knot_reached">
+        <callback name="knot_reached" c:type="knot_reached">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="pathb" transfer-ownership="none">
+              <type name="BehaviourPath" c:type="ClutterBehaviourPath*"/>
+            </parameter>
+            <parameter name="knot_num" transfer-ownership="none">
+              <type name="uint" c:type="guint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="clutter_path_1">
+        <callback name="clutter_path_1" c:type="_clutter_path_1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_path_2">
+        <callback name="clutter_path_2" c:type="_clutter_path_2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_path_3">
+        <callback name="clutter_path_3" c:type="_clutter_path_3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_path_4">
+        <callback name="clutter_path_4" c:type="_clutter_path_4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="BehaviourPathPrivate" c:type="ClutterBehaviourPathPrivate">
+    </record>
+    <record name="BehaviourPrivate" c:type="ClutterBehaviourPrivate">
+    </record>
+    <class name="BehaviourRotate"
+           c:type="ClutterBehaviourRotate"
+           doc="The #ClutterBehaviourRotate struct contains only private data and
+should be accessed using the provided API"
+           version="0.4"
+           parent="Behaviour"
+           glib:type-name="ClutterBehaviourRotate"
+           glib:get-type="clutter_behaviour_rotate_get_type"
+           glib:type-struct="BehaviourRotateClass">
+      <implements name="Scriptable"/>
+      <constructor name="new"
+                   c:identifier="clutter_behaviour_rotate_new"
+                   doc="Creates a new #ClutterBehaviourRotate. This behaviour will rotate actors
+bound to it on @axis, following @direction, between @angle_start and
+&lt;0, 360), if angle_start == angle_end, the behaviour will carry out a
+single rotation of 360 degrees."
+                   version="0.4">
+        <return-value transfer-ownership="full">
+          <type name="BehaviourRotate" c:type="ClutterBehaviour*"/>
+        </return-value>
+        <parameters>
+          <parameter name="alpha" transfer-ownership="none">
+            <type name="Alpha" c:type="ClutterAlpha*"/>
+          </parameter>
+          <parameter name="axis" transfer-ownership="none">
+            <type name="RotateAxis" c:type="ClutterRotateAxis"/>
+          </parameter>
+          <parameter name="direction" transfer-ownership="none">
+            <type name="RotateDirection" c:type="ClutterRotateDirection"/>
+          </parameter>
+          <parameter name="angle_start" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="angle_end" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="get_center"
+              c:identifier="clutter_behaviour_rotate_get_center"
+              doc="Retrieves the center of rotation set using
+clutter_behaviour_rotate_set_center()."
+              version="0.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="x"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+          <parameter name="y"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+          <parameter name="z"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_center"
+              c:identifier="clutter_behaviour_rotate_set_center"
+              doc="Sets the center of rotation. The coordinates are relative to the plane
+normal to the rotation axis set with clutter_behaviour_rotate_set_axis()."
+              version="0.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="x" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="z" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_axis"
+              c:identifier="clutter_behaviour_rotate_get_axis"
+              doc="Retrieves the #ClutterRotateAxis used by the rotate behaviour."
+              version="0.4">
+        <return-value transfer-ownership="full">
+          <type name="RotateAxis" c:type="ClutterRotateAxis"/>
+        </return-value>
+      </method>
+      <method name="set_axis"
+              c:identifier="clutter_behaviour_rotate_set_axis"
+              doc="Sets the axis used by the rotate behaviour."
+              version="0.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="axis" transfer-ownership="none">
+            <type name="RotateAxis" c:type="ClutterRotateAxis"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_direction"
+              c:identifier="clutter_behaviour_rotate_get_direction"
+              doc="Retrieves the #ClutterRotateDirection used by the rotate behaviour."
+              version="0.4">
+        <return-value transfer-ownership="full">
+          <type name="RotateDirection" c:type="ClutterRotateDirection"/>
+        </return-value>
+      </method>
+      <method name="set_direction"
+              c:identifier="clutter_behaviour_rotate_set_direction"
+              doc="Sets the rotation direction used by the rotate behaviour."
+              version="0.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="direction" transfer-ownership="none">
+            <type name="RotateDirection" c:type="ClutterRotateDirection"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_bounds"
+              c:identifier="clutter_behaviour_rotate_get_bounds"
+              doc="Retrieves the rotation boundaries of the rotate behaviour."
+              version="0.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="angle_start"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <type name="double" c:type="gdouble*"/>
+          </parameter>
+          <parameter name="angle_end"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <type name="double" c:type="gdouble*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_bounds"
+              c:identifier="clutter_behaviour_rotate_set_bounds"
+              doc="Sets the initial and final angles of a rotation behaviour; angles &gt;= 360
+degrees get clamped to the canonical interval &lt;0, 360)."
+              version="0.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="angle_start" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="angle_end" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="angle-end"
+                version="0.4"
+                writable="1"
+                doc="The final angle to where the rotation should end.">
+        <type name="double" c:type="gdouble"/>
+      </property>
+      <property name="angle-start"
+                version="0.4"
+                writable="1"
+                doc="The initial angle from whence the rotation should start.">
+        <type name="double" c:type="gdouble"/>
+      </property>
+      <property name="axis"
+                version="0.4"
+                writable="1"
+                doc="The axis of rotation.">
+        <type name="RotateAxis" c:type="ClutterRotateAxis"/>
+      </property>
+      <property name="center-x"
+                version="0.4"
+                writable="1"
+                doc="The x center of rotation.">
+        <type name="int" c:type="gint"/>
+      </property>
+      <property name="center-y"
+                version="0.4"
+                writable="1"
+                doc="The y center of rotation.">
+        <type name="int" c:type="gint"/>
+      </property>
+      <property name="center-z"
+                version="0.4"
+                writable="1"
+                doc="The z center of rotation.">
+        <type name="int" c:type="gint"/>
+      </property>
+      <property name="direction"
+                version="0.4"
+                writable="1"
+                doc="The direction of the rotation.">
+        <type name="RotateDirection" c:type="ClutterRotateDirection"/>
+      </property>
+      <field name="parent_instance">
+        <type name="Behaviour" c:type="ClutterBehaviour"/>
+      </field>
+      <field name="priv">
+        <type name="BehaviourRotatePrivate"
+              c:type="ClutterBehaviourRotatePrivate*"/>
+      </field>
+    </class>
+    <record name="BehaviourRotateClass"
+            c:type="ClutterBehaviourRotateClass"
+            glib:is-gtype-struct-for="BehaviourRotate"
+            doc="The #ClutterBehaviourRotateClass struct contains only private data"
+            version="0.4">
+      <field name="parent_class">
+        <type name="BehaviourClass" c:type="ClutterBehaviourClass"/>
+      </field>
+    </record>
+    <record name="BehaviourRotatePrivate"
+            c:type="ClutterBehaviourRotatePrivate">
+    </record>
+    <class name="BehaviourScale"
+           c:type="ClutterBehaviourScale"
+           doc="The #ClutterBehaviourScale struct contains only private data and
+should be accessed using the provided API"
+           version="0.2"
+           parent="Behaviour"
+           glib:type-name="ClutterBehaviourScale"
+           glib:get-type="clutter_behaviour_scale_get_type"
+           glib:type-struct="BehaviourScaleClass">
+      <implements name="Scriptable"/>
+      <constructor name="new"
+                   c:identifier="clutter_behaviour_scale_new"
+                   doc="Creates a new  #ClutterBehaviourScale instance."
+                   version="0.2">
+        <return-value transfer-ownership="full">
+          <type name="BehaviourScale" c:type="ClutterBehaviour*"/>
+        </return-value>
+        <parameters>
+          <parameter name="alpha" transfer-ownership="none">
+            <type name="Alpha" c:type="ClutterAlpha*"/>
+          </parameter>
+          <parameter name="x_scale_start" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="y_scale_start" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="x_scale_end" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="y_scale_end" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="set_bounds"
+              c:identifier="clutter_behaviour_scale_set_bounds"
+              doc="Sets the bounds used by scale behaviour."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="x_scale_start" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="y_scale_start" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="x_scale_end" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="y_scale_end" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_bounds"
+              c:identifier="clutter_behaviour_scale_get_bounds"
+              doc="Retrieves the bounds used by scale behaviour."
+              version="0.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="x_scale_start"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     doc=" axis, or %NULL">
+            <type name="double" c:type="gdouble*"/>
+          </parameter>
+          <parameter name="y_scale_start"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     doc=" axis, or %NULL">
+            <type name="double" c:type="gdouble*"/>
+          </parameter>
+          <parameter name="x_scale_end"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     doc=" or %NULL">
+            <type name="double" c:type="gdouble*"/>
+          </parameter>
+          <parameter name="y_scale_end"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     doc=" or %NULL">
+            <type name="double" c:type="gdouble*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="x-scale-end"
+                version="0.6"
+                writable="1"
+                doc="The final scaling factor on the X axis for the actors.">
+        <type name="double" c:type="gdouble"/>
+      </property>
+      <property name="x-scale-start"
+                version="0.6"
+                writable="1"
+                doc="The initial scaling factor on the X axis for the actors.">
+        <type name="double" c:type="gdouble"/>
+      </property>
+      <property name="y-scale-end"
+                version="0.6"
+                writable="1"
+                doc="The final scaling factor on the Y axis for the actors.">
+        <type name="double" c:type="gdouble"/>
+      </property>
+      <property name="y-scale-start"
+                version="0.6"
+                writable="1"
+                doc="The initial scaling factor on the Y axis for the actors.">
+        <type name="double" c:type="gdouble"/>
+      </property>
+      <field name="parent_instance">
+        <type name="Behaviour" c:type="ClutterBehaviour"/>
+      </field>
+      <field name="priv">
+        <type name="BehaviourScalePrivate"
+              c:type="ClutterBehaviourScalePrivate*"/>
+      </field>
+    </class>
+    <record name="BehaviourScaleClass"
+            c:type="ClutterBehaviourScaleClass"
+            glib:is-gtype-struct-for="BehaviourScale"
+            doc="The #ClutterBehaviourScaleClass struct contains only private data"
+            version="0.2">
+      <field name="parent_class">
+        <type name="BehaviourClass" c:type="ClutterBehaviourClass"/>
+      </field>
+    </record>
+    <record name="BehaviourScalePrivate" c:type="ClutterBehaviourScalePrivate">
+    </record>
+    <enumeration name="BinAlignment"
+                 doc="The alignment policies available on each axis for #ClutterBinLayout"
+                 version="1.2"
+                 glib:type-name="ClutterBinAlignment"
+                 glib:get-type="clutter_bin_alignment_get_type"
+                 c:type="ClutterBinAlignment">
+      <member name="fixed"
+              value="0"
+              c:identifier="CLUTTER_BIN_ALIGNMENT_FIXED"
+              glib:nick="fixed"/>
+      <member name="fill"
+              value="1"
+              c:identifier="CLUTTER_BIN_ALIGNMENT_FILL"
+              glib:nick="fill"/>
+      <member name="start"
+              value="2"
+              c:identifier="CLUTTER_BIN_ALIGNMENT_START"
+              glib:nick="start"/>
+      <member name="end"
+              value="3"
+              c:identifier="CLUTTER_BIN_ALIGNMENT_END"
+              glib:nick="end"/>
+      <member name="center"
+              value="4"
+              c:identifier="CLUTTER_BIN_ALIGNMENT_CENTER"
+              glib:nick="center"/>
+    </enumeration>
+    <class name="BinLayout"
+           c:type="ClutterBinLayout"
+           doc="The #ClutterBinLayout structure contains only private data
+and should be accessed using the provided API"
+           version="1.2"
+           parent="LayoutManager"
+           glib:type-name="ClutterBinLayout"
+           glib:get-type="clutter_bin_layout_get_type"
+           glib:type-struct="BinLayoutClass">
+      <constructor name="new"
+                   c:identifier="clutter_bin_layout_new"
+                   doc="Creates a new #ClutterBinLayout layout manager"
+                   version="1.2">
+        <return-value transfer-ownership="full">
+          <type name="BinLayout" c:type="ClutterLayoutManager*"/>
+        </return-value>
+        <parameters>
+          <parameter name="x_align"
+                     transfer-ownership="none"
+                     doc=" horizontal axis">
+            <type name="BinAlignment" c:type="ClutterBinAlignment"/>
+          </parameter>
+          <parameter name="y_align"
+                     transfer-ownership="none"
+                     doc=" vertical axis">
+            <type name="BinAlignment" c:type="ClutterBinAlignment"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="set_alignment"
+              c:identifier="clutter_bin_layout_set_alignment"
+              doc="Sets the horizontal and vertical alignment policies to be applied
+to a @child of @self
+If @child is %NULL then the @x_align and @y_align values will
+be set as the default alignment policies"
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="child"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="a child of @container">
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter name="x_align"
+                     transfer-ownership="none"
+                     doc=" inside @container">
+            <type name="BinAlignment" c:type="ClutterBinAlignment"/>
+          </parameter>
+          <parameter name="y_align"
+                     transfer-ownership="none"
+                     doc=" inside @container">
+            <type name="BinAlignment" c:type="ClutterBinAlignment"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_alignment"
+              c:identifier="clutter_bin_layout_get_alignment"
+              doc="Retrieves the horizontal and vertical alignment policies for
+a child of @self
+If @child is %NULL the default alignment policies will be returned
+instead"
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="child"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="a child of @container">
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter name="x_align"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="return location for the horizontal alignment policy">
+            <type name="BinAlignment" c:type="ClutterBinAlignment*"/>
+          </parameter>
+          <parameter name="y_align"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="return location for the vertical alignment policy">
+            <type name="BinAlignment" c:type="ClutterBinAlignment*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add"
+              c:identifier="clutter_bin_layout_add"
+              doc="Adds a #ClutterActor to the container using @self and
+sets the alignment policies for it
+This function is equivalent to clutter_container_add_actor()
+and clutter_layout_manager_child_set_property() but it does not
+require a pointer to the #ClutterContainer associated to the
+#ClutterBinLayout"
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="child" transfer-ownership="none">
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter name="x_align" transfer-ownership="none">
+            <type name="BinAlignment" c:type="ClutterBinAlignment"/>
+          </parameter>
+          <parameter name="y_align" transfer-ownership="none">
+            <type name="BinAlignment" c:type="ClutterBinAlignment"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="x-align"
+                version="1.2"
+                writable="1"
+                doc="The default horizontal alignment policy for actors managed
+by the #ClutterBinLayout">
+        <type name="BinAlignment" c:type="ClutterBinAlignment"/>
+      </property>
+      <property name="y-align"
+                version="1.2"
+                writable="1"
+                doc="The default vertical alignment policy for actors managed
+by the #ClutterBinLayout">
+        <type name="BinAlignment" c:type="ClutterBinAlignment"/>
+      </property>
+      <field name="parent_instance">
+        <type name="LayoutManager" c:type="ClutterLayoutManager"/>
+      </field>
+      <field name="priv">
+        <type name="BinLayoutPrivate" c:type="ClutterBinLayoutPrivate*"/>
+      </field>
+    </class>
+    <record name="BinLayoutClass"
+            c:type="ClutterBinLayoutClass"
+            glib:is-gtype-struct-for="BinLayout"
+            doc="The #ClutterBinLayoutClass structure contains only private
+data and should be accessed using the provided API"
+            version="1.2">
+      <field name="parent_class">
+        <type name="LayoutManagerClass" c:type="ClutterLayoutManagerClass"/>
+      </field>
+    </record>
+    <record name="BinLayoutPrivate" c:type="ClutterBinLayoutPrivate">
+    </record>
+    <callback name="BindingActionFunc"
+              c:type="ClutterBindingActionFunc"
+              doc="The prototype for the callback function registered with
+clutter_binding_pool_install_action() and invoked by
+clutter_binding_pool_activate().
+binding has been handled, and return %FALSE otherwise"
+              version="1.0">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="gobject" transfer-ownership="none">
+          <type name="GObject.Object" c:type="GObject*"/>
+        </parameter>
+        <parameter name="action_name" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="key_val" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="modifiers" transfer-ownership="none">
+          <type name="ModifierType" c:type="ClutterModifierType"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <class name="BindingPool"
+           c:type="ClutterBindingPool"
+           doc="Container of key bindings. The #ClutterBindingPool struct is
+private."
+           version="1.0"
+           parent="GObject.Object"
+           glib:type-name="ClutterBindingPool"
+           glib:get-type="clutter_binding_pool_get_type">
+      <constructor name="new"
+                   c:identifier="clutter_binding_pool_new"
+                   doc="Creates a new #ClutterBindingPool that can be used to store
+key bindings for an actor. The @name must be a unique identifier
+for the binding pool, so that clutter_binding_pool_find() will
+be able to return the correct binding pool.
+name. Use g_object_unref() when done."
+                   version="1.0">
+        <return-value transfer-ownership="full">
+          <type name="BindingPool" c:type="ClutterBindingPool*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <function name="get_for_class"
+                c:identifier="clutter_binding_pool_get_for_class"
+                doc="Retrieves the #ClutterBindingPool for the given #GObject class
+and, eventually, creates it. This function is a wrapper around
+clutter_binding_pool_new() and uses the class type name as the
+unique name for the binding pool.
+Calling this function multiple times will return the same
+#ClutterBindingPool.
+A binding pool for a class can also be retrieved using
+clutter_binding_pool_find() with the class type name:
+|[
+pool = clutter_binding_pool_find (G_OBJECT_TYPE_NAME (instance));
+]|
+The returned #ClutterBindingPool is owned by Clutter and should not
+be freed directly"
+                version="1.0">
+        <return-value transfer-ownership="none"
+                      doc="the binding pool for the given class.">
+          <type name="BindingPool" c:type="ClutterBindingPool*"/>
+        </return-value>
+        <parameters>
+          <parameter name="klass" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="find"
+                c:identifier="clutter_binding_pool_find"
+                doc="Finds the #ClutterBindingPool with @name."
+                version="1.0">
+        <return-value transfer-ownership="none"
+                      doc="a pointer to the #ClutterBindingPool, or %NULL">
+          <type name="BindingPool" c:type="ClutterBindingPool*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <method name="install_action"
+              c:identifier="clutter_binding_pool_install_action"
+              doc="Installs a new action inside a #ClutterBindingPool. The action
+is bound to @key_val and @modifiers.
+The same action name can be used for multiple @key_val, @modifiers
+pairs.
+When an action has been activated using clutter_binding_pool_activate()
+the passed @callback will be invoked (with @data).
+Actions can be blocked with clutter_binding_pool_block_action()
+and then unblocked using clutter_binding_pool_unblock_action()."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="action_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="key_val" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="modifiers" transfer-ownership="none">
+            <type name="ModifierType" c:type="ClutterModifierType"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="notified"
+                     closure="5"
+                     destroy="6">
+            <type name="GObject.Callback" c:type="GCallback"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+          <parameter name="notify"
+                     transfer-ownership="none"
+                     scope="call"
+                     doc=" from the pool">
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="install_closure"
+              c:identifier="clutter_binding_pool_install_closure"
+              doc="A #GClosure variant of clutter_binding_pool_install_action().
+Installs a new action inside a #ClutterBindingPool. The action
+is bound to @key_val and @modifiers.
+The same action name can be used for multiple @key_val, @modifiers
+pairs.
+When an action has been activated using clutter_binding_pool_activate()
+the passed @closure will be invoked.
+Actions can be blocked with clutter_binding_pool_block_action()
+and then unblocked using clutter_binding_pool_unblock_action()."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="action_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="key_val" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="modifiers" transfer-ownership="none">
+            <type name="ModifierType" c:type="ClutterModifierType"/>
+          </parameter>
+          <parameter name="closure" transfer-ownership="none">
+            <type name="GObject.Closure" c:type="GClosure*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="override_action"
+              c:identifier="clutter_binding_pool_override_action"
+              doc="Allows overriding the action for @key_val and @modifiers inside a
+#ClutterBindingPool. See clutter_binding_pool_install_action().
+When an action has been activated using clutter_binding_pool_activate()
+the passed @callback will be invoked (with @data).
+Actions can be blocked with clutter_binding_pool_block_action()
+and then unblocked using clutter_binding_pool_unblock_action()."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="key_val" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="modifiers" transfer-ownership="none">
+            <type name="ModifierType" c:type="ClutterModifierType"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="notified"
+                     closure="4"
+                     destroy="5">
+            <type name="GObject.Callback" c:type="GCallback"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+          <parameter name="notify"
+                     transfer-ownership="none"
+                     scope="call"
+                     doc=" from the pool">
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="override_closure"
+              c:identifier="clutter_binding_pool_override_closure"
+              doc="A #GClosure variant of clutter_binding_pool_override_action().
+Allows overriding the action for @key_val and @modifiers inside a
+#ClutterBindingPool. See clutter_binding_pool_install_closure().
+When an action has been activated using clutter_binding_pool_activate()
+the passed @callback will be invoked (with @data).
+Actions can be blocked with clutter_binding_pool_block_action()
+and then unblocked using clutter_binding_pool_unblock_action()."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="key_val" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="modifiers" transfer-ownership="none">
+            <type name="ModifierType" c:type="ClutterModifierType"/>
+          </parameter>
+          <parameter name="closure" transfer-ownership="none">
+            <type name="GObject.Closure" c:type="GClosure*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="find_action"
+              c:identifier="clutter_binding_pool_find_action"
+              doc="Retrieves the name of the action matching the given key symbol
+and modifiers bitmask.
+returned string is owned by the binding pool and should never
+be modified or freed"
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="key_val" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="modifiers" transfer-ownership="none">
+            <type name="ModifierType" c:type="ClutterModifierType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_action"
+              c:identifier="clutter_binding_pool_remove_action"
+              doc="Removes the action matching the given @key_val, @modifiers pair,
+if any exists."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="key_val" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="modifiers" transfer-ownership="none">
+            <type name="ModifierType" c:type="ClutterModifierType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="activate"
+              c:identifier="clutter_binding_pool_activate"
+              doc="Activates the callback associated to the action that is
+bound to the @key_val and @modifiers pair.
+The callback has the following signature:
+|[
+void (* callback) (GObject             *gobject,
+const gchar         *action_name,
+guint                key_val,
+ClutterModifierType  modifiers,
+gpointer             user_data);
+]|
+Where the #GObject instance is @gobject and the user data
+is the one passed when installing the action with
+clutter_binding_pool_install_action().
+If the action bound to the @key_val, @modifiers pair has been
+blocked using clutter_binding_pool_block_action(), the callback
+will not be invoked, and this function will return %FALSE."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="key_val" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="modifiers" transfer-ownership="none">
+            <type name="ModifierType" c:type="ClutterModifierType"/>
+          </parameter>
+          <parameter name="gobject" transfer-ownership="none">
+            <type name="GObject.Object" c:type="GObject*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="block_action"
+              c:identifier="clutter_binding_pool_block_action"
+              doc="Blocks all the actions with name @action_name inside @pool."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="action_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="unblock_action"
+              c:identifier="clutter_binding_pool_unblock_action"
+              doc="Unblockes all the actions with name @action_name inside @pool.
+Unblocking an action does not cause the callback bound to it to
+be invoked in case clutter_binding_pool_activate() was called on
+an action previously blocked with clutter_binding_pool_block_action()."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="action_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="name"
+                version="1.0"
+                writable="1"
+                construct-only="1"
+                doc="The unique name of the #ClutterBindingPool.">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+    </class>
+    <constant name="BounceKeys_Enable" value="65140">
+      <type name="int"/>
+    </constant>
+    <class name="Box"
+           c:type="ClutterBox"
+           doc="The #ClutterBox structure contains only private data and should
+be accessed using the provided API"
+           version="1.2"
+           parent="Actor"
+           glib:type-name="ClutterBox"
+           glib:get-type="clutter_box_get_type"
+           glib:type-struct="BoxClass">
+      <implements name="Container"/>
+      <implements name="Scriptable"/>
+      <constructor name="new"
+                   c:identifier="clutter_box_new"
+                   doc="Creates a new #ClutterBox. The children of the box will be layed
+out by the passed @manager"
+                   version="1.0">
+        <return-value transfer-ownership="full">
+          <type name="Box" c:type="ClutterActor*"/>
+        </return-value>
+        <parameters>
+          <parameter name="manager" transfer-ownership="none">
+            <type name="LayoutManager" c:type="ClutterLayoutManager*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="set_layout_manager"
+              c:identifier="clutter_box_set_layout_manager"
+              doc="Sets the #ClutterLayoutManager for @box
+A #ClutterLayoutManager is a delegate object that controls the
+layout of the children of @box"
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="manager" transfer-ownership="none">
+            <type name="LayoutManager" c:type="ClutterLayoutManager*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_layout_manager"
+              c:identifier="clutter_box_get_layout_manager"
+              doc="Retrieves the #ClutterLayoutManager instance used by @box"
+              version="1.2">
+        <return-value transfer-ownership="full">
+          <type name="LayoutManager" c:type="ClutterLayoutManager*"/>
+        </return-value>
+      </method>
+      <method name="set_color"
+              c:identifier="clutter_box_set_color"
+              doc="Sets (or unsets) the background color for @box"
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="color"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="the background color, or %NULL to unset">
+            <type name="Color" c:type="ClutterColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_color"
+              c:identifier="clutter_box_get_color"
+              doc="Retrieves the background color of @box
+If the #ClutterBox:color-set property is set to %FALSE the
+returned #ClutterColor is undefined"
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="color"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none"
+                     doc="return location for a #ClutterColor">
+            <type name="Color" c:type="ClutterColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="pack"
+              c:identifier="clutter_box_pack"
+              doc="Adds @actor to @box and sets layout properties at the same time,
+if the #ClutterLayoutManager used by @box has them
+This function is a wrapper around clutter_container_add_actor()
+and clutter_layout_manager_child_set()
+Language bindings should use the vector-based clutter_box_addv()
+variant instead"
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter name="first_property" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="packv"
+              c:identifier="clutter_box_packv"
+              doc="Vector-based variant of clutter_box_pack(), intended for language
+bindings to use"
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter name="n_properties" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="properties"
+                     transfer-ownership="none"
+                     doc="a vector containing the property names to set">
+            <array length="2" c:type="gchar*">
+              <type name="utf8"/>
+            </array>
+          </parameter>
+          <parameter name="values"
+                     transfer-ownership="none"
+                     doc="a vector containing the property values to set">
+            <array length="2" c:type="GValue*">
+              <type name="GObject.Value"/>
+            </array>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="pack_after"
+              c:identifier="clutter_box_pack_after"
+              doc="Adds @actor to @box, placing it after @sibling, and sets layout
+properties at the same time, if the #ClutterLayoutManager used by
+If @sibling is %NULL then @actor is placed at the end of the
+list of children, to be allocated and painted after every other child
+This function is a wrapper around clutter_container_add_actor(),
+clutter_container_raise_child() and clutter_layout_manager_child_set()"
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter name="sibling"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="a #ClutterActor or %NULL">
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter name="first_property" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="pack_before"
+              c:identifier="clutter_box_pack_before"
+              doc="Adds @actor to @box, placing it before @sibling, and sets layout
+properties at the same time, if the #ClutterLayoutManager used by
+If @sibling is %NULL then @actor is placed at the beginning of the
+list of children, to be allocated and painted below every other child
+This function is a wrapper around clutter_container_add_actor(),
+clutter_container_lower_child() and clutter_layout_manager_child_set()"
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter name="sibling"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="a #ClutterActor or %NULL">
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter name="first_property" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="pack_at"
+              c:identifier="clutter_box_pack_at"
+              doc="Adds @actor to @box, placing it at @position, and sets layout
+properties at the same time, if the #ClutterLayoutManager used by
+If @position is a negative number, or is larger than the number of
+children of @box, the new child is added at the end of the list of
+children"
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter name="position" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="first_property" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="color"
+                version="1.2"
+                writable="1"
+                doc="The color to be used to paint the background of the
+#ClutterBox. Setting this property will set the
+#ClutterBox:color-set property as a side effect">
+        <type name="Color" c:type="ClutterColor"/>
+      </property>
+      <property name="color-set"
+                version="1.2"
+                writable="1"
+                doc="Whether the #ClutterBox:color property has been set">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="layout-manager"
+                version="1.2"
+                writable="1"
+                construct="1"
+                doc="The #ClutterLayoutManager used by the #ClutterBox">
+        <type name="LayoutManager" c:type="ClutterLayoutManager"/>
+      </property>
+      <field name="parent_instance">
+        <type name="Actor" c:type="ClutterActor"/>
+      </field>
+      <field name="priv">
+        <type name="BoxPrivate" c:type="ClutterBoxPrivate*"/>
+      </field>
+    </class>
+    <enumeration name="BoxAlignment"
+                 doc="The alignment policies available on each axis of the #ClutterBoxLayout"
+                 version="1.2"
+                 glib:type-name="ClutterBoxAlignment"
+                 glib:get-type="clutter_box_alignment_get_type"
+                 c:type="ClutterBoxAlignment">
+      <member name="start"
+              value="0"
+              c:identifier="CLUTTER_BOX_ALIGNMENT_START"
+              glib:nick="start"/>
+      <member name="end"
+              value="1"
+              c:identifier="CLUTTER_BOX_ALIGNMENT_END"
+              glib:nick="end"/>
+      <member name="center"
+              value="2"
+              c:identifier="CLUTTER_BOX_ALIGNMENT_CENTER"
+              glib:nick="center"/>
+    </enumeration>
+    <record name="BoxClass"
+            c:type="ClutterBoxClass"
+            glib:is-gtype-struct-for="Box"
+            doc="The #ClutterBoxClass structure contains only private data"
+            version="1.2">
+      <field name="parent_class">
+        <type name="ActorClass" c:type="ClutterActorClass"/>
+      </field>
+      <field name="padding_1">
+        <callback name="padding_1" c:type="clutter_padding_1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="padding_2">
+        <callback name="padding_2" c:type="clutter_padding_2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="padding_3">
+        <callback name="padding_3" c:type="clutter_padding_3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="padding_4">
+        <callback name="padding_4" c:type="clutter_padding_4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="padding_5">
+        <callback name="padding_5" c:type="clutter_padding_5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="padding_6">
+        <callback name="padding_6" c:type="clutter_padding_6">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <class name="BoxLayout"
+           c:type="ClutterBoxLayout"
+           doc="The #ClutterBoxLayout structure contains only private data
+and should be accessed using the provided API"
+           version="1.2"
+           parent="LayoutManager"
+           glib:type-name="ClutterBoxLayout"
+           glib:get-type="clutter_box_layout_get_type"
+           glib:type-struct="BoxLayoutClass">
+      <constructor name="new"
+                   c:identifier="clutter_box_layout_new"
+                   doc="Creates a new #ClutterBoxLayout layout manager"
+                   version="1.2">
+        <return-value transfer-ownership="full">
+          <type name="BoxLayout" c:type="ClutterLayoutManager*"/>
+        </return-value>
+      </constructor>
+      <method name="set_spacing"
+              c:identifier="clutter_box_layout_set_spacing"
+              doc="Sets the spacing between children of @layout"
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="spacing" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_spacing"
+              c:identifier="clutter_box_layout_get_spacing"
+              doc="Retrieves the spacing set using clutter_box_layout_set_spacing()"
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="set_vertical"
+              c:identifier="clutter_box_layout_set_vertical"
+              doc="Sets whether @layout should arrange its children vertically alongside
+the Y axis, instead of horizontally alongside the X axis"
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="vertical" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_vertical"
+              c:identifier="clutter_box_layout_get_vertical"
+              doc="Retrieves the orientation of the @layout as set using the
+clutter_box_layout_set_vertical() function
+vertically, and %FALSE otherwise"
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_pack_start"
+              c:identifier="clutter_box_layout_set_pack_start"
+              doc="Sets whether children of @layout should be layed out by appending
+them or by prepending them"
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="pack_start"
+                     transfer-ownership="none"
+                     doc=" beginning of the layout">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_pack_start"
+              c:identifier="clutter_box_layout_get_pack_start"
+              doc="Retrieves the value set using clutter_box_layout_set_pack_start()
+at the beginning of the layout, and %FALSE otherwise"
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="pack"
+              c:identifier="clutter_box_layout_pack"
+              doc="Packs @actor inside the #ClutterContainer associated to @layout
+and sets the layout properties"
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter name="expand" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="x_fill" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="y_fill" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="x_align" transfer-ownership="none">
+            <type name="BoxAlignment" c:type="ClutterBoxAlignment"/>
+          </parameter>
+          <parameter name="y_align" transfer-ownership="none">
+            <type name="BoxAlignment" c:type="ClutterBoxAlignment"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_alignment"
+              c:identifier="clutter_box_layout_set_alignment"
+              doc="Sets the horizontal and vertical alignment policies for @actor
+inside @layout"
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter name="x_align" transfer-ownership="none">
+            <type name="BoxAlignment" c:type="ClutterBoxAlignment"/>
+          </parameter>
+          <parameter name="y_align" transfer-ownership="none">
+            <type name="BoxAlignment" c:type="ClutterBoxAlignment"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_alignment"
+              c:identifier="clutter_box_layout_get_alignment"
+              doc="Retrieves the horizontal and vertical alignment policies for @actor
+as set using clutter_box_layout_pack() or clutter_box_layout_set_alignment()"
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter name="x_align"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none"
+                     doc="return location for the horizontal alignment policy">
+            <type name="BoxAlignment" c:type="ClutterBoxAlignment*"/>
+          </parameter>
+          <parameter name="y_align"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none"
+                     doc="return location for the vertical alignment policy">
+            <type name="BoxAlignment" c:type="ClutterBoxAlignment*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_fill"
+              c:identifier="clutter_box_layout_set_fill"
+              doc="Sets the horizontal and vertical fill policies for @actor
+inside @layout"
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter name="x_fill" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="y_fill" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_fill"
+              c:identifier="clutter_box_layout_get_fill"
+              doc="Retrieves the horizontal and vertical fill policies for @actor
+as set using clutter_box_layout_pack() or clutter_box_layout_set_fill()"
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter name="x_fill"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     doc="return location for the horizontal fill policy">
+            <type name="boolean" c:type="gboolean*"/>
+          </parameter>
+          <parameter name="y_fill"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     doc="return location for the vertical fill policy">
+            <type name="boolean" c:type="gboolean*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_expand"
+              c:identifier="clutter_box_layout_set_expand"
+              doc="Sets whether @actor should expand inside @layout"
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter name="expand" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_expand"
+              c:identifier="clutter_box_layout_get_expand"
+              doc="Retrieves whether @actor should expand inside @layout"
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_use_animations"
+              c:identifier="clutter_box_layout_set_use_animations"
+              doc="Sets whether @layout should animate changes in the layout properties
+The duration of the animations is controlled by
+clutter_box_layout_set_easing_duration(); the easing mode to be used
+by the animations is controlled by clutter_box_layout_set_easing_mode()"
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="animate" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_use_animations"
+              c:identifier="clutter_box_layout_get_use_animations"
+              doc="Retrieves whether @layout should animate changes in the layout properties
+Since clutter_box_layout_set_use_animations()"
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_easing_mode"
+              c:identifier="clutter_box_layout_set_easing_mode"
+              doc="Sets the easing mode to be used by @layout when animating changes in layout
+properties
+Use clutter_box_layout_set_use_animations() to enable and disable the
+animations"
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="mode"
+                     transfer-ownership="none"
+                     doc=" from clutter_alpha_register_func()">
+            <type name="ulong" c:type="gulong"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_easing_mode"
+              c:identifier="clutter_box_layout_get_easing_mode"
+              doc="Retrieves the easing mode set using clutter_box_layout_set_easing_mode()"
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="ulong" c:type="gulong"/>
+        </return-value>
+      </method>
+      <method name="set_easing_duration"
+              c:identifier="clutter_box_layout_set_easing_duration"
+              doc="Sets the duration of the animations used by @layout when animating changes
+in the layout properties
+Use clutter_box_layout_set_use_animations() to enable and disable the
+animations"
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="msecs" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_easing_duration"
+              c:identifier="clutter_box_layout_get_easing_duration"
+              doc="Retrieves the duration set using clutter_box_layout_set_easing_duration()"
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </method>
+      <property name="easing-duration"
+                version="1.2"
+                writable="1"
+                doc="The duration of the animations, in case #ClutterBoxLayout:use-animations
+is set to %TRUE
+The duration is expressed in milliseconds">
+        <type name="uint" c:type="guint"/>
+      </property>
+      <property name="easing-mode"
+                version="1.2"
+                writable="1"
+                doc="The easing mode for the animations, in case
+#ClutterBoxLayout:use-animations is set to %TRUE
+either be a value from the #ClutterAnimationMode enumeration, like
+%CLUTTER_EASE_OUT_CUBIC, or a logical id as returned by
+clutter_alpha_register_func()
+The default value is %CLUTTER_EASE_OUT_CUBIC">
+        <type name="ulong" c:type="gulong"/>
+      </property>
+      <property name="pack-start"
+                version="1.2"
+                writable="1"
+                doc="Whether the #ClutterBoxLayout should pack items at the start
+or append them at the end">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="spacing"
+                version="1.2"
+                writable="1"
+                doc="The spacing between children of the #ClutterBoxLayout, in pixels">
+        <type name="uint" c:type="guint"/>
+      </property>
+      <property name="use-animations"
+                version="1.2"
+                writable="1"
+                doc="Whether the #ClutterBoxLayout should animate changes in the
+layout properties">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="vertical"
+                version="1.2"
+                writable="1"
+                doc="Whether the #ClutterBoxLayout should arrange its children
+alongside the Y axis, instead of alongside the X axis">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <field name="parent_instance">
+        <type name="LayoutManager" c:type="ClutterLayoutManager"/>
+      </field>
+      <field name="priv">
+        <type name="BoxLayoutPrivate" c:type="ClutterBoxLayoutPrivate*"/>
+      </field>
+    </class>
+    <record name="BoxLayoutClass"
+            c:type="ClutterBoxLayoutClass"
+            glib:is-gtype-struct-for="BoxLayout"
+            doc="The #ClutterBoxLayoutClass structure contains only private
+data and should be accessed using the provided API"
+            version="1.2">
+      <field name="parent_class">
+        <type name="LayoutManagerClass" c:type="ClutterLayoutManagerClass"/>
+      </field>
+    </record>
+    <record name="BoxLayoutPrivate" c:type="ClutterBoxLayoutPrivate">
+    </record>
+    <record name="BoxPrivate" c:type="ClutterBoxPrivate">
+    </record>
+    <constant name="Break" value="65387">
+      <type name="int"/>
+    </constant>
+    <record name="ButtonEvent"
+            c:type="ClutterButtonEvent"
+            doc="Button event.
+The event coordinates are relative to the stage that received the
+event, and can be transformed into actor-relative coordinates by
+using clutter_actor_transform_stage_point()."
+            version="0.2">
+      <field name="type" writable="1">
+        <type name="EventType" c:type="ClutterEventType"/>
+      </field>
+      <field name="time" writable="1">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+      <field name="flags" writable="1">
+        <type name="EventFlags" c:type="ClutterEventFlags"/>
+      </field>
+      <field name="stage" writable="1">
+        <type name="Stage" c:type="ClutterStage*"/>
+      </field>
+      <field name="source" writable="1">
+        <type name="Actor" c:type="ClutterActor*"/>
+      </field>
+      <field name="x" writable="1">
+        <type name="float" c:type="gfloat"/>
+      </field>
+      <field name="y" writable="1">
+        <type name="float" c:type="gfloat"/>
+      </field>
+      <field name="modifier_state" writable="1">
+        <type name="ModifierType" c:type="ClutterModifierType"/>
+      </field>
+      <field name="button" writable="1">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+      <field name="click_count" writable="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="axes" writable="1">
+        <type name="any" c:type="gdouble*"/>
+      </field>
+      <field name="device" writable="1">
+        <type name="InputDevice" c:type="ClutterInputDevice*"/>
+      </field>
+    </record>
+    <constant name="Byelorussian_SHORTU" value="1726">
+      <type name="int"/>
+    </constant>
+    <constant name="Byelorussian_shortu" value="1710">
+      <type name="int"/>
+    </constant>
+    <constant name="C" value="67">
+      <type name="int"/>
+    </constant>
+    <constant name="COGL" value="gl">
+      <type name="utf8"/>
+    </constant>
+    <constant name="CURRENT_TIME" value="0">
+      <type name="int"/>
+    </constant>
+    <constant name="Cabovedot" value="709">
+      <type name="int"/>
+    </constant>
+    <constant name="Cacute" value="454">
+      <type name="int"/>
+    </constant>
+    <class name="CairoTexture"
+           c:type="ClutterCairoTexture"
+           doc="The #ClutterCairoTexture struct contains only private data."
+           version="1.0"
+           parent="Texture"
+           glib:type-name="ClutterCairoTexture"
+           glib:get-type="clutter_cairo_texture_get_type"
+           glib:type-struct="CairoTextureClass">
+      <implements name="Scriptable"/>
+      <constructor name="new"
+                   c:identifier="clutter_cairo_texture_new"
+                   doc="Creates a new #ClutterCairoTexture actor, with a surface of @width by"
+                   version="1.0">
+        <return-value transfer-ownership="full">
+          <type name="CairoTexture" c:type="ClutterActor*"/>
+        </return-value>
+        <parameters>
+          <parameter name="width" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="height" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="create_region"
+              c:identifier="clutter_cairo_texture_create_region"
+              doc="Creates a new Cairo context that will updat the region defined
+by @x_offset, @y_offset, @width and @height.
+&lt;warning&gt;&lt;para&gt;Do not call this function within the paint virtual
+function or from a callback to the #ClutterActor::paint
+signal.&lt;/para&gt;&lt;/warning&gt;
+to upload the contents of the context when done drawing"
+              version="1.0">
+        <return-value transfer-ownership="full">
+          <type name="cairo.Context" c:type="cairo_t*"/>
+        </return-value>
+        <parameters>
+          <parameter name="x_offset" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="y_offset" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="width" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="height" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="create"
+              c:identifier="clutter_cairo_texture_create"
+              doc="Creates a new Cairo context for the @cairo texture. It is
+similar to using clutter_cairo_texture_create_region() with @x_offset
+and @y_offset of 0, @width equal to the @cairo texture surface width
+and @height equal to the @cairo texture surface height.
+&lt;warning&gt;&lt;para&gt;Do not call this function within the paint virtual
+function or from a callback to the #ClutterActor::paint
+signal.&lt;/para&gt;&lt;/warning&gt;
+to upload the contents of the context when done drawing"
+              version="1.0">
+        <return-value transfer-ownership="full">
+          <type name="cairo.Context" c:type="cairo_t*"/>
+        </return-value>
+      </method>
+      <method name="set_surface_size"
+              c:identifier="clutter_cairo_texture_set_surface_size"
+              doc="Resizes the Cairo surface used by @self to @width and @height."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="width" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="height" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_surface_size"
+              c:identifier="clutter_cairo_texture_get_surface_size"
+              doc="Retrieves the surface width and height for @self."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="width"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <type name="uint" c:type="guint*"/>
+          </parameter>
+          <parameter name="height"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <type name="uint" c:type="guint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="clear"
+              c:identifier="clutter_cairo_texture_clear"
+              doc="Clears @self&apos;s internal drawing surface, so that the next upload
+will replace the previous contents of the #ClutterCairoTexture
+rather than adding to it."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <property name="surface-height"
+                version="1.0"
+                writable="1"
+                doc="The height of the Cairo surface used by the #ClutterCairoTexture
+actor, in pixels.">
+        <type name="uint" c:type="guint"/>
+      </property>
+      <property name="surface-width"
+                version="1.0"
+                writable="1"
+                doc="The width of the Cairo surface used by the #ClutterCairoTexture
+actor, in pixels.">
+        <type name="uint" c:type="guint"/>
+      </property>
+      <field name="parent_instance">
+        <type name="Texture" c:type="ClutterTexture"/>
+      </field>
+      <field name="priv">
+        <type name="CairoTexturePrivate" c:type="ClutterCairoTexturePrivate*"/>
+      </field>
+    </class>
+    <record name="CairoTextureClass"
+            c:type="ClutterCairoTextureClass"
+            glib:is-gtype-struct-for="CairoTexture"
+            doc="The #ClutterCairoTextureClass struct contains only private data."
+            version="1.0">
+      <field name="parent_class">
+        <type name="TextureClass" c:type="ClutterTextureClass"/>
+      </field>
+      <field name="clutter_cairo_1">
+        <callback name="clutter_cairo_1" c:type="_clutter_cairo_1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_cairo_2">
+        <callback name="clutter_cairo_2" c:type="_clutter_cairo_2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_cairo_3">
+        <callback name="clutter_cairo_3" c:type="_clutter_cairo_3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_cairo_4">
+        <callback name="clutter_cairo_4" c:type="_clutter_cairo_4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="CairoTexturePrivate" c:type="ClutterCairoTexturePrivate">
+    </record>
+    <callback name="Callback" c:type="ClutterCallback" doc="Generic callback">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="actor" transfer-ownership="none">
+          <type name="Actor" c:type="ClutterActor*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <constant name="Cancel" value="65385">
+      <type name="int"/>
+    </constant>
+    <constant name="Caps_Lock" value="65509">
+      <type name="int"/>
+    </constant>
+    <constant name="Ccaron" value="456">
+      <type name="int"/>
+    </constant>
+    <constant name="Ccedilla" value="199">
+      <type name="int"/>
+    </constant>
+    <constant name="Ccircumflex" value="710">
+      <type name="int"/>
+    </constant>
+    <class name="ChildMeta"
+           c:type="ClutterChildMeta"
+           doc="Base interface for container specific state for child actors. A child
+data is meant to be used when you need to keep track of information
+about each individual child added to a container.
+In order to use it you should create your own subclass of
+#ClutterChildMeta and set the #ClutterContainerIface::child_meta_type
+interface member to your subclass type, like:
+|[
+static void
+my_container_iface_init (ClutterContainerIface *iface)
+{
+/&amp;ast; set the rest of the #ClutterContainer vtable &amp;ast;/
+container_iface-&gt;child_meta_type  = MY_TYPE_CHILD_META;
+}
+]|
+This will automatically create a #ClutterChildMeta of type
+MY_TYPE_CHILD_META for every actor that is added to the container.
+The child data for an actor can be retrieved using the
+clutter_container_get_child_meta() function.
+The properties of the data and your subclass can be manipulated with
+clutter_container_child_set() and clutter_container_child_get() which
+act like g_object_set() and g_object_get().
+You can provide hooks for your own storage as well as control the
+instantiation by overriding #ClutterContainerIface::create_child_meta,
+#ClutterContainerIface::destroy_child_meta and
+#ClutterContainerIface::get_child_meta."
+           version="0.8"
+           parent="GObject.Object"
+           abstract="1"
+           glib:type-name="ClutterChildMeta"
+           glib:get-type="clutter_child_meta_get_type"
+           glib:type-struct="ChildMetaClass">
+      <method name="get_container"
+              c:identifier="clutter_child_meta_get_container"
+              doc="Retrieves the container using @data"
+              version="0.8">
+        <return-value transfer-ownership="none" doc="a #ClutterContainer">
+          <type name="Container" c:type="ClutterContainer*"/>
+        </return-value>
+      </method>
+      <method name="get_actor"
+              c:identifier="clutter_child_meta_get_actor"
+              doc="Retrieves the actor wrapped by @data"
+              version="0.8">
+        <return-value transfer-ownership="none" doc="a #ClutterActor">
+          <type name="Actor" c:type="ClutterActor*"/>
+        </return-value>
+      </method>
+      <property name="actor"
+                version="0.8"
+                writable="1"
+                construct-only="1"
+                doc="The #ClutterActor being wrapped by this #ClutterChildMeta">
+        <type name="Actor" c:type="ClutterActor"/>
+      </property>
+      <property name="container"
+                version="0.8"
+                writable="1"
+                construct-only="1"
+                doc="The #ClutterContainer that created this #ClutterChildMeta.">
+        <type name="Container" c:type="ClutterContainer"/>
+      </property>
+      <field name="parent_instance">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="container">
+        <type name="Container" c:type="ClutterContainer*"/>
+      </field>
+      <field name="actor">
+        <type name="Actor" c:type="ClutterActor*"/>
+      </field>
+    </class>
+    <record name="ChildMetaClass"
+            c:type="ClutterChildMetaClass"
+            glib:is-gtype-struct-for="ChildMeta"
+            doc="The #ClutterChildMetaClass contains only private data"
+            version="0.8">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+    </record>
+    <constant name="Clear" value="65291">
+      <type name="int"/>
+    </constant>
+    <class name="Clone"
+           c:type="ClutterClone"
+           doc="The #ClutterClone structure contains only private data
+and should be accessed using the provided API"
+           version="1.0"
+           parent="Actor"
+           glib:type-name="ClutterClone"
+           glib:get-type="clutter_clone_get_type"
+           glib:type-struct="CloneClass">
+      <implements name="Scriptable"/>
+      <constructor name="new"
+                   c:identifier="clutter_clone_new"
+                   doc="Creates a new #ClutterActor which clones @source/"
+                   version="1.0">
+        <return-value transfer-ownership="full">
+          <type name="Clone" c:type="ClutterActor*"/>
+        </return-value>
+        <parameters>
+          <parameter name="source" transfer-ownership="none">
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="set_source"
+              c:identifier="clutter_clone_set_source"
+              doc="Sets @source as the source actor to be cloned by @clone."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="source" transfer-ownership="none">
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_source"
+              c:identifier="clutter_clone_get_source"
+              doc="Retrieves the source #ClutterActor being cloned by @clone"
+              version="1.0">
+        <return-value transfer-ownership="none"
+                      doc="the actor source for the clone">
+          <type name="Actor" c:type="ClutterActor*"/>
+        </return-value>
+      </method>
+      <property name="source"
+                version="1.0"
+                writable="1"
+                construct="1"
+                doc="This property specifies the source actor being cloned.">
+        <type name="Actor" c:type="ClutterActor"/>
+      </property>
+      <field name="parent_instance">
+        <type name="Actor" c:type="ClutterActor"/>
+      </field>
+      <field name="priv">
+        <type name="ClonePrivate" c:type="ClutterClonePrivate*"/>
+      </field>
+    </class>
+    <record name="CloneClass"
+            c:type="ClutterCloneClass"
+            glib:is-gtype-struct-for="Clone"
+            doc="The #ClutterCloneClass structure contains only private data"
+            version="1.0">
+      <field name="parent_class">
+        <type name="ActorClass" c:type="ClutterActorClass"/>
+      </field>
+      <field name="clutter_actor_clone1">
+        <callback name="clutter_actor_clone1" c:type="_clutter_actor_clone1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_actor_clone2">
+        <callback name="clutter_actor_clone2" c:type="_clutter_actor_clone2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_actor_clone3">
+        <callback name="clutter_actor_clone3" c:type="_clutter_actor_clone3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_actor_clone4">
+        <callback name="clutter_actor_clone4" c:type="_clutter_actor_clone4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="ClonePrivate" c:type="ClutterClonePrivate">
+    </record>
+    <constant name="Codeinput" value="65335">
+      <type name="int"/>
+    </constant>
+    <constant name="ColonSign" value="16785569">
+      <type name="int"/>
+    </constant>
+    <record name="Color"
+            c:type="ClutterColor"
+            doc="Color representation."
+            glib:type-name="ClutterColor"
+            glib:get-type="clutter_color_get_type">
+      <field name="red" writable="1">
+        <type name="uint8" c:type="guint8"/>
+      </field>
+      <field name="green" writable="1">
+        <type name="uint8" c:type="guint8"/>
+      </field>
+      <field name="blue" writable="1">
+        <type name="uint8" c:type="guint8"/>
+      </field>
+      <field name="alpha" writable="1">
+        <type name="uint8" c:type="guint8"/>
+      </field>
+      <constructor name="new"
+                   c:identifier="clutter_color_new"
+                   doc="Creates a new #ClutterColor with the given values.
+when done"
+                   version="0.8.4">
+        <return-value transfer-ownership="full">
+          <type name="Color" c:type="ClutterColor*"/>
+        </return-value>
+        <parameters>
+          <parameter name="red" transfer-ownership="none">
+            <type name="uint8" c:type="guint8"/>
+          </parameter>
+          <parameter name="green" transfer-ownership="none">
+            <type name="uint8" c:type="guint8"/>
+          </parameter>
+          <parameter name="blue" transfer-ownership="none">
+            <type name="uint8" c:type="guint8"/>
+          </parameter>
+          <parameter name="alpha" transfer-ownership="none">
+            <type name="uint8" c:type="guint8"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="copy"
+              c:identifier="clutter_color_copy"
+              doc="Makes a copy of the color structure.  The result must be
+freed using clutter_color_free()."
+              version="0.2">
+        <return-value transfer-ownership="full">
+          <type name="Color" c:type="ClutterColor*"/>
+        </return-value>
+      </method>
+      <method name="free"
+              c:identifier="clutter_color_free"
+              doc="Frees a color structure created with clutter_color_copy()."
+              version="0.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="add"
+              c:identifier="clutter_color_add"
+              doc="Adds @a to @b and saves the resulting color inside @result.
+The alpha channel of @result is set as as the maximum value
+between the alpha channels of @a and @b.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="b" transfer-ownership="none">
+            <type name="Color" c:type="ClutterColor*"/>
+          </parameter>
+          <parameter name="result"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none"
+                     doc="return location for the result">
+            <type name="Color" c:type="ClutterColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="subtract"
+              c:identifier="clutter_color_subtract"
+              doc="Subtracts @b from @a and saves the resulting color inside @result.
+This function assumes that the components of @a are greater than the
+components of @b; the result is, otherwise, undefined.
+The alpha channel of @result is set as the minimum value
+between the alpha channels of @a and @b.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="b" transfer-ownership="none">
+            <type name="Color" c:type="ClutterColor*"/>
+          </parameter>
+          <parameter name="result"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none"
+                     doc="return location for the result">
+            <type name="Color" c:type="ClutterColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="lighten"
+              c:identifier="clutter_color_lighten"
+              doc="Lightens @color by a fixed amount, and saves the changed color
+in @result.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="result"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none"
+                     doc="return location for the lighter color">
+            <type name="Color" c:type="ClutterColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="darken"
+              c:identifier="clutter_color_darken"
+              doc="Darkens @color by a fixed amount, and saves the changed color
+in @result.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="result"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none"
+                     doc="return location for the darker color">
+            <type name="Color" c:type="ClutterColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="shade"
+              c:identifier="clutter_color_shade"
+              doc="Shades @color by @factor and saves the modified color into @result.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="factor" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="result"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none"
+                     doc="return location for the shaded color">
+            <type name="Color" c:type="ClutterColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="to_string"
+              c:identifier="clutter_color_to_string"
+              doc="Returns a textual specification of @color in the hexadecimal form
+&lt;literal&gt;&amp;num;rrggbbaa&lt;/literal&gt;, where &lt;literal&gt;r&lt;/literal&gt;,
+&lt;literal&gt;g&lt;/literal&gt;, &lt;literal&gt;b&lt;/literal&gt; and &lt;literal&gt;a&lt;/literal&gt; are
+hex digits representing the red, green, blue and alpha components
+respectively."
+              version="0.2">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="from_string"
+              c:identifier="clutter_color_from_string"
+              doc="Parses a string definition of a color, filling the
+&lt;structfield&gt;red&lt;/structfield&gt;, &lt;structfield&gt;green&lt;/structfield&gt;,
+&lt;structfield&gt;blue&lt;/structfield&gt; and &lt;structfield&gt;alpha&lt;/structfield&gt;
+channels of @color. If alpha is not specified it will be set full opaque.
+The @color is not allocated.
+The color may be defined by any of the formats understood by
+pango_color_from_string(); these include literal color names, like
+&lt;literal&gt;Red&lt;/literal&gt; or &lt;literal&gt;DarkSlateGray&lt;/literal&gt;, or
+hexadecimal specifications like &lt;literal&gt;&amp;num;3050b2&lt;/literal&gt; or
+&lt;literal&gt;&amp;num;333&lt;/literal&gt;."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="str" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="to_hls"
+              c:identifier="clutter_color_to_hls"
+              doc="Converts @color to the HLS format.
+The @hue value is in the 0 .. 360 range. The @luminance and">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="hue"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <type name="float" c:type="gfloat*"/>
+          </parameter>
+          <parameter name="luminance"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <type name="float" c:type="gfloat*"/>
+          </parameter>
+          <parameter name="saturation"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <type name="float" c:type="gfloat*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="from_hls"
+              c:identifier="clutter_color_from_hls"
+              doc="Converts a color expressed in HLS (hue, luminance and saturation)
+values into a #ClutterColor.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="hue" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+          <parameter name="luminance" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+          <parameter name="saturation" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="to_pixel"
+              c:identifier="clutter_color_to_pixel"
+              doc="Converts @color into a packed 32 bit integer, containing
+all the four 8 bit channels used by #ClutterColor.">
+        <return-value transfer-ownership="none">
+          <type name="uint32" c:type="guint32"/>
+        </return-value>
+      </method>
+      <method name="from_pixel"
+              c:identifier="clutter_color_from_pixel"
+              doc="Converts @pixel from the packed representation of a four 8 bit channel
+color to a #ClutterColor.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="pixel" transfer-ownership="none">
+            <type name="uint32" c:type="guint32"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <interface name="Container"
+               c:type="ClutterContainer"
+               doc="#ClutterContainer is an opaque structure whose members cannot be directly
+accessed"
+               version="0.4"
+               glib:type-name="ClutterContainer"
+               glib:get-type="clutter_container_get_type"
+               glib:type-struct="ContainerIface">
+      <virtual-method name="add">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="remove">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="foreach" invoker="foreach">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="callback" transfer-ownership="none">
+            <type name="Callback" c:type="ClutterCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none" closure="2">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="foreach_with_internals"
+                      invoker="foreach_with_internals">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="callback" transfer-ownership="none">
+            <type name="Callback" c:type="ClutterCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none" closure="2">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="raise">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter name="sibling" transfer-ownership="none">
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="lower">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter name="sibling" transfer-ownership="none">
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="sort_depth_order" invoker="sort_depth_order">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="create_child_meta" invoker="create_child_meta">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="destroy_child_meta" invoker="destroy_child_meta">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_child_meta" invoker="get_child_meta">
+        <return-value transfer-ownership="full">
+          <type name="ChildMeta" c:type="ClutterChildMeta*"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="add"
+              c:identifier="clutter_container_add"
+              doc="Adds a list of #ClutterActor&lt;!-- --&gt;s to @container. Each time and
+actor is added, the &quot;actor-added&quot; signal is emitted. Each actor should
+be parented to @container, which takes a reference on the actor. You
+cannot add a #ClutterActor to more than one #ClutterContainer."
+              version="0.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="first_actor" transfer-ownership="none">
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_actor"
+              c:identifier="clutter_container_add_actor"
+              doc="Adds a #ClutterActor to @container. This function will emit the
+&quot;actor-added&quot; signal. The actor should be parented to
+#ClutterContainer."
+              version="0.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove"
+              c:identifier="clutter_container_remove"
+              doc="Removes a %NULL terminated list of #ClutterActor&lt;!-- --&gt;s from
+around you must hold a reference to it yourself, using g_object_ref().
+Each time an actor is removed, the &quot;actor-removed&quot; signal is
+emitted by @container."
+              version="0.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="first_actor" transfer-ownership="none">
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_actor"
+              c:identifier="clutter_container_remove_actor"
+              doc="Removes @actor from @container. The actor should be unparented, so
+if you want to keep it around you must hold a reference to it
+yourself, using g_object_ref(). When the actor has been removed,
+the &quot;actor-removed&quot; signal is emitted by @container."
+              version="0.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_children"
+              c:identifier="clutter_container_get_children"
+              doc="Retrieves all the children of @container.
+of #ClutterActor&lt;!-- --&gt;s. Use g_list_free() on the returned
+list when done."
+              version="0.4">
+        <return-value transfer-ownership="container" doc="a list">
+          <type name="GLib.List" c:type="GList*">
+            <type name="Actor"/>
+          </type>
+        </return-value>
+      </method>
+      <method name="foreach"
+              c:identifier="clutter_container_foreach"
+              doc="Calls @callback for each child of @container that was added
+by the application (with clutter_container_add_actor()). Does
+not iterate over &quot;internal&quot; children that are part of the
+container&apos;s own implementation, if any."
+              version="0.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="2">
+            <type name="Callback" c:type="ClutterCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="foreach_with_internals"
+              c:identifier="clutter_container_foreach_with_internals"
+              doc="Calls @callback for each child of @container, including &quot;internal&quot;
+children built in to the container itself that were never added
+by the application."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="2">
+            <type name="Callback" c:type="ClutterCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="find_child_by_name"
+              c:identifier="clutter_container_find_child_by_name"
+              doc="Finds a child actor of a container by its name. Search recurses
+into any child container.
+or %NULL if no actor with that name was found."
+              version="0.6">
+        <return-value transfer-ownership="none"
+                      doc="The child actor with the requested name,">
+          <type name="Actor" c:type="ClutterActor*"/>
+        </return-value>
+        <parameters>
+          <parameter name="child_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="raise_child"
+              c:identifier="clutter_container_raise_child"
+              doc="Raises @actor to @sibling level, in the depth ordering."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter name="sibling" transfer-ownership="none">
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="lower_child"
+              c:identifier="clutter_container_lower_child"
+              doc="Lowers @actor to @sibling level, in the depth ordering."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter name="sibling" transfer-ownership="none">
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="sort_depth_order"
+              c:identifier="clutter_container_sort_depth_order"
+              doc="Sorts a container&apos;s children using their depth. This function should not
+be normally used by applications."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="create_child_meta"
+              c:identifier="clutter_container_create_child_meta"
+              doc="Creates the #ClutterChildMeta wrapping @actor inside the
+class member is not set to %G_TYPE_INVALID.
+This function is only useful when adding a #ClutterActor to
+a #ClutterContainer implementation outside of the
+#ClutterContainer::add() virtual function implementation.
+Applications should not call this function."
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="destroy_child_meta"
+              c:identifier="clutter_container_destroy_child_meta"
+              doc="Destroys the #ClutterChildMeta wrapping @actor inside the
+This function is only useful when removing a #ClutterActor to
+a #ClutterContainer implementation outside of the
+#ClutterContainer::add() virtual function implementation.
+Applications should not call this function."
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_child_meta"
+              c:identifier="clutter_container_get_child_meta"
+              doc="Retrieves the #ClutterChildMeta which contains the data about the
+of @container or %NULL if the specifiec actor does not exist or the
+container is not configured to provide #ClutterChildMeta&lt;!-- --&gt;s"
+              version="0.8">
+        <return-value transfer-ownership="none"
+                      doc="the #ClutterChildMeta for the @actor child">
+          <type name="ChildMeta" c:type="ClutterChildMeta*"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="child_set_property"
+              c:identifier="clutter_container_child_set_property"
+              doc="Sets a container-specific property on a child of @container."
+              version="0.8">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="child" transfer-ownership="none">
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter name="property" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="child_get_property"
+              c:identifier="clutter_container_child_get_property"
+              doc="Gets a container specific property of a child of @container, In general,
+a copy is made of the property contents and the caller is responsible for
+freeing the memory by calling g_value_unset().
+Note that clutter_container_child_set_property() is really intended for
+language bindings, clutter_container_child_set() is much more convenient
+for C programming."
+              version="0.8">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="child" transfer-ownership="none">
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter name="property" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="child_set"
+              c:identifier="clutter_container_child_set"
+              doc="Sets container specific properties on the child of a container."
+              version="0.8">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter name="first_prop" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="child_get"
+              c:identifier="clutter_container_child_get"
+              doc="Gets @container specific properties of an actor.
+In general, a copy is made of the property contents and the caller is
+responsible for freeing the memory in the appropriate manner for the type, for
+instance by calling g_free() or g_object_unref()."
+              version="0.8">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter name="first_prop" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <glib:signal name="actor-added"
+                   doc="The ::actor-added signal is emitted each time an actor
+has been added to @container."
+                   version="0.4">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <type name="Actor" c:type="ClutterActor"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="actor-removed"
+                   doc="The ::actor-removed signal is emitted each time an actor
+is removed from @container."
+                   version="0.4">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <type name="Actor" c:type="ClutterActor"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="child-notify"
+                   doc="The ::child-notify signal is emitted each time a property is
+being set through the clutter_container_child_set() and
+clutter_container_child_set_property() calls."
+                   version="0.8">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <type name="Actor" c:type="ClutterActor"/>
+          </parameter>
+          <parameter name="since" transfer-ownership="none">
+            <type name="GObject.ParamSpec" c:type="GParam"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </interface>
+    <record name="ContainerIface"
+            c:type="ClutterContainerIface"
+            glib:is-gtype-struct-for="Container"
+            doc="Base interface for container actors. The @add, @remove and @foreach
+virtual functions must be provided by any implementation; the other
+virtual functions are optional."
+            version="0.4">
+      <field name="g_iface">
+        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+      </field>
+      <field name="add">
+        <callback name="add" c:type="add">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="container" transfer-ownership="none">
+              <type name="Container" c:type="ClutterContainer*"/>
+            </parameter>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="remove">
+        <callback name="remove" c:type="remove">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="container" transfer-ownership="none">
+              <type name="Container" c:type="ClutterContainer*"/>
+            </parameter>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="foreach">
+        <callback name="foreach" c:type="foreach">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="container" transfer-ownership="none">
+              <type name="Container" c:type="ClutterContainer*"/>
+            </parameter>
+            <parameter name="callback" transfer-ownership="none">
+              <type name="Callback" c:type="ClutterCallback"/>
+            </parameter>
+            <parameter name="user_data" transfer-ownership="none" closure="2">
+              <type name="any" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="foreach_with_internals">
+        <callback name="foreach_with_internals"
+                  c:type="foreach_with_internals">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="container" transfer-ownership="none">
+              <type name="Container" c:type="ClutterContainer*"/>
+            </parameter>
+            <parameter name="callback" transfer-ownership="none">
+              <type name="Callback" c:type="ClutterCallback"/>
+            </parameter>
+            <parameter name="user_data" transfer-ownership="none" closure="2">
+              <type name="any" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="raise">
+        <callback name="raise" c:type="raise">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="container" transfer-ownership="none">
+              <type name="Container" c:type="ClutterContainer*"/>
+            </parameter>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+            <parameter name="sibling" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="lower">
+        <callback name="lower" c:type="lower">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="container" transfer-ownership="none">
+              <type name="Container" c:type="ClutterContainer*"/>
+            </parameter>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+            <parameter name="sibling" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="sort_depth_order">
+        <callback name="sort_depth_order" c:type="sort_depth_order">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="container" transfer-ownership="none">
+              <type name="Container" c:type="ClutterContainer*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="child_meta_type">
+        <type name="GType" c:type="GType"/>
+      </field>
+      <field name="create_child_meta">
+        <callback name="create_child_meta" c:type="create_child_meta">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="container" transfer-ownership="none">
+              <type name="Container" c:type="ClutterContainer*"/>
+            </parameter>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="destroy_child_meta">
+        <callback name="destroy_child_meta" c:type="destroy_child_meta">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="container" transfer-ownership="none">
+              <type name="Container" c:type="ClutterContainer*"/>
+            </parameter>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_child_meta">
+        <callback name="get_child_meta" c:type="get_child_meta">
+          <return-value transfer-ownership="full">
+            <type name="ChildMeta" c:type="ClutterChildMeta*"/>
+          </return-value>
+          <parameters>
+            <parameter name="container" transfer-ownership="none">
+              <type name="Container" c:type="ClutterContainer*"/>
+            </parameter>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="actor_added">
+        <callback name="actor_added" c:type="actor_added">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="container" transfer-ownership="none">
+              <type name="Container" c:type="ClutterContainer*"/>
+            </parameter>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="actor_removed">
+        <callback name="actor_removed" c:type="actor_removed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="container" transfer-ownership="none">
+              <type name="Container" c:type="ClutterContainer*"/>
+            </parameter>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="child_notify">
+        <callback name="child_notify" c:type="child_notify">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="container" transfer-ownership="none">
+              <type name="Container" c:type="ClutterContainer*"/>
+            </parameter>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+            <parameter name="pspec" transfer-ownership="none">
+              <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+    </record>
+    <constant name="Control_L" value="65507">
+      <type name="int"/>
+    </constant>
+    <constant name="Control_R" value="65508">
+      <type name="int"/>
+    </constant>
+    <record name="CrossingEvent"
+            c:type="ClutterCrossingEvent"
+            doc="Event for the movement of the pointer across different actors"
+            version="0.2">
+      <field name="type" writable="1">
+        <type name="EventType" c:type="ClutterEventType"/>
+      </field>
+      <field name="time" writable="1">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+      <field name="flags" writable="1">
+        <type name="EventFlags" c:type="ClutterEventFlags"/>
+      </field>
+      <field name="stage" writable="1">
+        <type name="Stage" c:type="ClutterStage*"/>
+      </field>
+      <field name="source" writable="1">
+        <type name="Actor" c:type="ClutterActor*"/>
+      </field>
+      <field name="x" writable="1">
+        <type name="float" c:type="gfloat"/>
+      </field>
+      <field name="y" writable="1">
+        <type name="float" c:type="gfloat"/>
+      </field>
+      <field name="device" writable="1">
+        <type name="InputDevice" c:type="ClutterInputDevice*"/>
+      </field>
+      <field name="related" writable="1">
+        <type name="Actor" c:type="ClutterActor*"/>
+      </field>
+    </record>
+    <constant name="CruzeiroSign" value="16785570">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_A" value="1761">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_BE" value="1762">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_CHE" value="1790">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_CHE_descender" value="16778422">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_CHE_vertstroke" value="16778424">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_DE" value="1764">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_DZHE" value="1727">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_E" value="1788">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_EF" value="1766">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_EL" value="1772">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_EM" value="1773">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_EN" value="1774">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_EN_descender" value="16778402">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_ER" value="1778">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_ES" value="1779">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_GHE" value="1767">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_GHE_bar" value="16778386">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_HA" value="1768">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_HARDSIGN" value="1791">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_HA_descender" value="16778418">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_I" value="1769">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_IE" value="1765">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_IO" value="1715">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_I_macron" value="16778466">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_JE" value="1720">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_KA" value="1771">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_KA_descender" value="16778394">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_KA_vertstroke" value="16778396">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_LJE" value="1721">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_NJE" value="1722">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_O" value="1775">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_O_bar" value="16778472">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_PE" value="1776">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_SCHWA" value="16778456">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_SHA" value="1787">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_SHCHA" value="1789">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_SHHA" value="16778426">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_SHORTI" value="1770">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_SOFTSIGN" value="1784">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_TE" value="1780">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_TSE" value="1763">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_U" value="1781">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_U_macron" value="16778478">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_U_straight" value="16778414">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_U_straight_bar" value="16778416">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_VE" value="1783">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_YA" value="1777">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_YERU" value="1785">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_YU" value="1760">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_ZE" value="1786">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_ZHE" value="1782">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_ZHE_descender" value="16778390">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_a" value="1729">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_be" value="1730">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_che" value="1758">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_che_descender" value="16778423">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_che_vertstroke" value="16778425">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_de" value="1732">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_dzhe" value="1711">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_e" value="1756">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_ef" value="1734">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_el" value="1740">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_em" value="1741">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_en" value="1742">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_en_descender" value="16778403">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_er" value="1746">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_es" value="1747">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_ghe" value="1735">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_ghe_bar" value="16778387">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_ha" value="1736">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_ha_descender" value="16778419">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_hardsign" value="1759">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_i" value="1737">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_i_macron" value="16778467">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_ie" value="1733">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_io" value="1699">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_je" value="1704">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_ka" value="1739">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_ka_descender" value="16778395">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_ka_vertstroke" value="16778397">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_lje" value="1705">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_nje" value="1706">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_o" value="1743">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_o_bar" value="16778473">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_pe" value="1744">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_schwa" value="16778457">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_sha" value="1755">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_shcha" value="1757">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_shha" value="16778427">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_shorti" value="1738">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_softsign" value="1752">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_te" value="1748">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_tse" value="1731">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_u" value="1749">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_u_macron" value="16778479">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_u_straight" value="16778415">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_u_straight_bar" value="16778417">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_ve" value="1751">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_ya" value="1745">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_yeru" value="1753">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_yu" value="1728">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_ze" value="1754">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_zhe" value="1750">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_zhe_descender" value="16778391">
+      <type name="int"/>
+    </constant>
+    <constant name="D" value="68">
+      <type name="int"/>
+    </constant>
+    <constant name="Dabovedot" value="16784906">
+      <type name="int"/>
+    </constant>
+    <constant name="Dcaron" value="463">
+      <type name="int"/>
+    </constant>
+    <constant name="Delete" value="65535">
+      <type name="int"/>
+    </constant>
+    <class name="DeviceManager"
+           c:type="ClutterDeviceManager"
+           doc="The #ClutterDeviceManager structure contains only private data"
+           version="1.2"
+           parent="GObject.Object"
+           abstract="1"
+           glib:type-name="ClutterDeviceManager"
+           glib:get-type="clutter_device_manager_get_type"
+           glib:type-struct="DeviceManagerClass">
+      <function name="get_default"
+                c:identifier="clutter_device_manager_get_default"
+                doc="Retrieves the device manager singleton
+The returned instance is owned by Clutter and it should not be
+modified or freed"
+                version="1.2">
+        <return-value transfer-ownership="none"
+                      doc="the #ClutterDeviceManager singleton.">
+          <type name="DeviceManager" c:type="ClutterDeviceManager*"/>
+        </return-value>
+      </function>
+      <virtual-method name="get_devices">
+        <return-value transfer-ownership="none">
+          <type name="GLib.SList" c:type="GSList*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_core_device">
+        <return-value transfer-ownership="full">
+          <type name="InputDevice" c:type="ClutterInputDevice*"/>
+        </return-value>
+        <parameters>
+          <parameter name="type" transfer-ownership="none">
+            <type name="InputDeviceType" c:type="ClutterInputDeviceType"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_device">
+        <return-value transfer-ownership="full">
+          <type name="InputDevice" c:type="ClutterInputDevice*"/>
+        </return-value>
+        <parameters>
+          <parameter name="id" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="add_device">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="device" transfer-ownership="none">
+            <type name="InputDevice" c:type="ClutterInputDevice*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="remove_device">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="device" transfer-ownership="none">
+            <type name="InputDevice" c:type="ClutterInputDevice*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="list_devices"
+              c:identifier="clutter_device_manager_list_devices"
+              doc="Lists all currently registered input devices
+a newly allocated list of #ClutterInputDevice objects. Use
+g_slist_free() to deallocate it when done"
+              version="1.2">
+        <return-value transfer-ownership="container">
+          <type name="GLib.SList" c:type="GSList*">
+            <type name="InputDevice"/>
+          </type>
+        </return-value>
+      </method>
+      <method name="peek_devices"
+              c:identifier="clutter_device_manager_peek_devices"
+              doc="Lists all currently registered input devices
+a pointer to the internal list of #ClutterInputDevice objects. The
+returned list is owned by the #ClutterDeviceManager and should never
+be modified or freed"
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="GLib.SList" c:type="GSList*">
+            <type name="InputDevice"/>
+          </type>
+        </return-value>
+      </method>
+      <method name="get_device"
+              c:identifier="clutter_device_manager_get_device"
+              doc="Retrieves the #ClutterInputDevice with the given @device_id
+returned device is owned by the #ClutterDeviceManager and should
+never be modified or freed"
+              version="1.2">
+        <return-value transfer-ownership="none"
+                      doc="a #ClutterInputDevice or %NULL. The">
+          <type name="InputDevice" c:type="ClutterInputDevice*"/>
+        </return-value>
+        <parameters>
+          <parameter name="device_id" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_core_device"
+              c:identifier="clutter_device_manager_get_core_device"
+              doc="Retrieves the core #ClutterInputDevice of type @device_type
+Core devices are devices created automatically by the default
+Clutter backend
+returned device is owned by the #ClutterDeviceManager and should
+not be modified or freed"
+              version="1.2">
+        <return-value transfer-ownership="none"
+                      doc="a #ClutterInputDevice or %NULL. The">
+          <type name="InputDevice" c:type="ClutterInputDevice*"/>
+        </return-value>
+        <parameters>
+          <parameter name="device_type" transfer-ownership="none">
+            <type name="InputDeviceType" c:type="ClutterInputDeviceType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="backend" writable="1" construct-only="1">
+        <type name="Backend" c:type="ClutterBackend"/>
+      </property>
+      <field name="parent_instance">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="priv">
+        <type name="DeviceManagerPrivate"
+              c:type="ClutterDeviceManagerPrivate*"/>
+      </field>
+      <glib:signal name="device-added"
+                   doc="The ::device-added signal is emitted each time a device has been
+added to the #ClutterDeviceManager"
+                   version="1.2">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="device" transfer-ownership="none">
+            <type name="InputDevice" c:type="ClutterInputDevice"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="device-removed"
+                   doc="The ::device-removed signal is emitted each time a device has been
+removed from the #ClutterDeviceManager"
+                   version="1.2">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="device" transfer-ownership="none">
+            <type name="InputDevice" c:type="ClutterInputDevice"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <record name="DeviceManagerClass"
+            c:type="ClutterDeviceManagerClass"
+            glib:is-gtype-struct-for="DeviceManager"
+            doc="The #ClutterDeviceManagerClass structure contains only private data"
+            version="1.2">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="get_devices">
+        <callback name="get_devices" c:type="get_devices">
+          <return-value transfer-ownership="none">
+            <type name="GLib.SList" c:type="GSList*"/>
+          </return-value>
+          <parameters>
+            <parameter name="manager" transfer-ownership="none">
+              <type name="DeviceManager" c:type="ClutterDeviceManager*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_core_device">
+        <callback name="get_core_device" c:type="get_core_device">
+          <return-value transfer-ownership="full">
+            <type name="InputDevice" c:type="ClutterInputDevice*"/>
+          </return-value>
+          <parameters>
+            <parameter name="manager" transfer-ownership="none">
+              <type name="DeviceManager" c:type="ClutterDeviceManager*"/>
+            </parameter>
+            <parameter name="type" transfer-ownership="none">
+              <type name="InputDeviceType" c:type="ClutterInputDeviceType"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_device">
+        <callback name="get_device" c:type="get_device">
+          <return-value transfer-ownership="full">
+            <type name="InputDevice" c:type="ClutterInputDevice*"/>
+          </return-value>
+          <parameters>
+            <parameter name="manager" transfer-ownership="none">
+              <type name="DeviceManager" c:type="ClutterDeviceManager*"/>
+            </parameter>
+            <parameter name="id" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="add_device">
+        <callback name="add_device" c:type="add_device">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="manager" transfer-ownership="none">
+              <type name="DeviceManager" c:type="ClutterDeviceManager*"/>
+            </parameter>
+            <parameter name="device" transfer-ownership="none">
+              <type name="InputDevice" c:type="ClutterInputDevice*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="remove_device">
+        <callback name="remove_device" c:type="remove_device">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="manager" transfer-ownership="none">
+              <type name="DeviceManager" c:type="ClutterDeviceManager*"/>
+            </parameter>
+            <parameter name="device" transfer-ownership="none">
+              <type name="InputDevice" c:type="ClutterInputDevice*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_padding">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="8">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <record name="DeviceManagerPrivate" c:type="ClutterDeviceManagerPrivate">
+    </record>
+    <constant name="DongSign" value="16785579">
+      <type name="int"/>
+    </constant>
+    <constant name="Down" value="65364">
+      <type name="int"/>
+    </constant>
+    <constant name="Dstroke" value="464">
+      <type name="int"/>
+    </constant>
+    <constant name="E" value="69">
+      <type name="int"/>
+    </constant>
+    <constant name="ENG" value="957">
+      <type name="int"/>
+    </constant>
+    <constant name="ETH" value="208">
+      <type name="int"/>
+    </constant>
+    <constant name="Eabovedot" value="972">
+      <type name="int"/>
+    </constant>
+    <constant name="Eacute" value="201">
+      <type name="int"/>
+    </constant>
+    <constant name="Ebelowdot" value="16785080">
+      <type name="int"/>
+    </constant>
+    <constant name="Ecaron" value="460">
+      <type name="int"/>
+    </constant>
+    <constant name="Ecircumflex" value="202">
+      <type name="int"/>
+    </constant>
+    <constant name="Ecircumflexacute" value="16785086">
+      <type name="int"/>
+    </constant>
+    <constant name="Ecircumflexbelowdot" value="16785094">
+      <type name="int"/>
+    </constant>
+    <constant name="Ecircumflexgrave" value="16785088">
+      <type name="int"/>
+    </constant>
+    <constant name="Ecircumflexhook" value="16785090">
+      <type name="int"/>
+    </constant>
+    <constant name="Ecircumflextilde" value="16785092">
+      <type name="int"/>
+    </constant>
+    <constant name="EcuSign" value="16785568">
+      <type name="int"/>
+    </constant>
+    <constant name="Ediaeresis" value="203">
+      <type name="int"/>
+    </constant>
+    <constant name="Egrave" value="200">
+      <type name="int"/>
+    </constant>
+    <constant name="Ehook" value="16785082">
+      <type name="int"/>
+    </constant>
+    <constant name="Eisu_Shift" value="65327">
+      <type name="int"/>
+    </constant>
+    <constant name="Eisu_toggle" value="65328">
+      <type name="int"/>
+    </constant>
+    <constant name="Emacron" value="938">
+      <type name="int"/>
+    </constant>
+    <constant name="End" value="65367">
+      <type name="int"/>
+    </constant>
+    <constant name="Eogonek" value="458">
+      <type name="int"/>
+    </constant>
+    <constant name="Escape" value="65307">
+      <type name="int"/>
+    </constant>
+    <constant name="Eth" value="208">
+      <type name="int"/>
+    </constant>
+    <constant name="Etilde" value="16785084">
+      <type name="int"/>
+    </constant>
+    <constant name="EuroSign" value="8364">
+      <type name="int"/>
+    </constant>
+    <union name="Event"
+           c:type="ClutterEvent"
+           glib:type-name="ClutterEvent"
+           glib:get-type="clutter_event_get_type">
+      <field name="type" writable="1">
+        <type name="EventType" c:type="ClutterEventType"/>
+      </field>
+      <field name="any" writable="1">
+        <type name="AnyEvent" c:type="ClutterAnyEvent"/>
+      </field>
+      <field name="button" writable="1">
+        <type name="ButtonEvent" c:type="ClutterButtonEvent"/>
+      </field>
+      <field name="key" writable="1">
+        <type name="KeyEvent" c:type="ClutterKeyEvent"/>
+      </field>
+      <field name="motion" writable="1">
+        <type name="MotionEvent" c:type="ClutterMotionEvent"/>
+      </field>
+      <field name="scroll" writable="1">
+        <type name="ScrollEvent" c:type="ClutterScrollEvent"/>
+      </field>
+      <field name="stage_state" writable="1">
+        <type name="StageStateEvent" c:type="ClutterStageStateEvent"/>
+      </field>
+      <field name="crossing" writable="1">
+        <type name="CrossingEvent" c:type="ClutterCrossingEvent"/>
+      </field>
+      <constructor name="new"
+                   c:identifier="clutter_event_new"
+                   doc="Creates a new #ClutterEvent of the specified type.">
+        <return-value transfer-ownership="full">
+          <type name="Event" c:type="ClutterEvent*"/>
+        </return-value>
+        <parameters>
+          <parameter name="type" transfer-ownership="none">
+            <type name="EventType" c:type="ClutterEventType"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="put"
+              c:identifier="clutter_event_put"
+              doc="Puts a copy of the event on the back of the event queue. The event will
+have the %CLUTTER_EVENT_FLAG_SYNTHETIC flag set. If the source is set
+event signals will be emitted for this source and capture/bubbling for
+its ancestors. If the source is not set it will be generated by picking
+or use the actor that currently has keyboard focus"
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="copy"
+              c:identifier="clutter_event_copy"
+              doc="Copies @event.">
+        <return-value transfer-ownership="full">
+          <type name="Event" c:type="ClutterEvent*"/>
+        </return-value>
+      </method>
+      <method name="free"
+              c:identifier="clutter_event_free"
+              doc="Frees all resources used by @event.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="type"
+              c:identifier="clutter_event_type"
+              doc="Retrieves the type of the event.">
+        <return-value transfer-ownership="full">
+          <type name="EventType" c:type="ClutterEventType"/>
+        </return-value>
+      </method>
+      <method name="get_flags"
+              c:identifier="clutter_event_get_flags"
+              doc="Retrieves the #ClutterEventFlags of @event"
+              version="1.0">
+        <return-value transfer-ownership="full">
+          <type name="EventFlags" c:type="ClutterEventFlags"/>
+        </return-value>
+      </method>
+      <method name="get_time"
+              c:identifier="clutter_event_get_time"
+              doc="Retrieves the time of the event."
+              version="0.4">
+        <return-value transfer-ownership="none">
+          <type name="uint32" c:type="guint32"/>
+        </return-value>
+      </method>
+      <method name="get_state"
+              c:identifier="clutter_event_get_state"
+              doc="Retrieves the modifier state of the event."
+              version="0.4">
+        <return-value transfer-ownership="full">
+          <type name="ModifierType" c:type="ClutterModifierType"/>
+        </return-value>
+      </method>
+      <method name="get_device_id"
+              c:identifier="clutter_event_get_device_id"
+              doc="Retrieves the events device id if set.
+no specific device set.">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_device_type"
+              c:identifier="clutter_event_get_device_type"
+              doc="Retrieves the type of the device for @event
+any is set"
+              version="1.0">
+        <return-value transfer-ownership="full">
+          <type name="InputDeviceType" c:type="ClutterInputDeviceType"/>
+        </return-value>
+      </method>
+      <method name="get_device"
+              c:identifier="clutter_event_get_device"
+              doc="Retrieves the #ClutterInputDevice for the event.
+The #ClutterInputDevice structure is completely opaque and should
+be cast to the platform-specific implementation."
+              version="1.0">
+        <return-value transfer-ownership="full">
+          <type name="InputDevice" c:type="ClutterInputDevice*"/>
+        </return-value>
+      </method>
+      <method name="get_source"
+              c:identifier="clutter_event_get_source"
+              doc="Retrieves the source #ClutterActor the event originated from, or
+NULL if the event has no source."
+              version="0.6">
+        <return-value transfer-ownership="none" doc="a #ClutterActor">
+          <type name="Actor" c:type="ClutterActor*"/>
+        </return-value>
+      </method>
+      <method name="get_stage"
+              c:identifier="clutter_event_get_stage"
+              doc="Retrieves the source #ClutterStage the event originated for, or
+%NULL if the event has no stage."
+              version="0.8">
+        <return-value transfer-ownership="none" doc="a #ClutterStage">
+          <type name="Stage" c:type="ClutterStage*"/>
+        </return-value>
+      </method>
+      <method name="get_coords"
+              c:identifier="clutter_event_get_coords"
+              doc="Retrieves the coordinates of @event and puts them into @x and @y."
+              version="0.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="x"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <type name="float" c:type="gfloat*"/>
+          </parameter>
+          <parameter name="y"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <type name="float" c:type="gfloat*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_key_symbol"
+              c:identifier="clutter_event_get_key_symbol"
+              doc="Retrieves the key symbol of @event"
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="get_key_code"
+              c:identifier="clutter_event_get_key_code"
+              doc="Retrieves the keycode of the key that caused @event"
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="uint16" c:type="guint16"/>
+        </return-value>
+      </method>
+      <method name="get_key_unicode"
+              c:identifier="clutter_event_get_key_unicode"
+              doc="Retrieves the unicode value for the key that caused @keyev.">
+        <return-value transfer-ownership="none">
+          <type name="uint32" c:type="guint32"/>
+        </return-value>
+      </method>
+      <method name="get_button"
+              c:identifier="clutter_event_get_button"
+              doc="Retrieves the button number of @event"
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="uint32" c:type="guint32"/>
+        </return-value>
+      </method>
+      <method name="get_click_count"
+              c:identifier="clutter_event_get_click_count"
+              doc="Retrieves the number of clicks of @event"
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="get_related"
+              c:identifier="clutter_event_get_related"
+              doc="Retrieves the related actor of a crossing event."
+              version="1.0">
+        <return-value transfer-ownership="none"
+                      doc="the related #ClutterActor, or %NULL">
+          <type name="Actor" c:type="ClutterActor*"/>
+        </return-value>
+      </method>
+      <method name="get_scroll_direction"
+              c:identifier="clutter_event_get_scroll_direction"
+              doc="Retrieves the direction of the scrolling of @event"
+              version="1.0">
+        <return-value transfer-ownership="full">
+          <type name="ScrollDirection" c:type="ClutterScrollDirection"/>
+        </return-value>
+      </method>
+    </union>
+    <bitfield name="EventFlags"
+              doc="Flags for the #ClutterEvent"
+              version="0.6"
+              glib:type-name="ClutterEventFlags"
+              glib:get-type="clutter_event_flags_get_type"
+              c:type="ClutterEventFlags">
+      <member name="none"
+              value="0"
+              c:identifier="CLUTTER_EVENT_NONE"
+              glib:nick="none"/>
+      <member name="flag_synthetic"
+              value="1"
+              c:identifier="CLUTTER_EVENT_FLAG_SYNTHETIC"
+              glib:nick="flag-synthetic"/>
+    </bitfield>
+    <enumeration name="EventType"
+                 doc="Types of events."
+                 version="0.4"
+                 glib:type-name="ClutterEventType"
+                 glib:get-type="clutter_event_type_get_type"
+                 c:type="ClutterEventType">
+      <member name="nothing"
+              value="0"
+              c:identifier="CLUTTER_NOTHING"
+              glib:nick="nothing"/>
+      <member name="key_press"
+              value="1"
+              c:identifier="CLUTTER_KEY_PRESS"
+              glib:nick="key-press"/>
+      <member name="key_release"
+              value="2"
+              c:identifier="CLUTTER_KEY_RELEASE"
+              glib:nick="key-release"/>
+      <member name="motion"
+              value="3"
+              c:identifier="CLUTTER_MOTION"
+              glib:nick="motion"/>
+      <member name="enter"
+              value="4"
+              c:identifier="CLUTTER_ENTER"
+              glib:nick="enter"/>
+      <member name="leave"
+              value="5"
+              c:identifier="CLUTTER_LEAVE"
+              glib:nick="leave"/>
+      <member name="button_press"
+              value="6"
+              c:identifier="CLUTTER_BUTTON_PRESS"
+              glib:nick="button-press"/>
+      <member name="button_release"
+              value="7"
+              c:identifier="CLUTTER_BUTTON_RELEASE"
+              glib:nick="button-release"/>
+      <member name="scroll"
+              value="8"
+              c:identifier="CLUTTER_SCROLL"
+              glib:nick="scroll"/>
+      <member name="stage_state"
+              value="9"
+              c:identifier="CLUTTER_STAGE_STATE"
+              glib:nick="stage-state"/>
+      <member name="destroy_notify"
+              value="10"
+              c:identifier="CLUTTER_DESTROY_NOTIFY"
+              glib:nick="destroy-notify"/>
+      <member name="client_message"
+              value="11"
+              c:identifier="CLUTTER_CLIENT_MESSAGE"
+              glib:nick="client-message"/>
+      <member name="delete"
+              value="12"
+              c:identifier="CLUTTER_DELETE"
+              glib:nick="delete"/>
+    </enumeration>
+    <constant name="Execute" value="65378">
+      <type name="int"/>
+    </constant>
+    <constant name="F" value="70">
+      <type name="int"/>
+    </constant>
+    <constant name="F1" value="65470">
+      <type name="int"/>
+    </constant>
+    <constant name="F10" value="65479">
+      <type name="int"/>
+    </constant>
+    <constant name="F11" value="65480">
+      <type name="int"/>
+    </constant>
+    <constant name="F12" value="65481">
+      <type name="int"/>
+    </constant>
+    <constant name="F13" value="65482">
+      <type name="int"/>
+    </constant>
+    <constant name="F14" value="65483">
+      <type name="int"/>
+    </constant>
+    <constant name="F15" value="65484">
+      <type name="int"/>
+    </constant>
+    <constant name="F16" value="65485">
+      <type name="int"/>
+    </constant>
+    <constant name="F17" value="65486">
+      <type name="int"/>
+    </constant>
+    <constant name="F18" value="65487">
+      <type name="int"/>
+    </constant>
+    <constant name="F19" value="65488">
+      <type name="int"/>
+    </constant>
+    <constant name="F2" value="65471">
+      <type name="int"/>
+    </constant>
+    <constant name="F20" value="65489">
+      <type name="int"/>
+    </constant>
+    <constant name="F21" value="65490">
+      <type name="int"/>
+    </constant>
+    <constant name="F22" value="65491">
+      <type name="int"/>
+    </constant>
+    <constant name="F23" value="65492">
+      <type name="int"/>
+    </constant>
+    <constant name="F24" value="65493">
+      <type name="int"/>
+    </constant>
+    <constant name="F25" value="65494">
+      <type name="int"/>
+    </constant>
+    <constant name="F26" value="65495">
+      <type name="int"/>
+    </constant>
+    <constant name="F27" value="65496">
+      <type name="int"/>
+    </constant>
+    <constant name="F28" value="65497">
+      <type name="int"/>
+    </constant>
+    <constant name="F29" value="65498">
+      <type name="int"/>
+    </constant>
+    <constant name="F3" value="65472">
+      <type name="int"/>
+    </constant>
+    <constant name="F30" value="65499">
+      <type name="int"/>
+    </constant>
+    <constant name="F31" value="65500">
+      <type name="int"/>
+    </constant>
+    <constant name="F32" value="65501">
+      <type name="int"/>
+    </constant>
+    <constant name="F33" value="65502">
+      <type name="int"/>
+    </constant>
+    <constant name="F34" value="65503">
+      <type name="int"/>
+    </constant>
+    <constant name="F35" value="65504">
+      <type name="int"/>
+    </constant>
+    <constant name="F4" value="65473">
+      <type name="int"/>
+    </constant>
+    <constant name="F5" value="65474">
+      <type name="int"/>
+    </constant>
+    <constant name="F6" value="65475">
+      <type name="int"/>
+    </constant>
+    <constant name="F7" value="65476">
+      <type name="int"/>
+    </constant>
+    <constant name="F8" value="65477">
+      <type name="int"/>
+    </constant>
+    <constant name="F9" value="65478">
+      <type name="int"/>
+    </constant>
+    <constant name="FFrancSign" value="16785571">
+      <type name="int"/>
+    </constant>
+    <constant name="FLAVOUR" value="glx">
+      <type name="utf8"/>
+    </constant>
+    <constant name="Fabovedot" value="16784926">
+      <type name="int"/>
+    </constant>
+    <constant name="Farsi_0" value="16778992">
+      <type name="int"/>
+    </constant>
+    <constant name="Farsi_1" value="16778993">
+      <type name="int"/>
+    </constant>
+    <constant name="Farsi_2" value="16778994">
+      <type name="int"/>
+    </constant>
+    <constant name="Farsi_3" value="16778995">
+      <type name="int"/>
+    </constant>
+    <constant name="Farsi_4" value="16778996">
+      <type name="int"/>
+    </constant>
+    <constant name="Farsi_5" value="16778997">
+      <type name="int"/>
+    </constant>
+    <constant name="Farsi_6" value="16778998">
+      <type name="int"/>
+    </constant>
+    <constant name="Farsi_7" value="16778999">
+      <type name="int"/>
+    </constant>
+    <constant name="Farsi_8" value="16779000">
+      <type name="int"/>
+    </constant>
+    <constant name="Farsi_9" value="16779001">
+      <type name="int"/>
+    </constant>
+    <constant name="Farsi_yeh" value="16778956">
+      <type name="int"/>
+    </constant>
+    <bitfield name="FeatureFlags"
+              doc="Runtime flags indicating specific features available via Clutter window
+sysytem and graphics backend."
+              version="0.4"
+              glib:type-name="ClutterFeatureFlags"
+              glib:get-type="clutter_feature_flags_get_type"
+              c:type="ClutterFeatureFlags">
+      <member name="texture_npot"
+              value="4"
+              c:identifier="CLUTTER_FEATURE_TEXTURE_NPOT"
+              glib:nick="texture-npot"/>
+      <member name="sync_to_vblank"
+              value="8"
+              c:identifier="CLUTTER_FEATURE_SYNC_TO_VBLANK"
+              glib:nick="sync-to-vblank"/>
+      <member name="texture_yuv"
+              value="16"
+              c:identifier="CLUTTER_FEATURE_TEXTURE_YUV"
+              glib:nick="texture-yuv"/>
+      <member name="texture_read_pixels"
+              value="32"
+              c:identifier="CLUTTER_FEATURE_TEXTURE_READ_PIXELS"
+              glib:nick="texture-read-pixels"/>
+      <member name="stage_static"
+              value="64"
+              c:identifier="CLUTTER_FEATURE_STAGE_STATIC"
+              glib:nick="stage-static"/>
+      <member name="stage_user_resize"
+              value="128"
+              c:identifier="CLUTTER_FEATURE_STAGE_USER_RESIZE"
+              glib:nick="stage-user-resize"/>
+      <member name="stage_cursor"
+              value="256"
+              c:identifier="CLUTTER_FEATURE_STAGE_CURSOR"
+              glib:nick="stage-cursor"/>
+      <member name="shaders_glsl"
+              value="512"
+              c:identifier="CLUTTER_FEATURE_SHADERS_GLSL"
+              glib:nick="shaders-glsl"/>
+      <member name="offscreen"
+              value="1024"
+              c:identifier="CLUTTER_FEATURE_OFFSCREEN"
+              glib:nick="offscreen"/>
+      <member name="stage_multiple"
+              value="2048"
+              c:identifier="CLUTTER_FEATURE_STAGE_MULTIPLE"
+              glib:nick="stage-multiple"/>
+      <member name="swap_events"
+              value="4096"
+              c:identifier="CLUTTER_FEATURE_SWAP_EVENTS"
+              glib:nick="swap-events"/>
+    </bitfield>
+    <constant name="Find" value="65384">
+      <type name="int"/>
+    </constant>
+    <constant name="First_Virtual_Screen" value="65232">
+      <type name="int"/>
+    </constant>
+    <class name="FixedLayout"
+           c:type="ClutterFixedLayout"
+           doc="The #ClutterFixedLayout structure contains only private data and
+it should be accessed using the provided API"
+           version="1.2"
+           parent="LayoutManager"
+           glib:type-name="ClutterFixedLayout"
+           glib:get-type="clutter_fixed_layout_get_type"
+           glib:type-struct="FixedLayoutClass">
+      <constructor name="new"
+                   c:identifier="clutter_fixed_layout_new"
+                   doc="Creates a new #ClutterFixedLayout"
+                   version="1.2">
+        <return-value transfer-ownership="full">
+          <type name="FixedLayout" c:type="ClutterLayoutManager*"/>
+        </return-value>
+      </constructor>
+      <field name="parent_instance">
+        <type name="LayoutManager" c:type="ClutterLayoutManager"/>
+      </field>
+    </class>
+    <record name="FixedLayoutClass"
+            c:type="ClutterFixedLayoutClass"
+            glib:is-gtype-struct-for="FixedLayout"
+            doc="The #ClutterFixedLayoutClass structure contains only private data
+and it should be accessed using the provided API"
+            version="1.2">
+      <field name="parent_class">
+        <type name="LayoutManagerClass" c:type="ClutterLayoutManagerClass"/>
+      </field>
+    </record>
+    <class name="FlowLayout"
+           c:type="ClutterFlowLayout"
+           doc="The #ClutterFlowLayout structure contains only private data
+and should be accessed using the provided API"
+           version="1.2"
+           parent="LayoutManager"
+           glib:type-name="ClutterFlowLayout"
+           glib:get-type="clutter_flow_layout_get_type"
+           glib:type-struct="FlowLayoutClass">
+      <constructor name="new"
+                   c:identifier="clutter_flow_layout_new"
+                   doc="Creates a new #ClutterFlowLayout with the given @orientation"
+                   version="1.2">
+        <return-value transfer-ownership="full">
+          <type name="FlowLayout" c:type="ClutterLayoutManager*"/>
+        </return-value>
+        <parameters>
+          <parameter name="orientation" transfer-ownership="none">
+            <type name="FlowOrientation" c:type="ClutterFlowOrientation"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="set_orientation"
+              c:identifier="clutter_flow_layout_set_orientation"
+              doc="Sets the orientation of the flow layout
+The orientation controls the direction used to allocate
+orientation also controls the direction of the overflowing"
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="orientation" transfer-ownership="none">
+            <type name="FlowOrientation" c:type="ClutterFlowOrientation"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_orientation"
+              c:identifier="clutter_flow_layout_get_orientation"
+              doc="Retrieves the orientation of the @layout"
+              version="1.2">
+        <return-value transfer-ownership="full">
+          <type name="FlowOrientation" c:type="ClutterFlowOrientation"/>
+        </return-value>
+      </method>
+      <method name="set_homogeneous"
+              c:identifier="clutter_flow_layout_set_homogeneous"
+              doc="Sets whether the @layout should allocate the same space for
+each child"
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="homogeneous" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_homogeneous"
+              c:identifier="clutter_flow_layout_get_homogeneous"
+              doc="Retrieves whether the @layout is homogeneous"
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_column_spacing"
+              c:identifier="clutter_flow_layout_set_column_spacing"
+              doc="Sets the space between columns, in pixels"
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="spacing" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_column_spacing"
+              c:identifier="clutter_flow_layout_get_column_spacing"
+              doc="Retrieves the spacing between columns
+in pixels"
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="float" c:type="gfloat"/>
+        </return-value>
+      </method>
+      <method name="set_row_spacing"
+              c:identifier="clutter_flow_layout_set_row_spacing"
+              doc="Sets the spacing between rows, in pixels"
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="spacing" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_row_spacing"
+              c:identifier="clutter_flow_layout_get_row_spacing"
+              doc="Retrieves the spacing between rows
+in pixels"
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="float" c:type="gfloat"/>
+        </return-value>
+      </method>
+      <method name="set_column_width"
+              c:identifier="clutter_flow_layout_set_column_width"
+              doc="Sets the minimum and maximum widths that a column can have"
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="min_width" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+          <parameter name="max_width" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_column_width"
+              c:identifier="clutter_flow_layout_get_column_width"
+              doc="Retrieves the minimum and maximum column widths"
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="min_width"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     doc="return location for the minimum column width, or %NULL">
+            <type name="float" c:type="gfloat*"/>
+          </parameter>
+          <parameter name="max_width"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     doc="return location for the maximum column width, or %NULL">
+            <type name="float" c:type="gfloat*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_row_height"
+              c:identifier="clutter_flow_layout_set_row_height"
+              doc="Sets the minimum and maximum heights that a row can have"
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="min_height" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+          <parameter name="max_height" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_row_height"
+              c:identifier="clutter_flow_layout_get_row_height"
+              doc="Retrieves the minimum and maximum row heights"
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="min_height"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     doc="return location for the minimum row height, or %NULL">
+            <type name="float" c:type="gfloat*"/>
+          </parameter>
+          <parameter name="max_height"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     doc="return location for the maximum row height, or %NULL">
+            <type name="float" c:type="gfloat*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="column-spacing"
+                version="1.2"
+                writable="1"
+                doc="The spacing between columns, in pixels; the value of this
+property is honoured by horizontal non-overflowing layouts
+and by vertical overflowing layouts">
+        <type name="float" c:type="gfloat"/>
+      </property>
+      <property name="homogeneous"
+                version="1.2"
+                writable="1"
+                doc="Whether each child inside the #ClutterFlowLayout should receive
+the same allocation">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="max-column-width"
+                version="1.2"
+                writable="1"
+                doc="Maximum width for each column in the layout, in pixels. If
+set to -1 the width will be the maximum child width">
+        <type name="float" c:type="gfloat"/>
+      </property>
+      <property name="max-row-height"
+                version="1.2"
+                writable="1"
+                doc="Maximum height for each row in the layout, in pixels. If
+set to -1 the width will be the maximum child height">
+        <type name="float" c:type="gfloat"/>
+      </property>
+      <property name="min-column-width"
+                version="1.2"
+                writable="1"
+                doc="Minimum width for each column in the layout, in pixels">
+        <type name="float" c:type="gfloat"/>
+      </property>
+      <property name="min-row-height"
+                version="1.2"
+                writable="1"
+                doc="Minimum height for each row in the layout, in pixels">
+        <type name="float" c:type="gfloat"/>
+      </property>
+      <property name="orientation"
+                version="1.2"
+                writable="1"
+                construct="1"
+                doc="The orientation of the #ClutterFlowLayout. The children
+of the layout will be layed out following the orientation.
+This property also controls the overflowing directions">
+        <type name="FlowOrientation" c:type="ClutterFlowOrientation"/>
+      </property>
+      <property name="row-spacing"
+                version="1.2"
+                writable="1"
+                doc="The spacing between rows, in pixels; the value of this
+property is honoured by vertical non-overflowing layouts and
+by horizontal overflowing layouts">
+        <type name="float" c:type="gfloat"/>
+      </property>
+      <field name="parent_instance">
+        <type name="LayoutManager" c:type="ClutterLayoutManager"/>
+      </field>
+      <field name="priv">
+        <type name="FlowLayoutPrivate" c:type="ClutterFlowLayoutPrivate*"/>
+      </field>
+    </class>
+    <record name="FlowLayoutClass"
+            c:type="ClutterFlowLayoutClass"
+            glib:is-gtype-struct-for="FlowLayout"
+            doc="The #ClutterFlowLayoutClass structure contains only private data
+and should be accessed using the provided API"
+            version="1.2">
+      <field name="parent_class">
+        <type name="LayoutManagerClass" c:type="ClutterLayoutManagerClass"/>
+      </field>
+    </record>
+    <record name="FlowLayoutPrivate" c:type="ClutterFlowLayoutPrivate">
+    </record>
+    <enumeration name="FlowOrientation"
+                 doc="The direction of the arrangement of the children inside
+a #ClutterFlowLayout"
+                 version="1.2"
+                 glib:type-name="ClutterFlowOrientation"
+                 glib:get-type="clutter_flow_orientation_get_type"
+                 c:type="ClutterFlowOrientation">
+      <member name="horizontal"
+              value="0"
+              c:identifier="CLUTTER_FLOW_HORIZONTAL"
+              glib:nick="horizontal"/>
+      <member name="vertical"
+              value="1"
+              c:identifier="CLUTTER_FLOW_VERTICAL"
+              glib:nick="vertical"/>
+    </enumeration>
+    <record name="Fog"
+            c:type="ClutterFog"
+            doc="Fog settings used to create the depth cueing effect."
+            version="0.6"
+            glib:type-name="ClutterFog"
+            glib:get-type="clutter_fog_get_type">
+      <field name="z_near" writable="1">
+        <type name="float" c:type="gfloat"/>
+      </field>
+      <field name="z_far" writable="1">
+        <type name="float" c:type="gfloat"/>
+      </field>
+    </record>
+    <bitfield name="FontFlags"
+              doc="Runtime flags to change the font quality. To be used with
+clutter_set_font_flags()."
+              version="1.0"
+              glib:type-name="ClutterFontFlags"
+              glib:get-type="clutter_font_flags_get_type"
+              c:type="ClutterFontFlags">
+      <member name="mipmapping"
+              value="1"
+              c:identifier="CLUTTER_FONT_MIPMAPPING"
+              glib:nick="mipmapping"/>
+      <member name="hinting"
+              value="2"
+              c:identifier="CLUTTER_FONT_HINTING"
+              glib:nick="hinting"/>
+    </bitfield>
+    <constant name="G" value="71">
+      <type name="int"/>
+    </constant>
+    <constant name="Gabovedot" value="725">
+      <type name="int"/>
+    </constant>
+    <constant name="Gbreve" value="683">
+      <type name="int"/>
+    </constant>
+    <constant name="Gcaron" value="16777702">
+      <type name="int"/>
+    </constant>
+    <constant name="Gcedilla" value="939">
+      <type name="int"/>
+    </constant>
+    <constant name="Gcircumflex" value="728">
+      <type name="int"/>
+    </constant>
+    <record name="Geometry"
+            c:type="ClutterGeometry"
+            doc="The rectangle containing an actor&apos;s bounding box, measured in pixels."
+            glib:type-name="ClutterGeometry"
+            glib:get-type="clutter_geometry_get_type">
+      <field name="x" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="y" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="width" writable="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="height" writable="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+    </record>
+    <constant name="Georgian_an" value="16781520">
+      <type name="int"/>
+    </constant>
+    <constant name="Georgian_ban" value="16781521">
+      <type name="int"/>
+    </constant>
+    <constant name="Georgian_can" value="16781546">
+      <type name="int"/>
+    </constant>
+    <constant name="Georgian_char" value="16781549">
+      <type name="int"/>
+    </constant>
+    <constant name="Georgian_chin" value="16781545">
+      <type name="int"/>
+    </constant>
+    <constant name="Georgian_cil" value="16781548">
+      <type name="int"/>
+    </constant>
+    <constant name="Georgian_don" value="16781523">
+      <type name="int"/>
+    </constant>
+    <constant name="Georgian_en" value="16781524">
+      <type name="int"/>
+    </constant>
+    <constant name="Georgian_fi" value="16781558">
+      <type name="int"/>
+    </constant>
+    <constant name="Georgian_gan" value="16781522">
+      <type name="int"/>
+    </constant>
+    <constant name="Georgian_ghan" value="16781542">
+      <type name="int"/>
+    </constant>
+    <constant name="Georgian_hae" value="16781552">
+      <type name="int"/>
+    </constant>
+    <constant name="Georgian_har" value="16781556">
+      <type name="int"/>
+    </constant>
+    <constant name="Georgian_he" value="16781553">
+      <type name="int"/>
+    </constant>
+    <constant name="Georgian_hie" value="16781554">
+      <type name="int"/>
+    </constant>
+    <constant name="Georgian_hoe" value="16781557">
+      <type name="int"/>
+    </constant>
+    <constant name="Georgian_in" value="16781528">
+      <type name="int"/>
+    </constant>
+    <constant name="Georgian_jhan" value="16781551">
+      <type name="int"/>
+    </constant>
+    <constant name="Georgian_jil" value="16781547">
+      <type name="int"/>
+    </constant>
+    <constant name="Georgian_kan" value="16781529">
+      <type name="int"/>
+    </constant>
+    <constant name="Georgian_khar" value="16781541">
+      <type name="int"/>
+    </constant>
+    <constant name="Georgian_las" value="16781530">
+      <type name="int"/>
+    </constant>
+    <constant name="Georgian_man" value="16781531">
+      <type name="int"/>
+    </constant>
+    <constant name="Georgian_nar" value="16781532">
+      <type name="int"/>
+    </constant>
+    <constant name="Georgian_on" value="16781533">
+      <type name="int"/>
+    </constant>
+    <constant name="Georgian_par" value="16781534">
+      <type name="int"/>
+    </constant>
+    <constant name="Georgian_phar" value="16781540">
+      <type name="int"/>
+    </constant>
+    <constant name="Georgian_qar" value="16781543">
+      <type name="int"/>
+    </constant>
+    <constant name="Georgian_rae" value="16781536">
+      <type name="int"/>
+    </constant>
+    <constant name="Georgian_san" value="16781537">
+      <type name="int"/>
+    </constant>
+    <constant name="Georgian_shin" value="16781544">
+      <type name="int"/>
+    </constant>
+    <constant name="Georgian_tan" value="16781527">
+      <type name="int"/>
+    </constant>
+    <constant name="Georgian_tar" value="16781538">
+      <type name="int"/>
+    </constant>
+    <constant name="Georgian_un" value="16781539">
+      <type name="int"/>
+    </constant>
+    <constant name="Georgian_vin" value="16781525">
+      <type name="int"/>
+    </constant>
+    <constant name="Georgian_we" value="16781555">
+      <type name="int"/>
+    </constant>
+    <constant name="Georgian_xan" value="16781550">
+      <type name="int"/>
+    </constant>
+    <constant name="Georgian_zen" value="16781526">
+      <type name="int"/>
+    </constant>
+    <constant name="Georgian_zhar" value="16781535">
+      <type name="int"/>
+    </constant>
+    <enumeration name="Gravity"
+                 doc="Gravity of the scaling operations. When a gravity different than
+%CLUTTER_GRAVITY_NONE is used, an actor is scaled keeping the position
+of the specified portion at the same coordinates."
+                 version="0.2"
+                 glib:type-name="ClutterGravity"
+                 glib:get-type="clutter_gravity_get_type"
+                 c:type="ClutterGravity">
+      <member name="none"
+              value="0"
+              c:identifier="CLUTTER_GRAVITY_NONE"
+              glib:nick="none"/>
+      <member name="north"
+              value="1"
+              c:identifier="CLUTTER_GRAVITY_NORTH"
+              glib:nick="north"/>
+      <member name="north_east"
+              value="2"
+              c:identifier="CLUTTER_GRAVITY_NORTH_EAST"
+              glib:nick="north-east"/>
+      <member name="east"
+              value="3"
+              c:identifier="CLUTTER_GRAVITY_EAST"
+              glib:nick="east"/>
+      <member name="south_east"
+              value="4"
+              c:identifier="CLUTTER_GRAVITY_SOUTH_EAST"
+              glib:nick="south-east"/>
+      <member name="south"
+              value="5"
+              c:identifier="CLUTTER_GRAVITY_SOUTH"
+              glib:nick="south"/>
+      <member name="south_west"
+              value="6"
+              c:identifier="CLUTTER_GRAVITY_SOUTH_WEST"
+              glib:nick="south-west"/>
+      <member name="west"
+              value="7"
+              c:identifier="CLUTTER_GRAVITY_WEST"
+              glib:nick="west"/>
+      <member name="north_west"
+              value="8"
+              c:identifier="CLUTTER_GRAVITY_NORTH_WEST"
+              glib:nick="north-west"/>
+      <member name="center"
+              value="9"
+              c:identifier="CLUTTER_GRAVITY_CENTER"
+              glib:nick="center"/>
+    </enumeration>
+    <constant name="Greek_ALPHA" value="1985">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_ALPHAaccent" value="1953">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_BETA" value="1986">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_CHI" value="2007">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_DELTA" value="1988">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_EPSILON" value="1989">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_EPSILONaccent" value="1954">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_ETA" value="1991">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_ETAaccent" value="1955">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_GAMMA" value="1987">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_IOTA" value="1993">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_IOTAaccent" value="1956">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_IOTAdiaeresis" value="1957">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_IOTAdieresis" value="1957">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_KAPPA" value="1994">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_LAMBDA" value="1995">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_LAMDA" value="1995">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_MU" value="1996">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_NU" value="1997">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_OMEGA" value="2009">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_OMEGAaccent" value="1963">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_OMICRON" value="1999">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_OMICRONaccent" value="1959">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_PHI" value="2006">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_PI" value="2000">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_PSI" value="2008">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_RHO" value="2001">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_SIGMA" value="2002">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_TAU" value="2004">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_THETA" value="1992">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_UPSILON" value="2005">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_UPSILONaccent" value="1960">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_UPSILONdieresis" value="1961">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_XI" value="1998">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_ZETA" value="1990">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_accentdieresis" value="1966">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_alpha" value="2017">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_alphaaccent" value="1969">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_beta" value="2018">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_chi" value="2039">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_delta" value="2020">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_epsilon" value="2021">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_epsilonaccent" value="1970">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_eta" value="2023">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_etaaccent" value="1971">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_finalsmallsigma" value="2035">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_gamma" value="2019">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_horizbar" value="1967">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_iota" value="2025">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_iotaaccent" value="1972">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_iotaaccentdieresis" value="1974">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_iotadieresis" value="1973">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_kappa" value="2026">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_lambda" value="2027">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_lamda" value="2027">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_mu" value="2028">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_nu" value="2029">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_omega" value="2041">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_omegaaccent" value="1979">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_omicron" value="2031">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_omicronaccent" value="1975">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_phi" value="2038">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_pi" value="2032">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_psi" value="2040">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_rho" value="2033">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_sigma" value="2034">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_switch" value="65406">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_tau" value="2036">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_theta" value="2024">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_upsilon" value="2037">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_upsilonaccent" value="1976">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_upsilonaccentdieresis" value="1978">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_upsilondieresis" value="1977">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_xi" value="2030">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_zeta" value="2022">
+      <type name="int"/>
+    </constant>
+    <class name="Group"
+           c:type="ClutterGroup"
+           doc="The #ClutterGroup structure contains only private data
+and should be accessed using the provided API"
+           version="0.1"
+           parent="Actor"
+           glib:type-name="ClutterGroup"
+           glib:get-type="clutter_group_get_type"
+           glib:type-struct="GroupClass">
+      <implements name="Container"/>
+      <implements name="Scriptable"/>
+      <constructor name="new"
+                   c:identifier="clutter_group_new"
+                   doc="Create a new  #ClutterGroup.">
+        <return-value transfer-ownership="full">
+          <type name="Group" c:type="ClutterActor*"/>
+        </return-value>
+      </constructor>
+      <method name="get_nth_child"
+              c:identifier="clutter_group_get_nth_child"
+              doc="Gets a groups child held at @index_ in stack."
+              version="0.2">
+        <return-value transfer-ownership="none"
+                      doc="A Clutter actor, or %NULL if">
+          <type name="Actor" c:type="ClutterActor*"/>
+        </return-value>
+        <parameters>
+          <parameter name="index_" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_n_children"
+              c:identifier="clutter_group_get_n_children"
+              doc="Gets the number of actors held in the group."
+              version="0.2">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="remove_all"
+              c:identifier="clutter_group_remove_all"
+              doc="Removes all children actors from the #ClutterGroup.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <field name="parent_instance">
+        <type name="Actor" c:type="ClutterActor"/>
+      </field>
+      <field name="priv">
+        <type name="GroupPrivate" c:type="ClutterGroupPrivate*"/>
+      </field>
+    </class>
+    <record name="GroupClass"
+            c:type="ClutterGroupClass"
+            glib:is-gtype-struct-for="Group"
+            doc="The #ClutterGroupClass structure contains only private data"
+            version="0.1">
+      <field name="parent_class">
+        <type name="ActorClass" c:type="ClutterActorClass"/>
+      </field>
+      <field name="clutter_reserved1">
+        <callback name="clutter_reserved1" c:type="_clutter_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_reserved2">
+        <callback name="clutter_reserved2" c:type="_clutter_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_reserved3">
+        <callback name="clutter_reserved3" c:type="_clutter_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_reserved4">
+        <callback name="clutter_reserved4" c:type="_clutter_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_reserved5">
+        <callback name="clutter_reserved5" c:type="_clutter_reserved5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_reserved6">
+        <callback name="clutter_reserved6" c:type="_clutter_reserved6">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="GroupPrivate" c:type="ClutterGroupPrivate">
+    </record>
+    <constant name="H" value="72">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul" value="65329">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_A" value="3775">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_AE" value="3776">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_AraeA" value="3830">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_AraeAE" value="3831">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_Banja" value="65337">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_Cieuc" value="3770">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_Codeinput" value="65335">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_Dikeud" value="3751">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_E" value="3780">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_EO" value="3779">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_EU" value="3793">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_End" value="65331">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_Hanja" value="65332">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_Hieuh" value="3774">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_I" value="3795">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_Ieung" value="3767">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_J_Cieuc" value="3818">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_J_Dikeud" value="3802">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_J_Hieuh" value="3822">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_J_Ieung" value="3816">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_J_Jieuj" value="3817">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_J_Khieuq" value="3819">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_J_Kiyeog" value="3796">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_J_KiyeogSios" value="3798">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_J_KkogjiDalrinIeung" value="3833">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_J_Mieum" value="3811">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_J_Nieun" value="3799">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_J_NieunHieuh" value="3801">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_J_NieunJieuj" value="3800">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_J_PanSios" value="3832">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_J_Phieuf" value="3821">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_J_Pieub" value="3812">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_J_PieubSios" value="3813">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_J_Rieul" value="3803">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_J_RieulHieuh" value="3810">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_J_RieulKiyeog" value="3804">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_J_RieulMieum" value="3805">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_J_RieulPhieuf" value="3809">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_J_RieulPieub" value="3806">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_J_RieulSios" value="3807">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_J_RieulTieut" value="3808">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_J_Sios" value="3814">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_J_SsangKiyeog" value="3797">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_J_SsangSios" value="3815">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_J_Tieut" value="3820">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_J_YeorinHieuh" value="3834">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_Jamo" value="65333">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_Jeonja" value="65336">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_Jieuj" value="3768">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_Khieuq" value="3771">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_Kiyeog" value="3745">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_KiyeogSios" value="3747">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_KkogjiDalrinIeung" value="3827">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_Mieum" value="3761">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_MultipleCandidate" value="65341">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_Nieun" value="3748">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_NieunHieuh" value="3750">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_NieunJieuj" value="3749">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_O" value="3783">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_OE" value="3786">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_PanSios" value="3826">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_Phieuf" value="3773">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_Pieub" value="3762">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_PieubSios" value="3764">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_PostHanja" value="65339">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_PreHanja" value="65338">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_PreviousCandidate" value="65342">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_Rieul" value="3753">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_RieulHieuh" value="3760">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_RieulKiyeog" value="3754">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_RieulMieum" value="3755">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_RieulPhieuf" value="3759">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_RieulPieub" value="3756">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_RieulSios" value="3757">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_RieulTieut" value="3758">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_RieulYeorinHieuh" value="3823">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_Romaja" value="65334">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_SingleCandidate" value="65340">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_Sios" value="3765">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_Special" value="65343">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_SsangDikeud" value="3752">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_SsangJieuj" value="3769">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_SsangKiyeog" value="3746">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_SsangPieub" value="3763">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_SsangSios" value="3766">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_Start" value="65330">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_SunkyeongeumMieum" value="3824">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_SunkyeongeumPhieuf" value="3828">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_SunkyeongeumPieub" value="3825">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_Tieut" value="3772">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_U" value="3788">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_WA" value="3784">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_WAE" value="3785">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_WE" value="3790">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_WEO" value="3789">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_WI" value="3791">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_YA" value="3777">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_YAE" value="3778">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_YE" value="3782">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_YEO" value="3781">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_YI" value="3794">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_YO" value="3787">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_YU" value="3792">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_YeorinHieuh" value="3829">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_switch" value="65406">
+      <type name="int"/>
+    </constant>
+    <constant name="Hankaku" value="65321">
+      <type name="int"/>
+    </constant>
+    <constant name="Hcircumflex" value="678">
+      <type name="int"/>
+    </constant>
+    <constant name="Hebrew_switch" value="65406">
+      <type name="int"/>
+    </constant>
+    <constant name="Help" value="65386">
+      <type name="int"/>
+    </constant>
+    <constant name="Henkan" value="65315">
+      <type name="int"/>
+    </constant>
+    <constant name="Henkan_Mode" value="65315">
+      <type name="int"/>
+    </constant>
+    <constant name="Hiragana" value="65317">
+      <type name="int"/>
+    </constant>
+    <constant name="Hiragana_Katakana" value="65319">
+      <type name="int"/>
+    </constant>
+    <constant name="Home" value="65360">
+      <type name="int"/>
+    </constant>
+    <constant name="Hstroke" value="673">
+      <type name="int"/>
+    </constant>
+    <constant name="Hyper_L" value="65517">
+      <type name="int"/>
+    </constant>
+    <constant name="Hyper_R" value="65518">
+      <type name="int"/>
+    </constant>
+    <constant name="I" value="73">
+      <type name="int"/>
+    </constant>
+    <constant name="ISO_Center_Object" value="65075">
+      <type name="int"/>
+    </constant>
+    <constant name="ISO_Continuous_Underline" value="65072">
+      <type name="int"/>
+    </constant>
+    <constant name="ISO_Discontinuous_Underline" value="65073">
+      <type name="int"/>
+    </constant>
+    <constant name="ISO_Emphasize" value="65074">
+      <type name="int"/>
+    </constant>
+    <constant name="ISO_Enter" value="65076">
+      <type name="int"/>
+    </constant>
+    <constant name="ISO_Fast_Cursor_Down" value="65071">
+      <type name="int"/>
+    </constant>
+    <constant name="ISO_Fast_Cursor_Left" value="65068">
+      <type name="int"/>
+    </constant>
+    <constant name="ISO_Fast_Cursor_Right" value="65069">
+      <type name="int"/>
+    </constant>
+    <constant name="ISO_Fast_Cursor_Up" value="65070">
+      <type name="int"/>
+    </constant>
+    <constant name="ISO_First_Group" value="65036">
+      <type name="int"/>
+    </constant>
+    <constant name="ISO_First_Group_Lock" value="65037">
+      <type name="int"/>
+    </constant>
+    <constant name="ISO_Group_Latch" value="65030">
+      <type name="int"/>
+    </constant>
+    <constant name="ISO_Group_Lock" value="65031">
+      <type name="int"/>
+    </constant>
+    <constant name="ISO_Group_Shift" value="65406">
+      <type name="int"/>
+    </constant>
+    <constant name="ISO_Last_Group" value="65038">
+      <type name="int"/>
+    </constant>
+    <constant name="ISO_Last_Group_Lock" value="65039">
+      <type name="int"/>
+    </constant>
+    <constant name="ISO_Left_Tab" value="65056">
+      <type name="int"/>
+    </constant>
+    <constant name="ISO_Level2_Latch" value="65026">
+      <type name="int"/>
+    </constant>
+    <constant name="ISO_Level3_Latch" value="65028">
+      <type name="int"/>
+    </constant>
+    <constant name="ISO_Level3_Lock" value="65029">
+      <type name="int"/>
+    </constant>
+    <constant name="ISO_Level3_Shift" value="65027">
+      <type name="int"/>
+    </constant>
+    <constant name="ISO_Level5_Latch" value="65042">
+      <type name="int"/>
+    </constant>
+    <constant name="ISO_Level5_Lock" value="65043">
+      <type name="int"/>
+    </constant>
+    <constant name="ISO_Level5_Shift" value="65041">
+      <type name="int"/>
+    </constant>
+    <constant name="ISO_Lock" value="65025">
+      <type name="int"/>
+    </constant>
+    <constant name="ISO_Move_Line_Down" value="65058">
+      <type name="int"/>
+    </constant>
+    <constant name="ISO_Move_Line_Up" value="65057">
+      <type name="int"/>
+    </constant>
+    <constant name="ISO_Next_Group" value="65032">
+      <type name="int"/>
+    </constant>
+    <constant name="ISO_Next_Group_Lock" value="65033">
+      <type name="int"/>
+    </constant>
+    <constant name="ISO_Partial_Line_Down" value="65060">
+      <type name="int"/>
+    </constant>
+    <constant name="ISO_Partial_Line_Up" value="65059">
+      <type name="int"/>
+    </constant>
+    <constant name="ISO_Partial_Space_Left" value="65061">
+      <type name="int"/>
+    </constant>
+    <constant name="ISO_Partial_Space_Right" value="65062">
+      <type name="int"/>
+    </constant>
+    <constant name="ISO_Prev_Group" value="65034">
+      <type name="int"/>
+    </constant>
+    <constant name="ISO_Prev_Group_Lock" value="65035">
+      <type name="int"/>
+    </constant>
+    <constant name="ISO_Release_Both_Margins" value="65067">
+      <type name="int"/>
+    </constant>
+    <constant name="ISO_Release_Margin_Left" value="65065">
+      <type name="int"/>
+    </constant>
+    <constant name="ISO_Release_Margin_Right" value="65066">
+      <type name="int"/>
+    </constant>
+    <constant name="ISO_Set_Margin_Left" value="65063">
+      <type name="int"/>
+    </constant>
+    <constant name="ISO_Set_Margin_Right" value="65064">
+      <type name="int"/>
+    </constant>
+    <constant name="Iabovedot" value="681">
+      <type name="int"/>
+    </constant>
+    <constant name="Iacute" value="205">
+      <type name="int"/>
+    </constant>
+    <constant name="Ibelowdot" value="16785098">
+      <type name="int"/>
+    </constant>
+    <constant name="Ibreve" value="16777516">
+      <type name="int"/>
+    </constant>
+    <constant name="Icircumflex" value="206">
+      <type name="int"/>
+    </constant>
+    <constant name="Idiaeresis" value="207">
+      <type name="int"/>
+    </constant>
+    <constant name="Igrave" value="204">
+      <type name="int"/>
+    </constant>
+    <constant name="Ihook" value="16785096">
+      <type name="int"/>
+    </constant>
+    <constant name="Imacron" value="975">
+      <type name="int"/>
+    </constant>
+    <enumeration name="InitError"
+                 doc="Error conditions returned by clutter_init() and clutter_init_with_args()."
+                 version="0.2"
+                 glib:type-name="ClutterInitError"
+                 glib:get-type="clutter_init_error_get_type"
+                 c:type="ClutterInitError"
+                 glib:error-quark="clutter_init_error_quark">
+      <member name="success"
+              value="1"
+              c:identifier="CLUTTER_INIT_SUCCESS"
+              glib:nick="success"/>
+      <member name="error_unknown"
+              value="0"
+              c:identifier="CLUTTER_INIT_ERROR_UNKNOWN"
+              glib:nick="error-unknown"/>
+      <member name="error_threads"
+              value="-1"
+              c:identifier="CLUTTER_INIT_ERROR_THREADS"
+              glib:nick="error-threads"/>
+      <member name="error_backend"
+              value="-2"
+              c:identifier="CLUTTER_INIT_ERROR_BACKEND"
+              glib:nick="error-backend"/>
+      <member name="error_internal"
+              value="-3"
+              c:identifier="CLUTTER_INIT_ERROR_INTERNAL"
+              glib:nick="error-internal"/>
+    </enumeration>
+    <class name="InputDevice"
+           c:type="ClutterInputDevice"
+           doc="Generic representation of an input device. The actual contents of this
+structure depend on the backend used."
+           parent="GObject.Object"
+           glib:type-name="ClutterInputDevice"
+           glib:get-type="clutter_input_device_get_type"
+           glib:type-struct="InputDeviceClass">
+      <method name="get_device_type"
+              c:identifier="clutter_input_device_get_device_type"
+              doc="Retrieves the type of @device"
+              version="1.0">
+        <return-value transfer-ownership="full">
+          <type name="InputDeviceType" c:type="ClutterInputDeviceType"/>
+        </return-value>
+      </method>
+      <method name="get_device_id"
+              c:identifier="clutter_input_device_get_device_id"
+              doc="Retrieves the unique identifier of @device"
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_device_coords"
+              c:identifier="clutter_input_device_get_device_coords"
+              doc="Retrieves the latest coordinates of the pointer of @device"
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="x"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     doc="return location for the X coordinate">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+          <parameter name="y"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     doc="return location for the Y coordinate">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_pointer_actor"
+              c:identifier="clutter_input_device_get_pointer_actor"
+              doc="Retrieves the #ClutterActor underneath the pointer of @device"
+              version="1.2">
+        <return-value transfer-ownership="none"
+                      doc="a pointer to the #ClutterActor or %NULL">
+          <type name="Actor" c:type="ClutterActor*"/>
+        </return-value>
+      </method>
+      <method name="get_pointer_stage"
+              c:identifier="clutter_input_device_get_pointer_stage"
+              doc="Retrieves the #ClutterStage underneath the pointer of @device"
+              version="1.2">
+        <return-value transfer-ownership="none"
+                      doc="a pointer to the #ClutterStage or %NULL">
+          <type name="Stage" c:type="ClutterStage*"/>
+        </return-value>
+      </method>
+      <method name="get_device_name"
+              c:identifier="clutter_input_device_get_device_name"
+              doc="Retrieves the name of the @device
+is owned by the #ClutterInputDevice and should never be modified
+or freed"
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="update_from_event"
+              c:identifier="clutter_input_device_update_from_event"
+              doc="Forcibly updates the state of the @device using a #ClutterEvent
+for integration with embedding toolkits, like clutter-gtk
+Embedding toolkits that disable the event collection inside Clutter
+need to use this function to update the state of input devices depending
+on a #ClutterEvent that they are going to submit to the event handling code
+in Clutter though clutter_do_event(). Since the input devices hold the state
+that is going to be used to fill in fields like the #ClutterButtonEvent
+click count, or to emit synthesized events like %CLUTTER_ENTER and
+%CLUTTER_LEAVE, it is necessary for embedding toolkits to also be
+responsible of updating the input device state.
+For instance, this might be the code to translate an embedding toolkit
+native motion notification into a Clutter #ClutterMotionEvent and ask
+Clutter to process it:
+|[
+ClutterEvent c_event;
+translate_native_event_to_clutter (native_event, &amp;amp;c_event);
+clutter_do_event (&amp;amp;c_event);
+]|
+Before letting clutter_do_event() process the event, it is necessary to call
+clutter_input_device_update_from_event():
+|[
+ClutterEvent c_event;
+ClutterDeviceManager *manager;
+ClutterInputDevice *device;
+translate_native_event_to_clutter (native_event, &amp;amp;c_event);
+/&amp;ast; get the device manager &amp;ast;/
+manager = clutter_device_manager_get_default ();
+/&amp;ast; use the default Core Pointer that Clutter
+&amp;ast; backends register by default
+&amp;ast;/
+device = clutter_device_manager_get_core_device (manager, %CLUTTER_POINTER_DEVICE);
+/&amp;ast; update the state of the input device &amp;ast;/
+clutter_input_device_update_from_event (device, &amp;amp;c_event, FALSE);
+clutter_do_event (&amp;amp;c_event);
+]|
+The @update_stage boolean argument should be used when the input device
+enters and leaves a #ClutterStage; it will use the #ClutterStage field
+of the passed @event to update the stage associated to the input device."
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="none">
+            <type name="Event" c:type="ClutterEvent*"/>
+          </parameter>
+          <parameter name="update_stage"
+                     transfer-ownership="none"
+                     doc=" using the stage of the event">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="device-type"
+                version="1.2"
+                writable="1"
+                construct-only="1"
+                doc="The type of the device">
+        <type name="InputDeviceType" c:type="ClutterInputDeviceType"/>
+      </property>
+      <property name="id"
+                version="1.2"
+                writable="1"
+                construct-only="1"
+                doc="The unique identifier of the device">
+        <type name="int" c:type="gint"/>
+      </property>
+      <property name="name"
+                version="1.2"
+                writable="1"
+                construct-only="1"
+                doc="The name of the device">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+    </class>
+    <record name="InputDeviceClass"
+            c:type="ClutterInputDeviceClass"
+            glib:is-gtype-struct-for="InputDevice"
+            doc="The #ClutterInputDeviceClass structure contains only private
+data and should not be accessed directly"
+            version="1.2">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+    </record>
+    <enumeration name="InputDeviceType"
+                 doc="The types of input devices available.
+The #ClutterInputDeviceType enumeration can be extended at later
+date; not every platform supports every input device type."
+                 version="1.0"
+                 glib:type-name="ClutterInputDeviceType"
+                 glib:get-type="clutter_input_device_type_get_type"
+                 c:type="ClutterInputDeviceType">
+      <member name="pointer_device"
+              value="0"
+              c:identifier="CLUTTER_POINTER_DEVICE"
+              glib:nick="pointer-device"/>
+      <member name="keyboard_device"
+              value="1"
+              c:identifier="CLUTTER_KEYBOARD_DEVICE"
+              glib:nick="keyboard-device"/>
+      <member name="extension_device"
+              value="2"
+              c:identifier="CLUTTER_EXTENSION_DEVICE"
+              glib:nick="extension-device"/>
+      <member name="n_device_types"
+              value="3"
+              c:identifier="CLUTTER_N_DEVICE_TYPES"
+              glib:nick="n-device-types"/>
+    </enumeration>
+    <constant name="Insert" value="65379">
+      <type name="int"/>
+    </constant>
+    <enumeration name="Interpolation"
+                 doc="The mode of interpolation between key frames"
+                 version="1.2"
+                 glib:type-name="ClutterInterpolation"
+                 glib:get-type="clutter_interpolation_get_type"
+                 c:type="ClutterInterpolation">
+      <member name="linear"
+              value="0"
+              c:identifier="CLUTTER_INTERPOLATION_LINEAR"
+              glib:nick="linear"/>
+      <member name="cubic"
+              value="1"
+              c:identifier="CLUTTER_INTERPOLATION_CUBIC"
+              glib:nick="cubic"/>
+    </enumeration>
+    <class name="Interval"
+           c:type="ClutterInterval"
+           doc="The #ClutterInterval structure contains only private data and should
+be accessed using the provided functions."
+           version="1.0"
+           parent="GObject.InitiallyUnowned"
+           glib:type-name="ClutterInterval"
+           glib:get-type="clutter_interval_get_type"
+           glib:type-struct="IntervalClass">
+      <constructor name="new"
+                   c:identifier="clutter_interval_new"
+                   doc="Creates a new #ClutterInterval holding values of type @gtype.
+This function avoids using a #GValue for the initial and final values
+of the interval:
+|[
+interval = clutter_interval_new (G_TYPE_FLOAT, 0.0, 1.0);
+interval = clutter_interval_new (G_TYPE_BOOLEAN, FALSE, TRUE);
+interval = clutter_interval_new (G_TYPE_INT, 0, 360);
+]|"
+                   version="1.0">
+        <return-value transfer-ownership="full">
+          <type name="Interval" c:type="ClutterInterval*"/>
+        </return-value>
+        <parameters>
+          <parameter name="gtype" transfer-ownership="none">
+            <type name="GType" c:type="GType"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_with_values"
+                   c:identifier="clutter_interval_new_with_values"
+                   doc="Creates a new #ClutterInterval of type @gtype, between @initial
+and @final.
+This function is useful for language bindings."
+                   version="1.0">
+        <return-value transfer-ownership="full">
+          <type name="Interval" c:type="ClutterInterval*"/>
+        </return-value>
+        <parameters>
+          <parameter name="gtype" transfer-ownership="none">
+            <type name="GType" c:type="GType"/>
+          </parameter>
+          <parameter name="initial" transfer-ownership="none">
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+          <parameter name="final" transfer-ownership="none">
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <function name="register_progress_func"
+                c:identifier="clutter_interval_register_progress_func"
+                doc="Sets the progress function for a given @value_type, like:
+|[
+clutter_interval_register_progress_func (MY_TYPE_FOO,
+my_foo_progress);
+]|
+Whenever a #ClutterInterval instance using the default
+#ClutterInterval::compute_value implementation is set as an
+interval between two #GValue of type @value_type, it will call
+for instance:
+|[
+static gboolean
+my_int_progress (const GValue *a,
+const GValue *b,
+gdouble       progress,
+GValue       *retval)
+{
+gint ia = g_value_get_int (a);
+gint ib = g_value_get_int (b);
+gint res = factor * (ib - ia) + ia;
+g_value_set_int (retval, res);
+return TRUE;
+}
+clutter_interval_register_progress_func (G_TYPE_INT, my_int_progress);
+]|
+To unset a previously set progress function of a #GType, pass %NULL
+for @func."
+                version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="value_type" transfer-ownership="none">
+            <type name="GType" c:type="GType"/>
+          </parameter>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     scope="call"
+                     doc=" set progress function">
+            <type name="ProgressFunc" c:type="ClutterProgressFunc"/>
+          </parameter>
+        </parameters>
+      </function>
+      <virtual-method name="validate" invoker="validate">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="pspec" transfer-ownership="none">
+            <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="compute_value" invoker="compute_value">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="factor" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="clone"
+              c:identifier="clutter_interval_clone"
+              doc="Creates a copy of @interval."
+              version="1.0">
+        <return-value transfer-ownership="full">
+          <type name="Interval" c:type="ClutterInterval*"/>
+        </return-value>
+      </method>
+      <method name="get_value_type"
+              c:identifier="clutter_interval_get_value_type"
+              doc="Retrieves the #GType of the values inside @interval."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="GType" c:type="GType"/>
+        </return-value>
+      </method>
+      <method name="set_initial_value"
+              c:identifier="clutter_interval_set_initial_value"
+              doc="Sets the initial value of @interval to @value. The value is copied
+inside the #ClutterInterval."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="value" transfer-ownership="none">
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_initial_value"
+              c:identifier="clutter_interval_get_initial_value"
+              doc="Retrieves the initial value of @interval and copies
+it into @value.
+The passed #GValue must be initialized to the value held by
+the #ClutterInterval."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="value" transfer-ownership="none">
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="peek_initial_value"
+              c:identifier="clutter_interval_peek_initial_value"
+              doc="Gets the pointer to the initial value of @interval
+The value is owned by the #ClutterInterval and it should not be
+modified or freed"
+              version="1.0">
+        <return-value transfer-ownership="none"
+                      doc="the initial value of the interval.">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </return-value>
+      </method>
+      <method name="set_final_value"
+              c:identifier="clutter_interval_set_final_value"
+              doc="Sets the final value of @interval to @value. The value is
+copied inside the #ClutterInterval."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="value" transfer-ownership="none">
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_final_value"
+              c:identifier="clutter_interval_get_final_value"
+              doc="Retrieves the final value of @interval and copies
+it into @value.
+The passed #GValue must be initialized to the value held by
+the #ClutterInterval."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="value" transfer-ownership="none">
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="peek_final_value"
+              c:identifier="clutter_interval_peek_final_value"
+              doc="Gets the pointer to the final value of @interval
+The value is owned by the #ClutterInterval and it should not be
+modified or freed"
+              version="1.0">
+        <return-value transfer-ownership="none"
+                      doc="the final value of the interval.">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </return-value>
+      </method>
+      <method name="set_interval"
+              c:identifier="clutter_interval_set_interval"
+              doc="Variable arguments wrapper for clutter_interval_set_initial_value()
+and clutter_interval_set_final_value() that avoids using the
+#GValue arguments:
+|[
+clutter_interval_set_interval (interval, 0, 50);
+clutter_interval_set_interval (interval, 1.0, 0.0);
+clutter_interval_set_interval (interval, FALSE, TRUE);
+]|
+This function is meant for the convenience of the C API; bindings
+should reimplement this function using the #GValue-based API."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_interval"
+              c:identifier="clutter_interval_get_interval"
+              doc="Variable arguments wrapper for clutter_interval_get_initial_value()
+and clutter_interval_get_final_value() that avoids using the
+#GValue arguments:
+|[
+gint a = 0, b = 0;
+clutter_interval_get_interval (interval, &amp;a, &amp;b);
+]|
+This function is meant for the convenience of the C API; bindings
+should reimplement this function using the #GValue-based API."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="validate"
+              c:identifier="clutter_interval_validate"
+              doc="Validates the initial and final values of @interval against
+a #GParamSpec."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="pspec" transfer-ownership="none">
+            <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="compute_value"
+              c:identifier="clutter_interval_compute_value"
+              doc="Computes the value between the @interval boundaries given the
+progress @factor and puts it into @value."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="factor" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="value-type"
+                version="1.0"
+                writable="1"
+                construct-only="1"
+                doc="The type of the values in the interval.">
+        <type name="GType" c:type="GType"/>
+      </property>
+      <field name="parent_instance">
+        <type name="GObject.InitiallyUnowned" c:type="GInitiallyUnowned"/>
+      </field>
+      <field name="priv">
+        <type name="IntervalPrivate" c:type="ClutterIntervalPrivate*"/>
+      </field>
+    </class>
+    <record name="IntervalClass"
+            c:type="ClutterIntervalClass"
+            glib:is-gtype-struct-for="Interval"
+            doc="The #ClutterIntervalClass contains only private data."
+            version="1.0">
+      <field name="parent_class">
+        <type name="GObject.InitiallyUnownedClass"
+              c:type="GInitiallyUnownedClass"/>
+      </field>
+      <field name="validate">
+        <callback name="validate" c:type="validate">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="interval" transfer-ownership="none">
+              <type name="Interval" c:type="ClutterInterval*"/>
+            </parameter>
+            <parameter name="pspec" transfer-ownership="none">
+              <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="compute_value">
+        <callback name="compute_value" c:type="compute_value">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="interval" transfer-ownership="none">
+              <type name="Interval" c:type="ClutterInterval*"/>
+            </parameter>
+            <parameter name="factor" transfer-ownership="none">
+              <type name="double" c:type="gdouble"/>
+            </parameter>
+            <parameter name="value" transfer-ownership="none">
+              <type name="GObject.Value" c:type="GValue*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="clutter_reserved1">
+        <callback name="clutter_reserved1" c:type="_clutter_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_reserved2">
+        <callback name="clutter_reserved2" c:type="_clutter_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_reserved3">
+        <callback name="clutter_reserved3" c:type="_clutter_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_reserved4">
+        <callback name="clutter_reserved4" c:type="_clutter_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_reserved5">
+        <callback name="clutter_reserved5" c:type="_clutter_reserved5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_reserved6">
+        <callback name="clutter_reserved6" c:type="_clutter_reserved6">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="IntervalPrivate" c:type="ClutterIntervalPrivate">
+    </record>
+    <constant name="Iogonek" value="967">
+      <type name="int"/>
+    </constant>
+    <constant name="Itilde" value="933">
+      <type name="int"/>
+    </constant>
+    <constant name="J" value="74">
+      <type name="int"/>
+    </constant>
+    <constant name="Jcircumflex" value="684">
+      <type name="int"/>
+    </constant>
+    <constant name="K" value="75">
+      <type name="int"/>
+    </constant>
+    <constant name="KP_0" value="65456">
+      <type name="int"/>
+    </constant>
+    <constant name="KP_1" value="65457">
+      <type name="int"/>
+    </constant>
+    <constant name="KP_2" value="65458">
+      <type name="int"/>
+    </constant>
+    <constant name="KP_3" value="65459">
+      <type name="int"/>
+    </constant>
+    <constant name="KP_4" value="65460">
+      <type name="int"/>
+    </constant>
+    <constant name="KP_5" value="65461">
+      <type name="int"/>
+    </constant>
+    <constant name="KP_6" value="65462">
+      <type name="int"/>
+    </constant>
+    <constant name="KP_7" value="65463">
+      <type name="int"/>
+    </constant>
+    <constant name="KP_8" value="65464">
+      <type name="int"/>
+    </constant>
+    <constant name="KP_9" value="65465">
+      <type name="int"/>
+    </constant>
+    <constant name="KP_Add" value="65451">
+      <type name="int"/>
+    </constant>
+    <constant name="KP_Begin" value="65437">
+      <type name="int"/>
+    </constant>
+    <constant name="KP_Decimal" value="65454">
+      <type name="int"/>
+    </constant>
+    <constant name="KP_Delete" value="65439">
+      <type name="int"/>
+    </constant>
+    <constant name="KP_Divide" value="65455">
+      <type name="int"/>
+    </constant>
+    <constant name="KP_Down" value="65433">
+      <type name="int"/>
+    </constant>
+    <constant name="KP_End" value="65436">
+      <type name="int"/>
+    </constant>
+    <constant name="KP_Enter" value="65421">
+      <type name="int"/>
+    </constant>
+    <constant name="KP_Equal" value="65469">
+      <type name="int"/>
+    </constant>
+    <constant name="KP_F1" value="65425">
+      <type name="int"/>
+    </constant>
+    <constant name="KP_F2" value="65426">
+      <type name="int"/>
+    </constant>
+    <constant name="KP_F3" value="65427">
+      <type name="int"/>
+    </constant>
+    <constant name="KP_F4" value="65428">
+      <type name="int"/>
+    </constant>
+    <constant name="KP_Home" value="65429">
+      <type name="int"/>
+    </constant>
+    <constant name="KP_Insert" value="65438">
+      <type name="int"/>
+    </constant>
+    <constant name="KP_Left" value="65430">
+      <type name="int"/>
+    </constant>
+    <constant name="KP_Multiply" value="65450">
+      <type name="int"/>
+    </constant>
+    <constant name="KP_Next" value="65435">
+      <type name="int"/>
+    </constant>
+    <constant name="KP_Page_Down" value="65435">
+      <type name="int"/>
+    </constant>
+    <constant name="KP_Page_Up" value="65434">
+      <type name="int"/>
+    </constant>
+    <constant name="KP_Prior" value="65434">
+      <type name="int"/>
+    </constant>
+    <constant name="KP_Right" value="65432">
+      <type name="int"/>
+    </constant>
+    <constant name="KP_Separator" value="65452">
+      <type name="int"/>
+    </constant>
+    <constant name="KP_Space" value="65408">
+      <type name="int"/>
+    </constant>
+    <constant name="KP_Subtract" value="65453">
+      <type name="int"/>
+    </constant>
+    <constant name="KP_Tab" value="65417">
+      <type name="int"/>
+    </constant>
+    <constant name="KP_Up" value="65431">
+      <type name="int"/>
+    </constant>
+    <constant name="Kana_Lock" value="65325">
+      <type name="int"/>
+    </constant>
+    <constant name="Kana_Shift" value="65326">
+      <type name="int"/>
+    </constant>
+    <constant name="Kanji" value="65313">
+      <type name="int"/>
+    </constant>
+    <constant name="Kanji_Bangou" value="65335">
+      <type name="int"/>
+    </constant>
+    <constant name="Katakana" value="65318">
+      <type name="int"/>
+    </constant>
+    <constant name="Kcedilla" value="979">
+      <type name="int"/>
+    </constant>
+    <record name="KeyEvent"
+            c:type="ClutterKeyEvent"
+            doc="Key event"
+            version="0.2">
+      <field name="type" writable="1">
+        <type name="EventType" c:type="ClutterEventType"/>
+      </field>
+      <field name="time" writable="1">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+      <field name="flags" writable="1">
+        <type name="EventFlags" c:type="ClutterEventFlags"/>
+      </field>
+      <field name="stage" writable="1">
+        <type name="Stage" c:type="ClutterStage*"/>
+      </field>
+      <field name="source" writable="1">
+        <type name="Actor" c:type="ClutterActor*"/>
+      </field>
+      <field name="modifier_state" writable="1">
+        <type name="ModifierType" c:type="ClutterModifierType"/>
+      </field>
+      <field name="keyval" writable="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="hardware_keycode" writable="1">
+        <type name="uint16" c:type="guint16"/>
+      </field>
+      <field name="unicode_value" writable="1">
+        <type name="GLib.unichar" c:type="gunichar"/>
+      </field>
+      <field name="device" writable="1">
+        <type name="InputDevice" c:type="ClutterInputDevice*"/>
+      </field>
+    </record>
+    <record name="Knot"
+            c:type="ClutterKnot"
+            doc="Point in a path behaviour."
+            version="0.2"
+            glib:type-name="ClutterKnot"
+            glib:get-type="clutter_knot_get_type">
+      <field name="x" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="y" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <method name="copy"
+              c:identifier="clutter_knot_copy"
+              doc="Makes an allocated copy of a knot."
+              version="0.2">
+        <return-value transfer-ownership="full">
+          <type name="Knot" c:type="ClutterKnot*"/>
+        </return-value>
+      </method>
+      <method name="free"
+              c:identifier="clutter_knot_free"
+              doc="Frees the memory of an allocated knot."
+              version="0.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="equal"
+              c:identifier="clutter_knot_equal"
+              doc="Compares to knot and checks if the point to the same location."
+              version="0.2">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="knot_b" transfer-ownership="none">
+            <type name="Knot" c:type="ClutterKnot*"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <constant name="Korean_Won" value="3839">
+      <type name="int"/>
+    </constant>
+    <constant name="L" value="76">
+      <type name="int"/>
+    </constant>
+    <constant name="L1" value="65480">
+      <type name="int"/>
+    </constant>
+    <constant name="L10" value="65489">
+      <type name="int"/>
+    </constant>
+    <constant name="L2" value="65481">
+      <type name="int"/>
+    </constant>
+    <constant name="L3" value="65482">
+      <type name="int"/>
+    </constant>
+    <constant name="L4" value="65483">
+      <type name="int"/>
+    </constant>
+    <constant name="L5" value="65484">
+      <type name="int"/>
+    </constant>
+    <constant name="L6" value="65485">
+      <type name="int"/>
+    </constant>
+    <constant name="L7" value="65486">
+      <type name="int"/>
+    </constant>
+    <constant name="L8" value="65487">
+      <type name="int"/>
+    </constant>
+    <constant name="L9" value="65488">
+      <type name="int"/>
+    </constant>
+    <constant name="Lacute" value="453">
+      <type name="int"/>
+    </constant>
+    <constant name="Last_Virtual_Screen" value="65236">
+      <type name="int"/>
+    </constant>
+    <class name="LayoutManager"
+           c:type="ClutterLayoutManager"
+           doc="The #ClutterLayoutManager structure contains only private data
+and should be accessed using the provided API"
+           version="1.2"
+           parent="GObject.InitiallyUnowned"
+           abstract="1"
+           glib:type-name="ClutterLayoutManager"
+           glib:get-type="clutter_layout_manager_get_type"
+           glib:type-struct="LayoutManagerClass">
+      <virtual-method name="get_preferred_width">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="container" transfer-ownership="none">
+            <type name="Container" c:type="ClutterContainer*"/>
+          </parameter>
+          <parameter name="for_height" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+          <parameter name="minimum_width_p"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <type name="float" c:type="gfloat*"/>
+          </parameter>
+          <parameter name="natural_width_p"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <type name="float" c:type="gfloat*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_preferred_height">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="container" transfer-ownership="none">
+            <type name="Container" c:type="ClutterContainer*"/>
+          </parameter>
+          <parameter name="for_width" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+          <parameter name="minimum_height_p"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <type name="float" c:type="gfloat*"/>
+          </parameter>
+          <parameter name="natural_height_p"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <type name="float" c:type="gfloat*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="allocate" invoker="allocate">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="container" transfer-ownership="none">
+            <type name="Container" c:type="ClutterContainer*"/>
+          </parameter>
+          <parameter name="allocation" transfer-ownership="none">
+            <type name="ActorBox" c:type="ClutterActorBox*"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="AllocationFlags" c:type="ClutterAllocationFlags"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="set_container" invoker="set_container">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="container" transfer-ownership="none">
+            <type name="Container" c:type="ClutterContainer*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_child_meta_type">
+        <return-value transfer-ownership="none">
+          <type name="GType" c:type="GType"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="create_child_meta">
+        <return-value transfer-ownership="full">
+          <type name="LayoutMeta" c:type="ClutterLayoutMeta*"/>
+        </return-value>
+        <parameters>
+          <parameter name="container" transfer-ownership="none">
+            <type name="Container" c:type="ClutterContainer*"/>
+          </parameter>
+          <parameter name="actor" transfer-ownership="none">
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="begin_animation" invoker="begin_animation">
+        <return-value transfer-ownership="full">
+          <type name="Alpha" c:type="ClutterAlpha*"/>
+        </return-value>
+        <parameters>
+          <parameter name="duration" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="mode" transfer-ownership="none">
+            <type name="ulong" c:type="gulong"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_animation_progress"
+                      invoker="get_animation_progress">
+        <return-value transfer-ownership="none">
+          <type name="double" c:type="gdouble"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="end_animation" invoker="end_animation">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <method name="get_preferred_width"
+              c:identifier="clutter_layout_manager_get_preferred_width"
+              doc="Computes the minimum and natural widths of the @container according
+to @manager.
+See also clutter_actor_get_preferred_width()"
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="container" transfer-ownership="none">
+            <type name="Container" c:type="ClutterContainer*"/>
+          </parameter>
+          <parameter name="for_height" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+          <parameter name="min_width_p"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="return location for the minimum width of the layout, or %NULL">
+            <type name="float" c:type="gfloat*"/>
+          </parameter>
+          <parameter name="nat_width_p"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="return location for the natural width of the layout, or %NULL">
+            <type name="float" c:type="gfloat*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_preferred_height"
+              c:identifier="clutter_layout_manager_get_preferred_height"
+              doc="Computes the minimum and natural heights of the @container according
+to @manager.
+See also clutter_actor_get_preferred_height()"
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="container" transfer-ownership="none">
+            <type name="Container" c:type="ClutterContainer*"/>
+          </parameter>
+          <parameter name="for_width" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+          <parameter name="min_height_p"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="return location for the minimum height of the layout, or %NULL">
+            <type name="float" c:type="gfloat*"/>
+          </parameter>
+          <parameter name="nat_height_p"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="return location for the natural height of the layout, or %NULL">
+            <type name="float" c:type="gfloat*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="allocate"
+              c:identifier="clutter_layout_manager_allocate"
+              doc="Allocates the children of @container given an area
+See also clutter_actor_allocate()"
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="container" transfer-ownership="none">
+            <type name="Container" c:type="ClutterContainer*"/>
+          </parameter>
+          <parameter name="allocation"
+                     transfer-ownership="none"
+                     doc=" of @container">
+            <type name="ActorBox" c:type="ClutterActorBox*"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="AllocationFlags" c:type="ClutterAllocationFlags"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_container"
+              c:identifier="clutter_layout_manager_set_container"
+              doc="If the #ClutterLayoutManager sub-class allows it, allow
+adding a weak reference of the @container using @manager
+from within the layout manager
+The layout manager should not increase the reference
+count of the @container"
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="container"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="a #ClutterContainer using @manager">
+            <type name="Container" c:type="ClutterContainer*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="layout_changed"
+              c:identifier="clutter_layout_manager_layout_changed"
+              doc="Emits the #ClutterLayoutManager::layout-changed signal on @manager
+This function should only be called by implementations of the
+#ClutterLayoutManager class"
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="find_child_property"
+              c:identifier="clutter_layout_manager_find_child_property"
+              doc="Retrieves the #GParamSpec for the layout property @name inside
+the #ClutterLayoutMeta sub-class used by @manager
+or %NULL if no property with that name exists. The returned
+#GParamSpec is owned by the layout manager and should not be
+modified or freed"
+              version="1.2">
+        <return-value transfer-ownership="none"
+                      doc="a #GParamSpec describing the property,">
+          <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="list_child_properties"
+              c:identifier="clutter_layout_manager_list_child_properties"
+              doc="Retrieves all the #GParamSpec&lt;!-- --&gt;s for the layout properties
+stored inside the #ClutterLayoutMeta sub-class used by @manager
+array of #GParamSpec&lt;!-- --&gt;s. Use g_free() to free the resources
+allocated for the array"
+              version="1.2">
+        <return-value transfer-ownership="full"
+                      doc="the newly-allocated, %NULL-terminated">
+          <type name="GObject.ParamSpec" c:type="GParamSpec**"/>
+        </return-value>
+        <parameters>
+          <parameter name="n_pspecs"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     doc="return location for the number of returned #GParamSpec&lt;!-- --&gt;s">
+            <type name="uint" c:type="guint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_child_meta"
+              c:identifier="clutter_layout_manager_get_child_meta"
+              doc="Retrieves the #ClutterLayoutMeta that the layout @manager associated
+to the @actor child of @container, eventually by creating one if the
+#ClutterLayoutManager supports layout properties
+does not have layout properties"
+              version="1.0">
+        <return-value transfer-ownership="full">
+          <type name="LayoutMeta" c:type="ClutterLayoutMeta*"/>
+        </return-value>
+        <parameters>
+          <parameter name="container" transfer-ownership="none">
+            <type name="Container" c:type="ClutterContainer*"/>
+          </parameter>
+          <parameter name="actor" transfer-ownership="none">
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="child_set"
+              c:identifier="clutter_layout_manager_child_set"
+              doc="Sets a list of properties and their values on the #ClutterLayoutMeta
+associated by @manager to a child of @container
+Languages bindings should use clutter_layout_manager_child_set_property()
+instead"
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="container" transfer-ownership="none">
+            <type name="Container" c:type="ClutterContainer*"/>
+          </parameter>
+          <parameter name="actor" transfer-ownership="none">
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter name="first_property" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="child_get"
+              c:identifier="clutter_layout_manager_child_get"
+              doc="Retrieves the values for a list of properties out of the
+#ClutterLayoutMeta created by @manager and attached to the
+child of a @container"
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="container" transfer-ownership="none">
+            <type name="Container" c:type="ClutterContainer*"/>
+          </parameter>
+          <parameter name="actor" transfer-ownership="none">
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter name="first_property" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="child_set_property"
+              c:identifier="clutter_layout_manager_child_set_property"
+              doc="Sets a property on the #ClutterLayoutMeta created by @manager and
+attached to a child of @container"
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="container" transfer-ownership="none">
+            <type name="Container" c:type="ClutterContainer*"/>
+          </parameter>
+          <parameter name="actor" transfer-ownership="none">
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter name="property_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="child_get_property"
+              c:identifier="clutter_layout_manager_child_get_property"
+              doc="Gets a property on the #ClutterLayoutMeta created by @manager and
+attached to a child of @container
+The #GValue must already be initialized to the type of the property
+and has to be unset with g_value_unset() after extracting the real
+value out of it"
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="container" transfer-ownership="none">
+            <type name="Container" c:type="ClutterContainer*"/>
+          </parameter>
+          <parameter name="actor" transfer-ownership="none">
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter name="property_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="begin_animation"
+              c:identifier="clutter_layout_manager_begin_animation"
+              doc="Begins an animation of @duration milliseconds, using the provided
+easing @mode
+The easing mode can be specified either as a #ClutterAnimationMode
+or as a logical id returned by clutter_alpha_register_func()
+The result of this function depends on the @manager implementation
+layout manager; the returned instance is owned by the layout
+manager and should not be unreferenced"
+              version="1.2">
+        <return-value transfer-ownership="none"
+                      doc="The #ClutterAlpha created by the">
+          <type name="Alpha" c:type="ClutterAlpha*"/>
+        </return-value>
+        <parameters>
+          <parameter name="duration" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="mode" transfer-ownership="none">
+            <type name="ulong" c:type="gulong"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="end_animation"
+              c:identifier="clutter_layout_manager_end_animation"
+              doc="Ends an animation started by clutter_layout_manager_begin_animation()
+The result of this call depends on the @manager implementation"
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_animation_progress"
+              c:identifier="clutter_layout_manager_get_animation_progress"
+              doc="Retrieves the progress of the animation, if one has been started by
+clutter_layout_manager_begin_animation()
+The returned value has the same semantics of the #ClutterAlpha:alpha
+value"
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="double" c:type="gdouble"/>
+        </return-value>
+      </method>
+      <field name="parent_instance">
+        <type name="GObject.InitiallyUnowned" c:type="GInitiallyUnowned"/>
+      </field>
+      <field name="dummy">
+        <type name="any" c:type="gpointer"/>
+      </field>
+      <glib:signal name="layout-changed"
+                   doc="The ::layout-changed signal is emitted each time a layout manager
+has been changed. Every #ClutterActor using the @manager instance
+as a layout manager should connect a handler to the ::layout-changed
+signal and queue a relayout on themselves:
+|[
+static void layout_changed (ClutterLayoutManager *manager,
+ClutterActor         *self)
+{
+clutter_actor_queue_relayout (self);
+}
+...
+self-&gt;manager = g_object_ref_sink (manager);
+g_signal_connect (self-&gt;manager, &quot;layout-changed&quot;,
+G_CALLBACK (layout_changed),
+self);
+]|
+Sub-classes of #ClutterLayoutManager that implement a layout that
+can be controlled or changed using parameters should emit the
+::layout-changed signal whenever one of the parameters changes,
+by using clutter_layout_manager_layout_changed()."
+                   version="1.2">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+    </class>
+    <record name="LayoutManagerClass"
+            c:type="ClutterLayoutManagerClass"
+            glib:is-gtype-struct-for="LayoutManager"
+            doc="The #ClutterLayoutManagerClass structure contains only private
+data and should be accessed using the provided API"
+            version="1.2">
+      <field name="parent_class">
+        <type name="GObject.InitiallyUnownedClass"
+              c:type="GInitiallyUnownedClass"/>
+      </field>
+      <field name="get_preferred_width">
+        <callback name="get_preferred_width" c:type="get_preferred_width">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="manager" transfer-ownership="none">
+              <type name="LayoutManager" c:type="ClutterLayoutManager*"/>
+            </parameter>
+            <parameter name="container" transfer-ownership="none">
+              <type name="Container" c:type="ClutterContainer*"/>
+            </parameter>
+            <parameter name="for_height" transfer-ownership="none">
+              <type name="float" c:type="gfloat"/>
+            </parameter>
+            <parameter name="minimum_width_p"
+                       direction="out"
+                       caller-allocates="0"
+                       transfer-ownership="full">
+              <type name="float" c:type="gfloat*"/>
+            </parameter>
+            <parameter name="natural_width_p"
+                       direction="out"
+                       caller-allocates="0"
+                       transfer-ownership="full">
+              <type name="float" c:type="gfloat*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_preferred_height">
+        <callback name="get_preferred_height" c:type="get_preferred_height">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="manager" transfer-ownership="none">
+              <type name="LayoutManager" c:type="ClutterLayoutManager*"/>
+            </parameter>
+            <parameter name="container" transfer-ownership="none">
+              <type name="Container" c:type="ClutterContainer*"/>
+            </parameter>
+            <parameter name="for_width" transfer-ownership="none">
+              <type name="float" c:type="gfloat"/>
+            </parameter>
+            <parameter name="minimum_height_p"
+                       direction="out"
+                       caller-allocates="0"
+                       transfer-ownership="full">
+              <type name="float" c:type="gfloat*"/>
+            </parameter>
+            <parameter name="natural_height_p"
+                       direction="out"
+                       caller-allocates="0"
+                       transfer-ownership="full">
+              <type name="float" c:type="gfloat*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="allocate">
+        <callback name="allocate" c:type="allocate">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="manager" transfer-ownership="none">
+              <type name="LayoutManager" c:type="ClutterLayoutManager*"/>
+            </parameter>
+            <parameter name="container" transfer-ownership="none">
+              <type name="Container" c:type="ClutterContainer*"/>
+            </parameter>
+            <parameter name="allocation" transfer-ownership="none">
+              <type name="ActorBox" c:type="ClutterActorBox*"/>
+            </parameter>
+            <parameter name="flags" transfer-ownership="none">
+              <type name="AllocationFlags" c:type="ClutterAllocationFlags"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_container">
+        <callback name="set_container" c:type="set_container">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="manager" transfer-ownership="none">
+              <type name="LayoutManager" c:type="ClutterLayoutManager*"/>
+            </parameter>
+            <parameter name="container" transfer-ownership="none">
+              <type name="Container" c:type="ClutterContainer*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_child_meta_type">
+        <callback name="get_child_meta_type" c:type="get_child_meta_type">
+          <return-value transfer-ownership="none">
+            <type name="GType" c:type="GType"/>
+          </return-value>
+          <parameters>
+            <parameter name="manager" transfer-ownership="none">
+              <type name="LayoutManager" c:type="ClutterLayoutManager*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="create_child_meta">
+        <callback name="create_child_meta" c:type="create_child_meta">
+          <return-value transfer-ownership="full">
+            <type name="LayoutMeta" c:type="ClutterLayoutMeta*"/>
+          </return-value>
+          <parameters>
+            <parameter name="manager" transfer-ownership="none">
+              <type name="LayoutManager" c:type="ClutterLayoutManager*"/>
+            </parameter>
+            <parameter name="container" transfer-ownership="none">
+              <type name="Container" c:type="ClutterContainer*"/>
+            </parameter>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="begin_animation">
+        <callback name="begin_animation" c:type="begin_animation">
+          <return-value transfer-ownership="full">
+            <type name="Alpha" c:type="ClutterAlpha*"/>
+          </return-value>
+          <parameters>
+            <parameter name="manager" transfer-ownership="none">
+              <type name="LayoutManager" c:type="ClutterLayoutManager*"/>
+            </parameter>
+            <parameter name="duration" transfer-ownership="none">
+              <type name="uint" c:type="guint"/>
+            </parameter>
+            <parameter name="mode" transfer-ownership="none">
+              <type name="ulong" c:type="gulong"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_animation_progress">
+        <callback name="get_animation_progress"
+                  c:type="get_animation_progress">
+          <return-value transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </return-value>
+          <parameters>
+            <parameter name="manager" transfer-ownership="none">
+              <type name="LayoutManager" c:type="ClutterLayoutManager*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="end_animation">
+        <callback name="end_animation" c:type="end_animation">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="manager" transfer-ownership="none">
+              <type name="LayoutManager" c:type="ClutterLayoutManager*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="layout_changed">
+        <callback name="layout_changed" c:type="layout_changed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="manager" transfer-ownership="none">
+              <type name="LayoutManager" c:type="ClutterLayoutManager*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="clutter_padding_1">
+        <callback name="clutter_padding_1" c:type="_clutter_padding_1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_padding_2">
+        <callback name="clutter_padding_2" c:type="_clutter_padding_2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_padding_3">
+        <callback name="clutter_padding_3" c:type="_clutter_padding_3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_padding_4">
+        <callback name="clutter_padding_4" c:type="_clutter_padding_4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_padding_5">
+        <callback name="clutter_padding_5" c:type="_clutter_padding_5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_padding_6">
+        <callback name="clutter_padding_6" c:type="_clutter_padding_6">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_padding_7">
+        <callback name="clutter_padding_7" c:type="_clutter_padding_7">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_padding_8">
+        <callback name="clutter_padding_8" c:type="_clutter_padding_8">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <class name="LayoutMeta"
+           c:type="ClutterLayoutMeta"
+           parent="ChildMeta"
+           abstract="1"
+           glib:type-name="ClutterLayoutMeta"
+           glib:get-type="clutter_layout_meta_get_type"
+           glib:type-struct="LayoutMetaClass">
+      <method name="get_manager"
+              c:identifier="clutter_layout_meta_get_manager"
+              doc="Retrieves the actor wrapped by @data"
+              version="1.2">
+        <return-value transfer-ownership="none" doc="a #ClutterLayoutManager">
+          <type name="LayoutManager" c:type="ClutterLayoutManager*"/>
+        </return-value>
+      </method>
+      <property name="manager"
+                version="1.2"
+                writable="1"
+                construct-only="1"
+                doc="The #ClutterLayoutManager that created this #ClutterLayoutMeta.">
+        <type name="LayoutManager" c:type="ClutterLayoutManager"/>
+      </property>
+      <field name="parent_instance">
+        <type name="ChildMeta" c:type="ClutterChildMeta"/>
+      </field>
+      <field name="manager">
+        <type name="LayoutManager" c:type="ClutterLayoutManager*"/>
+      </field>
+      <field name="dummy0">
+        <type name="int32" c:type="gint32"/>
+      </field>
+      <field name="dummy1">
+        <type name="any" c:type="gpointer"/>
+      </field>
+    </class>
+    <record name="LayoutMetaClass"
+            c:type="ClutterLayoutMetaClass"
+            glib:is-gtype-struct-for="LayoutMeta"
+            doc="The #ClutterLayoutMetaClass contains only private data and
+should never be accessed directly"
+            version="1.2">
+      <field name="parent_class">
+        <type name="ChildMetaClass" c:type="ClutterChildMetaClass"/>
+      </field>
+      <field name="clutter_padding1">
+        <callback name="clutter_padding1" c:type="_clutter_padding1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_padding2">
+        <callback name="clutter_padding2" c:type="_clutter_padding2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_padding3">
+        <callback name="clutter_padding3" c:type="_clutter_padding3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_padding4">
+        <callback name="clutter_padding4" c:type="_clutter_padding4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <constant name="Lbelowdot" value="16784950">
+      <type name="int"/>
+    </constant>
+    <constant name="Lcaron" value="421">
+      <type name="int"/>
+    </constant>
+    <constant name="Lcedilla" value="934">
+      <type name="int"/>
+    </constant>
+    <constant name="Left" value="65361">
+      <type name="int"/>
+    </constant>
+    <constant name="Linefeed" value="65290">
+      <type name="int"/>
+    </constant>
+    <constant name="LiraSign" value="16785572">
+      <type name="int"/>
+    </constant>
+    <class name="ListModel"
+           c:type="ClutterListModel"
+           doc="The #ClutterListModel struct contains only private data."
+           version="0.6"
+           parent="Model"
+           glib:type-name="ClutterListModel"
+           glib:get-type="clutter_list_model_get_type"
+           glib:type-struct="ListModelClass">
+      <implements name="Scriptable"/>
+      <constructor name="new"
+                   c:identifier="clutter_list_model_new"
+                   doc="Creates a new default model with @n_columns columns with the types
+and names passed in.
+For example:
+&lt;informalexample&gt;&lt;programlisting&gt;
+model = clutter_list_model_new (3,
+G_TYPE_INT,      &quot;Score&quot;,
+G_TYPE_STRING,   &quot;Team&quot;,
+GDK_TYPE_PIXBUF, &quot;Logo&quot;);
+&lt;/programlisting&gt;&lt;/informalexample&gt;
+will create a new #ClutterModel with three columns of type int,
+string and #GdkPixbuf respectively.
+Note that the name of the column can be set to %NULL, in which case
+the canonical name of the type held by the column will be used as
+the title."
+                   version="0.6">
+        <return-value transfer-ownership="full">
+          <type name="ListModel" c:type="ClutterModel*"/>
+        </return-value>
+        <parameters>
+          <parameter name="n_columns" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="newv"
+                   c:identifier="clutter_list_model_newv"
+                   doc="Non-vararg version of clutter_list_model_new(). This function is
+useful for language bindings."
+                   version="0.6">
+        <return-value transfer-ownership="full">
+          <type name="ListModel" c:type="ClutterModel*"/>
+        </return-value>
+        <parameters>
+          <parameter name="n_columns" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="types"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <type name="GType" c:type="GType*"/>
+          </parameter>
+          <parameter name="names" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <field name="parent_instance">
+        <type name="Model" c:type="ClutterModel"/>
+      </field>
+      <field name="priv">
+        <type name="ListModelPrivate" c:type="ClutterListModelPrivate*"/>
+      </field>
+    </class>
+    <record name="ListModelClass"
+            c:type="ClutterListModelClass"
+            glib:is-gtype-struct-for="ListModel"
+            doc="The #ClutterListModelClass struct contains only private data."
+            version="0.6">
+      <field name="parent_class">
+        <type name="ModelClass" c:type="ClutterModelClass"/>
+      </field>
+    </record>
+    <record name="ListModelPrivate" c:type="ClutterListModelPrivate">
+    </record>
+    <constant name="Lstroke" value="419">
+      <type name="int"/>
+    </constant>
+    <constant name="M" value="77">
+      <type name="int"/>
+    </constant>
+    <constant name="MAJOR_VERSION" value="1">
+      <type name="int"/>
+    </constant>
+    <constant name="MICRO_VERSION" value="10">
+      <type name="int"/>
+    </constant>
+    <constant name="MINOR_VERSION" value="2">
+      <type name="int"/>
+    </constant>
+    <constant name="Mabovedot" value="16784960">
+      <type name="int"/>
+    </constant>
+    <constant name="Macedonia_DSE" value="1717">
+      <type name="int"/>
+    </constant>
+    <constant name="Macedonia_GJE" value="1714">
+      <type name="int"/>
+    </constant>
+    <constant name="Macedonia_KJE" value="1724">
+      <type name="int"/>
+    </constant>
+    <constant name="Macedonia_dse" value="1701">
+      <type name="int"/>
+    </constant>
+    <constant name="Macedonia_gje" value="1698">
+      <type name="int"/>
+    </constant>
+    <constant name="Macedonia_kje" value="1708">
+      <type name="int"/>
+    </constant>
+    <constant name="Mae_Koho" value="65342">
+      <type name="int"/>
+    </constant>
+    <constant name="Massyo" value="65324">
+      <type name="int"/>
+    </constant>
+    <interface name="Media"
+               c:type="ClutterMedia"
+               doc="#ClutterMedia is an opaque structure whose members cannot be directly
+accessed"
+               version="0.2"
+               glib:type-name="ClutterMedia"
+               glib:get-type="clutter_media_get_type"
+               glib:type-struct="MediaIface">
+      <method name="set_uri"
+              c:identifier="clutter_media_set_uri"
+              doc="Sets the URI of @media to @uri."
+              version="0.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="uri" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_uri"
+              c:identifier="clutter_media_get_uri"
+              doc="Retrieves the URI from @media.
+to free the returned string"
+              version="0.2">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="set_filename"
+              c:identifier="clutter_media_set_filename"
+              doc="Sets the source of @media using a file path."
+              version="0.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="filename" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_playing"
+              c:identifier="clutter_media_set_playing"
+              doc="Starts or stops playing of @media."
+              version="0.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="playing" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_playing"
+              c:identifier="clutter_media_get_playing"
+              doc="Retrieves the playing status of @media."
+              version="0.2">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_progress"
+              c:identifier="clutter_media_set_progress"
+              doc="Sets the playback progress of @media. The @progress is
+a normalized value between 0.0 (begin) and 1.0 (end)."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="progress" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_progress"
+              c:identifier="clutter_media_get_progress"
+              doc="Retrieves the playback progress of @media."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="double" c:type="gdouble"/>
+        </return-value>
+      </method>
+      <method name="set_subtitle_uri"
+              c:identifier="clutter_media_set_subtitle_uri"
+              doc="Sets the location of a subtitle file to display while playing @media."
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="uri" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_subtitle_uri"
+              c:identifier="clutter_media_get_subtitle_uri"
+              doc="Retrieves the URI of the subtitle file in use.
+to free the returned string"
+              version="1.2">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="set_subtitle_font_name"
+              c:identifier="clutter_media_set_subtitle_font_name"
+              doc="Sets the font used by the subtitle renderer. The @font_name string must be
+either %NULL, which means that the default font name of the underlying
+implementation will be used; or must follow the grammar recognized by
+pango_font_description_from_string() like:
+|[
+clutter_media_set_subtitle_font_name (media, &quot;Sans 24pt&quot;);
+]|"
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="font_name" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_subtitle_font_name"
+              c:identifier="clutter_media_get_subtitle_font_name"
+              doc="Retrieves the font name currently used.
+to free the returned string"
+              version="1.2">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="set_audio_volume"
+              c:identifier="clutter_media_set_audio_volume"
+              doc="Sets the playback volume of @media to @volume."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="volume" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_audio_volume"
+              c:identifier="clutter_media_get_audio_volume"
+              doc="Retrieves the playback volume of @media."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="double" c:type="gdouble"/>
+        </return-value>
+      </method>
+      <method name="get_can_seek"
+              c:identifier="clutter_media_get_can_seek"
+              doc="Retrieves whether @media is seekable or not."
+              version="0.2">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_buffer_fill"
+              c:identifier="clutter_media_get_buffer_fill"
+              doc="Retrieves the amount of the stream that is buffered."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="double" c:type="gdouble"/>
+        </return-value>
+      </method>
+      <method name="get_duration"
+              c:identifier="clutter_media_get_duration"
+              doc="Retrieves the duration of the media stream that @media represents."
+              version="0.2">
+        <return-value transfer-ownership="none">
+          <type name="double" c:type="gdouble"/>
+        </return-value>
+      </method>
+      <property name="audio-volume"
+                version="1.0"
+                writable="1"
+                doc="The volume of the audio, as a normalized value between
+0.0 and 1.0.">
+        <type name="double" c:type="gdouble"/>
+      </property>
+      <property name="buffer-fill"
+                version="1.0"
+                doc="The fill level of the buffer for the current stream,
+as a value between 0.0 and 1.0.">
+        <type name="double" c:type="gdouble"/>
+      </property>
+      <property name="can-seek"
+                version="0.2"
+                doc="Whether the current stream is seekable.">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="duration"
+                version="0.2"
+                doc="The duration of the current stream, in seconds">
+        <type name="double" c:type="gdouble"/>
+      </property>
+      <property name="playing"
+                version="0.2"
+                writable="1"
+                doc="Whether the #ClutterMedia actor is playing.">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="progress"
+                version="1.0"
+                writable="1"
+                doc="The current progress of the playback, as a normalized
+value between 0.0 and 1.0.">
+        <type name="double" c:type="gdouble"/>
+      </property>
+      <property name="subtitle-font-name"
+                version="1.2"
+                writable="1"
+                doc="The font used to display subtitles. The font description has to
+follow the same grammar as the one recognized by
+pango_font_description_from_string().">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <property name="subtitle-uri"
+                version="1.2"
+                writable="1"
+                doc="The location of a subtitle file, expressed as a valid URI.">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <property name="uri"
+                version="0.2"
+                writable="1"
+                doc="The location of a media file, expressed as a valid URI.">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <glib:signal name="eos"
+                   doc="The ::eos signal is emitted each time the media stream ends."
+                   version="0.2">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="error"
+                   doc="The ::error signal is emitted each time an error occurred."
+                   version="0.2">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="error" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </interface>
+    <record name="MediaIface"
+            c:type="ClutterMediaIface"
+            glib:is-gtype-struct-for="Media"
+            doc="Interface vtable for #ClutterMedia implementations"
+            version="0.2">
+      <field name="base_iface">
+        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+      </field>
+      <field name="eos">
+        <callback name="eos" c:type="eos">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="media" transfer-ownership="none">
+              <type name="Media" c:type="ClutterMedia*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="error">
+        <callback name="error" c:type="error">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="media" transfer-ownership="none">
+              <type name="Media" c:type="ClutterMedia*"/>
+            </parameter>
+            <parameter name="error" transfer-ownership="none">
+              <type name="GLib.Error" c:type="GError*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+    </record>
+    <constant name="Menu" value="65383">
+      <type name="int"/>
+    </constant>
+    <constant name="Meta_L" value="65511">
+      <type name="int"/>
+    </constant>
+    <constant name="Meta_R" value="65512">
+      <type name="int"/>
+    </constant>
+    <constant name="MillSign" value="16785573">
+      <type name="int"/>
+    </constant>
+    <constant name="Mode_switch" value="65406">
+      <type name="int"/>
+    </constant>
+    <class name="Model"
+           c:type="ClutterModel"
+           doc="Base class for list models. The #ClutterModel structure contains
+only private data and should be manipulated using the provided
+API."
+           version="0.6"
+           parent="GObject.Object"
+           abstract="1"
+           glib:type-name="ClutterModel"
+           glib:get-type="clutter_model_get_type"
+           glib:type-struct="ModelClass">
+      <implements name="Scriptable"/>
+      <virtual-method name="get_n_rows" invoker="get_n_rows">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_n_columns" invoker="get_n_columns">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_column_name" invoker="get_column_name">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="column" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_column_type" invoker="get_column_type">
+        <return-value transfer-ownership="none">
+          <type name="GType" c:type="GType"/>
+        </return-value>
+        <parameters>
+          <parameter name="column" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="insert_row">
+        <return-value transfer-ownership="full">
+          <type name="ModelIter" c:type="ClutterModelIter*"/>
+        </return-value>
+        <parameters>
+          <parameter name="index_" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="remove_row">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="row" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_iter_at_row" invoker="get_iter_at_row">
+        <return-value transfer-ownership="full">
+          <type name="ModelIter" c:type="ClutterModelIter*"/>
+        </return-value>
+        <parameters>
+          <parameter name="row" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="resort">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="func" transfer-ownership="none">
+            <type name="ModelSortFunc" c:type="ClutterModelSortFunc"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="set_types"
+              c:identifier="clutter_model_set_types"
+              doc="Sets the types of the columns inside a #ClutterModel.
+This function is meant primarily for #GObjects that inherit from
+#ClutterModel, and should only be used when contructing a #ClutterModel.
+It will not work after the initial creation of the #ClutterModel."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="n_columns" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="types"
+                     transfer-ownership="none"
+                     doc="an array of #GType types">
+            <array length="1" c:type="GType*">
+              <type name="GType"/>
+            </array>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_names"
+              c:identifier="clutter_model_set_names"
+              doc="Assigns a name to the columns of a #ClutterModel.
+This function is meant primarily for #GObjects that inherit from
+#ClutterModel, and should only be used when contructing a #ClutterModel.
+It will not work after the initial creation of the #ClutterModel."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="n_columns" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="names"
+                     transfer-ownership="none"
+                     doc="an array of strings">
+            <array length="1" c:type="gchar*">
+              <type name="int8"/>
+            </array>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="append"
+              c:identifier="clutter_model_append"
+              doc="Creates and appends a new row to the #ClutterModel, setting the
+row values upon creation. For example, to append a new row where
+column 0 is type %G_TYPE_INT and column 1 is of type %G_TYPE_STRING:
+&lt;informalexample&gt;&lt;programlisting&gt;
+ClutterModel *model;
+model = clutter_model_default_new (2,
+G_TYPE_INT,    &quot;Score&quot;,
+G_TYPE_STRING, &quot;Team&quot;);
+clutter_model_append (model, 0, 42, 1, &quot;Team #1&quot;, -1);
+&lt;/programlisting&gt;&lt;/informalexample&gt;"
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="appendv"
+              c:identifier="clutter_model_appendv"
+              doc="Creates and appends a new row to the #ClutterModel, setting the row
+values for the given @columns upon creation."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="n_columns" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="columns"
+                     transfer-ownership="none"
+                     doc="a vector with the columns to set">
+            <array length="1" c:type="guint*">
+              <type name="uint"/>
+            </array>
+          </parameter>
+          <parameter name="values"
+                     transfer-ownership="none"
+                     doc="a vector with the values">
+            <array length="1" c:type="GValue*">
+              <type name="GObject.Value"/>
+            </array>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="prepend"
+              c:identifier="clutter_model_prepend"
+              doc="Creates and prepends a new row to the #ClutterModel, setting the row
+values upon creation. For example, to prepend a new row where column 0
+is type %G_TYPE_INT and column 1 is of type %G_TYPE_STRING:
+&lt;informalexample&gt;&lt;programlisting&gt;
+ClutterModel *model;
+model = clutter_model_default_new (2,
+G_TYPE_INT,    &quot;Score&quot;,
+G_TYPE_STRING, &quot;Team&quot;);
+clutter_model_prepend (model, 0, 42, 1, &quot;Team #1&quot;, -1);
+&lt;/programlisting&gt;&lt;/informalexample&gt;"
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="prependv"
+              c:identifier="clutter_model_prependv"
+              doc="Creates and prepends a new row to the #ClutterModel, setting the row
+values for the given @columns upon creation."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="n_columns" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="columns"
+                     transfer-ownership="none"
+                     doc="a vector containing the columns to set">
+            <array length="1" c:type="guint*">
+              <type name="uint"/>
+            </array>
+          </parameter>
+          <parameter name="values"
+                     transfer-ownership="none"
+                     doc="a vector containing the values for the cells">
+            <array length="1" c:type="GValue*">
+              <type name="GObject.Value"/>
+            </array>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="insert"
+              c:identifier="clutter_model_insert"
+              doc="Inserts a new row to the #ClutterModel at @row, setting the row
+values upon creation. For example, to insert a new row at index 100,
+where column 0 is type %G_TYPE_INT and column 1 is of type
+%G_TYPE_STRING:
+&lt;informalexample&gt;&lt;programlisting&gt;
+ClutterModel *model;
+model = clutter_model_default_new (2,
+G_TYPE_INT,    &quot;Score&quot;,
+G_TYPE_STRING, &quot;Team&quot;);
+clutter_model_insert (model, 3, 0, 42, 1, &quot;Team #1&quot;, -1);
+&lt;/programlisting&gt;&lt;/informalexample&gt;"
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="row" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="insertv"
+              c:identifier="clutter_model_insertv"
+              doc="Inserts data at @row into the #ClutterModel, setting the row
+values for the given @columns upon creation."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="row" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="n_columns" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="columns"
+                     transfer-ownership="none"
+                     doc="a vector containing the columns to set">
+            <array length="2" c:type="guint*">
+              <type name="uint"/>
+            </array>
+          </parameter>
+          <parameter name="values"
+                     transfer-ownership="none"
+                     doc="a vector containing the values for the cells">
+            <array length="2" c:type="GValue*">
+              <type name="GObject.Value"/>
+            </array>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="insert_value"
+              c:identifier="clutter_model_insert_value"
+              doc="Sets the data in the cell specified by @iter and @column. The type of
+not exist then it is created."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="row" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="column" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove"
+              c:identifier="clutter_model_remove"
+              doc="Removes the row at the given position from the model."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="row" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_n_rows"
+              c:identifier="clutter_model_get_n_rows"
+              doc="Retrieves the number of rows inside @model, eventually taking
+into account any filtering function set using clutter_model_set_filter().
+the length of the filtered @model is returned."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="get_n_columns"
+              c:identifier="clutter_model_get_n_columns"
+              doc="Retrieves the number of columns inside @model."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="get_column_name"
+              c:identifier="clutter_model_get_column_name"
+              doc="Retrieves the name of the @column
+string, and it should not be modified or freed"
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="column" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_column_type"
+              c:identifier="clutter_model_get_column_type"
+              doc="Retrieves the type of the @column."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="GType" c:type="GType"/>
+        </return-value>
+        <parameters>
+          <parameter name="column" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_first_iter"
+              c:identifier="clutter_model_get_first_iter"
+              doc="Retrieves a #ClutterModelIter representing the first non-filtered
+row in @model.
+Call g_object_unref() when done using it"
+              version="0.6">
+        <return-value transfer-ownership="full" doc="A new #ClutterModelIter.">
+          <type name="ModelIter" c:type="ClutterModelIter*"/>
+        </return-value>
+      </method>
+      <method name="get_last_iter"
+              c:identifier="clutter_model_get_last_iter"
+              doc="Retrieves a #ClutterModelIter representing the last non-filtered
+row in @model.
+Call g_object_unref() when done using it"
+              version="0.6">
+        <return-value transfer-ownership="full" doc="A new #ClutterModelIter.">
+          <type name="ModelIter" c:type="ClutterModelIter*"/>
+        </return-value>
+      </method>
+      <method name="get_iter_at_row"
+              c:identifier="clutter_model_get_iter_at_row"
+              doc="Retrieves a #ClutterModelIter representing the row at the given index.
+If a filter function has been set using clutter_model_set_filter()
+then the @model implementation will return the first non filtered
+row.
+out of bounds. When done using the iterator object, call g_object_unref()
+to deallocate its resources"
+              version="0.6">
+        <return-value transfer-ownership="full"
+                      doc="A new #ClutterModelIter, or %NULL if @row was">
+          <type name="ModelIter" c:type="ClutterModelIter*"/>
+        </return-value>
+        <parameters>
+          <parameter name="row" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_sorting_column"
+              c:identifier="clutter_model_set_sorting_column"
+              doc="Sets the model to sort by @column. If @column is a negative value
+the sorting column will be unset."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="column" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_sorting_column"
+              c:identifier="clutter_model_get_sorting_column"
+              doc="Retrieves the number of column used for sorting the @model."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="foreach"
+              c:identifier="clutter_model_foreach"
+              doc="Calls @func for each row in the model."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="2">
+            <type name="ModelForeachFunc" c:type="ClutterModelForeachFunc"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_sort"
+              c:identifier="clutter_model_set_sort"
+              doc="Sorts @model using the given sorting function."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="column" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     scope="notified"
+                     closure="3"
+                     destroy="4">
+            <type name="ModelSortFunc" c:type="ClutterModelSortFunc"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+          <parameter name="notify" transfer-ownership="none" scope="call">
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_filter"
+              c:identifier="clutter_model_set_filter"
+              doc="Filters the @model using the given filtering function."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     scope="notified"
+                     closure="2"
+                     destroy="3">
+            <type name="ModelFilterFunc" c:type="ClutterModelFilterFunc"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+          <parameter name="notify" transfer-ownership="none" scope="call">
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_filter_set"
+              c:identifier="clutter_model_get_filter_set"
+              doc="Returns whether the @model has a filter in place, set
+using clutter_model_set_filter()"
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="resort"
+              c:identifier="clutter_model_resort"
+              doc="Force a resort on the @model. This function should only be
+used by subclasses of #ClutterModel."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="filter_row"
+              c:identifier="clutter_model_filter_row"
+              doc="Checks whether @row should be filtered or not using the
+filtering function set on @model.
+This function should be used only by subclasses of #ClutterModel.
+%FALSE otherwise"
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="row" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="filter_iter"
+              c:identifier="clutter_model_filter_iter"
+              doc="Checks whether the row pointer by @iter should be filtered or not using
+the filtering function set on @model.
+This function should be used only by subclasses of #ClutterModel.
+%FALSE otherwise"
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <type name="ModelIter" c:type="ClutterModelIter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="filter-set"
+                version="1.0"
+                doc="Whether the #ClutterModel has a filter set
+This property is set to %TRUE if a filter function has been
+set using clutter_model_set_filter()">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <field name="parent_instance">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="priv">
+        <type name="ModelPrivate" c:type="ClutterModelPrivate*"/>
+      </field>
+      <glib:signal name="filter-changed"
+                   doc="The ::filter-changed signal is emitted when a new filter has been applied"
+                   version="0.6">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="row-added"
+                   doc="The ::row-added signal is emitted when a new row has been added.
+The data on the row has already been set when the ::row-added signal
+has been emitted."
+                   version="0.6">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <type name="ModelIter" c:type="ClutterModelIter"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="row-changed"
+                   doc="The ::row-removed signal is emitted when a row has been changed.
+The data on the row has already been updated when the ::row-changed
+signal has been emitted."
+                   version="0.6">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <type name="ModelIter" c:type="ClutterModelIter"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="row-removed"
+                   doc="The ::row-removed signal is emitted when a row has been removed.
+The data on the row pointed by the passed iterator is still valid
+when the ::row-removed signal has been emitted."
+                   version="0.6">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <type name="ModelIter" c:type="ClutterModelIter"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="sort-changed"
+                   doc="The ::sort-changed signal is emitted after the model has been sorted"
+                   version="0.6">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+    </class>
+    <record name="ModelClass"
+            c:type="ClutterModelClass"
+            glib:is-gtype-struct-for="Model"
+            doc="Class for #ClutterModel instances."
+            version="0.6">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="get_n_rows">
+        <callback name="get_n_rows" c:type="get_n_rows">
+          <return-value transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </return-value>
+          <parameters>
+            <parameter name="model" transfer-ownership="none">
+              <type name="Model" c:type="ClutterModel*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_n_columns">
+        <callback name="get_n_columns" c:type="get_n_columns">
+          <return-value transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </return-value>
+          <parameters>
+            <parameter name="model" transfer-ownership="none">
+              <type name="Model" c:type="ClutterModel*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_column_name">
+        <callback name="get_column_name" c:type="get_column_name">
+          <return-value transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </return-value>
+          <parameters>
+            <parameter name="model" transfer-ownership="none">
+              <type name="Model" c:type="ClutterModel*"/>
+            </parameter>
+            <parameter name="column" transfer-ownership="none">
+              <type name="uint" c:type="guint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_column_type">
+        <callback name="get_column_type" c:type="get_column_type">
+          <return-value transfer-ownership="none">
+            <type name="GType" c:type="GType"/>
+          </return-value>
+          <parameters>
+            <parameter name="model" transfer-ownership="none">
+              <type name="Model" c:type="ClutterModel*"/>
+            </parameter>
+            <parameter name="column" transfer-ownership="none">
+              <type name="uint" c:type="guint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="insert_row">
+        <callback name="insert_row" c:type="insert_row">
+          <return-value transfer-ownership="full">
+            <type name="ModelIter" c:type="ClutterModelIter*"/>
+          </return-value>
+          <parameters>
+            <parameter name="model" transfer-ownership="none">
+              <type name="Model" c:type="ClutterModel*"/>
+            </parameter>
+            <parameter name="index_" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="remove_row">
+        <callback name="remove_row" c:type="remove_row">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="model" transfer-ownership="none">
+              <type name="Model" c:type="ClutterModel*"/>
+            </parameter>
+            <parameter name="row" transfer-ownership="none">
+              <type name="uint" c:type="guint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_iter_at_row">
+        <callback name="get_iter_at_row" c:type="get_iter_at_row">
+          <return-value transfer-ownership="full">
+            <type name="ModelIter" c:type="ClutterModelIter*"/>
+          </return-value>
+          <parameters>
+            <parameter name="model" transfer-ownership="none">
+              <type name="Model" c:type="ClutterModel*"/>
+            </parameter>
+            <parameter name="row" transfer-ownership="none">
+              <type name="uint" c:type="guint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="resort">
+        <callback name="resort" c:type="resort">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="model" transfer-ownership="none">
+              <type name="Model" c:type="ClutterModel*"/>
+            </parameter>
+            <parameter name="func" transfer-ownership="none">
+              <type name="ModelSortFunc" c:type="ClutterModelSortFunc"/>
+            </parameter>
+            <parameter name="data" transfer-ownership="none">
+              <type name="any" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="row_added">
+        <callback name="row_added" c:type="row_added">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="model" transfer-ownership="none">
+              <type name="Model" c:type="ClutterModel*"/>
+            </parameter>
+            <parameter name="iter" transfer-ownership="none">
+              <type name="ModelIter" c:type="ClutterModelIter*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="row_removed">
+        <callback name="row_removed" c:type="row_removed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="model" transfer-ownership="none">
+              <type name="Model" c:type="ClutterModel*"/>
+            </parameter>
+            <parameter name="iter" transfer-ownership="none">
+              <type name="ModelIter" c:type="ClutterModelIter*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="row_changed">
+        <callback name="row_changed" c:type="row_changed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="model" transfer-ownership="none">
+              <type name="Model" c:type="ClutterModel*"/>
+            </parameter>
+            <parameter name="iter" transfer-ownership="none">
+              <type name="ModelIter" c:type="ClutterModelIter*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="sort_changed">
+        <callback name="sort_changed" c:type="sort_changed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="model" transfer-ownership="none">
+              <type name="Model" c:type="ClutterModel*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="filter_changed">
+        <callback name="filter_changed" c:type="filter_changed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="model" transfer-ownership="none">
+              <type name="Model" c:type="ClutterModel*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="clutter_model_1">
+        <callback name="clutter_model_1" c:type="_clutter_model_1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_model_2">
+        <callback name="clutter_model_2" c:type="_clutter_model_2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_model_3">
+        <callback name="clutter_model_3" c:type="_clutter_model_3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_model_4">
+        <callback name="clutter_model_4" c:type="_clutter_model_4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_model_5">
+        <callback name="clutter_model_5" c:type="_clutter_model_5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_model_6">
+        <callback name="clutter_model_6" c:type="_clutter_model_6">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_model_7">
+        <callback name="clutter_model_7" c:type="_clutter_model_7">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_model_8">
+        <callback name="clutter_model_8" c:type="_clutter_model_8">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <callback name="ModelFilterFunc"
+              c:type="ClutterModelFilterFunc"
+              doc="Filters the content of a row in the model."
+              version="0.6">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="model" transfer-ownership="none">
+          <type name="Model" c:type="ClutterModel*"/>
+        </parameter>
+        <parameter name="iter" transfer-ownership="none">
+          <type name="ModelIter" c:type="ClutterModelIter*"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="2">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="ModelForeachFunc"
+              c:type="ClutterModelForeachFunc"
+              doc="Iterates on the content of a row in the model"
+              version="0.6">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="model" transfer-ownership="none">
+          <type name="Model" c:type="ClutterModel*"/>
+        </parameter>
+        <parameter name="iter" transfer-ownership="none">
+          <type name="ModelIter" c:type="ClutterModelIter*"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="2">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <class name="ModelIter"
+           c:type="ClutterModelIter"
+           doc="Base class for list models iters. The #ClutterModelIter structure
+contains only private data and should be manipulated using the
+provided API."
+           version="0.6"
+           parent="GObject.Object"
+           abstract="1"
+           glib:type-name="ClutterModelIter"
+           glib:get-type="clutter_model_iter_get_type"
+           glib:type-struct="ModelIterClass">
+      <virtual-method name="get_value" invoker="get_value">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="column" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="set_value" invoker="set_value">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="column" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="is_first" invoker="is_first">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="is_last" invoker="is_last">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="next" invoker="next">
+        <return-value transfer-ownership="full">
+          <type name="ModelIter" c:type="ClutterModelIter*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="prev" invoker="prev">
+        <return-value transfer-ownership="full">
+          <type name="ModelIter" c:type="ClutterModelIter*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_model" invoker="get_model">
+        <return-value transfer-ownership="full">
+          <type name="Model" c:type="ClutterModel*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_row" invoker="get_row">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="copy" invoker="copy">
+        <return-value transfer-ownership="full">
+          <type name="ModelIter" c:type="ClutterModelIter*"/>
+        </return-value>
+      </virtual-method>
+      <method name="get"
+              c:identifier="clutter_model_iter_get"
+              doc="Gets the value of one or more cells in the row referenced by @iter. The
+variable argument list should contain integer column numbers, each column
+column number followed by a place to store the value being retrieved. The
+list is terminated by a -1.
+For example, to get a value from column 0 with type %G_TYPE_STRING use:
+&lt;informalexample&gt;&lt;programlisting&gt;
+clutter_model_iter_get (iter, 0, &amp;place_string_here, -1);
+&lt;/programlisting&gt;&lt;/informalexample&gt;
+where place_string_here is a gchar* to be filled with the string. If
+appropriate, the returned values have to be freed or unreferenced."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_value"
+              c:identifier="clutter_model_iter_get_value"
+              doc="Sets an initializes @value to that at @column. When done with @value,
+g_value_unset() needs to be called to free any allocated memory."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="column" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set"
+              c:identifier="clutter_model_iter_set"
+              doc="Sets the value of one or more cells in the row referenced by @iter. The
+variable argument list should contain integer column numbers, each column
+column number followed by the value to be set. The  list is terminated by a
+-1.
+For example, to set column 0 with type %G_TYPE_STRING, use:
+&lt;informalexample&gt;&lt;programlisting&gt;
+clutter_model_iter_set (iter, 0, &quot;foo&quot;, -1);
+&lt;/programlisting&gt;&lt;/informalexample&gt;"
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_value"
+              c:identifier="clutter_model_iter_set_value"
+              doc="Sets the data in the cell specified by @iter and @column. The type of"
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="column" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="is_first"
+              c:identifier="clutter_model_iter_is_first"
+              doc="Gets whether the current iterator is at the beginning of the model
+to which it belongs."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="is_last"
+              c:identifier="clutter_model_iter_is_last"
+              doc="Gets whether the iterator is at the end of the model to which it
+belongs."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="next"
+              c:identifier="clutter_model_iter_next"
+              doc="Updates the @iter to point at the next position in the model.
+The model implementation should take into account the presence of
+a filter function.
+row in the model."
+              version="0.6">
+        <return-value transfer-ownership="none"
+                      doc="The passed iterator, updated to point at the next">
+          <type name="ModelIter" c:type="ClutterModelIter*"/>
+        </return-value>
+      </method>
+      <method name="prev"
+              c:identifier="clutter_model_iter_prev"
+              doc="Sets the @iter to point at the previous position in the model.
+The model implementation should take into account the presence of
+a filter function.
+row in the model."
+              version="0.6">
+        <return-value transfer-ownership="none"
+                      doc="The passed iterator, updated to point at the previous">
+          <type name="ModelIter" c:type="ClutterModelIter*"/>
+        </return-value>
+      </method>
+      <method name="get_model"
+              c:identifier="clutter_model_iter_get_model"
+              doc="Retrieves a pointer to the #ClutterModel that this iter is part of."
+              version="0.6">
+        <return-value transfer-ownership="none"
+                      doc="a pointer to a #ClutterModel.">
+          <type name="Model" c:type="ClutterModel*"/>
+        </return-value>
+      </method>
+      <method name="get_row"
+              c:identifier="clutter_model_iter_get_row"
+              doc="Retrieves the position of the row that the @iter points to."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="copy"
+              c:identifier="clutter_model_iter_copy"
+              doc="Copies the passed iterator."
+              version="0.8">
+        <return-value transfer-ownership="full">
+          <type name="ModelIter" c:type="ClutterModelIter*"/>
+        </return-value>
+      </method>
+      <property name="model"
+                version="0.6"
+                writable="1"
+                doc="A reference to the #ClutterModel that this iter belongs to.">
+        <type name="Model" c:type="ClutterModel"/>
+      </property>
+      <property name="row"
+                version="0.6"
+                writable="1"
+                doc="The row number to which this iter points to.">
+        <type name="uint" c:type="guint"/>
+      </property>
+      <field name="parent_instance">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="priv">
+        <type name="ModelIterPrivate" c:type="ClutterModelIterPrivate*"/>
+      </field>
+    </class>
+    <record name="ModelIterClass"
+            c:type="ClutterModelIterClass"
+            glib:is-gtype-struct-for="ModelIter"
+            doc="Class for #ClutterModelIter instances."
+            version="0.6">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="get_value">
+        <callback name="get_value" c:type="get_value">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="iter" transfer-ownership="none">
+              <type name="ModelIter" c:type="ClutterModelIter*"/>
+            </parameter>
+            <parameter name="column" transfer-ownership="none">
+              <type name="uint" c:type="guint"/>
+            </parameter>
+            <parameter name="value" transfer-ownership="none">
+              <type name="GObject.Value" c:type="GValue*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_value">
+        <callback name="set_value" c:type="set_value">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="iter" transfer-ownership="none">
+              <type name="ModelIter" c:type="ClutterModelIter*"/>
+            </parameter>
+            <parameter name="column" transfer-ownership="none">
+              <type name="uint" c:type="guint"/>
+            </parameter>
+            <parameter name="value" transfer-ownership="none">
+              <type name="GObject.Value" c:type="GValue*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="is_first">
+        <callback name="is_first" c:type="is_first">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="iter" transfer-ownership="none">
+              <type name="ModelIter" c:type="ClutterModelIter*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="is_last">
+        <callback name="is_last" c:type="is_last">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="iter" transfer-ownership="none">
+              <type name="ModelIter" c:type="ClutterModelIter*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="next">
+        <callback name="next" c:type="next">
+          <return-value transfer-ownership="full">
+            <type name="ModelIter" c:type="ClutterModelIter*"/>
+          </return-value>
+          <parameters>
+            <parameter name="iter" transfer-ownership="none">
+              <type name="ModelIter" c:type="ClutterModelIter*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="prev">
+        <callback name="prev" c:type="prev">
+          <return-value transfer-ownership="full">
+            <type name="ModelIter" c:type="ClutterModelIter*"/>
+          </return-value>
+          <parameters>
+            <parameter name="iter" transfer-ownership="none">
+              <type name="ModelIter" c:type="ClutterModelIter*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_model">
+        <callback name="get_model" c:type="get_model">
+          <return-value transfer-ownership="full">
+            <type name="Model" c:type="ClutterModel*"/>
+          </return-value>
+          <parameters>
+            <parameter name="iter" transfer-ownership="none">
+              <type name="ModelIter" c:type="ClutterModelIter*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_row">
+        <callback name="get_row" c:type="get_row">
+          <return-value transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </return-value>
+          <parameters>
+            <parameter name="iter" transfer-ownership="none">
+              <type name="ModelIter" c:type="ClutterModelIter*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="copy">
+        <callback name="copy" c:type="copy">
+          <return-value transfer-ownership="full">
+            <type name="ModelIter" c:type="ClutterModelIter*"/>
+          </return-value>
+          <parameters>
+            <parameter name="iter" transfer-ownership="none">
+              <type name="ModelIter" c:type="ClutterModelIter*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="clutter_model_iter_1">
+        <callback name="clutter_model_iter_1" c:type="_clutter_model_iter_1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_model_iter_2">
+        <callback name="clutter_model_iter_2" c:type="_clutter_model_iter_2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_model_iter_3">
+        <callback name="clutter_model_iter_3" c:type="_clutter_model_iter_3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_model_iter_4">
+        <callback name="clutter_model_iter_4" c:type="_clutter_model_iter_4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_model_iter_5">
+        <callback name="clutter_model_iter_5" c:type="_clutter_model_iter_5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_model_iter_6">
+        <callback name="clutter_model_iter_6" c:type="_clutter_model_iter_6">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_model_iter_7">
+        <callback name="clutter_model_iter_7" c:type="_clutter_model_iter_7">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_model_iter_8">
+        <callback name="clutter_model_iter_8" c:type="_clutter_model_iter_8">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="ModelIterPrivate" c:type="ClutterModelIterPrivate">
+    </record>
+    <record name="ModelPrivate" c:type="ClutterModelPrivate">
+    </record>
+    <callback name="ModelSortFunc"
+              c:type="ClutterModelSortFunc"
+              doc="Compares the content of two rows in the model."
+              version="0.6">
+      <return-value transfer-ownership="none">
+        <type name="int" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="model" transfer-ownership="none">
+          <type name="Model" c:type="ClutterModel*"/>
+        </parameter>
+        <parameter name="a" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="b" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="3">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <bitfield name="ModifierType"
+              doc="Masks applied to a #ClutterEvent by modifiers."
+              version="0.4"
+              glib:type-name="ClutterModifierType"
+              glib:get-type="clutter_modifier_type_get_type"
+              c:type="ClutterModifierType">
+      <member name="shift_mask"
+              value="1"
+              c:identifier="CLUTTER_SHIFT_MASK"
+              glib:nick="shift-mask"/>
+      <member name="lock_mask"
+              value="2"
+              c:identifier="CLUTTER_LOCK_MASK"
+              glib:nick="lock-mask"/>
+      <member name="control_mask"
+              value="4"
+              c:identifier="CLUTTER_CONTROL_MASK"
+              glib:nick="control-mask"/>
+      <member name="mod1_mask"
+              value="8"
+              c:identifier="CLUTTER_MOD1_MASK"
+              glib:nick="mod1-mask"/>
+      <member name="mod2_mask"
+              value="16"
+              c:identifier="CLUTTER_MOD2_MASK"
+              glib:nick="mod2-mask"/>
+      <member name="mod3_mask"
+              value="32"
+              c:identifier="CLUTTER_MOD3_MASK"
+              glib:nick="mod3-mask"/>
+      <member name="mod4_mask"
+              value="64"
+              c:identifier="CLUTTER_MOD4_MASK"
+              glib:nick="mod4-mask"/>
+      <member name="mod5_mask"
+              value="128"
+              c:identifier="CLUTTER_MOD5_MASK"
+              glib:nick="mod5-mask"/>
+      <member name="button1_mask"
+              value="256"
+              c:identifier="CLUTTER_BUTTON1_MASK"
+              glib:nick="button1-mask"/>
+      <member name="button2_mask"
+              value="512"
+              c:identifier="CLUTTER_BUTTON2_MASK"
+              glib:nick="button2-mask"/>
+      <member name="button3_mask"
+              value="1024"
+              c:identifier="CLUTTER_BUTTON3_MASK"
+              glib:nick="button3-mask"/>
+      <member name="button4_mask"
+              value="2048"
+              c:identifier="CLUTTER_BUTTON4_MASK"
+              glib:nick="button4-mask"/>
+      <member name="button5_mask"
+              value="4096"
+              c:identifier="CLUTTER_BUTTON5_MASK"
+              glib:nick="button5-mask"/>
+      <member name="super_mask"
+              value="67108864"
+              c:identifier="CLUTTER_SUPER_MASK"
+              glib:nick="super-mask"/>
+      <member name="hyper_mask"
+              value="134217728"
+              c:identifier="CLUTTER_HYPER_MASK"
+              glib:nick="hyper-mask"/>
+      <member name="meta_mask"
+              value="268435456"
+              c:identifier="CLUTTER_META_MASK"
+              glib:nick="meta-mask"/>
+      <member name="release_mask"
+              value="1073741824"
+              c:identifier="CLUTTER_RELEASE_MASK"
+              glib:nick="release-mask"/>
+      <member name="modifier_mask"
+              value="1543512063"
+              c:identifier="CLUTTER_MODIFIER_MASK"
+              glib:nick="modifier-mask"/>
+    </bitfield>
+    <record name="MotionEvent"
+            c:type="ClutterMotionEvent"
+            doc="Event for the pointer motion"
+            version="0.2">
+      <field name="type" writable="1">
+        <type name="EventType" c:type="ClutterEventType"/>
+      </field>
+      <field name="time" writable="1">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+      <field name="flags" writable="1">
+        <type name="EventFlags" c:type="ClutterEventFlags"/>
+      </field>
+      <field name="stage" writable="1">
+        <type name="Stage" c:type="ClutterStage*"/>
+      </field>
+      <field name="source" writable="1">
+        <type name="Actor" c:type="ClutterActor*"/>
+      </field>
+      <field name="x" writable="1">
+        <type name="float" c:type="gfloat"/>
+      </field>
+      <field name="y" writable="1">
+        <type name="float" c:type="gfloat"/>
+      </field>
+      <field name="modifier_state" writable="1">
+        <type name="ModifierType" c:type="ClutterModifierType"/>
+      </field>
+      <field name="axes" writable="1">
+        <type name="any" c:type="gdouble*"/>
+      </field>
+      <field name="device" writable="1">
+        <type name="InputDevice" c:type="ClutterInputDevice*"/>
+      </field>
+    </record>
+    <constant name="MouseKeys_Accel_Enable" value="65143">
+      <type name="int"/>
+    </constant>
+    <constant name="MouseKeys_Enable" value="65142">
+      <type name="int"/>
+    </constant>
+    <constant name="Muhenkan" value="65314">
+      <type name="int"/>
+    </constant>
+    <constant name="Multi_key" value="65312">
+      <type name="int"/>
+    </constant>
+    <constant name="MultipleCandidate" value="65341">
+      <type name="int"/>
+    </constant>
+    <constant name="N" value="78">
+      <type name="int"/>
+    </constant>
+    <constant name="Nacute" value="465">
+      <type name="int"/>
+    </constant>
+    <constant name="NairaSign" value="16785574">
+      <type name="int"/>
+    </constant>
+    <constant name="Ncaron" value="466">
+      <type name="int"/>
+    </constant>
+    <constant name="Ncedilla" value="977">
+      <type name="int"/>
+    </constant>
+    <constant name="NewSheqelSign" value="16785578">
+      <type name="int"/>
+    </constant>
+    <constant name="Next" value="65366">
+      <type name="int"/>
+    </constant>
+    <constant name="Next_Virtual_Screen" value="65234">
+      <type name="int"/>
+    </constant>
+    <constant name="Ntilde" value="209">
+      <type name="int"/>
+    </constant>
+    <constant name="Num_Lock" value="65407">
+      <type name="int"/>
+    </constant>
+    <constant name="O" value="79">
+      <type name="int"/>
+    </constant>
+    <constant name="OE" value="5052">
+      <type name="int"/>
+    </constant>
+    <constant name="Oacute" value="211">
+      <type name="int"/>
+    </constant>
+    <constant name="Obarred" value="16777631">
+      <type name="int"/>
+    </constant>
+    <constant name="Obelowdot" value="16785100">
+      <type name="int"/>
+    </constant>
+    <constant name="Ocaron" value="16777681">
+      <type name="int"/>
+    </constant>
+    <constant name="Ocircumflex" value="212">
+      <type name="int"/>
+    </constant>
+    <constant name="Ocircumflexacute" value="16785104">
+      <type name="int"/>
+    </constant>
+    <constant name="Ocircumflexbelowdot" value="16785112">
+      <type name="int"/>
+    </constant>
+    <constant name="Ocircumflexgrave" value="16785106">
+      <type name="int"/>
+    </constant>
+    <constant name="Ocircumflexhook" value="16785108">
+      <type name="int"/>
+    </constant>
+    <constant name="Ocircumflextilde" value="16785110">
+      <type name="int"/>
+    </constant>
+    <constant name="Odiaeresis" value="214">
+      <type name="int"/>
+    </constant>
+    <constant name="Odoubleacute" value="469">
+      <type name="int"/>
+    </constant>
+    <constant name="Ograve" value="210">
+      <type name="int"/>
+    </constant>
+    <constant name="Ohook" value="16785102">
+      <type name="int"/>
+    </constant>
+    <constant name="Ohorn" value="16777632">
+      <type name="int"/>
+    </constant>
+    <constant name="Ohornacute" value="16785114">
+      <type name="int"/>
+    </constant>
+    <constant name="Ohornbelowdot" value="16785122">
+      <type name="int"/>
+    </constant>
+    <constant name="Ohorngrave" value="16785116">
+      <type name="int"/>
+    </constant>
+    <constant name="Ohornhook" value="16785118">
+      <type name="int"/>
+    </constant>
+    <constant name="Ohorntilde" value="16785120">
+      <type name="int"/>
+    </constant>
+    <constant name="Omacron" value="978">
+      <type name="int"/>
+    </constant>
+    <constant name="Ooblique" value="216">
+      <type name="int"/>
+    </constant>
+    <constant name="Oslash" value="216">
+      <type name="int"/>
+    </constant>
+    <constant name="Otilde" value="213">
+      <type name="int"/>
+    </constant>
+    <constant name="Overlay1_Enable" value="65144">
+      <type name="int"/>
+    </constant>
+    <constant name="Overlay2_Enable" value="65145">
+      <type name="int"/>
+    </constant>
+    <constant name="P" value="80">
+      <type name="int"/>
+    </constant>
+    <constant name="PATH_RELATIVE" value="32">
+      <type name="int"/>
+    </constant>
+    <constant name="PRIORITY_REDRAW" value="50">
+      <type name="int"/>
+    </constant>
+    <constant name="Pabovedot" value="16784982">
+      <type name="int"/>
+    </constant>
+    <constant name="Page_Down" value="65366">
+      <type name="int"/>
+    </constant>
+    <constant name="Page_Up" value="65365">
+      <type name="int"/>
+    </constant>
+    <record name="ParamSpecColor"
+            c:type="ClutterParamSpecColor"
+            doc="A #GParamSpec subclass for defining properties holding
+a #ClutterColor."
+            version="1.0">
+      <field name="parent_instance" writable="1">
+        <type name="GObject.ParamSpec" c:type="GParamSpec"/>
+      </field>
+      <field name="default_value" writable="1">
+        <type name="Color" c:type="ClutterColor*"/>
+      </field>
+    </record>
+    <record name="ParamSpecFixed" c:type="ClutterParamSpecFixed">
+      <field name="parent_instance" writable="1">
+        <type name="GObject.ParamSpec" c:type="GParamSpec"/>
+      </field>
+      <field name="minimum" writable="1">
+        <type name="Cogl.Fixed" c:type="CoglFixed"/>
+      </field>
+      <field name="maximum" writable="1">
+        <type name="Cogl.Fixed" c:type="CoglFixed"/>
+      </field>
+      <field name="default_value" writable="1">
+        <type name="Cogl.Fixed" c:type="CoglFixed"/>
+      </field>
+    </record>
+    <record name="ParamSpecUnits"
+            c:type="ClutterParamSpecUnits"
+            doc="#GParamSpec subclass for unit based properties."
+            version="1.0">
+      <field name="parent_instance" writable="1">
+        <type name="GObject.ParamSpec" c:type="GParamSpec"/>
+      </field>
+      <field name="default_type" writable="1">
+        <type name="UnitType" c:type="ClutterUnitType"/>
+      </field>
+      <field name="default_value" writable="1">
+        <type name="float" c:type="gfloat"/>
+      </field>
+      <field name="minimum" writable="1">
+        <type name="float" c:type="gfloat"/>
+      </field>
+      <field name="maximum" writable="1">
+        <type name="float" c:type="gfloat"/>
+      </field>
+    </record>
+    <class name="Path"
+           c:type="ClutterPath"
+           doc="The #ClutterPath struct contains only private data and should
+be accessed with the functions below."
+           version="1.0"
+           parent="GObject.InitiallyUnowned"
+           glib:type-name="ClutterPath"
+           glib:get-type="clutter_path_get_type"
+           glib:type-struct="PathClass">
+      <constructor name="new"
+                   c:identifier="clutter_path_new"
+                   doc="Creates a new #ClutterPath instance with no nodes.
+The object has a floating reference so if you add it to a
+#ClutterBehaviourPath then you do not need to unref it."
+                   version="1.0">
+        <return-value transfer-ownership="full">
+          <type name="Path" c:type="ClutterPath*"/>
+        </return-value>
+      </constructor>
+      <constructor name="new_with_description"
+                   c:identifier="clutter_path_new_with_description"
+                   doc="Creates a new #ClutterPath instance with the nodes described in
+the string.
+The object has a floating reference so if you add it to a
+#ClutterBehaviourPath then you do not need to unref it."
+                   version="1.0">
+        <return-value transfer-ownership="full">
+          <type name="Path" c:type="ClutterPath*"/>
+        </return-value>
+        <parameters>
+          <parameter name="desc" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="add_move_to"
+              c:identifier="clutter_path_add_move_to"
+              doc="Adds a %CLUTTER_PATH_MOVE_TO type node to the path. This is usually
+used as the first node in a path. It can also be used in the middle
+of the path to cause the actor to jump to the new coordinate."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="x" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_rel_move_to"
+              c:identifier="clutter_path_add_rel_move_to"
+              doc="Same as clutter_path_add_move_to() except the coordinates are
+relative to the previous node."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="x" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_line_to"
+              c:identifier="clutter_path_add_line_to"
+              doc="Adds a %CLUTTER_PATH_LINE_TO type node to the path. This causes the
+actor to move to the new coordinates in a straight line."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="x" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_rel_line_to"
+              c:identifier="clutter_path_add_rel_line_to"
+              doc="Same as clutter_path_add_line_to() except the coordinates are
+relative to the previous node."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="x" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_curve_to"
+              c:identifier="clutter_path_add_curve_to"
+              doc="Adds a %CLUTTER_PATH_CURVE_TO type node to the path. This causes
+the actor to follow a bezier from the last node to (@x_3, @y_3) using
+(@x_1, @y_1) and (@x_2,@y_2) as control points."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="x_1" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="y_1" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="x_2" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="y_2" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="x_3" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="y_3" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_rel_curve_to"
+              c:identifier="clutter_path_add_rel_curve_to"
+              doc="Same as clutter_path_add_curve_to() except the coordinates are
+relative to the previous node."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="x_1" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="y_1" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="x_2" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="y_2" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="x_3" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="y_3" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_close"
+              c:identifier="clutter_path_add_close"
+              doc="Adds a %CLUTTER_PATH_CLOSE type node to the path. This creates a
+straight line from the last node to the last %CLUTTER_PATH_MOVE_TO
+type node."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="add_string"
+              c:identifier="clutter_path_add_string"
+              doc="Adds new nodes to the end of the path as described in @str. The
+format is a subset of the SVG path format. Each node is represented
+by a letter and is followed by zero, one or three pairs of
+coordinates. The coordinates can be separated by spaces or a
+comma. The types are:
+&lt;variablelist&gt;
+&lt;varlistentry&gt;&lt;term&gt;M&lt;/term&gt;
+&lt;listitem&gt;&lt;para&gt;
+Adds a %CLUTTER_PATH_MOVE_TO node. Takes one pair of coordinates.
+&lt;/para&gt;&lt;/listitem&gt;&lt;/varlistentry&gt;
+&lt;varlistentry&gt;&lt;term&gt;L&lt;/term&gt;
+&lt;listitem&gt;&lt;para&gt;
+Adds a %CLUTTER_PATH_LINE_TO node. Takes one pair of coordinates.
+&lt;/para&gt;&lt;/listitem&gt;&lt;/varlistentry&gt;
+&lt;varlistentry&gt;&lt;term&gt;C&lt;/term&gt;
+&lt;listitem&gt;&lt;para&gt;
+Adds a %CLUTTER_PATH_CURVE_TO node. Takes three pairs of coordinates.
+&lt;/para&gt;&lt;/listitem&gt;&lt;/varlistentry&gt;
+&lt;varlistentry&gt;&lt;term&gt;z&lt;/term&gt;
+&lt;listitem&gt;&lt;para&gt;
+Adds a %CLUTTER_PATH_CLOSE node. No coordinates are needed.
+&lt;/para&gt;&lt;/listitem&gt;&lt;/varlistentry&gt;
+&lt;/variablelist&gt;
+The M, L and C commands can also be specified in lower case which
+means the coordinates are relative to the previous node.
+For example, to move an actor in a 100 by 100 pixel square centered
+on the point 300,300 you could use the following path:
+&lt;informalexample&gt;
+&lt;programlisting&gt;
+M 250,350 l 0 -100 L 350,250 l 0 100 z
+&lt;/programlisting&gt;
+&lt;/informalexample&gt;
+If the path description isn&apos;t valid %FALSE will be returned and no
+nodes will be added.
+otherwise."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="str" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_node"
+              c:identifier="clutter_path_add_node"
+              doc="Adds @node to the end of the path."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="node" transfer-ownership="none">
+            <type name="PathNode" c:type="ClutterPathNode*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_cairo_path"
+              c:identifier="clutter_path_add_cairo_path"
+              doc="Add the nodes of the Cairo path to the end of @path."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="cpath" transfer-ownership="none">
+            <type name="cairo.Path" c:type="cairo_path_t*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_n_nodes"
+              c:identifier="clutter_path_get_n_nodes"
+              doc="Retrieves the number of nodes in the path."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="get_node"
+              c:identifier="clutter_path_get_node"
+              doc="Retrieves the node of the path indexed by @index."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="index_" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="node" transfer-ownership="none">
+            <type name="PathNode" c:type="ClutterPathNode*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_nodes"
+              c:identifier="clutter_path_get_nodes"
+              doc="Returns a #GSList of #ClutterPathNode&lt;!-- --&gt;s. The list should be
+freed with g_slist_free(). The nodes are owned by the path and
+should not be freed. Altering the path may cause the nodes in the
+list to become invalid so you should copy them if you want to keep
+the list."
+              version="1.0">
+        <return-value transfer-ownership="container"
+                      doc="a list of nodes in the path.">
+          <type name="GLib.SList" c:type="GSList*">
+            <type name="PathNode"/>
+          </type>
+        </return-value>
+      </method>
+      <method name="foreach"
+              c:identifier="clutter_path_foreach"
+              doc="Calls a function for each node of the path."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="2">
+            <type name="PathCallback" c:type="ClutterPathCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="insert_node"
+              c:identifier="clutter_path_insert_node"
+              doc="Inserts @node into the path before the node at the given offset. If"
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="index_" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="node" transfer-ownership="none">
+            <type name="PathNode" c:type="ClutterPathNode*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_node"
+              c:identifier="clutter_path_remove_node"
+              doc="Removes the node at the given offset from the path."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="index_" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="replace_node"
+              c:identifier="clutter_path_replace_node"
+              doc="Replaces the node at offset @index_ with @node."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="index_" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="node" transfer-ownership="none">
+            <type name="PathNode" c:type="ClutterPathNode*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_description"
+              c:identifier="clutter_path_get_description"
+              doc="Returns a newly allocated string describing the path in the same
+format as used by clutter_path_add_string()."
+              version="1.0">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="set_description"
+              c:identifier="clutter_path_set_description"
+              doc="Replaces all of the nodes in the path with nodes described by
+If the string is invalid then %FALSE is returned and the path is
+unaltered."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="str" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="clear"
+              c:identifier="clutter_path_clear"
+              doc="Removes all nodes from the path."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="to_cairo_path"
+              c:identifier="clutter_path_to_cairo_path"
+              doc="Add the nodes of the ClutterPath to the path in the Cairo context."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="cr" transfer-ownership="none">
+            <type name="cairo.Context" c:type="cairo_t*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_position"
+              c:identifier="clutter_path_get_position"
+              doc="The value in @progress represents a position along the path where
+0.0 is the beginning and 1.0 is the end of the path. An
+interpolated position is then stored in @position."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+        <parameters>
+          <parameter name="progress" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="position" transfer-ownership="none">
+            <type name="Knot" c:type="ClutterKnot*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_length"
+              c:identifier="clutter_path_get_length"
+              doc="Retrieves an approximation of the total length of the path."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </method>
+      <property name="description" writable="1">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <property name="length">
+        <type name="uint" c:type="guint"/>
+      </property>
+      <field name="parent">
+        <type name="GObject.InitiallyUnowned" c:type="GInitiallyUnowned"/>
+      </field>
+      <field name="priv">
+        <type name="PathPrivate" c:type="ClutterPathPrivate*"/>
+      </field>
+    </class>
+    <callback name="PathCallback"
+              c:type="ClutterPathCallback"
+              doc="This function is passed to clutter_path_foreach() and will be
+called for each node contained in the path."
+              version="1.0">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="node" transfer-ownership="none">
+          <type name="PathNode" c:type="ClutterPathNode*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <record name="PathClass"
+            c:type="ClutterPathClass"
+            glib:is-gtype-struct-for="Path"
+            doc="The #ClutterPathClass struct contains only private data."
+            version="1.0">
+      <field name="parent_class">
+        <type name="GObject.InitiallyUnownedClass"
+              c:type="GInitiallyUnownedClass"/>
+      </field>
+    </record>
+    <record name="PathNode"
+            c:type="ClutterPathNode"
+            doc="Represents a single node of a #ClutterPath.
+Some of the coordinates in @points may be unused for some node
+types. %CLUTTER_PATH_MOVE_TO and %CLUTTER_PATH_LINE_TO use only one
+pair of coordinates, %CLUTTER_PATH_CURVE_TO uses all three and
+%CLUTTER_PATH_CLOSE uses none."
+            version="1.0"
+            glib:type-name="ClutterPathNode"
+            glib:get-type="clutter_path_node_get_type">
+      <field name="type" writable="1">
+        <type name="PathNodeType" c:type="ClutterPathNodeType"/>
+      </field>
+      <field name="points" writable="1">
+        <array zero-terminated="0" c:type="ClutterKnot" fixed-size="3">
+          <type name="Knot"/>
+        </array>
+      </field>
+      <method name="copy"
+              c:identifier="clutter_path_node_copy"
+              doc="Makes an allocated copy of a node."
+              version="1.0">
+        <return-value transfer-ownership="full">
+          <type name="PathNode" c:type="ClutterPathNode*"/>
+        </return-value>
+      </method>
+      <method name="free"
+              c:identifier="clutter_path_node_free"
+              doc="Frees the memory of an allocated node."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="equal"
+              c:identifier="clutter_path_node_equal"
+              doc="Compares two nodes and checks if they are the same type with the
+same coordinates."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="node_b" transfer-ownership="none">
+            <type name="PathNode" c:type="ClutterPathNode*"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <enumeration name="PathNodeType"
+                 doc="Types of nodes in a #ClutterPath."
+                 version="1.0"
+                 glib:type-name="ClutterPathNodeType"
+                 glib:get-type="clutter_path_node_type_get_type"
+                 c:type="ClutterPathNodeType">
+      <member name="move_to"
+              value="0"
+              c:identifier="CLUTTER_PATH_MOVE_TO"
+              glib:nick="move-to"/>
+      <member name="line_to"
+              value="1"
+              c:identifier="CLUTTER_PATH_LINE_TO"
+              glib:nick="line-to"/>
+      <member name="curve_to"
+              value="2"
+              c:identifier="CLUTTER_PATH_CURVE_TO"
+              glib:nick="curve-to"/>
+      <member name="close"
+              value="3"
+              c:identifier="CLUTTER_PATH_CLOSE"
+              glib:nick="close"/>
+      <member name="rel_move_to"
+              value="32"
+              c:identifier="CLUTTER_PATH_REL_MOVE_TO"
+              glib:nick="rel-move-to"/>
+      <member name="rel_line_to"
+              value="33"
+              c:identifier="CLUTTER_PATH_REL_LINE_TO"
+              glib:nick="rel-line-to"/>
+      <member name="rel_curve_to"
+              value="34"
+              c:identifier="CLUTTER_PATH_REL_CURVE_TO"
+              glib:nick="rel-curve-to"/>
+    </enumeration>
+    <record name="PathPrivate" c:type="ClutterPathPrivate">
+    </record>
+    <constant name="Pause" value="65299">
+      <type name="int"/>
+    </constant>
+    <record name="Perspective"
+            c:type="ClutterPerspective"
+            doc="Stage perspective definition. #ClutterPerspective is only used by
+the fixed point version of clutter_stage_set_perspective()."
+            version="0.4"
+            glib:type-name="ClutterPerspective"
+            glib:get-type="clutter_perspective_get_type">
+      <field name="fovy" writable="1">
+        <type name="float" c:type="gfloat"/>
+      </field>
+      <field name="aspect" writable="1">
+        <type name="float" c:type="gfloat"/>
+      </field>
+      <field name="z_near" writable="1">
+        <type name="float" c:type="gfloat"/>
+      </field>
+      <field name="z_far" writable="1">
+        <type name="float" c:type="gfloat"/>
+      </field>
+    </record>
+    <constant name="PesetaSign" value="16785575">
+      <type name="int"/>
+    </constant>
+    <enumeration name="PickMode"
+                 doc="Controls the paint cycle of the scene graph when in pick mode"
+                 version="1.0"
+                 glib:type-name="ClutterPickMode"
+                 glib:get-type="clutter_pick_mode_get_type"
+                 c:type="ClutterPickMode">
+      <member name="none"
+              value="0"
+              c:identifier="CLUTTER_PICK_NONE"
+              glib:nick="none"/>
+      <member name="reactive"
+              value="1"
+              c:identifier="CLUTTER_PICK_REACTIVE"
+              glib:nick="reactive"/>
+      <member name="all"
+              value="2"
+              c:identifier="CLUTTER_PICK_ALL"
+              glib:nick="all"/>
+    </enumeration>
+    <constant name="Pointer_Accelerate" value="65274">
+      <type name="int"/>
+    </constant>
+    <constant name="Pointer_Button1" value="65257">
+      <type name="int"/>
+    </constant>
+    <constant name="Pointer_Button2" value="65258">
+      <type name="int"/>
+    </constant>
+    <constant name="Pointer_Button3" value="65259">
+      <type name="int"/>
+    </constant>
+    <constant name="Pointer_Button4" value="65260">
+      <type name="int"/>
+    </constant>
+    <constant name="Pointer_Button5" value="65261">
+      <type name="int"/>
+    </constant>
+    <constant name="Pointer_Button_Dflt" value="65256">
+      <type name="int"/>
+    </constant>
+    <constant name="Pointer_DblClick1" value="65263">
+      <type name="int"/>
+    </constant>
+    <constant name="Pointer_DblClick2" value="65264">
+      <type name="int"/>
+    </constant>
+    <constant name="Pointer_DblClick3" value="65265">
+      <type name="int"/>
+    </constant>
+    <constant name="Pointer_DblClick4" value="65266">
+      <type name="int"/>
+    </constant>
+    <constant name="Pointer_DblClick5" value="65267">
+      <type name="int"/>
+    </constant>
+    <constant name="Pointer_DblClick_Dflt" value="65262">
+      <type name="int"/>
+    </constant>
+    <constant name="Pointer_DfltBtnNext" value="65275">
+      <type name="int"/>
+    </constant>
+    <constant name="Pointer_DfltBtnPrev" value="65276">
+      <type name="int"/>
+    </constant>
+    <constant name="Pointer_Down" value="65251">
+      <type name="int"/>
+    </constant>
+    <constant name="Pointer_DownLeft" value="65254">
+      <type name="int"/>
+    </constant>
+    <constant name="Pointer_DownRight" value="65255">
+      <type name="int"/>
+    </constant>
+    <constant name="Pointer_Drag1" value="65269">
+      <type name="int"/>
+    </constant>
+    <constant name="Pointer_Drag2" value="65270">
+      <type name="int"/>
+    </constant>
+    <constant name="Pointer_Drag3" value="65271">
+      <type name="int"/>
+    </constant>
+    <constant name="Pointer_Drag4" value="65272">
+      <type name="int"/>
+    </constant>
+    <constant name="Pointer_Drag5" value="65277">
+      <type name="int"/>
+    </constant>
+    <constant name="Pointer_Drag_Dflt" value="65268">
+      <type name="int"/>
+    </constant>
+    <constant name="Pointer_EnableKeys" value="65273">
+      <type name="int"/>
+    </constant>
+    <constant name="Pointer_Left" value="65248">
+      <type name="int"/>
+    </constant>
+    <constant name="Pointer_Right" value="65249">
+      <type name="int"/>
+    </constant>
+    <constant name="Pointer_Up" value="65250">
+      <type name="int"/>
+    </constant>
+    <constant name="Pointer_UpLeft" value="65252">
+      <type name="int"/>
+    </constant>
+    <constant name="Pointer_UpRight" value="65253">
+      <type name="int"/>
+    </constant>
+    <constant name="Prev_Virtual_Screen" value="65233">
+      <type name="int"/>
+    </constant>
+    <constant name="PreviousCandidate" value="65342">
+      <type name="int"/>
+    </constant>
+    <constant name="Print" value="65377">
+      <type name="int"/>
+    </constant>
+    <constant name="Prior" value="65365">
+      <type name="int"/>
+    </constant>
+    <callback name="ProgressFunc"
+              c:type="ClutterProgressFunc"
+              doc="Prototype of the progress function used to compute the value
+between the two ends @a and @b of an interval depending on
+the value of @progress.
+The #GValue in @retval is already initialized with the same
+type as @a and @b.
+This function will be called by #ClutterInterval if the
+type of the values of the interval was registered using
+clutter_interval_register_progress_func().
+the value and stored it inside @retval"
+              version="1.0">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="a" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="b" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="progress" transfer-ownership="none">
+          <type name="double" c:type="gdouble"/>
+        </parameter>
+        <parameter name="retval" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <constant name="Q" value="81">
+      <type name="int"/>
+    </constant>
+    <constant name="R" value="82">
+      <type name="int"/>
+    </constant>
+    <constant name="R1" value="65490">
+      <type name="int"/>
+    </constant>
+    <constant name="R10" value="65499">
+      <type name="int"/>
+    </constant>
+    <constant name="R11" value="65500">
+      <type name="int"/>
+    </constant>
+    <constant name="R12" value="65501">
+      <type name="int"/>
+    </constant>
+    <constant name="R13" value="65502">
+      <type name="int"/>
+    </constant>
+    <constant name="R14" value="65503">
+      <type name="int"/>
+    </constant>
+    <constant name="R15" value="65504">
+      <type name="int"/>
+    </constant>
+    <constant name="R2" value="65491">
+      <type name="int"/>
+    </constant>
+    <constant name="R3" value="65492">
+      <type name="int"/>
+    </constant>
+    <constant name="R4" value="65493">
+      <type name="int"/>
+    </constant>
+    <constant name="R5" value="65494">
+      <type name="int"/>
+    </constant>
+    <constant name="R6" value="65495">
+      <type name="int"/>
+    </constant>
+    <constant name="R7" value="65496">
+      <type name="int"/>
+    </constant>
+    <constant name="R8" value="65497">
+      <type name="int"/>
+    </constant>
+    <constant name="R9" value="65498">
+      <type name="int"/>
+    </constant>
+    <constant name="Racute" value="448">
+      <type name="int"/>
+    </constant>
+    <constant name="Rcaron" value="472">
+      <type name="int"/>
+    </constant>
+    <constant name="Rcedilla" value="931">
+      <type name="int"/>
+    </constant>
+    <class name="Rectangle"
+           c:type="ClutterRectangle"
+           doc="The #ClutterRectangle structure contains only private data
+and should be accessed using the provided API"
+           version="0.1"
+           parent="Actor"
+           glib:type-name="ClutterRectangle"
+           glib:get-type="clutter_rectangle_get_type"
+           glib:type-struct="RectangleClass">
+      <implements name="Scriptable"/>
+      <constructor name="new"
+                   c:identifier="clutter_rectangle_new"
+                   doc="Creates a new #ClutterActor with a rectangular shape.">
+        <return-value transfer-ownership="full">
+          <type name="Rectangle" c:type="ClutterActor*"/>
+        </return-value>
+      </constructor>
+      <constructor name="new_with_color"
+                   c:identifier="clutter_rectangle_new_with_color"
+                   doc="Creates a new #ClutterActor with a rectangular shape
+and of the given @color.">
+        <return-value transfer-ownership="full">
+          <type name="Rectangle" c:type="ClutterActor*"/>
+        </return-value>
+        <parameters>
+          <parameter name="color" transfer-ownership="none">
+            <type name="Color" c:type="ClutterColor*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="get_color"
+              c:identifier="clutter_rectangle_get_color"
+              doc="Retrieves the color of @rectangle.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="color" transfer-ownership="none">
+            <type name="Color" c:type="ClutterColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_color"
+              c:identifier="clutter_rectangle_set_color"
+              doc="Sets the color of @rectangle.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="color" transfer-ownership="none">
+            <type name="Color" c:type="ClutterColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_border_width"
+              c:identifier="clutter_rectangle_get_border_width"
+              doc="Gets the width (in pixels) of the border used by @rectangle"
+              version="0.2">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="set_border_width"
+              c:identifier="clutter_rectangle_set_border_width"
+              doc="Sets the width (in pixel) of the border used by @rectangle.
+A @width of 0 will unset the border."
+              version="0.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="width" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_border_color"
+              c:identifier="clutter_rectangle_get_border_color"
+              doc="Gets the color of the border used by @rectangle and places
+it into @color."
+              version="0.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="color" transfer-ownership="none">
+            <type name="Color" c:type="ClutterColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_border_color"
+              c:identifier="clutter_rectangle_set_border_color"
+              doc="Sets the color of the border used by @rectangle using @color">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="color" transfer-ownership="none">
+            <type name="Color" c:type="ClutterColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="border-color"
+                version="0.2"
+                writable="1"
+                doc="The color of the border of the rectangle.">
+        <type name="Color" c:type="ClutterColor"/>
+      </property>
+      <property name="border-width"
+                version="0.2"
+                writable="1"
+                doc="The width of the border of the rectangle, in pixels.">
+        <type name="uint" c:type="guint"/>
+      </property>
+      <property name="color" writable="1" doc="The color of the rectangle.">
+        <type name="Color" c:type="ClutterColor"/>
+      </property>
+      <property name="has-border"
+                version="0.2"
+                writable="1"
+                doc="Whether the #ClutterRectangle should be displayed with a border.">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <field name="parent">
+        <type name="Actor" c:type="ClutterActor"/>
+      </field>
+      <field name="priv">
+        <type name="RectanglePrivate" c:type="ClutterRectanglePrivate*"/>
+      </field>
+    </class>
+    <record name="RectangleClass"
+            c:type="ClutterRectangleClass"
+            glib:is-gtype-struct-for="Rectangle"
+            doc="The #ClutterRectangleClass structure contains only private data"
+            version="0.1">
+      <field name="parent_class">
+        <type name="ActorClass" c:type="ClutterActorClass"/>
+      </field>
+      <field name="clutter_rectangle1">
+        <callback name="clutter_rectangle1" c:type="_clutter_rectangle1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_rectangle2">
+        <callback name="clutter_rectangle2" c:type="_clutter_rectangle2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_rectangle3">
+        <callback name="clutter_rectangle3" c:type="_clutter_rectangle3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_rectangle4">
+        <callback name="clutter_rectangle4" c:type="_clutter_rectangle4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="RectanglePrivate" c:type="ClutterRectanglePrivate">
+    </record>
+    <constant name="Redo" value="65382">
+      <type name="int"/>
+    </constant>
+    <bitfield name="RedrawFlags"
+              doc="Flags passed to the clutter_actor_queue_redraw_with_clip ()
+function"
+              version="1.2"
+              glib:type-name="ClutterRedrawFlags"
+              glib:get-type="clutter_redraw_flags_get_type"
+              c:type="ClutterRedrawFlags">
+      <member name="box"
+              value="0"
+              c:identifier="CLUTTER_REDRAW_CLIPPED_TO_BOX"
+              glib:nick="box"/>
+      <member name="allocation"
+              value="2"
+              c:identifier="CLUTTER_REDRAW_CLIPPED_TO_ALLOCATION"
+              glib:nick="allocation"/>
+    </bitfield>
+    <constant name="RepeatKeys_Enable" value="65138">
+      <type name="int"/>
+    </constant>
+    <enumeration name="RequestMode"
+                 doc="Specifies the type of requests for a #ClutterActor."
+                 version="0.8"
+                 glib:type-name="ClutterRequestMode"
+                 glib:get-type="clutter_request_mode_get_type"
+                 c:type="ClutterRequestMode">
+      <member name="height_for_width"
+              value="0"
+              c:identifier="CLUTTER_REQUEST_HEIGHT_FOR_WIDTH"
+              glib:nick="height-for-width"/>
+      <member name="width_for_height"
+              value="1"
+              c:identifier="CLUTTER_REQUEST_WIDTH_FOR_HEIGHT"
+              glib:nick="width-for-height"/>
+    </enumeration>
+    <constant name="Return" value="65293">
+      <type name="int"/>
+    </constant>
+    <constant name="Right" value="65363">
+      <type name="int"/>
+    </constant>
+    <constant name="Romaji" value="65316">
+      <type name="int"/>
+    </constant>
+    <enumeration name="RotateAxis"
+                 doc="Axis of a rotation."
+                 version="0.4"
+                 glib:type-name="ClutterRotateAxis"
+                 glib:get-type="clutter_rotate_axis_get_type"
+                 c:type="ClutterRotateAxis">
+      <member name="x_axis"
+              value="0"
+              c:identifier="CLUTTER_X_AXIS"
+              glib:nick="x-axis"/>
+      <member name="y_axis"
+              value="1"
+              c:identifier="CLUTTER_Y_AXIS"
+              glib:nick="y-axis"/>
+      <member name="z_axis"
+              value="2"
+              c:identifier="CLUTTER_Z_AXIS"
+              glib:nick="z-axis"/>
+    </enumeration>
+    <enumeration name="RotateDirection"
+                 doc="Direction of a rotation."
+                 version="0.4"
+                 glib:type-name="ClutterRotateDirection"
+                 glib:get-type="clutter_rotate_direction_get_type"
+                 c:type="ClutterRotateDirection">
+      <member name="cw"
+              value="0"
+              c:identifier="CLUTTER_ROTATE_CW"
+              glib:nick="cw"/>
+      <member name="ccw"
+              value="1"
+              c:identifier="CLUTTER_ROTATE_CCW"
+              glib:nick="ccw"/>
+    </enumeration>
+    <constant name="RupeeSign" value="16785576">
+      <type name="int"/>
+    </constant>
+    <constant name="S" value="83">
+      <type name="int"/>
+    </constant>
+    <constant name="SCHWA" value="16777615">
+      <type name="int"/>
+    </constant>
+    <constant name="Sabovedot" value="16784992">
+      <type name="int"/>
+    </constant>
+    <constant name="Sacute" value="422">
+      <type name="int"/>
+    </constant>
+    <constant name="Scaron" value="425">
+      <type name="int"/>
+    </constant>
+    <constant name="Scedilla" value="426">
+      <type name="int"/>
+    </constant>
+    <constant name="Scircumflex" value="734">
+      <type name="int"/>
+    </constant>
+    <class name="Score"
+           c:type="ClutterScore"
+           doc="The #ClutterScore structure contains only private data
+and should be accessed using the provided API"
+           version="0.6"
+           parent="GObject.Object"
+           glib:type-name="ClutterScore"
+           glib:get-type="clutter_score_get_type"
+           glib:type-struct="ScoreClass">
+      <constructor name="new"
+                   c:identifier="clutter_score_new"
+                   doc="Creates a new #ClutterScore. A #ClutterScore is an object that can
+hold multiple #ClutterTimeline&lt;!-- --&gt;s in a sequential order.
+when done."
+                   version="0.6">
+        <return-value transfer-ownership="full">
+          <type name="Score" c:type="ClutterScore*"/>
+        </return-value>
+      </constructor>
+      <method name="set_loop"
+              c:identifier="clutter_score_set_loop"
+              doc="Sets whether @score should loop. A looping #ClutterScore will start
+from its initial state after the ::complete signal has been fired."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="loop" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_loop"
+              c:identifier="clutter_score_get_loop"
+              doc="Gets whether @score is looping"
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="append"
+              c:identifier="clutter_score_append"
+              doc="Appends a timeline to another one existing in the score; the newly
+appended timeline will be started when @parent is complete.
+If @parent is %NULL, the new #ClutterTimeline will be started when
+clutter_score_start() is called.
+#ClutterScore will take a reference on @timeline.
+0 on failure. The returned id can be used with clutter_score_remove()
+or clutter_score_get_timeline()."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="ulong" c:type="gulong"/>
+        </return-value>
+        <parameters>
+          <parameter name="parent" transfer-ownership="none">
+            <type name="Timeline" c:type="ClutterTimeline*"/>
+          </parameter>
+          <parameter name="timeline" transfer-ownership="none">
+            <type name="Timeline" c:type="ClutterTimeline*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="append_at_marker"
+              c:identifier="clutter_score_append_at_marker"
+              doc="Appends @timeline at the given @marker_name on the @parent
+#ClutterTimeline.
+If you want to append @timeline at the end of @parent, use
+clutter_score_append().
+The #ClutterScore will take a reference on @timeline.
+0 on failure. The returned id can be used with clutter_score_remove()
+or clutter_score_get_timeline()."
+              version="0.8">
+        <return-value transfer-ownership="none">
+          <type name="ulong" c:type="gulong"/>
+        </return-value>
+        <parameters>
+          <parameter name="parent" transfer-ownership="none">
+            <type name="Timeline" c:type="ClutterTimeline*"/>
+          </parameter>
+          <parameter name="marker_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="timeline" transfer-ownership="none">
+            <type name="Timeline" c:type="ClutterTimeline*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove"
+              c:identifier="clutter_score_remove"
+              doc="Removes the #ClutterTimeline with the given id inside @score. If
+the timeline has other timelines attached to it, those are removed
+as well."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="id" transfer-ownership="none">
+            <type name="ulong" c:type="gulong"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_all"
+              c:identifier="clutter_score_remove_all"
+              doc="Removes all the timelines inside @score."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_timeline"
+              c:identifier="clutter_score_get_timeline"
+              doc="Retrieves the #ClutterTimeline for @id inside @score.
+function does not increase the reference count on the returned
+#ClutterTimeline"
+              version="0.6">
+        <return-value transfer-ownership="none"
+                      doc="the requested timeline, or %NULL. This">
+          <type name="Timeline" c:type="ClutterTimeline*"/>
+        </return-value>
+        <parameters>
+          <parameter name="id" transfer-ownership="none">
+            <type name="ulong" c:type="gulong"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="list_timelines"
+              c:identifier="clutter_score_list_timelines"
+              doc="Retrieves a list of all the #ClutterTimelines managed by @score.
+containing all the timelines in the score. This function does not increase
+the reference count of the returned timelines. Use g_slist_free() on the
+returned list to deallocate its resources."
+              version="0.6">
+        <return-value transfer-ownership="container" doc="a #GSList">
+          <type name="GLib.SList" c:type="GSList*">
+            <type name="Timeline"/>
+          </type>
+        </return-value>
+      </method>
+      <method name="start"
+              c:identifier="clutter_score_start"
+              doc="Starts the score."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="stop"
+              c:identifier="clutter_score_stop"
+              doc="Stops and rewinds a playing #ClutterScore instance."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="pause"
+              c:identifier="clutter_score_pause"
+              doc="Pauses a playing score @score."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="rewind"
+              c:identifier="clutter_score_rewind"
+              doc="Rewinds a #ClutterScore to its initial state."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="is_playing"
+              c:identifier="clutter_score_is_playing"
+              doc="Query state of a #ClutterScore instance."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <property name="loop"
+                version="0.6"
+                writable="1"
+                doc="Whether the #ClutterScore should restart once finished.">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <field name="parent">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="priv">
+        <type name="ScorePrivate" c:type="ClutterScorePrivate*"/>
+      </field>
+      <glib:signal name="completed"
+                   doc="The ::completed signal is emitted each time a #ClutterScore terminates."
+                   version="0.6">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="paused"
+                   doc="The ::paused signal is emitted each time a #ClutterScore
+is paused."
+                   version="0.6">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="started"
+                   doc="The ::started signal is emitted each time a #ClutterScore starts playing."
+                   version="0.6">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="timeline-completed"
+                   doc="The ::timeline-completed signal is emitted each time a timeline
+inside a #ClutterScore terminates."
+                   version="0.6">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="timeline" transfer-ownership="none">
+            <type name="Timeline" c:type="ClutterTimeline"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="timeline-started"
+                   doc="The ::timeline-started signal is emitted each time a new timeline
+inside a #ClutterScore starts playing."
+                   version="0.6">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="timeline" transfer-ownership="none">
+            <type name="Timeline" c:type="ClutterTimeline"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <record name="ScoreClass"
+            c:type="ClutterScoreClass"
+            glib:is-gtype-struct-for="Score"
+            doc="The #ClutterScoreClass structure contains only private data"
+            version="0.6">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="timeline_started">
+        <callback name="timeline_started" c:type="timeline_started">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="score" transfer-ownership="none">
+              <type name="Score" c:type="ClutterScore*"/>
+            </parameter>
+            <parameter name="timeline" transfer-ownership="none">
+              <type name="Timeline" c:type="ClutterTimeline*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="timeline_completed">
+        <callback name="timeline_completed" c:type="timeline_completed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="score" transfer-ownership="none">
+              <type name="Score" c:type="ClutterScore*"/>
+            </parameter>
+            <parameter name="timeline" transfer-ownership="none">
+              <type name="Timeline" c:type="ClutterTimeline*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="started">
+        <callback name="started" c:type="started">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="score" transfer-ownership="none">
+              <type name="Score" c:type="ClutterScore*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="completed">
+        <callback name="completed" c:type="completed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="score" transfer-ownership="none">
+              <type name="Score" c:type="ClutterScore*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="paused">
+        <callback name="paused" c:type="paused">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="score" transfer-ownership="none">
+              <type name="Score" c:type="ClutterScore*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="clutter_score_1">
+        <callback name="clutter_score_1" c:type="_clutter_score_1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_score_2">
+        <callback name="clutter_score_2" c:type="_clutter_score_2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_score_3">
+        <callback name="clutter_score_3" c:type="_clutter_score_3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_score_4">
+        <callback name="clutter_score_4" c:type="_clutter_score_4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_score_5">
+        <callback name="clutter_score_5" c:type="_clutter_score_5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="ScorePrivate" c:type="ClutterScorePrivate">
+    </record>
+    <class name="Script"
+           c:type="ClutterScript"
+           doc="The #ClutterScript structure contains only private data
+and should be accessed using the provided API"
+           version="0.6"
+           parent="GObject.Object"
+           glib:type-name="ClutterScript"
+           glib:get-type="clutter_script_get_type"
+           glib:type-struct="ScriptClass">
+      <constructor name="new"
+                   c:identifier="clutter_script_new"
+                   doc="Creates a new #ClutterScript instance. #ClutterScript can be used
+to load objects definitions for scenegraph elements, like actors,
+or behavioural elements, like behaviours and timelines. The
+definitions must be encoded using the JavaScript Object Notation (JSON)
+language.
+g_object_unref() when done."
+                   version="0.6">
+        <return-value transfer-ownership="full">
+          <type name="Script" c:type="ClutterScript*"/>
+        </return-value>
+      </constructor>
+      <virtual-method name="get_type_from_name" invoker="get_type_from_name">
+        <return-value transfer-ownership="none">
+          <type name="GType" c:type="GType"/>
+        </return-value>
+        <parameters>
+          <parameter name="type_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="load_from_file"
+              c:identifier="clutter_script_load_from_file"
+              doc="Loads the definitions from @filename into @script and merges with
+the currently loaded ones, if any.
+accordingly. On success, the merge id for the UI definitions is
+returned. You can use the merge id with clutter_script_unmerge()."
+              version="0.6"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+        <parameters>
+          <parameter name="filename" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="load_from_data"
+              c:identifier="clutter_script_load_from_data"
+              doc="Loads the definitions from @data into @script and merges with
+the currently loaded ones, if any.
+accordingly. On success, the merge id for the UI definitions is
+returned. You can use the merge id with clutter_script_unmerge()."
+              version="0.6"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="length" transfer-ownership="none" doc=" buffer">
+            <type name="ssize_t" c:type="gssize"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_object"
+              c:identifier="clutter_script_get_object"
+              doc="Retrieves the object bound to @name. This function does not increment
+the reference count of the returned object.
+with the given name was available"
+              version="0.6">
+        <return-value transfer-ownership="none"
+                      doc="the named object, or %NULL if no object">
+          <type name="GObject.Object" c:type="GObject*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_objects"
+              c:identifier="clutter_script_get_objects"
+              doc="Retrieves a list of objects for the given names. After @script, object
+names/return location pairs should be listed, with a %NULL pointer
+ending the list, like:
+&lt;informalexample&gt;&lt;programlisting&gt;
+GObject *my_label, *a_button, *main_timeline;
+clutter_script_get_objects (script,
+&quot;my-label&quot;, &amp;amp;my_label,
+&quot;a-button&quot;, &amp;amp;a_button,
+&quot;main-timeline&quot;, &amp;amp;main_timeline,
+NULL);
+&lt;/programlisting&gt;&lt;/informalexample&gt;
+returned objects."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="first_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="list_objects"
+              c:identifier="clutter_script_list_objects"
+              doc="Retrieves all the objects created by @script.
+objects it returns.
+or %NULL. The objects are owned by the #ClutterScript instance. Use g_list_free() on the
+returned value when done."
+              version="0.8.2">
+        <return-value transfer-ownership="container"
+                      doc="a list of #GObject&lt;!-- --&gt;s,">
+          <type name="GLib.List" c:type="GList*">
+            <type name="GObject.Object"/>
+          </type>
+        </return-value>
+      </method>
+      <method name="unmerge_objects"
+              c:identifier="clutter_script_unmerge_objects"
+              doc="Unmerges the objects identified by @merge_id."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="merge_id" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="ensure_objects"
+              c:identifier="clutter_script_ensure_objects"
+              doc="Ensure that every object defined inside @script is correctly
+constructed. You should rarely need to use this function."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_type_from_name"
+              c:identifier="clutter_script_get_type_from_name"
+              doc="Looks up a type by name, using the virtual function that
+#ClutterScript has for that purpose. This function should
+rarely be used.
+%G_TYPE_INVALID if not corresponding type was found."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="GType" c:type="GType"/>
+        </return-value>
+        <parameters>
+          <parameter name="type_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="connect_signals"
+              c:identifier="clutter_script_connect_signals"
+              doc="Connects all the signals defined into a UI definition file to their
+handlers.
+This method invokes clutter_script_connect_signals_full() internally
+and uses  #GModule&apos;s introspective features (by opening the current
+module&apos;s scope) to look at the application&apos;s symbol table.
+Note that this function will not work if #GModule is not supported by
+the platform Clutter is running on."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="connect_signals_full"
+              c:identifier="clutter_script_connect_signals_full"
+              doc="Connects all the signals defined into a UI definition file to their
+handlers.
+This function allows to control how the signal handlers are
+going to be connected to their respective signals. It is meant
+primarily for language bindings to allow resolving the function
+names using the native API.
+Applications should use clutter_script_connect_signals()."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="2">
+            <type name="ScriptConnectFunc" c:type="ClutterScriptConnectFunc"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_search_paths"
+              c:identifier="clutter_script_add_search_paths"
+              doc="Adds @paths to the list of search paths held by @script.
+The search paths are used by clutter_script_lookup_filename(), which
+can be used to define search paths for the textures source file name
+or other custom, file-based properties."
+              version="0.8">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="paths" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="n_paths" transfer-ownership="none">
+            <type name="size_t" c:type="gsize"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="lookup_filename"
+              c:identifier="clutter_script_lookup_filename"
+              doc="Looks up @filename inside the search paths of @script. If @filename
+is found, its full path will be returned .
+found."
+              version="0.8">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="filename" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="filename"
+                version="0.6"
+                doc="The path of the currently parsed file. If #ClutterScript:filename-set
+is %FALSE then the value of this property is undefined.">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <property name="filename-set"
+                version="0.6"
+                doc="Whether the #ClutterScript:filename property is set. If this property
+is %TRUE then the currently parsed data comes from a file, and the
+file name is stored inside the #ClutterScript:filename property.">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <field name="parent_instance">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="priv">
+        <type name="ScriptPrivate" c:type="ClutterScriptPrivate*"/>
+      </field>
+    </class>
+    <record name="ScriptClass"
+            c:type="ClutterScriptClass"
+            glib:is-gtype-struct-for="Script"
+            doc="The #ClutterScriptClass structure contains only private data"
+            version="0.6">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="get_type_from_name">
+        <callback name="get_type_from_name" c:type="get_type_from_name">
+          <return-value transfer-ownership="none">
+            <type name="GType" c:type="GType"/>
+          </return-value>
+          <parameters>
+            <parameter name="script" transfer-ownership="none">
+              <type name="Script" c:type="ClutterScript*"/>
+            </parameter>
+            <parameter name="type_name" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="clutter_reserved1">
+        <callback name="clutter_reserved1" c:type="_clutter_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_reserved2">
+        <callback name="clutter_reserved2" c:type="_clutter_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_reserved3">
+        <callback name="clutter_reserved3" c:type="_clutter_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_reserved4">
+        <callback name="clutter_reserved4" c:type="_clutter_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_reserved5">
+        <callback name="clutter_reserved5" c:type="_clutter_reserved5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_reserved6">
+        <callback name="clutter_reserved6" c:type="_clutter_reserved6">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_reserved7">
+        <callback name="clutter_reserved7" c:type="_clutter_reserved7">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_reserved8">
+        <callback name="clutter_reserved8" c:type="_clutter_reserved8">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <callback name="ScriptConnectFunc"
+              c:type="ClutterScriptConnectFunc"
+              doc="This is the signature of a function used to connect signals.  It is used
+by the clutter_script_connect_signals_full() function.  It is mainly
+intended for interpreted language bindings, but could be useful where the
+programmer wants more control over the signal connection process."
+              version="0.6">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="script" transfer-ownership="none">
+          <type name="Script" c:type="ClutterScript*"/>
+        </parameter>
+        <parameter name="object" transfer-ownership="none">
+          <type name="GObject.Object" c:type="GObject*"/>
+        </parameter>
+        <parameter name="signal_name" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="handler_name" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="connect_object" transfer-ownership="none">
+          <type name="GObject.Object" c:type="GObject*"/>
+        </parameter>
+        <parameter name="flags" transfer-ownership="none">
+          <type name="GObject.ConnectFlags" c:type="GConnectFlags"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="6">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <enumeration name="ScriptError"
+                 doc="#ClutterScript error enumeration."
+                 version="0.6"
+                 glib:type-name="ClutterScriptError"
+                 glib:get-type="clutter_script_error_get_type"
+                 c:type="ClutterScriptError"
+                 glib:error-quark="clutter_script_error_quark">
+      <member name="type_function"
+              value="0"
+              c:identifier="CLUTTER_SCRIPT_ERROR_INVALID_TYPE_FUNCTION"
+              glib:nick="type-function"/>
+      <member name="property"
+              value="1"
+              c:identifier="CLUTTER_SCRIPT_ERROR_INVALID_PROPERTY"
+              glib:nick="property"/>
+      <member name="value"
+              value="2"
+              c:identifier="CLUTTER_SCRIPT_ERROR_INVALID_VALUE"
+              glib:nick="value"/>
+    </enumeration>
+    <record name="ScriptPrivate" c:type="ClutterScriptPrivate">
+    </record>
+    <interface name="Scriptable"
+               c:type="ClutterScriptable"
+               doc="#ClutterScriptable is an opaque structure whose members cannot be directly
+accessed"
+               version="0.6"
+               glib:type-name="ClutterScriptable"
+               glib:get-type="clutter_scriptable_get_type"
+               glib:type-struct="ScriptableIface">
+      <virtual-method name="set_id">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_id" invoker="get_id">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="parse_custom_node" invoker="parse_custom_node">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="script" transfer-ownership="none">
+            <type name="Script" c:type="ClutterScript*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="node" transfer-ownership="none">
+            <type name="ClutterJson.JsonNode" c:type="JsonNode*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="set_custom_property" invoker="set_custom_property">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="script" transfer-ownership="none">
+            <type name="Script" c:type="ClutterScript*"/>
+          </parameter>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="set_id"
+              c:identifier="clutter_scriptable_set_id"
+              doc="Sets @id as the unique Clutter script it for this instance of
+#ClutterScriptableIface.
+This name can be used by user interface designer applications to
+define a unique name for an object constructable using the UI
+definition language parsed by #ClutterScript."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="id" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_id"
+              c:identifier="clutter_scriptable_get_id"
+              doc="Retrieves the id of @scriptable set using clutter_scriptable_set_id().
+the scriptable object and should never be modified of freed"
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="parse_custom_node"
+              c:identifier="clutter_scriptable_parse_custom_node"
+              doc="Parses the passed JSON node. The implementation must set the type
+of the passed #GValue pointer using g_value_init()."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="script" transfer-ownership="none">
+            <type name="Script" c:type="ClutterScript*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="node" transfer-ownership="none">
+            <type name="ClutterJson.JsonNode" c:type="JsonNode*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_custom_property"
+              c:identifier="clutter_scriptable_set_custom_property"
+              doc="Overrides the common properties setting. The underlying virtual
+function should be used when implementing custom properties."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="script" transfer-ownership="none">
+            <type name="Script" c:type="ClutterScript*"/>
+          </parameter>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+    </interface>
+    <record name="ScriptableIface"
+            c:type="ClutterScriptableIface"
+            glib:is-gtype-struct-for="Scriptable"
+            doc="Interface for implementing &quot;scriptable&quot; objects. An object implementing
+this interface can override the parsing and properties setting sequence
+when loading a UI definition data with #ClutterScript"
+            version="0.6">
+      <field name="g_iface">
+        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+      </field>
+      <field name="set_id">
+        <callback name="set_id" c:type="set_id">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="scriptable" transfer-ownership="none">
+              <type name="Scriptable" c:type="ClutterScriptable*"/>
+            </parameter>
+            <parameter name="name" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_id">
+        <callback name="get_id" c:type="get_id">
+          <return-value transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </return-value>
+          <parameters>
+            <parameter name="scriptable" transfer-ownership="none">
+              <type name="Scriptable" c:type="ClutterScriptable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="parse_custom_node">
+        <callback name="parse_custom_node" c:type="parse_custom_node">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="scriptable" transfer-ownership="none">
+              <type name="Scriptable" c:type="ClutterScriptable*"/>
+            </parameter>
+            <parameter name="script" transfer-ownership="none">
+              <type name="Script" c:type="ClutterScript*"/>
+            </parameter>
+            <parameter name="value" transfer-ownership="none">
+              <type name="GObject.Value" c:type="GValue*"/>
+            </parameter>
+            <parameter name="name" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+            <parameter name="node" transfer-ownership="none">
+              <type name="ClutterJson.JsonNode" c:type="JsonNode*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_custom_property">
+        <callback name="set_custom_property" c:type="set_custom_property">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="scriptable" transfer-ownership="none">
+              <type name="Scriptable" c:type="ClutterScriptable*"/>
+            </parameter>
+            <parameter name="script" transfer-ownership="none">
+              <type name="Script" c:type="ClutterScript*"/>
+            </parameter>
+            <parameter name="name" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+            <parameter name="value" transfer-ownership="none">
+              <type name="GObject.Value" c:type="GValue*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+    </record>
+    <enumeration name="ScrollDirection"
+                 doc="Direction of a pointer scroll event."
+                 version="0.4"
+                 glib:type-name="ClutterScrollDirection"
+                 glib:get-type="clutter_scroll_direction_get_type"
+                 c:type="ClutterScrollDirection">
+      <member name="up"
+              value="0"
+              c:identifier="CLUTTER_SCROLL_UP"
+              glib:nick="up"/>
+      <member name="down"
+              value="1"
+              c:identifier="CLUTTER_SCROLL_DOWN"
+              glib:nick="down"/>
+      <member name="left"
+              value="2"
+              c:identifier="CLUTTER_SCROLL_LEFT"
+              glib:nick="left"/>
+      <member name="right"
+              value="3"
+              c:identifier="CLUTTER_SCROLL_RIGHT"
+              glib:nick="right"/>
+    </enumeration>
+    <record name="ScrollEvent"
+            c:type="ClutterScrollEvent"
+            doc="Scroll wheel (or similar device) event"
+            version="0.2">
+      <field name="type" writable="1">
+        <type name="EventType" c:type="ClutterEventType"/>
+      </field>
+      <field name="time" writable="1">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+      <field name="flags" writable="1">
+        <type name="EventFlags" c:type="ClutterEventFlags"/>
+      </field>
+      <field name="stage" writable="1">
+        <type name="Stage" c:type="ClutterStage*"/>
+      </field>
+      <field name="source" writable="1">
+        <type name="Actor" c:type="ClutterActor*"/>
+      </field>
+      <field name="x" writable="1">
+        <type name="float" c:type="gfloat"/>
+      </field>
+      <field name="y" writable="1">
+        <type name="float" c:type="gfloat"/>
+      </field>
+      <field name="direction" writable="1">
+        <type name="ScrollDirection" c:type="ClutterScrollDirection"/>
+      </field>
+      <field name="modifier_state" writable="1">
+        <type name="ModifierType" c:type="ClutterModifierType"/>
+      </field>
+      <field name="axes" writable="1">
+        <type name="any" c:type="gdouble*"/>
+      </field>
+      <field name="device" writable="1">
+        <type name="InputDevice" c:type="ClutterInputDevice*"/>
+      </field>
+    </record>
+    <constant name="Scroll_Lock" value="65300">
+      <type name="int"/>
+    </constant>
+    <constant name="Select" value="65376">
+      <type name="int"/>
+    </constant>
+    <constant name="Serbian_DJE" value="1713">
+      <type name="int"/>
+    </constant>
+    <constant name="Serbian_DZE" value="1727">
+      <type name="int"/>
+    </constant>
+    <constant name="Serbian_JE" value="1720">
+      <type name="int"/>
+    </constant>
+    <constant name="Serbian_LJE" value="1721">
+      <type name="int"/>
+    </constant>
+    <constant name="Serbian_NJE" value="1722">
+      <type name="int"/>
+    </constant>
+    <constant name="Serbian_TSHE" value="1723">
+      <type name="int"/>
+    </constant>
+    <constant name="Serbian_dje" value="1697">
+      <type name="int"/>
+    </constant>
+    <constant name="Serbian_dze" value="1711">
+      <type name="int"/>
+    </constant>
+    <constant name="Serbian_je" value="1704">
+      <type name="int"/>
+    </constant>
+    <constant name="Serbian_lje" value="1705">
+      <type name="int"/>
+    </constant>
+    <constant name="Serbian_nje" value="1706">
+      <type name="int"/>
+    </constant>
+    <constant name="Serbian_tshe" value="1707">
+      <type name="int"/>
+    </constant>
+    <class name="Shader"
+           c:type="ClutterShader"
+           doc="The #ClutterShader structure contains only private data
+and should be accessed using the provided API"
+           version="0.6"
+           parent="GObject.Object"
+           glib:type-name="ClutterShader"
+           glib:get-type="clutter_shader_get_type"
+           glib:type-struct="ShaderClass">
+      <constructor name="new"
+                   c:identifier="clutter_shader_new"
+                   doc="Create a new #ClutterShader instance."
+                   version="0.6">
+        <return-value transfer-ownership="full">
+          <type name="Shader" c:type="ClutterShader*"/>
+        </return-value>
+      </constructor>
+      <method name="set_is_enabled"
+              c:identifier="clutter_shader_set_is_enabled"
+              doc="Enables a shader. This function will attempt to compile and link
+the shader, if it isn&apos;t already.
+When @enabled is %FALSE the default state of the GL pipeline will be
+used instead."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="enabled" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_is_enabled"
+              c:identifier="clutter_shader_get_is_enabled"
+              doc="Checks whether @shader is enabled."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="compile"
+              c:identifier="clutter_shader_compile"
+              doc="Compiles and links GLSL sources set for vertex and fragment shaders for
+a #ClutterShader. If the compilation fails and a #GError return location is
+provided the error will contain the errors from the compiler, if any."
+              version="0.8"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="release"
+              c:identifier="clutter_shader_release"
+              doc="Frees up any GL context resources held by the shader."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="is_compiled"
+              c:identifier="clutter_shader_is_compiled"
+              doc="Checks whether @shader is is currently compiled, linked and bound
+to the GL context."
+              version="0.8">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_vertex_source"
+              c:identifier="clutter_shader_set_vertex_source"
+              doc="Sets the GLSL source code to be used by a #ClutterShader for the vertex
+program."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="length" transfer-ownership="none">
+            <type name="ssize_t" c:type="gssize"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_fragment_source"
+              c:identifier="clutter_shader_set_fragment_source"
+              doc="Sets the GLSL source code to be used by a #ClutterShader for the fragment
+program."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="length" transfer-ownership="none">
+            <type name="ssize_t" c:type="gssize"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_vertex_source"
+              c:identifier="clutter_shader_get_vertex_source"
+              doc="Query the current GLSL vertex source set on @shader.
+ClutterShader object or %NULL. The returned string is owned by the
+shader object and should never be modified or freed"
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_fragment_source"
+              c:identifier="clutter_shader_get_fragment_source"
+              doc="Query the current GLSL fragment source set on @shader.
+ClutterShader object or %NULL. The returned string is owned by the
+shader object and should never be modified or freed"
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="set_uniform"
+              c:identifier="clutter_shader_set_uniform"
+              doc="Sets a user configurable variable in the GLSL shader programs attached to
+a #ClutterShader."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none" doc=" #GValue.">
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_cogl_program"
+              c:identifier="clutter_shader_get_cogl_program"
+              doc="Retrieves the underlying #CoglHandle for the shader program."
+              version="1.0">
+        <return-value transfer-ownership="full">
+          <type name="Cogl.Handle" c:type="CoglHandle"/>
+        </return-value>
+      </method>
+      <method name="get_cogl_fragment_shader"
+              c:identifier="clutter_shader_get_cogl_fragment_shader"
+              doc="Retrieves the underlying #CoglHandle for the fragment shader."
+              version="1.0">
+        <return-value transfer-ownership="full">
+          <type name="Cogl.Handle" c:type="CoglHandle"/>
+        </return-value>
+      </method>
+      <method name="get_cogl_vertex_shader"
+              c:identifier="clutter_shader_get_cogl_vertex_shader"
+              doc="Retrieves the underlying #CoglHandle for the vertex shader."
+              version="1.0">
+        <return-value transfer-ownership="full">
+          <type name="Cogl.Handle" c:type="CoglHandle"/>
+        </return-value>
+      </method>
+      <property name="compiled"
+                version="0.8"
+                doc="Whether the shader is compiled and linked, ready for use
+in the GL context.">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="enabled"
+                version="0.6"
+                writable="1"
+                doc="Whether the shader is currently used in the GL rendering pipeline.">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="fragment-source"
+                version="0.6"
+                writable="1"
+                doc="GLSL source code for the fragment shader part of the shader program.">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <property name="vertex-source"
+                version="0.6"
+                writable="1"
+                doc="GLSL source code for the vertex shader part of the shader
+program, if any">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <field name="parent">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="priv">
+        <type name="ShaderPrivate" c:type="ClutterShaderPrivate*"/>
+      </field>
+    </class>
+    <record name="ShaderClass"
+            c:type="ClutterShaderClass"
+            glib:is-gtype-struct-for="Shader"
+            doc="The #ClutterShaderClass structure contains only private data"
+            version="0.6">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+    </record>
+    <enumeration name="ShaderError"
+                 doc="#ClutterShader error enumeration"
+                 version="0.6"
+                 glib:type-name="ClutterShaderError"
+                 glib:get-type="clutter_shader_error_get_type"
+                 c:type="ClutterShaderError"
+                 glib:error-quark="clutter_shader_error_quark">
+      <member name="no_asm"
+              value="0"
+              c:identifier="CLUTTER_SHADER_ERROR_NO_ASM"
+              glib:nick="no-asm"/>
+      <member name="no_glsl"
+              value="1"
+              c:identifier="CLUTTER_SHADER_ERROR_NO_GLSL"
+              glib:nick="no-glsl"/>
+      <member name="compile"
+              value="2"
+              c:identifier="CLUTTER_SHADER_ERROR_COMPILE"
+              glib:nick="compile"/>
+    </enumeration>
+    <record name="ShaderFloat" c:type="ClutterShaderFloat">
+    </record>
+    <record name="ShaderInt" c:type="ClutterShaderInt">
+    </record>
+    <record name="ShaderMatrix" c:type="ClutterShaderMatrix">
+    </record>
+    <record name="ShaderPrivate" c:type="ClutterShaderPrivate">
+    </record>
+    <constant name="Shift_L" value="65505">
+      <type name="int"/>
+    </constant>
+    <constant name="Shift_Lock" value="65510">
+      <type name="int"/>
+    </constant>
+    <constant name="Shift_R" value="65506">
+      <type name="int"/>
+    </constant>
+    <constant name="SingleCandidate" value="65340">
+      <type name="int"/>
+    </constant>
+    <constant name="SlowKeys_Enable" value="65139">
+      <type name="int"/>
+    </constant>
+    <class name="Stage"
+           c:type="ClutterStage"
+           doc="The #ClutterStage structure contains only private data
+and should be accessed using the provided API"
+           version="0.1"
+           parent="Group"
+           glib:type-name="ClutterStage"
+           glib:get-type="clutter_stage_get_type"
+           glib:type-struct="StageClass">
+      <implements name="Container"/>
+      <implements name="Scriptable"/>
+      <constructor name="new"
+                   c:identifier="clutter_stage_new"
+                   doc="Creates a new, non-default stage. A non-default stage is a new
+top-level actor which can be used as another container. It works
+exactly like the default stage, but while clutter_stage_get_default()
+will always return the same instance, you will have to keep a pointer
+to any #ClutterStage returned by clutter_stage_create().
+The ability to support multiple stages depends on the current
+backend. Use clutter_feature_available() and
+%CLUTTER_FEATURE_STAGE_MULTIPLE to check at runtime whether a
+backend supports multiple stages.
+not support multiple stages. Use clutter_actor_destroy() to
+programmatically close the returned stage."
+                   version="0.8">
+        <return-value transfer-ownership="full">
+          <type name="Stage" c:type="ClutterActor*"/>
+        </return-value>
+      </constructor>
+      <function name="get_default"
+                c:identifier="clutter_stage_get_default"
+                doc="Returns the main stage. The default #ClutterStage is a singleton,
+so the stage will be created the first time this function is
+called (typically, inside clutter_init()); all the subsequent
+calls to clutter_stage_get_default() will return the same instance.
+Clutter guarantess the existence of the default stage.
+destroy or unref the returned actor.">
+        <return-value transfer-ownership="none"
+                      doc="the main #ClutterStage.  You should never">
+          <type name="Actor" c:type="ClutterActor*"/>
+        </return-value>
+      </function>
+      <method name="set_color"
+              c:identifier="clutter_stage_set_color"
+              doc="Sets the stage color.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="color" transfer-ownership="none">
+            <type name="Color" c:type="ClutterColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_color"
+              c:identifier="clutter_stage_get_color"
+              doc="Retrieves the stage color.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="color" transfer-ownership="none">
+            <type name="Color" c:type="ClutterColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_perspective"
+              c:identifier="clutter_stage_set_perspective"
+              doc="Sets the stage perspective.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="perspective" transfer-ownership="none">
+            <type name="Perspective" c:type="ClutterPerspective*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_perspective"
+              c:identifier="clutter_stage_get_perspective"
+              doc="Retrieves the stage perspective.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="perspective" transfer-ownership="none">
+            <type name="Perspective" c:type="ClutterPerspective*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_fullscreen"
+              c:identifier="clutter_stage_set_fullscreen"
+              doc="Asks to place the stage window in the fullscreen or unfullscreen
+states.
+Note that you shouldn&apos;t assume the window is definitely full screen
+afterward, because other entities (e.g. the user or window manager)
+could unfullscreen it again, and not all window managers honor
+requests to fullscreen windows.
+If you want to receive notification of the fullscreen state you
+should either use the #ClutterStage::fullscreen and
+#ClutterStage::unfullscreen signals, or use the notify signal
+for the #ClutterStage:fullscreen-set property"
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="fullscreen" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_fullscreen"
+              c:identifier="clutter_stage_get_fullscreen"
+              doc="Retrieves whether the stage is full screen or not"
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="show_cursor"
+              c:identifier="clutter_stage_show_cursor"
+              doc="Shows the cursor on the stage window">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="hide_cursor"
+              c:identifier="clutter_stage_hide_cursor"
+              doc="Makes the cursor invisible on the stage window"
+              version="0.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_actor_at_pos"
+              c:identifier="clutter_stage_get_actor_at_pos"
+              doc="Checks the scene at the coordinates @x and @y and returns a pointer
+to the #ClutterActor at those coordinates.
+By using @pick_mode it is possible to control which actors will be
+painted and thus available.
+if any">
+        <return-value transfer-ownership="none"
+                      doc="the actor at the specified coordinates,">
+          <type name="Actor" c:type="ClutterActor*"/>
+        </return-value>
+        <parameters>
+          <parameter name="pick_mode" transfer-ownership="none">
+            <type name="PickMode" c:type="ClutterPickMode"/>
+          </parameter>
+          <parameter name="x" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="read_pixels"
+              c:identifier="clutter_stage_read_pixels"
+              doc="Makes a screenshot of the stage in RGBA 8bit data, returns a
+linear buffer with @width * 4 as rowstride.
+The alpha data contained in the returned buffer is driver-dependent,
+and not guaranteed to hold any sensible value.
+or %NULL if the read failed. Use g_free() on the returned data
+to release the resources it has allocated.">
+        <return-value transfer-ownership="full">
+          <array c:type="guchar*">
+            <type name="uint8"/>
+          </array>
+        </return-value>
+        <parameters>
+          <parameter name="x" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="width"
+                     transfer-ownership="none"
+                     doc=" entire stage width">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="height"
+                     transfer-ownership="none"
+                     doc=" entire stage height">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="event"
+              c:identifier="clutter_stage_event"
+              doc="This function is used to emit an event on the main stage.
+You should rarely need to use this function, except for
+synthetised events."
+              version="0.4">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="none">
+            <type name="Event" c:type="ClutterEvent*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_title" c:identifier="clutter_stage_set_title">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="title" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_title" c:identifier="clutter_stage_get_title">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="set_user_resizable"
+              c:identifier="clutter_stage_set_user_resizable"
+              doc="Sets if the stage is resizable by user interaction (e.g. via
+window manager controls)"
+              version="0.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="resizable" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_user_resizable"
+              c:identifier="clutter_stage_get_user_resizable"
+              doc="Retrieves the value set with clutter_stage_set_user_resizable()."
+              version="0.4">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_use_fog"
+              c:identifier="clutter_stage_set_use_fog"
+              doc="Sets whether the depth cueing effect on the stage should be enabled
+or not.
+Depth cueing is a 3D effect that makes actors farther away from the
+viewing point less opaque, by fading them with the stage color.
+The parameters of the GL fog used can be changed using the
+clutter_stage_set_fog() function."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="fog" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_use_fog"
+              c:identifier="clutter_stage_get_use_fog"
+              doc="Gets whether the depth cueing effect is enabled on @stage."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_fog"
+              c:identifier="clutter_stage_set_fog"
+              doc="Sets the fog (also known as &quot;depth cueing&quot;) settings for the @stage.
+A #ClutterStage will only use a linear fog progression, which
+depends solely on the distance from the viewer. The cogl_set_fog()
+function in COGL exposes more of the underlying implementation,
+and allows changing the for progression function. It can be directly
+used by disabling the #ClutterStage:use-fog property and connecting
+a signal handler to the #ClutterActor::paint signal on the @stage,
+like:
+|[
+clutter_stage_set_use_fog (stage, FALSE);
+g_signal_connect (stage, &quot;paint&quot;, G_CALLBACK (on_stage_paint), NULL);
+]|
+The paint signal handler will call cogl_set_fog() with the
+desired settings:
+|[
+static void
+on_stage_paint (ClutterActor *actor)
+{
+ClutterColor stage_color = { 0, };
+CoglColor fog_color = { 0, };
+/&amp;ast; set the fog color to the stage background color &amp;ast;/
+clutter_stage_get_color (CLUTTER_STAGE (actor), &amp;amp;stage_color);
+cogl_color_set_from_4ub (&amp;amp;fog_color,
+stage_color.red,
+stage_color.green,
+stage_color.blue,
+stage_color.alpha);
+/&amp;ast; enable fog &amp;ast;/
+cogl_set_fog (&amp;amp;fog_color,
+COGL_FOG_MODE_EXPONENTIAL, /&amp;ast; mode &amp;ast;/
+0.5,                       /&amp;ast; density &amp;ast;/
+5.0, 30.0);                /&amp;ast; z_near and z_far &amp;ast;/
+}
+]|
+unmultiplied alpha colors. By default Cogl will premultiply textures
+and cogl_set_source_color will premultiply colors, so unless you
+explicitly load your textures requesting an unmultiplied
+internal_format and use cogl_material_set_color you can only use
+fogging with fully opaque actors.
+We can look to improve this in the future when we can depend on
+fragment shaders."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="fog" transfer-ownership="none">
+            <type name="Fog" c:type="ClutterFog*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_fog"
+              c:identifier="clutter_stage_get_fog"
+              doc="Retrieves the current depth cueing settings from the stage."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="fog" transfer-ownership="none">
+            <type name="Fog" c:type="ClutterFog*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_key_focus"
+              c:identifier="clutter_stage_set_key_focus"
+              doc="Sets the key focus on @actor. An actor with key focus will receive
+all the key events. If @actor is %NULL, the stage will receive
+focus."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="the actor to set key focus to, or %NULL">
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_key_focus"
+              c:identifier="clutter_stage_get_key_focus"
+              doc="Retrieves the actor that is currently under key focus."
+              version="0.6">
+        <return-value transfer-ownership="none"
+                      doc="the actor with key focus, or the stage">
+          <type name="Actor" c:type="ClutterActor*"/>
+        </return-value>
+      </method>
+      <method name="ensure_current"
+              c:identifier="clutter_stage_ensure_current"
+              doc="This function essentially makes sure the right GL context is
+current for the passed stage. It is not intended to
+be used by applications."
+              version="0.8">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="queue_redraw"
+              c:identifier="clutter_stage_queue_redraw"
+              doc="Queues a redraw for the passed stage.
+&lt;note&gt;Applications should call clutter_actor_queue_redraw() and not
+this function.&lt;/note&gt;
+&lt;note&gt;This function is just a wrapper for clutter_actor_queue_redraw()
+and should probably go away.&lt;/note&gt;"
+              version="0.8">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="is_default"
+              c:identifier="clutter_stage_is_default"
+              doc="Checks if @stage is the default stage, or an instance created using
+clutter_stage_new() but internally using the same implementation."
+              version="0.8">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="ensure_viewport"
+              c:identifier="clutter_stage_ensure_viewport"
+              doc="Ensures that the GL viewport is updated with the current
+stage window size.
+This function will queue a redraw of @stage.
+This function should not be called by applications; it is used
+when embedding a #ClutterStage into a toolkit with another
+windowing system, like GTK+."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="ensure_redraw"
+              c:identifier="clutter_stage_ensure_redraw"
+              doc="Ensures that @stage is redrawn
+used when embedding a #ClutterStage into a toolkit with
+another windowing system, like GTK+."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="set_throttle_motion_events"
+              c:identifier="clutter_stage_set_throttle_motion_events"
+              doc="Sets whether motion events received between redraws should
+be throttled or not. If motion events are throttled, those
+events received by the windowing system between redraws will
+be compressed so that only the last event will be propagated
+to the @stage and its actors.
+This function should only be used if you want to have all
+the motion events delivered to your application code."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="throttle" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_throttle_motion_events"
+              c:identifier="clutter_stage_get_throttle_motion_events"
+              doc="Retrieves the value set with clutter_stage_set_throttle_motion_events()
+and %FALSE otherwise"
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_use_alpha"
+              c:identifier="clutter_stage_set_use_alpha"
+              doc="Sets whether the @stage should honour the #ClutterActor:opacity and
+the alpha channel of the #ClutterStage:color"
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="use_alpha"
+                     transfer-ownership="none"
+                     doc=" alpha channel of the stage color">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_use_alpha"
+              c:identifier="clutter_stage_get_use_alpha"
+              doc="Retrieves the value set using clutter_stage_set_use_alpha()
+alpha channel of the stage color"
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_minimum_size"
+              c:identifier="clutter_stage_set_minimum_size"
+              doc="Sets the minimum size for a stage window, if the default backend
+uses #ClutterStage inside a window
+This is a convenience function, and it is equivalent to setting the
+#ClutterActor:min-width and #ClutterActor:min-height on @stage
+If the current size of @stage is smaller than the minimum size, the
+This function has no effect if @stage is fullscreen"
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="width" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="height" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_minimum_size"
+              c:identifier="clutter_stage_get_minimum_size"
+              doc="Retrieves the minimum size for a stage window as set using
+clutter_stage_set_minimum_size().
+The returned size may not correspond to the actual minimum size and
+it is specific to the #ClutterStage implementation inside the
+Clutter backend"
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="width"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     doc="return location for the minimum width, in pixels, or %NULL">
+            <type name="uint" c:type="guint*"/>
+          </parameter>
+          <parameter name="height"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     doc="return location for the minimum height, in pixels, or %NULL">
+            <type name="uint" c:type="guint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="color" writable="1" doc="The color of the main stage.">
+        <type name="Color" c:type="ClutterColor"/>
+      </property>
+      <property name="cursor-visible"
+                writable="1"
+                doc="Whether the mouse pointer should be visible">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="fog"
+                version="1.0"
+                writable="1"
+                doc="The settings for the GL &quot;fog&quot;, used only if #ClutterStage:use-fog
+is set to %TRUE">
+        <type name="Fog" c:type="ClutterFog"/>
+      </property>
+      <property name="fullscreen-set">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="key-focus"
+                version="1.2"
+                writable="1"
+                doc="The #ClutterActor that will receive key events from the underlying
+windowing system.
+If %NULL, the #ClutterStage will receive the events.">
+        <type name="Actor" c:type="ClutterActor"/>
+      </property>
+      <property name="offscreen"
+                writable="1"
+                doc="Whether the stage should be rendered in an offscreen buffer.
+&lt;warning&gt;&lt;para&gt;Not every backend supports redirecting the
+stage to an offscreen buffer. This property might not work
+and it might be deprecated at any later date.&lt;/para&gt;&lt;/warning&gt;">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="perspective"
+                version="0.8.2"
+                writable="1"
+                doc="The parameters used for the perspective projection from 3D
+coordinates to 2D">
+        <type name="Perspective" c:type="ClutterPerspective"/>
+      </property>
+      <property name="title"
+                version="0.4"
+                writable="1"
+                doc="The stage&apos;s title - usually displayed in stage windows title decorations.">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <property name="use-alpha"
+                version="1.2"
+                writable="1"
+                doc="Whether the #ClutterStage should honour the alpha component of the
+#ClutterStage:color property when painting. If Clutter is run under
+a compositing manager this will result in the stage being blended
+with the underlying window(s)">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="use-fog"
+                version="0.6"
+                writable="1"
+                doc="Whether the stage should use a linear GL &quot;fog&quot; in creating the
+depth-cueing effect, to enhance the perception of depth by fading
+actors farther from the viewpoint.">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="user-resizable"
+                version="0.4"
+                writable="1"
+                doc="Whether the stage is resizable via user interaction.">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <field name="parent_instance">
+        <type name="Group" c:type="ClutterGroup"/>
+      </field>
+      <field name="priv">
+        <type name="StagePrivate" c:type="ClutterStagePrivate*"/>
+      </field>
+      <glib:signal name="activate">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="deactivate">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="delete-event"
+                   doc="The ::delete-event signal is emitted when the user closes a
+#ClutterStage window using the window controls.
+Clutter by default will call clutter_main_quit() if @stage is
+the default stage, and clutter_actor_destroy() for any other
+stage.
+It is possible to override the default behaviour by connecting
+a new handler and returning %TRUE there.
+&lt;note&gt;This signal is emitted only on Clutter backends that
+embed #ClutterStage in native windows. It is not emitted for
+backends that use a static frame buffer.&lt;/note&gt;"
+                   version="1.2">
+        <return-value transfer-ownership="full">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="none">
+            <type name="Event" c:type="ClutterEvent"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="fullscreen">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="unfullscreen">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+    </class>
+    <record name="StageClass"
+            c:type="ClutterStageClass"
+            glib:is-gtype-struct-for="Stage"
+            doc="The #ClutterStageClass structure contains only private data"
+            version="0.1">
+      <field name="parent_class">
+        <type name="GroupClass" c:type="ClutterGroupClass"/>
+      </field>
+      <field name="fullscreen">
+        <callback name="fullscreen" c:type="fullscreen">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="stage" transfer-ownership="none">
+              <type name="Stage" c:type="ClutterStage*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="unfullscreen">
+        <callback name="unfullscreen" c:type="unfullscreen">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="stage" transfer-ownership="none">
+              <type name="Stage" c:type="ClutterStage*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="activate">
+        <callback name="activate" c:type="activate">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="stage" transfer-ownership="none">
+              <type name="Stage" c:type="ClutterStage*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="deactivate">
+        <callback name="deactivate" c:type="deactivate">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="stage" transfer-ownership="none">
+              <type name="Stage" c:type="ClutterStage*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="delete_event">
+        <callback name="delete_event" c:type="delete_event">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="stage" transfer-ownership="none">
+              <type name="Stage" c:type="ClutterStage*"/>
+            </parameter>
+            <parameter name="event" transfer-ownership="none">
+              <type name="Event" c:type="ClutterEvent*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_padding_dummy">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="31">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <class name="StageManager"
+           c:type="ClutterStageManager"
+           doc="The #ClutterStageManager structure is private."
+           version="1.0"
+           parent="GObject.Object"
+           glib:type-name="ClutterStageManager"
+           glib:get-type="clutter_stage_manager_get_type"
+           glib:type-struct="StageManagerClass">
+      <function name="get_default"
+                c:identifier="clutter_stage_manager_get_default"
+                doc="Returns the default #ClutterStageManager.
+object is owned by Clutter and you should not reference or unreference it."
+                version="0.8">
+        <return-value transfer-ownership="none"
+                      doc="the default stage manager instance. The returned">
+          <type name="StageManager" c:type="ClutterStageManager*"/>
+        </return-value>
+      </function>
+      <method name="get_default_stage"
+              c:identifier="clutter_stage_manager_get_default_stage"
+              doc="Returns the default #ClutterStage.
+is owned by Clutter and you should never reference or unreference it"
+              version="0.8">
+        <return-value transfer-ownership="none"
+                      doc="the default stage. The returned object">
+          <type name="Stage" c:type="ClutterStage*"/>
+        </return-value>
+      </method>
+      <method name="list_stages"
+              c:identifier="clutter_stage_manager_list_stages"
+              doc="Lists all currently used stages.
+allocated list of #ClutterStage objects. Use g_slist_free() to
+deallocate it when done."
+              version="0.8">
+        <return-value transfer-ownership="container" doc="a newly">
+          <type name="GLib.SList" c:type="GSList*">
+            <type name="Stage"/>
+          </type>
+        </return-value>
+      </method>
+      <method name="peek_stages"
+              c:identifier="clutter_stage_manager_peek_stages"
+              doc="Lists all currently used stages.
+to the internal list of #ClutterStage objects. The returned list
+is owned by the #ClutterStageManager and should never be modified
+or freed"
+              version="1.0">
+        <return-value transfer-ownership="none" doc="a pointer">
+          <type name="GLib.SList" c:type="GSList*">
+            <type name="Stage"/>
+          </type>
+        </return-value>
+      </method>
+      <method name="set_default_stage"
+              c:identifier="clutter_stage_manager_set_default_stage"
+              doc="Sets @stage as the default stage."
+              version="0.8"
+              deprecated="Calling this function has no effect"
+              deprecated-version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="stage" transfer-ownership="none">
+            <type name="Stage" c:type="ClutterStage*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="default-stage"
+                version="0.8"
+                doc="The default stage used by Clutter.">
+        <type name="Stage" c:type="ClutterStage"/>
+      </property>
+      <glib:signal name="stage-added"
+                   doc="The ::stage-added signal is emitted each time a new #ClutterStage
+has been added to the stage manager."
+                   version="0.8">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="stage" transfer-ownership="none">
+            <type name="Stage" c:type="ClutterStage"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="stage-removed"
+                   doc="The ::stage-removed signal is emitted each time a #ClutterStage
+has been removed from the stage manager."
+                   version="0.8">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="stage" transfer-ownership="none">
+            <type name="Stage" c:type="ClutterStage"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <record name="StageManagerClass"
+            c:type="ClutterStageManagerClass"
+            glib:is-gtype-struct-for="StageManager"
+            doc="The #ClutterStageManagerClass structure contains only private data
+and should be accessed using the provided API"
+            version="1.0">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="stage_added">
+        <callback name="stage_added" c:type="stage_added">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="stage_manager" transfer-ownership="none">
+              <type name="StageManager" c:type="ClutterStageManager*"/>
+            </parameter>
+            <parameter name="stage" transfer-ownership="none">
+              <type name="Stage" c:type="ClutterStage*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="stage_removed">
+        <callback name="stage_removed" c:type="stage_removed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="stage_manager" transfer-ownership="none">
+              <type name="StageManager" c:type="ClutterStageManager*"/>
+            </parameter>
+            <parameter name="stage" transfer-ownership="none">
+              <type name="Stage" c:type="ClutterStage*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+    </record>
+    <record name="StagePrivate" c:type="ClutterStagePrivate">
+    </record>
+    <bitfield name="StageState"
+              doc="Stage state masks"
+              version="0.4"
+              glib:type-name="ClutterStageState"
+              glib:get-type="clutter_stage_state_get_type"
+              c:type="ClutterStageState">
+      <member name="fullscreen"
+              value="2"
+              c:identifier="CLUTTER_STAGE_STATE_FULLSCREEN"
+              glib:nick="fullscreen"/>
+      <member name="offscreen"
+              value="4"
+              c:identifier="CLUTTER_STAGE_STATE_OFFSCREEN"
+              glib:nick="offscreen"/>
+      <member name="activated"
+              value="8"
+              c:identifier="CLUTTER_STAGE_STATE_ACTIVATED"
+              glib:nick="activated"/>
+    </bitfield>
+    <record name="StageStateEvent"
+            c:type="ClutterStageStateEvent"
+            doc="Event signalling a change in the #ClutterStage state."
+            version="0.2">
+      <field name="type" writable="1">
+        <type name="EventType" c:type="ClutterEventType"/>
+      </field>
+      <field name="time" writable="1">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+      <field name="flags" writable="1">
+        <type name="EventFlags" c:type="ClutterEventFlags"/>
+      </field>
+      <field name="stage" writable="1">
+        <type name="Stage" c:type="ClutterStage*"/>
+      </field>
+      <field name="source" writable="1">
+        <type name="Actor" c:type="ClutterActor*"/>
+      </field>
+      <field name="changed_mask" writable="1">
+        <type name="StageState" c:type="ClutterStageState"/>
+      </field>
+      <field name="new_state" writable="1">
+        <type name="StageState" c:type="ClutterStageState"/>
+      </field>
+    </record>
+    <interface name="StageWindow"
+               c:type="ClutterStageWindow"
+               glib:type-name="ClutterStageWindow"
+               glib:get-type="clutter_stage_window_get_type"
+               glib:type-struct="StageWindowIface">
+      <virtual-method name="get_wrapper">
+        <return-value transfer-ownership="full">
+          <type name="Actor" c:type="ClutterActor*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="set_title">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="title" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="set_fullscreen">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="is_fullscreen" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="set_cursor_visible">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="cursor_visible" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="set_user_resizable">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="is_resizable" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="realize">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="unrealize">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="show">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="do_raise" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="hide">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="resize">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="width" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="height" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_geometry">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="geometry" transfer-ownership="none">
+            <type name="Geometry" c:type="ClutterGeometry*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_pending_swaps">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="add_redraw_clip">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="stage_rectangle" transfer-ownership="none">
+            <type name="Geometry" c:type="ClutterGeometry*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="has_redraw_clips">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="ignoring_redraw_clips">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+    </interface>
+    <record name="StageWindowIface"
+            c:type="ClutterStageWindowIface"
+            glib:is-gtype-struct-for="StageWindow">
+      <field name="parent_iface">
+        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+      </field>
+      <field name="get_wrapper">
+        <callback name="get_wrapper" c:type="get_wrapper">
+          <return-value transfer-ownership="full">
+            <type name="Actor" c:type="ClutterActor*"/>
+          </return-value>
+          <parameters>
+            <parameter name="stage_window" transfer-ownership="none">
+              <type name="StageWindow" c:type="ClutterStageWindow*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_title">
+        <callback name="set_title" c:type="set_title">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="stage_window" transfer-ownership="none">
+              <type name="StageWindow" c:type="ClutterStageWindow*"/>
+            </parameter>
+            <parameter name="title" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_fullscreen">
+        <callback name="set_fullscreen" c:type="set_fullscreen">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="stage_window" transfer-ownership="none">
+              <type name="StageWindow" c:type="ClutterStageWindow*"/>
+            </parameter>
+            <parameter name="is_fullscreen" transfer-ownership="none">
+              <type name="boolean" c:type="gboolean"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_cursor_visible">
+        <callback name="set_cursor_visible" c:type="set_cursor_visible">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="stage_window" transfer-ownership="none">
+              <type name="StageWindow" c:type="ClutterStageWindow*"/>
+            </parameter>
+            <parameter name="cursor_visible" transfer-ownership="none">
+              <type name="boolean" c:type="gboolean"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_user_resizable">
+        <callback name="set_user_resizable" c:type="set_user_resizable">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="stage_window" transfer-ownership="none">
+              <type name="StageWindow" c:type="ClutterStageWindow*"/>
+            </parameter>
+            <parameter name="is_resizable" transfer-ownership="none">
+              <type name="boolean" c:type="gboolean"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="realize">
+        <callback name="realize" c:type="realize">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="stage_window" transfer-ownership="none">
+              <type name="StageWindow" c:type="ClutterStageWindow*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="unrealize">
+        <callback name="unrealize" c:type="unrealize">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="stage_window" transfer-ownership="none">
+              <type name="StageWindow" c:type="ClutterStageWindow*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="show">
+        <callback name="show" c:type="show">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="stage_window" transfer-ownership="none">
+              <type name="StageWindow" c:type="ClutterStageWindow*"/>
+            </parameter>
+            <parameter name="do_raise" transfer-ownership="none">
+              <type name="boolean" c:type="gboolean"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="hide">
+        <callback name="hide" c:type="hide">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="stage_window" transfer-ownership="none">
+              <type name="StageWindow" c:type="ClutterStageWindow*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="resize">
+        <callback name="resize" c:type="resize">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="stage_window" transfer-ownership="none">
+              <type name="StageWindow" c:type="ClutterStageWindow*"/>
+            </parameter>
+            <parameter name="width" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+            <parameter name="height" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_geometry">
+        <callback name="get_geometry" c:type="get_geometry">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="stage_window" transfer-ownership="none">
+              <type name="StageWindow" c:type="ClutterStageWindow*"/>
+            </parameter>
+            <parameter name="geometry" transfer-ownership="none">
+              <type name="Geometry" c:type="ClutterGeometry*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_pending_swaps">
+        <callback name="get_pending_swaps" c:type="get_pending_swaps">
+          <return-value transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </return-value>
+          <parameters>
+            <parameter name="stage_window" transfer-ownership="none">
+              <type name="StageWindow" c:type="ClutterStageWindow*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="add_redraw_clip">
+        <callback name="add_redraw_clip" c:type="add_redraw_clip">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="stage_window" transfer-ownership="none">
+              <type name="StageWindow" c:type="ClutterStageWindow*"/>
+            </parameter>
+            <parameter name="stage_rectangle" transfer-ownership="none">
+              <type name="Geometry" c:type="ClutterGeometry*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="has_redraw_clips">
+        <callback name="has_redraw_clips" c:type="has_redraw_clips">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="stage_window" transfer-ownership="none">
+              <type name="StageWindow" c:type="ClutterStageWindow*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="ignoring_redraw_clips">
+        <callback name="ignoring_redraw_clips" c:type="ignoring_redraw_clips">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="stage_window" transfer-ownership="none">
+              <type name="StageWindow" c:type="ClutterStageWindow*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+    </record>
+    <constant name="StickyKeys_Enable" value="65141">
+      <type name="int"/>
+    </constant>
+    <constant name="Super_L" value="65515">
+      <type name="int"/>
+    </constant>
+    <constant name="Super_R" value="65516">
+      <type name="int"/>
+    </constant>
+    <constant name="Sys_Req" value="65301">
+      <type name="int"/>
+    </constant>
+    <constant name="T" value="84">
+      <type name="int"/>
+    </constant>
+    <constant name="THORN" value="222">
+      <type name="int"/>
+    </constant>
+    <constant name="Tab" value="65289">
+      <type name="int"/>
+    </constant>
+    <constant name="Tabovedot" value="16785002">
+      <type name="int"/>
+    </constant>
+    <constant name="Tcaron" value="427">
+      <type name="int"/>
+    </constant>
+    <constant name="Tcedilla" value="478">
+      <type name="int"/>
+    </constant>
+    <constant name="Terminate_Server" value="65237">
+      <type name="int"/>
+    </constant>
+    <class name="Text"
+           c:type="ClutterText"
+           doc="The #ClutterText struct contains only private data."
+           version="1.0"
+           parent="Actor"
+           glib:type-name="ClutterText"
+           glib:get-type="clutter_text_get_type"
+           glib:type-struct="TextClass">
+      <implements name="Scriptable"/>
+      <constructor name="new"
+                   c:identifier="clutter_text_new"
+                   doc="Creates a new #ClutterText actor. This actor can be used to
+display and edit text."
+                   version="1.0">
+        <return-value transfer-ownership="full">
+          <type name="Text" c:type="ClutterActor*"/>
+        </return-value>
+      </constructor>
+      <constructor name="new_full"
+                   c:identifier="clutter_text_new_full"
+                   doc="Creates a new #ClutterText actor, using @font_name as the font
+description; @text will be used to set the contents of the actor;
+and @color will be used as the color to render @text.
+This function is equivalent to calling clutter_text_new(),
+clutter_text_set_font_name(), clutter_text_set_text() and
+clutter_text_set_color()."
+                   version="1.0">
+        <return-value transfer-ownership="full">
+          <type name="Text" c:type="ClutterActor*"/>
+        </return-value>
+        <parameters>
+          <parameter name="font_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="text" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="color" transfer-ownership="none">
+            <type name="Color" c:type="ClutterColor*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_with_text"
+                   c:identifier="clutter_text_new_with_text"
+                   doc="Creates a new #ClutterText actor, using @font_name as the font
+description; @text will be used to set the contents of the actor.
+This function is equivalent to calling clutter_text_new(),
+clutter_text_set_font_name(), and clutter_text_set_text()."
+                   version="1.0">
+        <return-value transfer-ownership="full">
+          <type name="Text" c:type="ClutterActor*"/>
+        </return-value>
+        <parameters>
+          <parameter name="font_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="text" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="get_text"
+              c:identifier="clutter_text_get_text"
+              doc="Retrieves a pointer to the current contents of a #ClutterText
+actor.
+If you need a copy of the contents for manipulating, either
+use g_strdup() on the returned string, or use:
+|[
+copy = clutter_text_get_chars (text, 0, -1);
+]|
+Which will return a newly allocated string.
+is owned by the #ClutterText actor and should never be
+modified or freed"
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="set_text"
+              c:identifier="clutter_text_set_text"
+              doc="Sets the contents of a #ClutterText actor.
+If the #ClutterText:use-markup property was set to %TRUE it
+will be reset to %FALSE as a side effect. If you want to
+maintain the #ClutterText:use-markup you should use the
+clutter_text_set_markup() function instead"
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="text"
+                     transfer-ownership="none"
+                     doc=" empty string)">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_markup"
+              c:identifier="clutter_text_set_markup"
+              doc="Sets @markup as the contents of a #ClutterText.
+This is a convenience function for setting a string containing
+Pango markup, and it is logically equivalent to:
+|[
+clutter_text_set_text (CLUTTER_TEXT (actor), markup);
+clutter_text_set_use_markup (CLUTTER_TEXT (actor), TRUE);
+]|"
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="markup"
+                     transfer-ownership="none"
+                     doc=" as passing &quot;&quot; (the empty string)">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_color"
+              c:identifier="clutter_text_set_color"
+              doc="Sets the color of the contents of a #ClutterText actor.
+The overall opacity of the #ClutterText actor will be the
+result of the alpha value of @color and the composited
+opacity of the actor itself on the scenegraph, as returned
+by clutter_actor_get_paint_opacity()."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="color" transfer-ownership="none">
+            <type name="Color" c:type="ClutterColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_color"
+              c:identifier="clutter_text_get_color"
+              doc="Retrieves the text color as set by clutter_text_set_color()."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="color" transfer-ownership="none">
+            <type name="Color" c:type="ClutterColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_font_name"
+              c:identifier="clutter_text_set_font_name"
+              doc="Sets the font used by a #ClutterText. The @font_name string
+must either be %NULL, which means that the font name from the
+default #ClutterBackend will be used; or be something that can
+be parsed by the pango_font_description_from_string() function,
+like:
+|[
+clutter_text_set_font_name (text, &quot;Sans 10pt&quot;);
+clutter_text_set_font_name (text, &quot;Serif 16px&quot;);
+clutter_text_set_font_name (text, &quot;Helvetica 10&quot;);
+]|"
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="font_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_font_name"
+              c:identifier="clutter_text_get_font_name"
+              doc="Retrieves the font name as set by clutter_text_set_font_name().
+string is owned by the #ClutterText actor and should not be
+modified or freed"
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="set_font_description"
+              c:identifier="clutter_text_set_font_description"
+              doc="Sets @font_desc as the font description for a #ClutterText
+The #PangoFontDescription is copied by the #ClutterText actor
+so you can safely call pango_font_description_free() on it after
+calling this function."
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="font_desc" transfer-ownership="none">
+            <type name="Pango.FontDescription" c:type="PangoFontDescription*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_font_description"
+              c:identifier="clutter_text_get_font_description"
+              doc="Retrieves the #PangoFontDescription used by @self
+by the #ClutterText actor and it should not be modified or freed"
+              version="1.2">
+        <return-value transfer-ownership="full">
+          <type name="Pango.FontDescription" c:type="PangoFontDescription*"/>
+        </return-value>
+      </method>
+      <method name="set_ellipsize"
+              c:identifier="clutter_text_set_ellipsize"
+              doc="text if there is not enough space to render the entire contents
+of a #ClutterText actor"
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="mode" transfer-ownership="none">
+            <type name="Pango.EllipsizeMode" c:type="PangoEllipsizeMode"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_ellipsize"
+              c:identifier="clutter_text_get_ellipsize"
+              doc="Returns the ellipsizing position of a #ClutterText actor, as
+set by clutter_text_set_ellipsize()."
+              version="1.0">
+        <return-value transfer-ownership="full">
+          <type name="Pango.EllipsizeMode" c:type="PangoEllipsizeMode"/>
+        </return-value>
+      </method>
+      <method name="set_line_wrap"
+              c:identifier="clutter_text_set_line_wrap"
+              doc="Sets whether the contents of a #ClutterText actor should wrap,
+if they don&apos;t fit the size assigned to the actor."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="line_wrap" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_line_wrap"
+              c:identifier="clutter_text_get_line_wrap"
+              doc="Retrieves the value set using clutter_text_set_line_wrap().
+its contents"
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_line_wrap_mode"
+              c:identifier="clutter_text_set_line_wrap_mode"
+              doc="If line wrapping is enabled (see clutter_text_set_line_wrap()) this
+function controls how the line wrapping is performed. The default is
+%PANGO_WRAP_WORD which means wrap on word boundaries."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="wrap_mode" transfer-ownership="none">
+            <type name="Pango.WrapMode" c:type="PangoWrapMode"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_line_wrap_mode"
+              c:identifier="clutter_text_get_line_wrap_mode"
+              doc="Retrieves the line wrap mode used by the #ClutterText actor.
+See clutter_text_set_line_wrap_mode ()."
+              version="1.0">
+        <return-value transfer-ownership="full">
+          <type name="Pango.WrapMode" c:type="PangoWrapMode"/>
+        </return-value>
+      </method>
+      <method name="get_layout"
+              c:identifier="clutter_text_get_layout"
+              doc="Retrieves the current #PangoLayout used by a #ClutterText actor.
+the #ClutterText actor and should not be modified or freed"
+              version="1.0">
+        <return-value transfer-ownership="none"
+                      doc="a #PangoLayout. The returned object is owned by">
+          <type name="Pango.Layout" c:type="PangoLayout*"/>
+        </return-value>
+      </method>
+      <method name="set_attributes"
+              c:identifier="clutter_text_set_attributes"
+              doc="Sets the attributes list that are going to be applied to the
+#ClutterText contents.
+The #ClutterText actor will take a reference on the #PangoAttrList
+passed to this function."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="attrs" transfer-ownership="none">
+            <type name="Pango.AttrList" c:type="PangoAttrList*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_attributes"
+              c:identifier="clutter_text_get_attributes"
+              doc="Gets the attribute list that was set on the #ClutterText actor
+clutter_text_set_attributes(), if any.
+returned value is owned by the #ClutterText and should not be unreferenced."
+              version="1.0">
+        <return-value transfer-ownership="none"
+                      doc="the attribute list, or %NULL if none was set. The">
+          <type name="Pango.AttrList" c:type="PangoAttrList*"/>
+        </return-value>
+      </method>
+      <method name="set_use_markup"
+              c:identifier="clutter_text_set_use_markup"
+              doc="Sets whether the contents of the #ClutterText actor contains markup
+in &lt;link linkend=&quot;PangoMarkupFormat&quot;&gt;Pango&apos;s text markup language&lt;/link&gt;.
+Setting #ClutterText:use-markup on an editable #ClutterText will
+make the actor discard any markup."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="setting" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_use_markup"
+              c:identifier="clutter_text_get_use_markup"
+              doc="Retrieves whether the contents of the #ClutterText actor should be
+parsed for the Pango text markup."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_line_alignment"
+              c:identifier="clutter_text_set_line_alignment"
+              doc="Sets the way that the lines of a wrapped label are aligned with
+respect to each other. This does not affect the overall alignment
+of the label within its allocated or specified width.
+To align a #ClutterText actor you should add it to a container
+that supports alignment, or use the anchor point."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="alignment" transfer-ownership="none">
+            <type name="Pango.Alignment" c:type="PangoAlignment"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_line_alignment"
+              c:identifier="clutter_text_get_line_alignment"
+              doc="Retrieves the alignment of a #ClutterText, as set by
+clutter_text_set_line_alignment()."
+              version="1.0">
+        <return-value transfer-ownership="full">
+          <type name="Pango.Alignment" c:type="PangoAlignment"/>
+        </return-value>
+      </method>
+      <method name="set_justify"
+              c:identifier="clutter_text_set_justify"
+              doc="Sets whether the text of the #ClutterText actor should be justified
+on both margins. This setting is ignored if Clutter is compiled
+against Pango &amp;lt; 1.18."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="justify" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_justify"
+              c:identifier="clutter_text_get_justify"
+              doc="Retrieves whether the #ClutterText actor should justify its contents
+on both margins."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="insert_unichar"
+              c:identifier="clutter_text_insert_unichar"
+              doc="Inserts @wc at the current cursor position of a
+#ClutterText actor."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="wc" transfer-ownership="none">
+            <type name="GLib.unichar" c:type="gunichar"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="delete_chars"
+              c:identifier="clutter_text_delete_chars"
+              doc="Deletes @n_chars inside a #ClutterText actor, starting from the
+current cursor position."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="n_chars" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="insert_text"
+              c:identifier="clutter_text_insert_text"
+              doc="Inserts @text into a #ClutterActor at the given position.
+If @position is a negative number, the text will be appended
+at the end of the current contents of the #ClutterText.
+The position is expressed in characters, not in bytes."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="text" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="position" transfer-ownership="none">
+            <type name="ssize_t" c:type="gssize"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="delete_text"
+              c:identifier="clutter_text_delete_text"
+              doc="Deletes the text inside a #ClutterText actor between @start_pos
+and @end_pos.
+The starting and ending positions are expressed in characters,
+not in bytes."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="start_pos" transfer-ownership="none">
+            <type name="ssize_t" c:type="gssize"/>
+          </parameter>
+          <parameter name="end_pos" transfer-ownership="none">
+            <type name="ssize_t" c:type="gssize"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_chars"
+              c:identifier="clutter_text_get_chars"
+              doc="Retrieves the contents of the #ClutterText actor between
+The positions are specified in characters, not in bytes.
+the text actor between the specified positions. Use g_free()
+to free the resources when done"
+              version="1.0">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="start_pos" transfer-ownership="none">
+            <type name="ssize_t" c:type="gssize"/>
+          </parameter>
+          <parameter name="end_pos" transfer-ownership="none">
+            <type name="ssize_t" c:type="gssize"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_editable"
+              c:identifier="clutter_text_set_editable"
+              doc="Sets whether the #ClutterText actor should be editable.
+An editable #ClutterText with key focus set using
+clutter_actor_grab_key_focus() or clutter_stage_take_key_focus()
+will receive key events and will update its contents accordingly."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="editable" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_editable"
+              c:identifier="clutter_text_get_editable"
+              doc="Retrieves whether a #ClutterText is editable or not."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_activatable"
+              c:identifier="clutter_text_set_activatable"
+              doc="Sets whether a #ClutterText actor should be activatable.
+An activatable #ClutterText actor will emit the #ClutterText::activate
+signal whenever the &apos;Enter&apos; (or &apos;Return&apos;) key is pressed; if it is not
+activatable, a new line will be appended to the current content.
+An activatable #ClutterText must also be set as editable using
+clutter_text_set_editable()."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="activatable" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_activatable"
+              c:identifier="clutter_text_get_activatable"
+              doc="Retrieves whether a #ClutterText is activatable or not."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_cursor_position"
+              c:identifier="clutter_text_get_cursor_position"
+              doc="Retrieves the cursor position."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="set_cursor_position"
+              c:identifier="clutter_text_set_cursor_position"
+              doc="Sets the cursor of a #ClutterText actor at @position.
+The position is expressed in characters, not in bytes."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="position" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_cursor_visible"
+              c:identifier="clutter_text_set_cursor_visible"
+              doc="Sets whether the cursor of a #ClutterText actor should be
+visible or not.
+The color of the cursor will be the same as the text color
+unless clutter_text_set_cursor_color() has been called.
+The size of the cursor can be set using clutter_text_set_cursor_size().
+The position of the cursor can be changed programmatically using
+clutter_text_set_cursor_position()."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="cursor_visible" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_cursor_visible"
+              c:identifier="clutter_text_get_cursor_visible"
+              doc="Retrieves whether the cursor of a #ClutterText actor is visible."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_cursor_color"
+              c:identifier="clutter_text_set_cursor_color"
+              doc="Sets the color of the cursor of a #ClutterText actor.
+If @color is %NULL, the cursor color will be the same as the
+text color."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="color" transfer-ownership="none">
+            <type name="Color" c:type="ClutterColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_cursor_color"
+              c:identifier="clutter_text_get_cursor_color"
+              doc="Retrieves the color of the cursor of a #ClutterText actor."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="color" transfer-ownership="none">
+            <type name="Color" c:type="ClutterColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_cursor_size"
+              c:identifier="clutter_text_set_cursor_size"
+              doc="Sets the size of the cursor of a #ClutterText. The cursor
+will only be visible if the #ClutterText:cursor-visible property
+is set to %TRUE."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="size"
+                     transfer-ownership="none"
+                     doc=" default value">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_cursor_size"
+              c:identifier="clutter_text_get_cursor_size"
+              doc="Retrieves the size of the cursor of a #ClutterText actor."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="set_selectable"
+              c:identifier="clutter_text_set_selectable"
+              doc="Sets whether a #ClutterText actor should be selectable.
+A selectable #ClutterText will allow selecting its contents using
+the pointer or the keyboard."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="selectable" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_selectable"
+              c:identifier="clutter_text_get_selectable"
+              doc="Retrieves whether a #ClutterText is selectable or not."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_selection_bound"
+              c:identifier="clutter_text_set_selection_bound"
+              doc="Sets the other end of the selection, starting from the current
+cursor position.
+If @selection_bound is -1, the selection unset."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="selection_bound" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_selection_bound"
+              c:identifier="clutter_text_get_selection_bound"
+              doc="Retrieves the other end of the selection of a #ClutterText actor,
+in characters from the current cursor position."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="set_selection"
+              c:identifier="clutter_text_set_selection"
+              doc="Selects the region of text between @start_pos and @end_pos.
+This function changes the position of the cursor to match"
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="start_pos" transfer-ownership="none">
+            <type name="ssize_t" c:type="gssize"/>
+          </parameter>
+          <parameter name="end_pos" transfer-ownership="none">
+            <type name="ssize_t" c:type="gssize"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_selection"
+              c:identifier="clutter_text_get_selection"
+              doc="Retrieves the currently selected text.
+selected text, or %NULL. Use g_free() to free the returned
+string."
+              version="1.0">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="set_selection_color"
+              c:identifier="clutter_text_set_selection_color"
+              doc="Sets the color of the selection of a #ClutterText actor.
+If @color is %NULL, the selection color will be the same as the
+cursor color, or if no cursor color is set either then it will be
+the same as the text color."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="color" transfer-ownership="none">
+            <type name="Color" c:type="ClutterColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_selection_color"
+              c:identifier="clutter_text_get_selection_color"
+              doc="Retrieves the color of the selection of a #ClutterText actor."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="color" transfer-ownership="none">
+            <type name="Color" c:type="ClutterColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="delete_selection"
+              c:identifier="clutter_text_delete_selection"
+              doc="Deletes the currently selected text
+This function is only useful in subclasses of #ClutterText
+is empty, and %FALSE otherwise"
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_password_char"
+              c:identifier="clutter_text_set_password_char"
+              doc="Sets the character to use in place of the actual text in a
+password text actor.
+If @wc is 0 the text will be displayed as it is entered in the
+#ClutterText actor."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="wc" transfer-ownership="none">
+            <type name="GLib.unichar" c:type="gunichar"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_password_char"
+              c:identifier="clutter_text_get_password_char"
+              doc="Retrieves the character to use in place of the actual text
+as set by clutter_text_set_password_char().
+character is not set"
+              version="1.0">
+        <return-value transfer-ownership="full">
+          <type name="GLib.unichar" c:type="gunichar"/>
+        </return-value>
+      </method>
+      <method name="set_max_length"
+              c:identifier="clutter_text_set_max_length"
+              doc="Sets the maximum allowed length of the contents of the actor. If the
+current contents are longer than the given length, then they will be
+truncated to fit."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="max"
+                     transfer-ownership="none"
+                     doc=" to disable or -1 to set the length of the current string">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_max_length"
+              c:identifier="clutter_text_get_max_length"
+              doc="Gets the maximum length of text that can be set into a text actor.
+See clutter_text_set_max_length()."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="set_single_line_mode"
+              c:identifier="clutter_text_set_single_line_mode"
+              doc="Sets whether a #ClutterText actor should be in single line mode
+or not.
+A text actor in single line mode will not wrap text and will clip
+the the visible area to the predefined size. The contents of the
+text actor will scroll to display the end of the text if its length
+is bigger than the allocated width.
+When setting the single line mode the #ClutterText:activatable
+property is also set as a side effect. Instead of entering a new
+line character, the text actor will emit the #ClutterText::activate
+signal."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="single_line" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_single_line_mode"
+              c:identifier="clutter_text_get_single_line_mode"
+              doc="Retrieves whether the #ClutterText actor is in single line mode."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="activate"
+              c:identifier="clutter_text_activate"
+              doc="Emits the #ClutterText::activate signal, if @self has been set
+as activatable using clutter_text_set_activatable().
+This function can be used to emit the ::activate signal inside
+a #ClutterActor::captured-event or #ClutterActor::key-press-event
+signal handlers before the default signal handler for the
+#ClutterText is invoked.
+and %FALSE otherwise"
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="position_to_coords"
+              c:identifier="clutter_text_position_to_coords"
+              doc="Retrieves the coordinates of the given @position."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="position" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="x"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <type name="float" c:type="gfloat*"/>
+          </parameter>
+          <parameter name="y"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <type name="float" c:type="gfloat*"/>
+          </parameter>
+          <parameter name="line_height"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <type name="float" c:type="gfloat*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_preedit_string"
+              c:identifier="clutter_text_set_preedit_string"
+              doc="Sets, or unsets, the pre-edit string. This function is useful
+for input methods to display a string (with eventual specific
+Pango attributes) before it is entered inside the #ClutterText
+buffer.
+The preedit string and attributes are ignored if the #ClutterText
+actor is not editable.
+This function should not be used by applications"
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="preedit_str"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="the pre-edit string, or %NULL to unset it">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="preedit_attrs"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="the pre-edit string attributes">
+            <type name="Pango.AttrList" c:type="PangoAttrList*"/>
+          </parameter>
+          <parameter name="cursor_pos" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="activatable"
+                version="1.0"
+                writable="1"
+                doc="Toggles whether return invokes the activate signal or not.">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="attributes"
+                version="1.0"
+                writable="1"
+                doc="A list of #PangoStyleAttribute&lt;!-- --&gt;s to be applied to the
+contents of the #ClutterText actor.">
+        <type name="Pango.AttrList" c:type="PangoAttrList"/>
+      </property>
+      <property name="color"
+                version="1.0"
+                writable="1"
+                doc="The color used to render the text.">
+        <type name="Color" c:type="ClutterColor"/>
+      </property>
+      <property name="cursor-color"
+                version="1.0"
+                writable="1"
+                doc="The color of the cursor.">
+        <type name="Color" c:type="ClutterColor"/>
+      </property>
+      <property name="cursor-color-set"
+                version="1.0"
+                doc="Will be set to %TRUE if #ClutterText:cursor-color has been set.">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="cursor-size"
+                version="1.0"
+                writable="1"
+                doc="The size of the cursor, in pixels. If set to -1 the size used will
+be the default cursor size of 2 pixels.">
+        <type name="int" c:type="gint"/>
+      </property>
+      <property name="cursor-visible"
+                version="1.0"
+                writable="1"
+                doc="Whether the input cursor is visible or not, it will only be visible
+if both #ClutterText:cursor-visible and #ClutterText:editable are
+set to %TRUE.">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="editable"
+                version="1.0"
+                writable="1"
+                doc="Whether key events delivered to the actor causes editing.">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="ellipsize"
+                version="1.0"
+                writable="1"
+                doc="The preferred place to ellipsize the contents of the #ClutterText actor">
+        <type name="Pango.EllipsizeMode" c:type="PangoEllipsizeMode"/>
+      </property>
+      <property name="font-description"
+                version="1.2"
+                writable="1"
+                doc="The #PangoFontDescription that should be used by the #ClutterText
+If you have a string describing the font then you should look at
+#ClutterText:font-name instead">
+        <type name="Pango.FontDescription" c:type="PangoFontDescription"/>
+      </property>
+      <property name="font-name"
+                version="1.0"
+                writable="1"
+                doc="The font to be used by the #ClutterText, as a string
+that can be parsed by pango_font_description_from_string().">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <property name="justify"
+                version="1.0"
+                writable="1"
+                doc="Whether the contents of the #ClutterText should be justified
+on both margins.">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="line-alignment"
+                version="1.0"
+                writable="1"
+                doc="The preferred alignment for the text. This property controls
+the alignment of multi-line paragraphs.">
+        <type name="Pango.Alignment" c:type="PangoAlignment"/>
+      </property>
+      <property name="line-wrap"
+                version="1.0"
+                writable="1"
+                doc="Whether to wrap the lines of #ClutterText:text if the contents
+exceed the available allocation. The wrapping strategy is
+controlled by the #ClutterText:line-wrap-mode property.">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="line-wrap-mode"
+                version="1.0"
+                writable="1"
+                doc="If #ClutterText:line-wrap is set to %TRUE, this property will
+control how the text is wrapped.">
+        <type name="Pango.WrapMode" c:type="PangoWrapMode"/>
+      </property>
+      <property name="max-length"
+                version="1.0"
+                writable="1"
+                doc="The maximum length of the contents of the #ClutterText actor.">
+        <type name="int" c:type="gint"/>
+      </property>
+      <property name="password-char"
+                version="1.0"
+                writable="1"
+                doc="If non-zero, the character that should be used in place of
+the actual text in a password text actor.">
+        <type name="uint" c:type="guint"/>
+      </property>
+      <property name="position"
+                version="1.0"
+                writable="1"
+                doc="The current input cursor position. -1 is taken to be the end of the text">
+        <type name="int" c:type="gint"/>
+      </property>
+      <property name="selectable"
+                version="1.0"
+                writable="1"
+                doc="Whether it is possible to select text, either using the pointer
+or the keyboard.">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="selection-bound"
+                version="1.0"
+                writable="1"
+                doc="The current input cursor position. -1 is taken to be the end of the text">
+        <type name="int" c:type="gint"/>
+      </property>
+      <property name="selection-color"
+                version="1.0"
+                writable="1"
+                doc="The color of the selection.">
+        <type name="Color" c:type="ClutterColor"/>
+      </property>
+      <property name="selection-color-set"
+                version="1.0"
+                doc="Will be set to %TRUE if #ClutterText:selection-color has been set.">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="single-line-mode"
+                version="1.0"
+                writable="1"
+                doc="Whether the #ClutterText actor should be in single line mode
+or not. A single line #ClutterText actor will only contain a
+single line of text, scrolling it in case its length is bigger
+than the allocated size.
+Setting this property will also set the #ClutterText:activatable
+property as a side-effect.">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="text"
+                version="1.0"
+                writable="1"
+                doc="The text to render inside the actor.">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <property name="use-markup"
+                version="1.0"
+                writable="1"
+                doc="Whether the text includes Pango markup. See pango_layout_set_markup()
+in the Pango documentation.">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <field name="parent_instance">
+        <type name="Actor" c:type="ClutterActor"/>
+      </field>
+      <field name="priv">
+        <type name="TextPrivate" c:type="ClutterTextPrivate*"/>
+      </field>
+      <glib:signal name="activate">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="cursor-event"
+                   doc="The ::cursor-event signal is emitted whenever the cursor position
+changes inside a #ClutterText actor. Inside @geometry it is stored
+the current position and size of the cursor, relative to the actor
+itself."
+                   version="1.0">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="geometry" transfer-ownership="none">
+            <type name="Geometry" c:type="ClutterGeometry"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="delete-text"
+                   doc="This signal is emitted when text is deleted from the actor by
+the user. It is emitted before @self text changes."
+                   version="1.2">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="start_pos" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="end_pos" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="insert-text"
+                   doc="This signal is emitted when text is inserted into the actor by
+the user. It is emitted before @self text changes."
+                   version="1.2">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="new_text" transfer-ownership="none">
+            <type name="utf8" c:type="gchararray"/>
+          </parameter>
+          <parameter name="new_text_length"
+                     transfer-ownership="none"
+                     doc=" new_text is nul-terminated">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="position"
+                     transfer-ownership="none"
+                     doc=" new text. this is an in-out parameter.  After the signal emission is finished, it should point after the newly inserted text.">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="text-changed"
+                   doc="The ::text-changed signal is emitted after @actor&apos;s text changes"
+                   version="1.0">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+    </class>
+    <record name="TextClass"
+            c:type="ClutterTextClass"
+            glib:is-gtype-struct-for="Text"
+            doc="The #ClutterTextClass struct contains only private data."
+            version="1.0">
+      <field name="parent_class">
+        <type name="ActorClass" c:type="ClutterActorClass"/>
+      </field>
+      <field name="text_changed">
+        <callback name="text_changed" c:type="text_changed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="self" transfer-ownership="none">
+              <type name="Text" c:type="ClutterText*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="activate">
+        <callback name="activate" c:type="activate">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="self" transfer-ownership="none">
+              <type name="Text" c:type="ClutterText*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="cursor_event">
+        <callback name="cursor_event" c:type="cursor_event">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="self" transfer-ownership="none">
+              <type name="Text" c:type="ClutterText*"/>
+            </parameter>
+            <parameter name="geometry" transfer-ownership="none">
+              <type name="Geometry" c:type="ClutterGeometry*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="clutter_reserved1">
+        <callback name="clutter_reserved1" c:type="_clutter_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_reserved2">
+        <callback name="clutter_reserved2" c:type="_clutter_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_reserved3">
+        <callback name="clutter_reserved3" c:type="_clutter_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_reserved4">
+        <callback name="clutter_reserved4" c:type="_clutter_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_reserved5">
+        <callback name="clutter_reserved5" c:type="_clutter_reserved5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_reserved6">
+        <callback name="clutter_reserved6" c:type="_clutter_reserved6">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_reserved7">
+        <callback name="clutter_reserved7" c:type="_clutter_reserved7">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_reserved8">
+        <callback name="clutter_reserved8" c:type="_clutter_reserved8">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <enumeration name="TextDirection"
+                 doc="The text direction to be used by #ClutterActor&lt;!-- --&gt;s"
+                 version="1.2"
+                 glib:type-name="ClutterTextDirection"
+                 glib:get-type="clutter_text_direction_get_type"
+                 c:type="ClutterTextDirection">
+      <member name="default"
+              value="0"
+              c:identifier="CLUTTER_TEXT_DIRECTION_DEFAULT"
+              glib:nick="default"/>
+      <member name="ltr"
+              value="1"
+              c:identifier="CLUTTER_TEXT_DIRECTION_LTR"
+              glib:nick="ltr"/>
+      <member name="rtl"
+              value="2"
+              c:identifier="CLUTTER_TEXT_DIRECTION_RTL"
+              glib:nick="rtl"/>
+    </enumeration>
+    <record name="TextPrivate" c:type="ClutterTextPrivate">
+    </record>
+    <class name="Texture"
+           c:type="ClutterTexture"
+           doc="The #ClutterTexture structure contains only private data
+and should be accessed using the provided API"
+           version="0.1"
+           parent="Actor"
+           glib:type-name="ClutterTexture"
+           glib:get-type="clutter_texture_get_type"
+           glib:type-struct="TextureClass">
+      <implements name="Scriptable"/>
+      <constructor name="new"
+                   c:identifier="clutter_texture_new"
+                   doc="Creates a new empty #ClutterTexture object.">
+        <return-value transfer-ownership="full">
+          <type name="Texture" c:type="ClutterActor*"/>
+        </return-value>
+      </constructor>
+      <constructor name="new_from_file"
+                   c:identifier="clutter_texture_new_from_file"
+                   doc="Creates a new ClutterTexture actor to display the image contained a
+file. If the image failed to load then NULL is returned and @error
+is set.
+error."
+                   version="0.8"
+                   throws="1">
+        <return-value transfer-ownership="full">
+          <type name="Texture" c:type="ClutterActor*"/>
+        </return-value>
+        <parameters>
+          <parameter name="filename" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_from_actor"
+                   c:identifier="clutter_texture_new_from_actor"
+                   doc="Creates a new #ClutterTexture object with its source a prexisting
+actor (and associated children). The textures content will contain
+&apos;live&apos; redirected output of the actors scene.
+Note this function is intented as a utility call for uniformly applying
+shaders to groups and other potential visual effects. It requires that
+the %CLUTTER_FEATURE_OFFSCREEN feature is supported by the current backend
+and the target system.
+Some tips on usage:
+&lt;itemizedlist&gt;
+&lt;listitem&gt;
+&lt;para&gt;The source actor must be made visible (i.e by calling
+#clutter_actor_show).&lt;/para&gt;
+&lt;/listitem&gt;
+&lt;listitem&gt;
+&lt;para&gt;The source actor must have a parent in order for it to be
+allocated a size from the layouting mechanism. If the source
+actor does not have a parent when this function is called then
+the ClutterTexture will adopt it and allocate it at its
+preferred size. Using this you can clone an actor that is
+otherwise not displayed. Because of this feature if you do
+intend to display the source actor then you must make sure that
+the actor is parented before calling
+clutter_texture_new_from_actor() or that you unparent it before
+adding it to a container.&lt;/para&gt;
+&lt;/listitem&gt;
+&lt;listitem&gt;
+&lt;para&gt;When getting the image for the clone texture, Clutter
+will attempt to render the source actor exactly as it would
+appear if it was rendered on screen. The source actor&apos;s parent
+transformations are taken into account. Therefore if your
+source actor is rotated along the X or Y axes so that it has
+some depth, the texture will appear differently depending on
+the on-screen location of the source actor. While painting the
+source actor, Clutter will set up a temporary asymmetric
+perspective matrix as the projection matrix so that the source
+actor will be projected as if a small section of the screen was
+being viewed. Before version 0.8.2, an orthogonal identity
+projection was used which meant that the source actor would be
+clipped if any part of it was not on the zero Z-plane.&lt;/para&gt;
+&lt;/listitem&gt;
+&lt;listitem&gt;
+&lt;para&gt;Avoid reparenting the source with the created texture.&lt;/para&gt;
+&lt;/listitem&gt;
+&lt;listitem&gt;
+&lt;para&gt;A group can be padded with a transparent rectangle as to
+provide a border to contents for shader output (blurring text
+for example).&lt;/para&gt;
+&lt;/listitem&gt;
+&lt;listitem&gt;
+&lt;para&gt;The texture will automatically resize to contain a further
+transformed source. However, this involves overhead and can be
+avoided by placing the source actor in a bounding group
+sized large enough to contain any child tranformations.&lt;/para&gt;
+&lt;/listitem&gt;
+&lt;listitem&gt;
+&lt;para&gt;Uploading pixel data to the texture (e.g by using
+clutter_actor_set_from_file()) will destroy the offscreen texture data
+and end redirection.&lt;/para&gt;
+&lt;/listitem&gt;
+&lt;listitem&gt;
+&lt;para&gt;cogl_texture_get_data() with the handle returned by
+clutter_texture_get_cogl_texture() can be used to read the
+offscreen texture pixels into a pixbuf.&lt;/para&gt;
+&lt;/listitem&gt;
+&lt;/itemizedlist&gt;"
+                   version="0.6">
+        <return-value transfer-ownership="full">
+          <type name="Texture" c:type="ClutterActor*"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="set_from_file"
+              c:identifier="clutter_texture_set_from_file"
+              doc="Sets the #ClutterTexture image data from an image file. In case of
+failure, %FALSE is returned and @error is set.
+If #ClutterTexture:load-async is set to %TRUE, this function
+will return as soon as possible, and the actual image loading
+from disk will be performed asynchronously. #ClutterTexture::size-change
+will be emitten when the size of the texture is available and
+#ClutterTexture::load-finished will be emitted when the image has been
+loaded or if an error occurred."
+              version="0.8"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="filename" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_from_rgb_data"
+              c:identifier="clutter_texture_set_from_rgb_data"
+              doc="Sets #ClutterTexture image data."
+              version="0.4."
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <array c:type="guchar*">
+              <type name="uint8"/>
+            </array>
+          </parameter>
+          <parameter name="has_alpha" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="width" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="height" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="rowstride" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="bpp"
+                     transfer-ownership="none"
+                     doc=" depending on @has_alpha)">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="TextureFlags" c:type="ClutterTextureFlags"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_from_yuv_data"
+              c:identifier="clutter_texture_set_from_yuv_data"
+              doc="Sets a #ClutterTexture from YUV image data. If an error occurred,
+%FALSE is returned and @error is set."
+              version="0.4"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <array c:type="guchar*">
+              <type name="uint8"/>
+            </array>
+          </parameter>
+          <parameter name="width" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="height" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="TextureFlags" c:type="ClutterTextureFlags"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_area_from_rgb_data"
+              c:identifier="clutter_texture_set_area_from_rgb_data"
+              doc="Updates a sub-region of the pixel data in a #ClutterTexture."
+              version="0.6"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <array c:type="guchar*">
+              <type name="uint8"/>
+            </array>
+          </parameter>
+          <parameter name="has_alpha" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="x" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="width" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="height" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="rowstride" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="bpp"
+                     transfer-ownership="none"
+                     doc=" depending on @has_alpha)">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="TextureFlags" c:type="ClutterTextureFlags"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_base_size"
+              c:identifier="clutter_texture_get_base_size"
+              doc="Gets the size in pixels of the untransformed underlying image">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="width"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     doc="return location for the width, or %NULL">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+          <parameter name="height"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     doc="return location for the height, or %NULL">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_filter_quality"
+              c:identifier="clutter_texture_set_filter_quality"
+              doc="Sets the filter quality when scaling a texture. The quality is an
+enumeration currently the following values are supported:
+%CLUTTER_TEXTURE_QUALITY_LOW which is fast but only uses nearest neighbour
+interpolation. %CLUTTER_TEXTURE_QUALITY_MEDIUM which is computationally a
+bit more expensive (bilinear interpolation), and
+%CLUTTER_TEXTURE_QUALITY_HIGH which uses extra texture memory resources to
+improve scaled down rendering as well (by using mipmaps). The default value
+is %CLUTTER_TEXTURE_QUALITY_MEDIUM."
+              version="0.8">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="filter_quality" transfer-ownership="none">
+            <type name="TextureQuality" c:type="ClutterTextureQuality"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_filter_quality"
+              c:identifier="clutter_texture_get_filter_quality">
+        <return-value transfer-ownership="full">
+          <type name="TextureQuality" c:type="ClutterTextureQuality"/>
+        </return-value>
+      </method>
+      <method name="get_cogl_texture"
+              c:identifier="clutter_texture_get_cogl_texture">
+        <return-value transfer-ownership="full">
+          <type name="Cogl.Handle" c:type="CoglHandle"/>
+        </return-value>
+      </method>
+      <method name="set_cogl_texture"
+              c:identifier="clutter_texture_set_cogl_texture">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="cogl_tex" transfer-ownership="none">
+            <type name="Cogl.Handle" c:type="CoglHandle"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_cogl_material"
+              c:identifier="clutter_texture_get_cogl_material"
+              doc="Returns a handle to the underlying COGL material used for drawing
+the actor. No extra reference is taken so if you need to keep the
+handle then you should call cogl_handle_ref() on it."
+              version="1.0">
+        <return-value transfer-ownership="full">
+          <type name="Cogl.Handle" c:type="CoglHandle"/>
+        </return-value>
+      </method>
+      <method name="set_cogl_material"
+              c:identifier="clutter_texture_set_cogl_material"
+              doc="Replaces the underlying Cogl material drawn by this actor with
+handle is no longer needed it should be deref&apos;d with
+cogl_handle_unref. Texture data is attached to the material so
+calling this function also replaces the Cogl
+texture. #ClutterTexture requires that the material have a texture
+layer so you should set one on the material before calling this
+function."
+              version="0.8">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="cogl_material" transfer-ownership="none">
+            <type name="Cogl.Handle" c:type="CoglHandle"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_sync_size"
+              c:identifier="clutter_texture_set_sync_size"
+              doc="Sets whether @texture should have the same preferred size as the
+underlying image data."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="sync_size"
+                     transfer-ownership="none"
+                     doc=" underlying image data">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_sync_size"
+              c:identifier="clutter_texture_get_sync_size"
+              doc="Retrieves the value set with clutter_texture_get_sync_size()
+preferred size of the underlying image data"
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_repeat"
+              c:identifier="clutter_texture_set_repeat"
+              doc="Sets whether the @texture should repeat horizontally or
+vertically when the actor size is bigger than the image size"
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="repeat_x" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="repeat_y" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_repeat"
+              c:identifier="clutter_texture_get_repeat"
+              doc="Retrieves the horizontal and vertical repeat values set
+using clutter_texture_set_repeat()"
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="repeat_x"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     doc="return location for the horizontal repeat">
+            <type name="boolean" c:type="gboolean*"/>
+          </parameter>
+          <parameter name="repeat_y"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     doc="return location for the vertical repeat">
+            <type name="boolean" c:type="gboolean*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_pixel_format"
+              c:identifier="clutter_texture_get_pixel_format"
+              doc="Retrieves the pixel format used by @texture. This is
+equivalent to:
+|[
+handle = clutter_texture_get_pixel_format (texture);
+if (handle != COGL_INVALID_HANDLE)
+format = cogl_texture_get_format (handle);
+]|"
+              version="1.0">
+        <return-value transfer-ownership="full">
+          <type name="Cogl.PixelFormat" c:type="CoglPixelFormat"/>
+        </return-value>
+      </method>
+      <method name="get_max_tile_waste"
+              c:identifier="clutter_texture_get_max_tile_waste">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="set_keep_aspect_ratio"
+              c:identifier="clutter_texture_set_keep_aspect_ratio"
+              doc="Sets whether @texture should have a preferred size maintaining
+the aspect ratio of the underlying image"
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="keep_aspect" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_keep_aspect_ratio"
+              c:identifier="clutter_texture_get_keep_aspect_ratio"
+              doc="Retrieves the value set using clutter_texture_get_keep_aspect_ratio()
+aspect ratio of the underlying image"
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_load_async"
+              c:identifier="clutter_texture_set_load_async"
+              doc="Sets whether @texture should use a worker thread to load the data
+from disk asynchronously. Setting @load_async to %TRUE will make
+clutter_texture_set_from_file() return immediately.
+See the #ClutterTexture:load-async property documentation, and
+clutter_texture_set_load_data_async()."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="load_async"
+                     transfer-ownership="none"
+                     doc=" from a filename">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_load_async"
+              c:identifier="clutter_texture_get_load_async"
+              doc="Retrieves the value set using clutter_texture_get_load_async()
+disk asynchronously"
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_load_data_async"
+              c:identifier="clutter_texture_set_load_data_async"
+              doc="Sets whether @texture should use a worker thread to load the data
+from disk asynchronously. Setting @load_async to %TRUE will make
+clutter_texture_set_from_file() block until the #ClutterTexture has
+determined the width and height of the image data.
+See the #ClutterTexture:load-async property documentation, and
+clutter_texture_set_load_async()."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="load_async"
+                     transfer-ownership="none"
+                     doc=" from a filename">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_load_data_async"
+              c:identifier="clutter_texture_get_load_data_async"
+              doc="Retrieves the value set by clutter_texture_set_load_data_async()
+data from a file asynchronously"
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <property name="cogl-material" writable="1">
+        <type name="Cogl.Handle" c:type="CoglHandle"/>
+      </property>
+      <property name="cogl-texture" writable="1">
+        <type name="Cogl.Handle" c:type="CoglHandle"/>
+      </property>
+      <property name="disable-slicing" writable="1" construct-only="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="filename" readable="0" writable="1">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <property name="filter-quality" writable="1" construct="1">
+        <type name="TextureQuality" c:type="ClutterTextureQuality"/>
+      </property>
+      <property name="keep-aspect-ratio" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="load-async"
+                version="1.0"
+                readable="0"
+                writable="1"
+                doc="Tries to load a texture from a filename by using a local thread to perform
+the read operations. The initially created texture has dimensions 0x0 when
+the true size becomes available the #ClutterTexture::size-change signal is
+emitted and when the image has completed loading the
+#ClutterTexture::load-finished signal is emitted.
+Threading is only enabled if g_thread_init() has been called prior to
+clutter_init(), otherwise #ClutterTexture will use the main loop to load
+the image.
+The upload of the texture data on the GL pipeline is not asynchronous, as
+it must be performed from within the same thread that called
+clutter_main().">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="load-data-async"
+                version="1.0"
+                readable="0"
+                writable="1"
+                doc="Like #ClutterTexture:load-async but loads the width and height
+synchronously causing some blocking.">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="pixel-format">
+        <type name="Cogl.PixelFormat" c:type="CoglPixelFormat"/>
+      </property>
+      <property name="repeat-x" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="repeat-y" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="sync-size" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="tile-waste">
+        <type name="int" c:type="gint"/>
+      </property>
+      <field name="parent">
+        <type name="Actor" c:type="ClutterActor"/>
+      </field>
+      <field name="priv">
+        <type name="TexturePrivate" c:type="ClutterTexturePrivate*"/>
+      </field>
+      <glib:signal name="load-finished"
+                   doc="The ::load-finished signal is emitted when a texture load has
+completed. If there was an error during loading, @error will
+be set, otherwise it will be %NULL"
+                   version="1.0">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="error" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="pixbuf-change"
+                   doc="The ::pixbuf-change signal is emitted each time the pixbuf
+used by @texture changes.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="size-change"
+                   doc="The ::size-change signal is emitted each time the size of the
+pixbuf used by @texture changes.  The new size is given as
+argument to the callback.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="width" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="height" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <record name="TextureClass"
+            c:type="ClutterTextureClass"
+            glib:is-gtype-struct-for="Texture"
+            doc="The #ClutterTextureClass structure contains only private data"
+            version="0.1">
+      <field name="parent_class">
+        <type name="ActorClass" c:type="ClutterActorClass"/>
+      </field>
+      <field name="size_change">
+        <callback name="size_change" c:type="size_change">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="texture" transfer-ownership="none">
+              <type name="Texture" c:type="ClutterTexture*"/>
+            </parameter>
+            <parameter name="width" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+            <parameter name="height" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="pixbuf_change">
+        <callback name="pixbuf_change" c:type="pixbuf_change">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="texture" transfer-ownership="none">
+              <type name="Texture" c:type="ClutterTexture*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="load_finished">
+        <callback name="load_finished" c:type="load_finished">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="texture" transfer-ownership="none">
+              <type name="Texture" c:type="ClutterTexture*"/>
+            </parameter>
+            <parameter name="error" transfer-ownership="none">
+              <type name="GLib.Error" c:type="GError*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="clutter_texture1">
+        <callback name="clutter_texture1" c:type="_clutter_texture1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_texture2">
+        <callback name="clutter_texture2" c:type="_clutter_texture2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_texture3">
+        <callback name="clutter_texture3" c:type="_clutter_texture3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_texture4">
+        <callback name="clutter_texture4" c:type="_clutter_texture4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_texture5">
+        <callback name="clutter_texture5" c:type="_clutter_texture5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <enumeration name="TextureError"
+                 doc="Error enumeration for #ClutterTexture"
+                 version="0.4"
+                 glib:type-name="ClutterTextureError"
+                 glib:get-type="clutter_texture_error_get_type"
+                 c:type="ClutterTextureError"
+                 glib:error-quark="clutter_texture_error_quark">
+      <member name="out_of_memory"
+              value="0"
+              c:identifier="CLUTTER_TEXTURE_ERROR_OUT_OF_MEMORY"
+              glib:nick="out-of-memory"/>
+      <member name="no_yuv"
+              value="1"
+              c:identifier="CLUTTER_TEXTURE_ERROR_NO_YUV"
+              glib:nick="no-yuv"/>
+      <member name="bad_format"
+              value="2"
+              c:identifier="CLUTTER_TEXTURE_ERROR_BAD_FORMAT"
+              glib:nick="bad-format"/>
+    </enumeration>
+    <bitfield name="TextureFlags"
+              doc="Flags for clutter_texture_set_from_rgb_data() and
+clutter_texture_set_from_yuv_data()."
+              version="0.4"
+              glib:type-name="ClutterTextureFlags"
+              glib:get-type="clutter_texture_flags_get_type"
+              c:type="ClutterTextureFlags">
+      <member name="none"
+              value="0"
+              c:identifier="CLUTTER_TEXTURE_NONE"
+              glib:nick="none"/>
+      <member name="rgb_flag_bgr"
+              value="2"
+              c:identifier="CLUTTER_TEXTURE_RGB_FLAG_BGR"
+              glib:nick="rgb-flag-bgr"/>
+      <member name="rgb_flag_premult"
+              value="4"
+              c:identifier="CLUTTER_TEXTURE_RGB_FLAG_PREMULT"
+              glib:nick="rgb-flag-premult"/>
+      <member name="yuv_flag_yuv2"
+              value="8"
+              c:identifier="CLUTTER_TEXTURE_YUV_FLAG_YUV2"
+              glib:nick="yuv-flag-yuv2"/>
+    </bitfield>
+    <record name="TexturePrivate" c:type="ClutterTexturePrivate">
+    </record>
+    <enumeration name="TextureQuality"
+                 doc="Enumaration controlling the texture quality."
+                 version="0.8"
+                 glib:type-name="ClutterTextureQuality"
+                 glib:get-type="clutter_texture_quality_get_type"
+                 c:type="ClutterTextureQuality">
+      <member name="low"
+              value="0"
+              c:identifier="CLUTTER_TEXTURE_QUALITY_LOW"
+              glib:nick="low"/>
+      <member name="medium"
+              value="1"
+              c:identifier="CLUTTER_TEXTURE_QUALITY_MEDIUM"
+              glib:nick="medium"/>
+      <member name="high"
+              value="2"
+              c:identifier="CLUTTER_TEXTURE_QUALITY_HIGH"
+              glib:nick="high"/>
+    </enumeration>
+    <constant name="Thai_baht" value="3551">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_bobaimai" value="3514">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_chochan" value="3496">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_chochang" value="3498">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_choching" value="3497">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_chochoe" value="3500">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_dochada" value="3502">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_dodek" value="3508">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_fofa" value="3517">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_fofan" value="3519">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_hohip" value="3531">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_honokhuk" value="3534">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_khokhai" value="3490">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_khokhon" value="3493">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_khokhuat" value="3491">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_khokhwai" value="3492">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_khorakhang" value="3494">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_kokai" value="3489">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_lakkhangyao" value="3557">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_lekchet" value="3575">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_lekha" value="3573">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_lekhok" value="3574">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_lekkao" value="3577">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_leknung" value="3569">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_lekpaet" value="3576">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_leksam" value="3571">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_leksi" value="3572">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_leksong" value="3570">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_leksun" value="3568">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_lochula" value="3532">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_loling" value="3525">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_lu" value="3526">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_maichattawa" value="3563">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_maiek" value="3560">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_maihanakat" value="3537">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_maihanakat_maitho" value="3550">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_maitaikhu" value="3559">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_maitho" value="3561">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_maitri" value="3562">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_maiyamok" value="3558">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_moma" value="3521">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_ngongu" value="3495">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_nikhahit" value="3565">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_nonen" value="3507">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_nonu" value="3513">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_oang" value="3533">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_paiyannoi" value="3535">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_phinthu" value="3546">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_phophan" value="3518">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_phophung" value="3516">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_phosamphao" value="3520">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_popla" value="3515">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_rorua" value="3523">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_ru" value="3524">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_saraa" value="3536">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_saraaa" value="3538">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_saraae" value="3553">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_saraaimaimalai" value="3556">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_saraaimaimuan" value="3555">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_saraam" value="3539">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_sarae" value="3552">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_sarai" value="3540">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_saraii" value="3541">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_sarao" value="3554">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_sarau" value="3544">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_saraue" value="3542">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_sarauee" value="3543">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_sarauu" value="3545">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_sorusi" value="3529">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_sosala" value="3528">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_soso" value="3499">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_sosua" value="3530">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_thanthakhat" value="3564">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_thonangmontho" value="3505">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_thophuthao" value="3506">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_thothahan" value="3511">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_thothan" value="3504">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_thothong" value="3512">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_thothung" value="3510">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_topatak" value="3503">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_totao" value="3509">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_wowaen" value="3527">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_yoyak" value="3522">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_yoying" value="3501">
+      <type name="int"/>
+    </constant>
+    <constant name="Thorn" value="222">
+      <type name="int"/>
+    </constant>
+    <class name="Timeline"
+           c:type="ClutterTimeline"
+           doc="The #ClutterTimeline structure contains only private data
+and should be accessed using the provided API"
+           version="0.2"
+           parent="GObject.Object"
+           glib:type-name="ClutterTimeline"
+           glib:get-type="clutter_timeline_get_type"
+           glib:type-struct="TimelineClass">
+      <constructor name="new"
+                   c:identifier="clutter_timeline_new"
+                   doc="Creates a new #ClutterTimeline with a duration of @msecs.
+g_object_unref() when done using it"
+                   version="0.6">
+        <return-value transfer-ownership="full">
+          <type name="Timeline" c:type="ClutterTimeline*"/>
+        </return-value>
+        <parameters>
+          <parameter name="msecs" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="clone"
+              c:identifier="clutter_timeline_clone"
+              doc="Create a new #ClutterTimeline instance which has property values
+matching that of supplied timeline. The cloned timeline will not
+be started and will not be positioned to the current position of"
+              version="0.4">
+        <return-value transfer-ownership="full">
+          <type name="Timeline" c:type="ClutterTimeline*"/>
+        </return-value>
+      </method>
+      <method name="get_duration"
+              c:identifier="clutter_timeline_get_duration"
+              doc="Retrieves the duration of a #ClutterTimeline in milliseconds.
+See clutter_timeline_set_duration()."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="set_duration"
+              c:identifier="clutter_timeline_set_duration"
+              doc="Sets the duration of the timeline, in milliseconds. The speed
+of the timeline depends on the ClutterTimeline:fps setting."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="msecs" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_direction"
+              c:identifier="clutter_timeline_get_direction"
+              doc="Retrieves the direction of the timeline set with
+clutter_timeline_set_direction()."
+              version="0.6">
+        <return-value transfer-ownership="full">
+          <type name="TimelineDirection" c:type="ClutterTimelineDirection"/>
+        </return-value>
+      </method>
+      <method name="set_direction"
+              c:identifier="clutter_timeline_set_direction"
+              doc="Sets the direction of @timeline, either %CLUTTER_TIMELINE_FORWARD or
+%CLUTTER_TIMELINE_BACKWARD."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="direction" transfer-ownership="none">
+            <type name="TimelineDirection" c:type="ClutterTimelineDirection"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="start"
+              c:identifier="clutter_timeline_start"
+              doc="Starts the #ClutterTimeline playing.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="pause"
+              c:identifier="clutter_timeline_pause"
+              doc="Pauses the #ClutterTimeline on current frame">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="stop"
+              c:identifier="clutter_timeline_stop"
+              doc="Stops the #ClutterTimeline and moves to frame 0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="set_loop"
+              c:identifier="clutter_timeline_set_loop"
+              doc="Sets whether @timeline should loop.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="loop" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_loop"
+              c:identifier="clutter_timeline_get_loop"
+              doc="Gets whether @timeline is looping">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="rewind"
+              c:identifier="clutter_timeline_rewind"
+              doc="Rewinds #ClutterTimeline to the first frame if its direction is
+%CLUTTER_TIMELINE_FORWARD and the last frame if it is
+%CLUTTER_TIMELINE_BACKWARD.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="skip"
+              c:identifier="clutter_timeline_skip"
+              doc="Advance timeline by the requested time in milliseconds">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="msecs" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="advance"
+              c:identifier="clutter_timeline_advance"
+              doc="Advance timeline to the requested point. The point is given as a
+time in milliseconds since the timeline started.
+&lt;note&gt;&lt;para&gt;The @timeline will not emit the #ClutterTimeline::new-frame
+signal for the given time. The first ::new-frame signal after the call to
+clutter_timeline_advance() will be emit the skipped markers.
+&lt;/para&gt;&lt;/note&gt;">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="msecs" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_elapsed_time"
+              c:identifier="clutter_timeline_get_elapsed_time"
+              doc="Request the current time position of the timeline.">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="get_progress"
+              c:identifier="clutter_timeline_get_progress"
+              doc="The position of the timeline in a [0, 1] interval."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="double" c:type="gdouble"/>
+        </return-value>
+      </method>
+      <method name="is_playing"
+              c:identifier="clutter_timeline_is_playing"
+              doc="Queries state of a #ClutterTimeline.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_delay"
+              c:identifier="clutter_timeline_set_delay"
+              doc="Sets the delay, in milliseconds, before @timeline should start."
+              version="0.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="msecs" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_delay"
+              c:identifier="clutter_timeline_get_delay"
+              doc="Retrieves the delay set using clutter_timeline_set_delay()."
+              version="0.4">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="get_delta"
+              c:identifier="clutter_timeline_get_delta"
+              doc="Retrieves the amount of time elapsed since the last
+ClutterTimeline::new-frame signal.
+This function is only useful inside handlers for the ::new-frame
+signal, and its behaviour is undefined if the timeline is not
+playing.
+last frame"
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="add_marker_at_time"
+              c:identifier="clutter_timeline_add_marker_at_time"
+              doc="Adds a named marker that will be hit when the timeline has been
+running for @msecs milliseconds. Markers are unique string
+identifiers for a given time. Once @timeline reaches
+attached to that time.
+A marker can be removed with clutter_timeline_remove_marker(). The
+timeline can be advanced to a marker using
+clutter_timeline_advance_to_marker()."
+              version="0.8">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="marker_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="msecs" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_marker"
+              c:identifier="clutter_timeline_remove_marker"
+              doc="Removes @marker_name, if found, from @timeline."
+              version="0.8">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="marker_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="list_markers"
+              c:identifier="clutter_timeline_list_markers"
+              doc="Retrieves the list of markers at time @msecs. If @frame_num is a
+negative integer, all the markers attached to @timeline will be
+returned.
+allocated, %NULL terminated string array containing the names of
+the markers. Use g_strfreev() when done."
+              version="0.8">
+        <return-value transfer-ownership="full" doc="a newly">
+          <array length="2" c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </return-value>
+        <parameters>
+          <parameter name="msecs" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="n_markers"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <type name="size_t" c:type="gsize*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="has_marker"
+              c:identifier="clutter_timeline_has_marker"
+              doc="Checks whether @timeline has a marker set with the given name."
+              version="0.8">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="marker_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="advance_to_marker"
+              c:identifier="clutter_timeline_advance_to_marker"
+              doc="Advances @timeline to the time of the given @marker_name.
+&lt;note&gt;&lt;para&gt;Like clutter_timeline_advance(), this function will not
+emit the #ClutterTimeline::new-frame for the time where @marker_name
+is set, nor it will emit #ClutterTimeline::marker-reached for"
+              version="0.8">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="marker_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="do_tick" c:identifier="clutter_timeline_do_tick">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="tick_time" transfer-ownership="none">
+            <type name="GLib.TimeVal" c:type="GTimeVal*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="delay"
+                version="0.4"
+                writable="1"
+                doc="A delay, in milliseconds, that should be observed by the
+timeline before actually starting.">
+        <type name="uint" c:type="guint"/>
+      </property>
+      <property name="direction"
+                version="0.6"
+                writable="1"
+                doc="The direction of the timeline, either %CLUTTER_TIMELINE_FORWARD or
+%CLUTTER_TIMELINE_BACKWARD.">
+        <type name="TimelineDirection" c:type="ClutterTimelineDirection"/>
+      </property>
+      <property name="duration"
+                version="0.6"
+                writable="1"
+                doc="Duration of the timeline in milliseconds, depending on the
+ClutterTimeline:fps value.">
+        <type name="uint" c:type="guint"/>
+      </property>
+      <property name="loop"
+                writable="1"
+                doc="Whether the timeline should automatically rewind and restart.">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <field name="parent">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="priv">
+        <type name="TimelinePrivate" c:type="ClutterTimelinePrivate*"/>
+      </field>
+      <glib:signal name="completed"
+                   doc="The ::completed signal is emitted when the timeline reaches the
+number of frames specified by the ClutterTimeline:num-frames property.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="marker-reached"
+                   doc="The ::marker-reached signal is emitted each time a timeline
+reaches a marker set with
+clutter_timeline_add_marker_at_time(). This signal is detailed
+with the name of the marker as well, so it is possible to connect
+a callback to the ::marker-reached signal for a specific marker
+with:
+&lt;informalexample&gt;&lt;programlisting&gt;
+clutter_timeline_add_marker_at_time (timeline, &quot;foo&quot;, 500);
+clutter_timeline_add_marker_at_time (timeline, &quot;bar&quot;, 750);
+g_signal_connect (timeline, &quot;marker-reached&quot;,
+G_CALLBACK (each_marker_reached), NULL);
+g_signal_connect (timeline, &quot;marker-reached::foo&quot;,
+G_CALLBACK (foo_marker_reached), NULL);
+g_signal_connect (timeline, &quot;marker-reached::bar&quot;,
+G_CALLBACK (bar_marker_reached), NULL);
+&lt;/programlisting&gt;&lt;/informalexample&gt;
+In the example, the first callback will be invoked for both
+the &quot;foo&quot; and &quot;bar&quot; marker, while the second and third callbacks
+will be invoked for the &quot;foo&quot; or &quot;bar&quot; markers, respectively."
+                   version="0.8">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="marker_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchararray"/>
+          </parameter>
+          <parameter name="msecs" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="new-frame"
+                   doc="The ::new-frame signal is emitted for each timeline running
+timeline before a new frame is drawn to give animations a chance
+to update the scene.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="msecs" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="paused"
+                   doc="The ::paused signal is emitted when clutter_timeline_pause() is invoked.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="started"
+                   doc="The ::started signal is emitted when the timeline starts its run.
+This might be as soon as clutter_timeline_start() is invoked or
+after the delay set in the ClutterTimeline:delay property has
+expired.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+    </class>
+    <record name="TimelineClass"
+            c:type="ClutterTimelineClass"
+            glib:is-gtype-struct-for="Timeline"
+            doc="The #ClutterTimelineClass structure contains only private data"
+            version="0.2">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="started">
+        <callback name="started" c:type="started">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="timeline" transfer-ownership="none">
+              <type name="Timeline" c:type="ClutterTimeline*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="completed">
+        <callback name="completed" c:type="completed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="timeline" transfer-ownership="none">
+              <type name="Timeline" c:type="ClutterTimeline*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="paused">
+        <callback name="paused" c:type="paused">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="timeline" transfer-ownership="none">
+              <type name="Timeline" c:type="ClutterTimeline*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="new_frame">
+        <callback name="new_frame" c:type="new_frame">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="timeline" transfer-ownership="none">
+              <type name="Timeline" c:type="ClutterTimeline*"/>
+            </parameter>
+            <parameter name="frame_num" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="marker_reached">
+        <callback name="marker_reached" c:type="marker_reached">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="timeline" transfer-ownership="none">
+              <type name="Timeline" c:type="ClutterTimeline*"/>
+            </parameter>
+            <parameter name="marker_name" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+            <parameter name="frame_num" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="clutter_timeline_1">
+        <callback name="clutter_timeline_1" c:type="_clutter_timeline_1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_timeline_2">
+        <callback name="clutter_timeline_2" c:type="_clutter_timeline_2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_timeline_3">
+        <callback name="clutter_timeline_3" c:type="_clutter_timeline_3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_timeline_4">
+        <callback name="clutter_timeline_4" c:type="_clutter_timeline_4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_timeline_5">
+        <callback name="clutter_timeline_5" c:type="_clutter_timeline_5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <enumeration name="TimelineDirection"
+                 doc="The direction of a #ClutterTimeline"
+                 version="0.6"
+                 glib:type-name="ClutterTimelineDirection"
+                 glib:get-type="clutter_timeline_direction_get_type"
+                 c:type="ClutterTimelineDirection">
+      <member name="forward"
+              value="0"
+              c:identifier="CLUTTER_TIMELINE_FORWARD"
+              glib:nick="forward"/>
+      <member name="backward"
+              value="1"
+              c:identifier="CLUTTER_TIMELINE_BACKWARD"
+              glib:nick="backward"/>
+    </enumeration>
+    <record name="TimelinePrivate" c:type="ClutterTimelinePrivate">
+    </record>
+    <record name="TimeoutPool" c:type="ClutterTimeoutPool">
+      <constructor name="new"
+                   c:identifier="clutter_timeout_pool_new"
+                   doc="Creates a new timeout pool source. A timeout pool should be used when
+multiple timeout functions, running at the same priority, are needed and
+the g_timeout_add() API might lead to starvation of the time slice of
+the main loop. A timeout pool allocates a single time slice of the main
+loop and runs every timeout function inside it. The timeout pool is
+always sorted, so that the extraction of the next timeout function is
+a constant time operation.
+is owned by the GLib default context and will be automatically
+destroyed when the context is destroyed. It is possible to force
+the destruction of the timeout pool using g_source_destroy()"
+                   version="0.4">
+        <return-value transfer-ownership="full">
+          <type name="TimeoutPool" c:type="ClutterTimeoutPool*"/>
+        </return-value>
+        <parameters>
+          <parameter name="priority"
+                     transfer-ownership="none"
+                     doc=" be #G_PRIORITY_DEFAULT">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="add"
+              c:identifier="clutter_timeout_pool_add"
+              doc="Sets a function to be called at regular intervals, and puts it inside
+the @pool. The function is repeatedly called until it returns %FALSE,
+at which point the timeout is automatically destroyed and the function
+won&apos;t be called again. If @notify is not %NULL, the @notify function
+will be called. The first call to @func will be at the end of @interval.
+Since Clutter 0.8 this will try to compensate for delays. For
+example, if @func takes half the interval time to execute then the
+function will be called again half the interval time after it
+finished. Before version 0.8 it would not fire until a full
+interval after the function completes so the delay between calls
+would be @interval * 1.5. This function does not however try to
+invoke the function multiple times to catch up missing frames if
+Use clutter_timeout_pool_remove() to stop the timeout."
+              version="0.4">
+        <return-value transfer-ownership="none"
+                      doc="of the timeout inside the pool.">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+        <parameters>
+          <parameter name="fps" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     scope="notified"
+                     closure="3"
+                     destroy="4">
+            <type name="GLib.SourceFunc" c:type="GSourceFunc"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+          <parameter name="notify" transfer-ownership="none" scope="call">
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove"
+              c:identifier="clutter_timeout_pool_remove"
+              doc="Removes a timeout function with @id from the timeout pool. The id
+is the same returned when adding a function to the timeout pool with
+clutter_timeout_pool_add()."
+              version="0.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="id" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <constant name="Touroku" value="65323">
+      <type name="int"/>
+    </constant>
+    <constant name="Tslash" value="940">
+      <type name="int"/>
+    </constant>
+    <constant name="U" value="85">
+      <type name="int"/>
+    </constant>
+    <constant name="Uacute" value="218">
+      <type name="int"/>
+    </constant>
+    <constant name="Ubelowdot" value="16785124">
+      <type name="int"/>
+    </constant>
+    <constant name="Ubreve" value="733">
+      <type name="int"/>
+    </constant>
+    <constant name="Ucircumflex" value="219">
+      <type name="int"/>
+    </constant>
+    <constant name="Udiaeresis" value="220">
+      <type name="int"/>
+    </constant>
+    <constant name="Udoubleacute" value="475">
+      <type name="int"/>
+    </constant>
+    <constant name="Ugrave" value="217">
+      <type name="int"/>
+    </constant>
+    <constant name="Uhook" value="16785126">
+      <type name="int"/>
+    </constant>
+    <constant name="Uhorn" value="16777647">
+      <type name="int"/>
+    </constant>
+    <constant name="Uhornacute" value="16785128">
+      <type name="int"/>
+    </constant>
+    <constant name="Uhornbelowdot" value="16785136">
+      <type name="int"/>
+    </constant>
+    <constant name="Uhorngrave" value="16785130">
+      <type name="int"/>
+    </constant>
+    <constant name="Uhornhook" value="16785132">
+      <type name="int"/>
+    </constant>
+    <constant name="Uhorntilde" value="16785134">
+      <type name="int"/>
+    </constant>
+    <constant name="Ukrainian_GHE_WITH_UPTURN" value="1725">
+      <type name="int"/>
+    </constant>
+    <constant name="Ukrainian_I" value="1718">
+      <type name="int"/>
+    </constant>
+    <constant name="Ukrainian_IE" value="1716">
+      <type name="int"/>
+    </constant>
+    <constant name="Ukrainian_YI" value="1719">
+      <type name="int"/>
+    </constant>
+    <constant name="Ukrainian_ghe_with_upturn" value="1709">
+      <type name="int"/>
+    </constant>
+    <constant name="Ukrainian_i" value="1702">
+      <type name="int"/>
+    </constant>
+    <constant name="Ukrainian_ie" value="1700">
+      <type name="int"/>
+    </constant>
+    <constant name="Ukrainian_yi" value="1703">
+      <type name="int"/>
+    </constant>
+    <constant name="Ukranian_I" value="1718">
+      <type name="int"/>
+    </constant>
+    <constant name="Ukranian_JE" value="1716">
+      <type name="int"/>
+    </constant>
+    <constant name="Ukranian_YI" value="1719">
+      <type name="int"/>
+    </constant>
+    <constant name="Ukranian_i" value="1702">
+      <type name="int"/>
+    </constant>
+    <constant name="Ukranian_je" value="1700">
+      <type name="int"/>
+    </constant>
+    <constant name="Ukranian_yi" value="1703">
+      <type name="int"/>
+    </constant>
+    <constant name="Umacron" value="990">
+      <type name="int"/>
+    </constant>
+    <constant name="Undo" value="65381">
+      <type name="int"/>
+    </constant>
+    <enumeration name="UnitType"
+                 doc="The type of unit in which a value is expressed
+This enumeration might be expanded at later date"
+                 version="1.0"
+                 glib:type-name="ClutterUnitType"
+                 glib:get-type="clutter_unit_type_get_type"
+                 c:type="ClutterUnitType">
+      <member name="pixel"
+              value="0"
+              c:identifier="CLUTTER_UNIT_PIXEL"
+              glib:nick="pixel"/>
+      <member name="em"
+              value="1"
+              c:identifier="CLUTTER_UNIT_EM"
+              glib:nick="em"/>
+      <member name="mm"
+              value="2"
+              c:identifier="CLUTTER_UNIT_MM"
+              glib:nick="mm"/>
+      <member name="point"
+              value="3"
+              c:identifier="CLUTTER_UNIT_POINT"
+              glib:nick="point"/>
+      <member name="cm"
+              value="4"
+              c:identifier="CLUTTER_UNIT_CM"
+              glib:nick="cm"/>
+    </enumeration>
+    <record name="Units"
+            c:type="ClutterUnits"
+            doc="An opaque structure, to be used to store sizing and positioning
+values along with their unit."
+            version="1.0"
+            glib:type-name="ClutterUnits"
+            glib:get-type="clutter_units_get_type">
+      <field name="unit_type" writable="1">
+        <type name="UnitType" c:type="ClutterUnitType"/>
+      </field>
+      <field name="value" writable="1">
+        <type name="float" c:type="gfloat"/>
+      </field>
+      <field name="pixels" writable="1">
+        <type name="float" c:type="gfloat"/>
+      </field>
+      <field name="pixels_set" writable="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="serial" writable="1">
+        <type name="int32" c:type="gint32"/>
+      </field>
+      <field name="__padding_1" writable="1">
+        <type name="int32" c:type="gint32"/>
+      </field>
+      <field name="__padding_2" writable="1">
+        <type name="int64" c:type="gint64"/>
+      </field>
+      <method name="get_unit_type"
+              c:identifier="clutter_units_get_unit_type"
+              doc="Retrieves the unit type of the value stored inside @units"
+              version="1.0">
+        <return-value transfer-ownership="full">
+          <type name="UnitType" c:type="ClutterUnitType"/>
+        </return-value>
+      </method>
+      <method name="get_unit_value"
+              c:identifier="clutter_units_get_unit_value"
+              doc="Retrieves the value stored inside @units"
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="float" c:type="gfloat"/>
+        </return-value>
+      </method>
+      <method name="copy"
+              c:identifier="clutter_units_copy"
+              doc="Copies @units
+Use clutter_units_free() to free the allocated resources"
+              version="1.0">
+        <return-value transfer-ownership="full">
+          <type name="Units" c:type="ClutterUnits*"/>
+        </return-value>
+      </method>
+      <method name="free"
+              c:identifier="clutter_units_free"
+              doc="Frees the resources allocated by @units
+You should only call this function on a #ClutterUnits
+created using clutter_units_copy()"
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="from_pixels"
+              c:identifier="clutter_units_from_pixels"
+              doc="Stores a value in pixels inside @units"
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="px" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="from_em"
+              c:identifier="clutter_units_from_em"
+              doc="Stores a value in em inside @units, using the default font
+name as returned by clutter_backend_get_font_name()"
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="em" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="from_em_for_font"
+              c:identifier="clutter_units_from_em_for_font"
+              doc="Stores a value in em inside @units using @font_name"
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="font_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="em" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="from_mm"
+              c:identifier="clutter_units_from_mm"
+              doc="Stores a value in millimiters inside @units"
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="mm" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="from_cm"
+              c:identifier="clutter_units_from_cm"
+              doc="Stores a value in centimeters inside @units"
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="cm" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="from_pt"
+              c:identifier="clutter_units_from_pt"
+              doc="Stores a value in typographic points inside @units"
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="pt" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="to_pixels"
+              c:identifier="clutter_units_to_pixels"
+              doc="Converts a value in #ClutterUnits to pixels"
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="float" c:type="gfloat"/>
+        </return-value>
+      </method>
+      <method name="from_string"
+              c:identifier="clutter_units_from_string"
+              doc="Parses a value and updates @units with it
+A #ClutterUnits expressed in string should match:
+|[
+| digit* sep digit+
+]|
+For instance, these are valid strings:
+|[
+10 px
+5.1 em
+24 pt
+12.6 mm
+.3 cm
+]|
+While these are not:
+|[
+42 cats
+omg!1!ponies
+]|
+&lt;note&gt;If no unit is specified, pixels are assumed.&lt;/note&gt;
+and %FALSE otherwise"
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="str" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="to_string"
+              c:identifier="clutter_units_to_string"
+              doc="Converts @units into a string
+See clutter_units_from_string() for the units syntax and for
+examples of output
+&lt;note&gt;Fractional values are truncated to the second decimal
+position for em, mm and cm, and to the first decimal position for
+typographic points. Pixels are integers.&lt;/note&gt;
+#ClutterUnits value. Use g_free() to free the string"
+              version="1.0">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+    </record>
+    <constant name="Uogonek" value="985">
+      <type name="int"/>
+    </constant>
+    <constant name="Up" value="65362">
+      <type name="int"/>
+    </constant>
+    <constant name="Uring" value="473">
+      <type name="int"/>
+    </constant>
+    <constant name="Utilde" value="989">
+      <type name="int"/>
+    </constant>
+    <constant name="V" value="86">
+      <type name="int"/>
+    </constant>
+    <constant name="VERSION" value="1.2">
+      <type name="double"/>
+    </constant>
+    <constant name="VERSION_HEX" value="0">
+      <type name="int"/>
+    </constant>
+    <constant name="VERSION_S" value="1.2.10">
+      <type name="utf8"/>
+    </constant>
+    <record name="Vertex"
+            c:type="ClutterVertex"
+            doc="Vertex of an actor in 3D space, expressed in pixels"
+            version="0.4"
+            glib:type-name="ClutterVertex"
+            glib:get-type="clutter_vertex_get_type">
+      <field name="x" writable="1">
+        <type name="float" c:type="gfloat"/>
+      </field>
+      <field name="y" writable="1">
+        <type name="float" c:type="gfloat"/>
+      </field>
+      <field name="z" writable="1">
+        <type name="float" c:type="gfloat"/>
+      </field>
+      <constructor name="new"
+                   c:identifier="clutter_vertex_new"
+                   doc="Creates a new #ClutterVertex for the point in 3D space
+identified by the 3 coordinates @x, @y, @z
+clutter_vertex_free() to free the resources"
+                   version="1.0">
+        <return-value transfer-ownership="full">
+          <type name="Vertex" c:type="ClutterVertex*"/>
+        </return-value>
+        <parameters>
+          <parameter name="x" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+          <parameter name="z" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="copy"
+              c:identifier="clutter_vertex_copy"
+              doc="Copies @vertex
+clutter_vertex_free() to free the allocated resources"
+              version="1.0">
+        <return-value transfer-ownership="full">
+          <type name="Vertex" c:type="ClutterVertex*"/>
+        </return-value>
+      </method>
+      <method name="free"
+              c:identifier="clutter_vertex_free"
+              doc="Frees a #ClutterVertex allocated using clutter_vertex_copy()"
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="equal"
+              c:identifier="clutter_vertex_equal"
+              doc="Compares @vertex_a and @vertex_b for equality"
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="vertex_b" transfer-ownership="none">
+            <type name="Vertex" c:type="ClutterVertex*"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <constant name="VoidSymbol" value="16777215">
+      <type name="int"/>
+    </constant>
+    <constant name="W" value="87">
+      <type name="int"/>
+    </constant>
+    <constant name="Wacute" value="16785026">
+      <type name="int"/>
+    </constant>
+    <constant name="Wcircumflex" value="16777588">
+      <type name="int"/>
+    </constant>
+    <constant name="Wdiaeresis" value="16785028">
+      <type name="int"/>
+    </constant>
+    <constant name="Wgrave" value="16785024">
+      <type name="int"/>
+    </constant>
+    <constant name="WonSign" value="16785577">
+      <type name="int"/>
+    </constant>
+    <constant name="X" value="88">
+      <type name="int"/>
+    </constant>
+    <constant name="Xabovedot" value="16785034">
+      <type name="int"/>
+    </constant>
+    <constant name="Y" value="89">
+      <type name="int"/>
+    </constant>
+    <constant name="Yacute" value="221">
+      <type name="int"/>
+    </constant>
+    <constant name="Ybelowdot" value="16785140">
+      <type name="int"/>
+    </constant>
+    <constant name="Ycircumflex" value="16777590">
+      <type name="int"/>
+    </constant>
+    <constant name="Ydiaeresis" value="5054">
+      <type name="int"/>
+    </constant>
+    <constant name="Ygrave" value="16785138">
+      <type name="int"/>
+    </constant>
+    <constant name="Yhook" value="16785142">
+      <type name="int"/>
+    </constant>
+    <constant name="Ytilde" value="16785144">
+      <type name="int"/>
+    </constant>
+    <constant name="Z" value="90">
+      <type name="int"/>
+    </constant>
+    <constant name="Zabovedot" value="431">
+      <type name="int"/>
+    </constant>
+    <constant name="Zacute" value="428">
+      <type name="int"/>
+    </constant>
+    <constant name="Zcaron" value="430">
+      <type name="int"/>
+    </constant>
+    <constant name="Zen_Koho" value="65341">
+      <type name="int"/>
+    </constant>
+    <constant name="Zenkaku" value="65320">
+      <type name="int"/>
+    </constant>
+    <constant name="Zenkaku_Hankaku" value="65322">
+      <type name="int"/>
+    </constant>
+    <constant name="Zstroke" value="16777653">
+      <type name="int"/>
+    </constant>
+    <constant name="a" value="97">
+      <type name="int"/>
+    </constant>
+    <constant name="aacute" value="225">
+      <type name="int"/>
+    </constant>
+    <constant name="abelowdot" value="16785057">
+      <type name="int"/>
+    </constant>
+    <constant name="abovedot" value="511">
+      <type name="int"/>
+    </constant>
+    <constant name="abreve" value="483">
+      <type name="int"/>
+    </constant>
+    <constant name="abreveacute" value="16785071">
+      <type name="int"/>
+    </constant>
+    <constant name="abrevebelowdot" value="16785079">
+      <type name="int"/>
+    </constant>
+    <constant name="abrevegrave" value="16785073">
+      <type name="int"/>
+    </constant>
+    <constant name="abrevehook" value="16785075">
+      <type name="int"/>
+    </constant>
+    <constant name="abrevetilde" value="16785077">
+      <type name="int"/>
+    </constant>
+    <constant name="acircumflex" value="226">
+      <type name="int"/>
+    </constant>
+    <constant name="acircumflexacute" value="16785061">
+      <type name="int"/>
+    </constant>
+    <constant name="acircumflexbelowdot" value="16785069">
+      <type name="int"/>
+    </constant>
+    <constant name="acircumflexgrave" value="16785063">
+      <type name="int"/>
+    </constant>
+    <constant name="acircumflexhook" value="16785065">
+      <type name="int"/>
+    </constant>
+    <constant name="acircumflextilde" value="16785067">
+      <type name="int"/>
+    </constant>
+    <constant name="acute" value="180">
+      <type name="int"/>
+    </constant>
+    <constant name="adiaeresis" value="228">
+      <type name="int"/>
+    </constant>
+    <constant name="ae" value="230">
+      <type name="int"/>
+    </constant>
+    <constant name="agrave" value="224">
+      <type name="int"/>
+    </constant>
+    <constant name="ahook" value="16785059">
+      <type name="int"/>
+    </constant>
+    <constant name="amacron" value="992">
+      <type name="int"/>
+    </constant>
+    <constant name="ampersand" value="38">
+      <type name="int"/>
+    </constant>
+    <constant name="aogonek" value="433">
+      <type name="int"/>
+    </constant>
+    <constant name="apostrophe" value="39">
+      <type name="int"/>
+    </constant>
+    <constant name="approxeq" value="16785992">
+      <type name="int"/>
+    </constant>
+    <constant name="approximate" value="2248">
+      <type name="int"/>
+    </constant>
+    <constant name="aring" value="229">
+      <type name="int"/>
+    </constant>
+    <constant name="asciicircum" value="94">
+      <type name="int"/>
+    </constant>
+    <constant name="asciitilde" value="126">
+      <type name="int"/>
+    </constant>
+    <constant name="asterisk" value="42">
+      <type name="int"/>
+    </constant>
+    <constant name="at" value="64">
+      <type name="int"/>
+    </constant>
+    <constant name="atilde" value="227">
+      <type name="int"/>
+    </constant>
+    <constant name="b" value="98">
+      <type name="int"/>
+    </constant>
+    <constant name="babovedot" value="16784899">
+      <type name="int"/>
+    </constant>
+    <constant name="backslash" value="92">
+      <type name="int"/>
+    </constant>
+    <constant name="ballotcross" value="2804">
+      <type name="int"/>
+    </constant>
+    <constant name="bar" value="124">
+      <type name="int"/>
+    </constant>
+    <function name="base_init" c:identifier="clutter_base_init">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <constant name="because" value="16785973">
+      <type name="int"/>
+    </constant>
+    <constant name="blank" value="2527">
+      <type name="int"/>
+    </constant>
+    <constant name="botintegral" value="2213">
+      <type name="int"/>
+    </constant>
+    <constant name="botleftparens" value="2220">
+      <type name="int"/>
+    </constant>
+    <constant name="botleftsqbracket" value="2216">
+      <type name="int"/>
+    </constant>
+    <constant name="botleftsummation" value="2226">
+      <type name="int"/>
+    </constant>
+    <constant name="botrightparens" value="2222">
+      <type name="int"/>
+    </constant>
+    <constant name="botrightsqbracket" value="2218">
+      <type name="int"/>
+    </constant>
+    <constant name="botrightsummation" value="2230">
+      <type name="int"/>
+    </constant>
+    <constant name="bott" value="2550">
+      <type name="int"/>
+    </constant>
+    <constant name="botvertsummationconnector" value="2228">
+      <type name="int"/>
+    </constant>
+    <constant name="braceleft" value="123">
+      <type name="int"/>
+    </constant>
+    <constant name="braceright" value="125">
+      <type name="int"/>
+    </constant>
+    <constant name="bracketleft" value="91">
+      <type name="int"/>
+    </constant>
+    <constant name="bracketright" value="93">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_blank" value="16787456">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dot_1" value="65521">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dot_10" value="65530">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dot_2" value="65522">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dot_3" value="65523">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dot_4" value="65524">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dot_5" value="65525">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dot_6" value="65526">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dot_7" value="65527">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dot_8" value="65528">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dot_9" value="65529">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_1" value="16787457">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_12" value="16787459">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_123" value="16787463">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_1234" value="16787471">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_12345" value="16787487">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_123456" value="16787519">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_1234567" value="16787583">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_12345678" value="16787711">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_1234568" value="16787647">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_123457" value="16787551">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_1234578" value="16787679">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_123458" value="16787615">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_12346" value="16787503">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_123467" value="16787567">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_1234678" value="16787695">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_123468" value="16787631">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_12347" value="16787535">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_123478" value="16787663">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_12348" value="16787599">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_1235" value="16787479">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_12356" value="16787511">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_123567" value="16787575">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_1235678" value="16787703">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_123568" value="16787639">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_12357" value="16787543">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_123578" value="16787671">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_12358" value="16787607">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_1236" value="16787495">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_12367" value="16787559">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_123678" value="16787687">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_12368" value="16787623">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_1237" value="16787527">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_12378" value="16787655">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_1238" value="16787591">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_124" value="16787467">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_1245" value="16787483">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_12456" value="16787515">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_124567" value="16787579">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_1245678" value="16787707">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_124568" value="16787643">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_12457" value="16787547">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_124578" value="16787675">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_12458" value="16787611">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_1246" value="16787499">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_12467" value="16787563">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_124678" value="16787691">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_12468" value="16787627">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_1247" value="16787531">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_12478" value="16787659">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_1248" value="16787595">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_125" value="16787475">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_1256" value="16787507">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_12567" value="16787571">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_125678" value="16787699">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_12568" value="16787635">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_1257" value="16787539">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_12578" value="16787667">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_1258" value="16787603">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_126" value="16787491">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_1267" value="16787555">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_12678" value="16787683">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_1268" value="16787619">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_127" value="16787523">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_1278" value="16787651">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_128" value="16787587">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_13" value="16787461">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_134" value="16787469">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_1345" value="16787485">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_13456" value="16787517">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_134567" value="16787581">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_1345678" value="16787709">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_134568" value="16787645">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_13457" value="16787549">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_134578" value="16787677">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_13458" value="16787613">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_1346" value="16787501">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_13467" value="16787565">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_134678" value="16787693">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_13468" value="16787629">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_1347" value="16787533">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_13478" value="16787661">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_1348" value="16787597">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_135" value="16787477">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_1356" value="16787509">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_13567" value="16787573">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_135678" value="16787701">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_13568" value="16787637">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_1357" value="16787541">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_13578" value="16787669">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_1358" value="16787605">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_136" value="16787493">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_1367" value="16787557">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_13678" value="16787685">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_1368" value="16787621">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_137" value="16787525">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_1378" value="16787653">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_138" value="16787589">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_14" value="16787465">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_145" value="16787481">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_1456" value="16787513">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_14567" value="16787577">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_145678" value="16787705">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_14568" value="16787641">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_1457" value="16787545">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_14578" value="16787673">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_1458" value="16787609">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_146" value="16787497">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_1467" value="16787561">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_14678" value="16787689">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_1468" value="16787625">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_147" value="16787529">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_1478" value="16787657">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_148" value="16787593">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_15" value="16787473">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_156" value="16787505">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_1567" value="16787569">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_15678" value="16787697">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_1568" value="16787633">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_157" value="16787537">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_1578" value="16787665">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_158" value="16787601">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_16" value="16787489">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_167" value="16787553">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_1678" value="16787681">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_168" value="16787617">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_17" value="16787521">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_178" value="16787649">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_18" value="16787585">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_2" value="16787458">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_23" value="16787462">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_234" value="16787470">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_2345" value="16787486">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_23456" value="16787518">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_234567" value="16787582">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_2345678" value="16787710">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_234568" value="16787646">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_23457" value="16787550">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_234578" value="16787678">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_23458" value="16787614">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_2346" value="16787502">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_23467" value="16787566">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_234678" value="16787694">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_23468" value="16787630">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_2347" value="16787534">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_23478" value="16787662">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_2348" value="16787598">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_235" value="16787478">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_2356" value="16787510">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_23567" value="16787574">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_235678" value="16787702">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_23568" value="16787638">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_2357" value="16787542">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_23578" value="16787670">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_2358" value="16787606">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_236" value="16787494">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_2367" value="16787558">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_23678" value="16787686">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_2368" value="16787622">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_237" value="16787526">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_2378" value="16787654">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_238" value="16787590">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_24" value="16787466">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_245" value="16787482">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_2456" value="16787514">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_24567" value="16787578">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_245678" value="16787706">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_24568" value="16787642">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_2457" value="16787546">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_24578" value="16787674">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_2458" value="16787610">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_246" value="16787498">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_2467" value="16787562">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_24678" value="16787690">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_2468" value="16787626">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_247" value="16787530">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_2478" value="16787658">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_248" value="16787594">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_25" value="16787474">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_256" value="16787506">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_2567" value="16787570">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_25678" value="16787698">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_2568" value="16787634">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_257" value="16787538">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_2578" value="16787666">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_258" value="16787602">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_26" value="16787490">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_267" value="16787554">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_2678" value="16787682">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_268" value="16787618">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_27" value="16787522">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_278" value="16787650">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_28" value="16787586">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_3" value="16787460">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_34" value="16787468">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_345" value="16787484">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_3456" value="16787516">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_34567" value="16787580">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_345678" value="16787708">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_34568" value="16787644">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_3457" value="16787548">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_34578" value="16787676">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_3458" value="16787612">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_346" value="16787500">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_3467" value="16787564">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_34678" value="16787692">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_3468" value="16787628">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_347" value="16787532">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_3478" value="16787660">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_348" value="16787596">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_35" value="16787476">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_356" value="16787508">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_3567" value="16787572">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_35678" value="16787700">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_3568" value="16787636">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_357" value="16787540">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_3578" value="16787668">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_358" value="16787604">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_36" value="16787492">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_367" value="16787556">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_3678" value="16787684">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_368" value="16787620">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_37" value="16787524">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_378" value="16787652">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_38" value="16787588">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_4" value="16787464">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_45" value="16787480">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_456" value="16787512">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_4567" value="16787576">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_45678" value="16787704">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_4568" value="16787640">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_457" value="16787544">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_4578" value="16787672">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_458" value="16787608">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_46" value="16787496">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_467" value="16787560">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_4678" value="16787688">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_468" value="16787624">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_47" value="16787528">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_478" value="16787656">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_48" value="16787592">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_5" value="16787472">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_56" value="16787504">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_567" value="16787568">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_5678" value="16787696">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_568" value="16787632">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_57" value="16787536">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_578" value="16787664">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_58" value="16787600">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_6" value="16787488">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_67" value="16787552">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_678" value="16787680">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_68" value="16787616">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_7" value="16787520">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_78" value="16787648">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_8" value="16787584">
+      <type name="int"/>
+    </constant>
+    <constant name="breve" value="418">
+      <type name="int"/>
+    </constant>
+    <constant name="brokenbar" value="166">
+      <type name="int"/>
+    </constant>
+    <constant name="c" value="99">
+      <type name="int"/>
+    </constant>
+    <constant name="cabovedot" value="741">
+      <type name="int"/>
+    </constant>
+    <constant name="cacute" value="486">
+      <type name="int"/>
+    </constant>
+    <function name="cairo_set_source_color"
+              c:identifier="clutter_cairo_set_source_color"
+              doc="Utility function for setting the source color of @cr using
+a #ClutterColor."
+              version="1.0">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="cr" transfer-ownership="none">
+          <type name="cairo.Context" c:type="cairo_t*"/>
+        </parameter>
+        <parameter name="color" transfer-ownership="none">
+          <type name="Color" c:type="ClutterColor*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <constant name="careof" value="2744">
+      <type name="int"/>
+    </constant>
+    <constant name="caret" value="2812">
+      <type name="int"/>
+    </constant>
+    <constant name="caron" value="439">
+      <type name="int"/>
+    </constant>
+    <constant name="ccaron" value="488">
+      <type name="int"/>
+    </constant>
+    <constant name="ccedilla" value="231">
+      <type name="int"/>
+    </constant>
+    <constant name="ccircumflex" value="742">
+      <type name="int"/>
+    </constant>
+    <constant name="cedilla" value="184">
+      <type name="int"/>
+    </constant>
+    <constant name="cent" value="162">
+      <type name="int"/>
+    </constant>
+    <function name="check_version"
+              c:identifier="clutter_check_version"
+              doc="Run-time version check, to check the version the Clutter library
+that an application is currently linked against
+This is the run-time equivalent of the compile-time %CLUTTER_CHECK_VERSION
+pre-processor macro
+greater than (@major, @minor, @micro), and %FALSE otherwise"
+              version="1.2">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="major" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="minor" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="micro" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <constant name="checkerboard" value="2529">
+      <type name="int"/>
+    </constant>
+    <constant name="checkmark" value="2803">
+      <type name="int"/>
+    </constant>
+    <constant name="circle" value="3023">
+      <type name="int"/>
+    </constant>
+    <function name="clear_glyph_cache"
+              c:identifier="clutter_clear_glyph_cache"
+              doc="Clears the internal cache of glyphs used by the Pango
+renderer. This will free up some memory and GL texture
+resources. The cache will be automatically refilled as more text is
+drawn."
+              version="0.8">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <constant name="club" value="2796">
+      <type name="int"/>
+    </constant>
+    <constant name="colon" value="58">
+      <type name="int"/>
+    </constant>
+    <function name="color_equal"
+              c:identifier="clutter_color_equal"
+              doc="Compares two #ClutterColor&lt;!-- --&gt;s and checks if they are the same.
+This function can be passed to g_hash_table_new() as the @key_equal_func
+parameter, when using #ClutterColor&lt;!-- --&gt;s as keys in a #GHashTable."
+              version="0.2">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="v1" transfer-ownership="none">
+          <type name="any" c:type="gconstpointer"/>
+        </parameter>
+        <parameter name="v2" transfer-ownership="none">
+          <type name="any" c:type="gconstpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="color_hash"
+              c:identifier="clutter_color_hash"
+              doc="Converts a #ClutterColor to a hash value.
+This function can be passed to g_hash_table_new() as the @hash_func
+parameter, when using #ClutterColor&lt;!-- --&gt;s as keys in a #GHashTable."
+              version="1.0">
+      <return-value transfer-ownership="none">
+        <type name="uint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="v" transfer-ownership="none">
+          <type name="any" c:type="gconstpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <constant name="comma" value="44">
+      <type name="int"/>
+    </constant>
+    <function name="container_class_find_child_property"
+              c:identifier="clutter_container_class_find_child_property"
+              doc="Looks up the #GParamSpec for a child property of @klass.
+if no such property exist."
+              version="0.8">
+      <return-value transfer-ownership="none"
+                    doc="The #GParamSpec for the property or %NULL">
+        <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
+      </return-value>
+      <parameters>
+        <parameter name="klass" transfer-ownership="none">
+          <type name="GObject.ObjectClass" c:type="GObjectClass*"/>
+        </parameter>
+        <parameter name="property_name" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="container_class_list_child_properties"
+              c:identifier="clutter_container_class_list_child_properties"
+              doc="Returns an array of #GParamSpec for all child properties.
+of #GParamSpec&lt;!-- --&gt;s which should be freed after use."
+              version="0.8">
+      <return-value transfer-ownership="container" doc="an array">
+        <array length="1" c:type="GParamSpec**">
+          <type name="GObject.ParamSpec"/>
+        </array>
+      </return-value>
+      <parameters>
+        <parameter name="klass" transfer-ownership="none">
+          <type name="GObject.ObjectClass" c:type="GObjectClass*"/>
+        </parameter>
+        <parameter name="n_properties"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <type name="uint" c:type="guint*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <constant name="containsas" value="16785931">
+      <type name="int"/>
+    </constant>
+    <constant name="copyright" value="169">
+      <type name="int"/>
+    </constant>
+    <constant name="cr" value="2532">
+      <type name="int"/>
+    </constant>
+    <constant name="crossinglines" value="2542">
+      <type name="int"/>
+    </constant>
+    <constant name="cuberoot" value="16785947">
+      <type name="int"/>
+    </constant>
+    <constant name="currency" value="164">
+      <type name="int"/>
+    </constant>
+    <constant name="cursor" value="2815">
+      <type name="int"/>
+    </constant>
+    <constant name="d" value="100">
+      <type name="int"/>
+    </constant>
+    <constant name="dabovedot" value="16784907">
+      <type name="int"/>
+    </constant>
+    <constant name="dagger" value="2801">
+      <type name="int"/>
+    </constant>
+    <constant name="dcaron" value="495">
+      <type name="int"/>
+    </constant>
+    <constant name="dead_abovecomma" value="65124">
+      <type name="int"/>
+    </constant>
+    <constant name="dead_abovedot" value="65110">
+      <type name="int"/>
+    </constant>
+    <constant name="dead_abovereversedcomma" value="65125">
+      <type name="int"/>
+    </constant>
+    <constant name="dead_abovering" value="65112">
+      <type name="int"/>
+    </constant>
+    <constant name="dead_acute" value="65105">
+      <type name="int"/>
+    </constant>
+    <constant name="dead_belowbreve" value="65131">
+      <type name="int"/>
+    </constant>
+    <constant name="dead_belowcircumflex" value="65129">
+      <type name="int"/>
+    </constant>
+    <constant name="dead_belowdiaeresis" value="65132">
+      <type name="int"/>
+    </constant>
+    <constant name="dead_belowdot" value="65120">
+      <type name="int"/>
+    </constant>
+    <constant name="dead_belowmacron" value="65128">
+      <type name="int"/>
+    </constant>
+    <constant name="dead_belowring" value="65127">
+      <type name="int"/>
+    </constant>
+    <constant name="dead_belowtilde" value="65130">
+      <type name="int"/>
+    </constant>
+    <constant name="dead_breve" value="65109">
+      <type name="int"/>
+    </constant>
+    <constant name="dead_caron" value="65114">
+      <type name="int"/>
+    </constant>
+    <constant name="dead_cedilla" value="65115">
+      <type name="int"/>
+    </constant>
+    <constant name="dead_circumflex" value="65106">
+      <type name="int"/>
+    </constant>
+    <constant name="dead_dasia" value="65125">
+      <type name="int"/>
+    </constant>
+    <constant name="dead_diaeresis" value="65111">
+      <type name="int"/>
+    </constant>
+    <constant name="dead_doubleacute" value="65113">
+      <type name="int"/>
+    </constant>
+    <constant name="dead_grave" value="65104">
+      <type name="int"/>
+    </constant>
+    <constant name="dead_hook" value="65121">
+      <type name="int"/>
+    </constant>
+    <constant name="dead_horn" value="65122">
+      <type name="int"/>
+    </constant>
+    <constant name="dead_iota" value="65117">
+      <type name="int"/>
+    </constant>
+    <constant name="dead_macron" value="65108">
+      <type name="int"/>
+    </constant>
+    <constant name="dead_ogonek" value="65116">
+      <type name="int"/>
+    </constant>
+    <constant name="dead_perispomeni" value="65107">
+      <type name="int"/>
+    </constant>
+    <constant name="dead_psili" value="65124">
+      <type name="int"/>
+    </constant>
+    <constant name="dead_semivoiced_sound" value="65119">
+      <type name="int"/>
+    </constant>
+    <constant name="dead_stroke" value="65123">
+      <type name="int"/>
+    </constant>
+    <constant name="dead_tilde" value="65107">
+      <type name="int"/>
+    </constant>
+    <constant name="dead_voiced_sound" value="65118">
+      <type name="int"/>
+    </constant>
+    <constant name="decimalpoint" value="2749">
+      <type name="int"/>
+    </constant>
+    <constant name="degree" value="176">
+      <type name="int"/>
+    </constant>
+    <constant name="diaeresis" value="168">
+      <type name="int"/>
+    </constant>
+    <constant name="diamond" value="2797">
+      <type name="int"/>
+    </constant>
+    <constant name="digitspace" value="2725">
+      <type name="int"/>
+    </constant>
+    <constant name="dintegral" value="16785964">
+      <type name="int"/>
+    </constant>
+    <constant name="division" value="247">
+      <type name="int"/>
+    </constant>
+    <function name="do_event" c:identifier="clutter_do_event">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="event" transfer-ownership="none">
+          <type name="Event" c:type="ClutterEvent*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <constant name="dollar" value="36">
+      <type name="int"/>
+    </constant>
+    <constant name="doubbaselinedot" value="2735">
+      <type name="int"/>
+    </constant>
+    <constant name="doubleacute" value="445">
+      <type name="int"/>
+    </constant>
+    <constant name="doubledagger" value="2802">
+      <type name="int"/>
+    </constant>
+    <constant name="doublelowquotemark" value="2814">
+      <type name="int"/>
+    </constant>
+    <constant name="downarrow" value="2302">
+      <type name="int"/>
+    </constant>
+    <constant name="downcaret" value="2984">
+      <type name="int"/>
+    </constant>
+    <constant name="downshoe" value="3030">
+      <type name="int"/>
+    </constant>
+    <constant name="downstile" value="3012">
+      <type name="int"/>
+    </constant>
+    <constant name="downtack" value="3010">
+      <type name="int"/>
+    </constant>
+    <constant name="dstroke" value="496">
+      <type name="int"/>
+    </constant>
+    <constant name="e" value="101">
+      <type name="int"/>
+    </constant>
+    <constant name="eabovedot" value="1004">
+      <type name="int"/>
+    </constant>
+    <constant name="eacute" value="233">
+      <type name="int"/>
+    </constant>
+    <constant name="ebelowdot" value="16785081">
+      <type name="int"/>
+    </constant>
+    <constant name="ecaron" value="492">
+      <type name="int"/>
+    </constant>
+    <constant name="ecircumflex" value="234">
+      <type name="int"/>
+    </constant>
+    <constant name="ecircumflexacute" value="16785087">
+      <type name="int"/>
+    </constant>
+    <constant name="ecircumflexbelowdot" value="16785095">
+      <type name="int"/>
+    </constant>
+    <constant name="ecircumflexgrave" value="16785089">
+      <type name="int"/>
+    </constant>
+    <constant name="ecircumflexhook" value="16785091">
+      <type name="int"/>
+    </constant>
+    <constant name="ecircumflextilde" value="16785093">
+      <type name="int"/>
+    </constant>
+    <constant name="ediaeresis" value="235">
+      <type name="int"/>
+    </constant>
+    <constant name="egrave" value="232">
+      <type name="int"/>
+    </constant>
+    <constant name="ehook" value="16785083">
+      <type name="int"/>
+    </constant>
+    <constant name="eightsubscript" value="16785544">
+      <type name="int"/>
+    </constant>
+    <constant name="eightsuperior" value="16785528">
+      <type name="int"/>
+    </constant>
+    <constant name="elementof" value="16785928">
+      <type name="int"/>
+    </constant>
+    <constant name="ellipsis" value="2734">
+      <type name="int"/>
+    </constant>
+    <constant name="em3space" value="2723">
+      <type name="int"/>
+    </constant>
+    <constant name="em4space" value="2724">
+      <type name="int"/>
+    </constant>
+    <constant name="emacron" value="954">
+      <type name="int"/>
+    </constant>
+    <constant name="emdash" value="2729">
+      <type name="int"/>
+    </constant>
+    <constant name="emfilledcircle" value="2782">
+      <type name="int"/>
+    </constant>
+    <constant name="emfilledrect" value="2783">
+      <type name="int"/>
+    </constant>
+    <constant name="emopencircle" value="2766">
+      <type name="int"/>
+    </constant>
+    <constant name="emopenrectangle" value="2767">
+      <type name="int"/>
+    </constant>
+    <constant name="emptyset" value="16785925">
+      <type name="int"/>
+    </constant>
+    <constant name="emspace" value="2721">
+      <type name="int"/>
+    </constant>
+    <constant name="endash" value="2730">
+      <type name="int"/>
+    </constant>
+    <constant name="enfilledcircbullet" value="2790">
+      <type name="int"/>
+    </constant>
+    <constant name="enfilledsqbullet" value="2791">
+      <type name="int"/>
+    </constant>
+    <constant name="eng" value="959">
+      <type name="int"/>
+    </constant>
+    <constant name="enopencircbullet" value="2784">
+      <type name="int"/>
+    </constant>
+    <constant name="enopensquarebullet" value="2785">
+      <type name="int"/>
+    </constant>
+    <constant name="enspace" value="2722">
+      <type name="int"/>
+    </constant>
+    <constant name="eogonek" value="490">
+      <type name="int"/>
+    </constant>
+    <constant name="equal" value="61">
+      <type name="int"/>
+    </constant>
+    <constant name="eth" value="240">
+      <type name="int"/>
+    </constant>
+    <constant name="etilde" value="16785085">
+      <type name="int"/>
+    </constant>
+    <function name="event_get"
+              c:identifier="clutter_event_get"
+              doc="Pops an event off the event queue. Applications should not need to call
+this."
+              version="0.4">
+      <return-value transfer-ownership="full">
+        <type name="Event" c:type="ClutterEvent*"/>
+      </return-value>
+    </function>
+    <function name="event_peek"
+              c:identifier="clutter_event_peek"
+              doc="Returns a pointer to the first event from the event queue but
+does not remove it."
+              version="0.4">
+      <return-value transfer-ownership="none"
+                    doc="A #ClutterEvent or NULL if queue empty.">
+        <type name="Event" c:type="ClutterEvent*"/>
+      </return-value>
+    </function>
+    <function name="events_pending"
+              c:identifier="clutter_events_pending"
+              doc="Checks if events are pending in the event queue."
+              version="0.4">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+    </function>
+    <constant name="exclam" value="33">
+      <type name="int"/>
+    </constant>
+    <constant name="exclamdown" value="161">
+      <type name="int"/>
+    </constant>
+    <constant name="f" value="102">
+      <type name="int"/>
+    </constant>
+    <constant name="fabovedot" value="16784927">
+      <type name="int"/>
+    </constant>
+    <function name="feature_available"
+              c:identifier="clutter_feature_available"
+              doc="Checks whether @feature is available.  @feature can be a logical
+OR of #ClutterFeatureFlags."
+              version="0.1.1">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="feature" transfer-ownership="none">
+          <type name="FeatureFlags" c:type="ClutterFeatureFlags"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="feature_get_all"
+              c:identifier="clutter_feature_get_all"
+              doc="Returns all the supported features."
+              version="0.1.1">
+      <return-value transfer-ownership="full">
+        <type name="FeatureFlags" c:type="ClutterFeatureFlags"/>
+      </return-value>
+    </function>
+    <constant name="femalesymbol" value="2808">
+      <type name="int"/>
+    </constant>
+    <constant name="ff" value="2531">
+      <type name="int"/>
+    </constant>
+    <constant name="figdash" value="2747">
+      <type name="int"/>
+    </constant>
+    <constant name="filledlefttribullet" value="2780">
+      <type name="int"/>
+    </constant>
+    <constant name="filledrectbullet" value="2779">
+      <type name="int"/>
+    </constant>
+    <constant name="filledrighttribullet" value="2781">
+      <type name="int"/>
+    </constant>
+    <constant name="filledtribulletdown" value="2793">
+      <type name="int"/>
+    </constant>
+    <constant name="filledtribulletup" value="2792">
+      <type name="int"/>
+    </constant>
+    <constant name="fiveeighths" value="2757">
+      <type name="int"/>
+    </constant>
+    <constant name="fivesixths" value="2743">
+      <type name="int"/>
+    </constant>
+    <constant name="fivesubscript" value="16785541">
+      <type name="int"/>
+    </constant>
+    <constant name="fivesuperior" value="16785525">
+      <type name="int"/>
+    </constant>
+    <constant name="fourfifths" value="2741">
+      <type name="int"/>
+    </constant>
+    <constant name="foursubscript" value="16785540">
+      <type name="int"/>
+    </constant>
+    <constant name="foursuperior" value="16785524">
+      <type name="int"/>
+    </constant>
+    <constant name="fourthroot" value="16785948">
+      <type name="int"/>
+    </constant>
+    <function name="frame_source_add"
+              c:identifier="clutter_frame_source_add"
+              doc="Simple wrapper around clutter_frame_source_add_full()."
+              version="0.8">
+      <return-value transfer-ownership="none" doc="of the event source.">
+        <type name="uint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="fps" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="func"
+                   transfer-ownership="none"
+                   scope="call"
+                   closure="2">
+          <type name="GLib.SourceFunc" c:type="GSourceFunc"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="frame_source_add_full"
+              c:identifier="clutter_frame_source_add_full"
+              doc="Sets a function to be called at regular intervals with the given
+priority.  The function is called repeatedly until it returns
+%FALSE, at which point the timeout is automatically destroyed and
+the function will not be called again.  The @notify function is
+called when the timeout is destroyed.  The first call to the
+function will be at the end of the first @interval.
+This function is similar to g_timeout_add_full() except that it
+will try to compensate for delays. For example, if @func takes half
+the interval time to execute then the function will be called again
+half the interval time after it finished. In contrast
+g_timeout_add_full() would not fire until a full interval after the
+function completes so the delay between calls would be 1.0 / @fps *
+1.5. This function does not however try to invoke the function
+multiple times to catch up missing frames if @func takes more than"
+              version="0.8">
+      <return-value transfer-ownership="none" doc="of the event source.">
+        <type name="uint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="priority"
+                   transfer-ownership="none"
+                   doc=" range between %G_PRIORITY_DEFAULT and %G_PRIORITY_HIGH.">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="fps" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="func"
+                   transfer-ownership="none"
+                   scope="notified"
+                   closure="3"
+                   destroy="4">
+          <type name="GLib.SourceFunc" c:type="GSourceFunc"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="notify" transfer-ownership="none" scope="call">
+          <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+        </parameter>
+      </parameters>
+    </function>
+    <constant name="function" value="2294">
+      <type name="int"/>
+    </constant>
+    <constant name="g" value="103">
+      <type name="int"/>
+    </constant>
+    <constant name="gabovedot" value="757">
+      <type name="int"/>
+    </constant>
+    <constant name="gbreve" value="699">
+      <type name="int"/>
+    </constant>
+    <constant name="gcaron" value="16777703">
+      <type name="int"/>
+    </constant>
+    <constant name="gcedilla" value="955">
+      <type name="int"/>
+    </constant>
+    <constant name="gcircumflex" value="760">
+      <type name="int"/>
+    </constant>
+    <function name="get_actor_by_gid" c:identifier="clutter_get_actor_by_gid">
+      <return-value transfer-ownership="full">
+        <type name="Actor" c:type="ClutterActor*"/>
+      </return-value>
+      <parameters>
+        <parameter name="id" transfer-ownership="none">
+          <type name="uint32" c:type="guint32"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="get_current_event"
+              c:identifier="clutter_get_current_event"
+              doc="If an event is currently being processed, return that event.
+This function is intended to be used to access event state
+that might not be exposed by higher-level widgets.  For
+example, to get the key modifier state from a Button &apos;clicked&apos;
+event."
+              version="1.2">
+      <return-value transfer-ownership="none"
+                    doc="The current ClutterEvent, or %NULL if none">
+        <type name="Event" c:type="ClutterEvent*"/>
+      </return-value>
+    </function>
+    <function name="get_current_event_time"
+              c:identifier="clutter_get_current_event_time"
+              doc="Retrieves the timestamp of the last event, if there is an
+event or if the event has a timestamp."
+              version="1.0">
+      <return-value transfer-ownership="none">
+        <type name="uint32" c:type="guint32"/>
+      </return-value>
+    </function>
+    <function name="get_debug_enabled"
+              c:identifier="clutter_get_debug_enabled"
+              doc="Check if clutter has debugging turned on.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+    </function>
+    <function name="get_default_backend"
+              c:identifier="clutter_get_default_backend"
+              doc="Retrieves the default #ClutterBackend used by Clutter. The
+#ClutterBackend holds backend-specific configuration options.
+not ref or unref the returned object. Applications should rarely
+need to use this."
+              version="0.4">
+      <return-value transfer-ownership="none"
+                    doc="the default backend. You should">
+        <type name="Backend" c:type="ClutterBackend*"/>
+      </return-value>
+    </function>
+    <function name="get_default_frame_rate"
+              c:identifier="clutter_get_default_frame_rate"
+              doc="Retrieves the default frame rate. See clutter_set_default_frame_rate()."
+              version="0.6">
+      <return-value transfer-ownership="none">
+        <type name="uint" c:type="guint"/>
+      </return-value>
+    </function>
+    <function name="get_default_text_direction"
+              c:identifier="clutter_get_default_text_direction"
+              doc="Retrieves the default direction for the text. The text direction is
+determined by the locale and/or by the %CLUTTER_TEXT_DIRECTION environment
+variable
+The default text direction can be overridden on a per-actor basis by using
+clutter_actor_set_text_direction()"
+              version="1.2">
+      <return-value transfer-ownership="full">
+        <type name="TextDirection" c:type="ClutterTextDirection"/>
+      </return-value>
+    </function>
+    <function name="get_font_flags"
+              c:identifier="clutter_get_font_flags"
+              doc="Gets the current font flags for rendering text. See
+clutter_set_font_flags()."
+              version="1.0">
+      <return-value transfer-ownership="full">
+        <type name="FontFlags" c:type="ClutterFontFlags"/>
+      </return-value>
+    </function>
+    <function name="get_font_map"
+              c:identifier="clutter_get_font_map"
+              doc="Retrieves the #PangoFontMap instance used by Clutter.
+You can use the global font map object with the COGL
+Pango API.
+value is owned by Clutter and it should never be unreferenced."
+              version="1.0">
+      <return-value transfer-ownership="none"
+                    doc="the #PangoFontMap instance. The returned">
+        <type name="Pango.FontMap" c:type="PangoFontMap*"/>
+      </return-value>
+    </function>
+    <function name="get_input_device_for_id"
+              c:identifier="clutter_get_input_device_for_id"
+              doc="Retrieves the #ClutterInputDevice from its @id. This is a convenience
+wrapper for clutter_device_manager_get_device() and it is functionally
+equivalent to:
+|[
+ClutterDeviceManager *manager;
+ClutterInputDevice *device;
+manager = clutter_device_manager_get_default ();
+device = clutter_device_manager_get_device (manager, id);
+]|"
+              version="0.8">
+      <return-value transfer-ownership="none"
+                    doc="a #ClutterInputDevice, or %NULL">
+        <type name="InputDevice" c:type="ClutterInputDevice*"/>
+      </return-value>
+      <parameters>
+        <parameter name="id" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="get_keyboard_grab"
+              c:identifier="clutter_get_keyboard_grab"
+              doc="Queries the current keyboard grab of clutter."
+              version="0.6">
+      <return-value transfer-ownership="none"
+                    doc="the actor currently holding the keyboard grab, or NULL if there is no grab.">
+        <type name="Actor" c:type="ClutterActor*"/>
+      </return-value>
+    </function>
+    <function name="get_motion_events_enabled"
+              c:identifier="clutter_get_motion_events_enabled"
+              doc="Gets whether the per-actor motion events are enabled."
+              version="0.6">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+    </function>
+    <function name="get_option_group"
+              c:identifier="clutter_get_option_group"
+              doc="Returns a #GOptionGroup for the command line arguments recognized
+by Clutter. You should add this group to your #GOptionContext with
+g_option_context_add_group(), if you are using g_option_context_parse()
+to parse your commandline arguments.
+Calling g_option_context_parse() with Clutter&apos;s #GOptionGroup will result
+in Clutter&apos;s initialization. That is, the following code:
+|[
+g_option_context_set_main_group (context, clutter_get_option_group ());
+res = g_option_context_parse (context, &amp;amp;argc, &amp;amp;argc, NULL);
+]|
+is functionally equivalent to:
+|[
+clutter_init (&amp;amp;argc, &amp;amp;argv);
+]|
+After g_option_context_parse() on a #GOptionContext containing the
+Clutter #GOptionGroup has returned %TRUE, Clutter is guaranteed to be
+initialized.
+recognized by Clutter"
+              version="0.2">
+      <return-value transfer-ownership="full"
+                    doc="a #GOptionGroup for the commandline arguments">
+        <type name="GLib.OptionGroup" c:type="GOptionGroup*"/>
+      </return-value>
+    </function>
+    <function name="get_option_group_without_init"
+              c:identifier="clutter_get_option_group_without_init"
+              doc="Returns a #GOptionGroup for the command line arguments recognized
+by Clutter. You should add this group to your #GOptionContext with
+g_option_context_add_group(), if you are using g_option_context_parse()
+to parse your commandline arguments. Unlike clutter_get_option_group(),
+calling g_option_context_parse() with the #GOptionGroup returned by this
+function requires a subsequent explicit call to clutter_init(); use this
+function when needing to set foreign display connection with
+clutter_x11_set_display(), or with gtk_clutter_init().
+recognized by Clutter"
+              version="0.8.2">
+      <return-value transfer-ownership="full"
+                    doc="a #GOptionGroup for the commandline arguments">
+        <type name="GLib.OptionGroup" c:type="GOptionGroup*"/>
+      </return-value>
+    </function>
+    <function name="get_pointer_grab"
+              c:identifier="clutter_get_pointer_grab"
+              doc="Queries the current pointer grab of clutter."
+              version="0.6">
+      <return-value transfer-ownership="none"
+                    doc="the actor currently holding the pointer grab, or NULL if there is no grab.">
+        <type name="Actor" c:type="ClutterActor*"/>
+      </return-value>
+    </function>
+    <function name="get_script_id"
+              c:identifier="clutter_get_script_id"
+              doc="Retrieves the Clutter script id, if any.
+a UI definition file. The returned string is owned by the object and
+should never be modified or freed."
+              version="0.6">
+      <return-value transfer-ownership="none">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="gobject" transfer-ownership="none">
+          <type name="GObject.Object" c:type="GObject*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="get_show_fps"
+              c:identifier="clutter_get_show_fps"
+              doc="Returns whether Clutter should print out the frames per second on the
+console. You can enable this setting either using the
+&lt;literal&gt;CLUTTER_SHOW_FPS&lt;/literal&gt; environment variable or passing
+the &lt;literal&gt;--clutter-show-fps&lt;/literal&gt; command line argument. *"
+              version="0.4">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+    </function>
+    <function name="get_timestamp"
+              c:identifier="clutter_get_timestamp"
+              doc="Returns the approximate number of microseconds passed since clutter was
+intialised.">
+      <return-value transfer-ownership="none" doc="was called.">
+        <type name="ulong" c:type="gulong"/>
+      </return-value>
+    </function>
+    <function name="grab_keyboard"
+              c:identifier="clutter_grab_keyboard"
+              doc="Grabs keyboard events, after the grab is done keyboard
+events (#ClutterActor::key-press-event and #ClutterActor::key-release-event)
+are delivered to this actor directly. The source set in the event will be
+the actor that would have received the event if the keyboard grab was not
+in effect.
+Like pointer grabs, keyboard grabs should only be used as a last
+resource.
+See also clutter_stage_set_key_focus() and clutter_actor_grab_key_focus()
+to perform a &quot;soft&quot; key grab and assign key focus to a specific actor."
+              version="0.6">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="actor" transfer-ownership="none">
+          <type name="Actor" c:type="ClutterActor*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="grab_pointer"
+              c:identifier="clutter_grab_pointer"
+              doc="Grabs pointer events, after the grab is done all pointer related events
+(press, motion, release, enter, leave and scroll) are delivered to this
+actor directly without passing through both capture and bubble phases of
+the event delivery chain. The source set in the event will be the actor
+that would have received the event if the pointer grab was not in effect.
+&lt;note&gt;&lt;para&gt;Grabs completely override the entire event delivery chain
+done by Clutter. Pointer grabs should only be used as a last resource;
+using the #ClutterActor::captured-event signal should always be the
+preferred way to intercept event delivery to reactive actors.&lt;/para&gt;&lt;/note&gt;
+If you wish to grab all the pointer events for a specific input device,
+you should use clutter_grab_pointer_for_device()."
+              version="0.6">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="actor" transfer-ownership="none">
+          <type name="Actor" c:type="ClutterActor*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="grab_pointer_for_device"
+              c:identifier="clutter_grab_pointer_for_device"
+              doc="Grabs all the pointer events coming from the device @id for @actor.
+If @id is -1 then this function is equivalent to clutter_grab_pointer()."
+              version="0.8">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="actor" transfer-ownership="none">
+          <type name="Actor" c:type="ClutterActor*"/>
+        </parameter>
+        <parameter name="id" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <constant name="grave" value="96">
+      <type name="int"/>
+    </constant>
+    <constant name="greater" value="62">
+      <type name="int"/>
+    </constant>
+    <constant name="greaterthanequal" value="2238">
+      <type name="int"/>
+    </constant>
+    <constant name="guillemotleft" value="171">
+      <type name="int"/>
+    </constant>
+    <constant name="guillemotright" value="187">
+      <type name="int"/>
+    </constant>
+    <constant name="h" value="104">
+      <type name="int"/>
+    </constant>
+    <constant name="hairspace" value="2728">
+      <type name="int"/>
+    </constant>
+    <constant name="hcircumflex" value="694">
+      <type name="int"/>
+    </constant>
+    <constant name="heart" value="2798">
+      <type name="int"/>
+    </constant>
+    <constant name="hebrew_aleph" value="3296">
+      <type name="int"/>
+    </constant>
+    <constant name="hebrew_ayin" value="3314">
+      <type name="int"/>
+    </constant>
+    <constant name="hebrew_bet" value="3297">
+      <type name="int"/>
+    </constant>
+    <constant name="hebrew_beth" value="3297">
+      <type name="int"/>
+    </constant>
+    <constant name="hebrew_chet" value="3303">
+      <type name="int"/>
+    </constant>
+    <constant name="hebrew_dalet" value="3299">
+      <type name="int"/>
+    </constant>
+    <constant name="hebrew_daleth" value="3299">
+      <type name="int"/>
+    </constant>
+    <constant name="hebrew_doublelowline" value="3295">
+      <type name="int"/>
+    </constant>
+    <constant name="hebrew_finalkaph" value="3306">
+      <type name="int"/>
+    </constant>
+    <constant name="hebrew_finalmem" value="3309">
+      <type name="int"/>
+    </constant>
+    <constant name="hebrew_finalnun" value="3311">
+      <type name="int"/>
+    </constant>
+    <constant name="hebrew_finalpe" value="3315">
+      <type name="int"/>
+    </constant>
+    <constant name="hebrew_finalzade" value="3317">
+      <type name="int"/>
+    </constant>
+    <constant name="hebrew_finalzadi" value="3317">
+      <type name="int"/>
+    </constant>
+    <constant name="hebrew_gimel" value="3298">
+      <type name="int"/>
+    </constant>
+    <constant name="hebrew_gimmel" value="3298">
+      <type name="int"/>
+    </constant>
+    <constant name="hebrew_he" value="3300">
+      <type name="int"/>
+    </constant>
+    <constant name="hebrew_het" value="3303">
+      <type name="int"/>
+    </constant>
+    <constant name="hebrew_kaph" value="3307">
+      <type name="int"/>
+    </constant>
+    <constant name="hebrew_kuf" value="3319">
+      <type name="int"/>
+    </constant>
+    <constant name="hebrew_lamed" value="3308">
+      <type name="int"/>
+    </constant>
+    <constant name="hebrew_mem" value="3310">
+      <type name="int"/>
+    </constant>
+    <constant name="hebrew_nun" value="3312">
+      <type name="int"/>
+    </constant>
+    <constant name="hebrew_pe" value="3316">
+      <type name="int"/>
+    </constant>
+    <constant name="hebrew_qoph" value="3319">
+      <type name="int"/>
+    </constant>
+    <constant name="hebrew_resh" value="3320">
+      <type name="int"/>
+    </constant>
+    <constant name="hebrew_samech" value="3313">
+      <type name="int"/>
+    </constant>
+    <constant name="hebrew_samekh" value="3313">
+      <type name="int"/>
+    </constant>
+    <constant name="hebrew_shin" value="3321">
+      <type name="int"/>
+    </constant>
+    <constant name="hebrew_taf" value="3322">
+      <type name="int"/>
+    </constant>
+    <constant name="hebrew_taw" value="3322">
+      <type name="int"/>
+    </constant>
+    <constant name="hebrew_tet" value="3304">
+      <type name="int"/>
+    </constant>
+    <constant name="hebrew_teth" value="3304">
+      <type name="int"/>
+    </constant>
+    <constant name="hebrew_waw" value="3301">
+      <type name="int"/>
+    </constant>
+    <constant name="hebrew_yod" value="3305">
+      <type name="int"/>
+    </constant>
+    <constant name="hebrew_zade" value="3318">
+      <type name="int"/>
+    </constant>
+    <constant name="hebrew_zadi" value="3318">
+      <type name="int"/>
+    </constant>
+    <constant name="hebrew_zain" value="3302">
+      <type name="int"/>
+    </constant>
+    <constant name="hebrew_zayin" value="3302">
+      <type name="int"/>
+    </constant>
+    <constant name="hexagram" value="2778">
+      <type name="int"/>
+    </constant>
+    <constant name="horizconnector" value="2211">
+      <type name="int"/>
+    </constant>
+    <constant name="horizlinescan1" value="2543">
+      <type name="int"/>
+    </constant>
+    <constant name="horizlinescan3" value="2544">
+      <type name="int"/>
+    </constant>
+    <constant name="horizlinescan5" value="2545">
+      <type name="int"/>
+    </constant>
+    <constant name="horizlinescan7" value="2546">
+      <type name="int"/>
+    </constant>
+    <constant name="horizlinescan9" value="2547">
+      <type name="int"/>
+    </constant>
+    <constant name="hstroke" value="689">
+      <type name="int"/>
+    </constant>
+    <constant name="ht" value="2530">
+      <type name="int"/>
+    </constant>
+    <constant name="hyphen" value="173">
+      <type name="int"/>
+    </constant>
+    <constant name="i" value="105">
+      <type name="int"/>
+    </constant>
+    <constant name="iacute" value="237">
+      <type name="int"/>
+    </constant>
+    <constant name="ibelowdot" value="16785099">
+      <type name="int"/>
+    </constant>
+    <constant name="ibreve" value="16777517">
+      <type name="int"/>
+    </constant>
+    <constant name="icircumflex" value="238">
+      <type name="int"/>
+    </constant>
+    <constant name="identical" value="2255">
+      <type name="int"/>
+    </constant>
+    <constant name="idiaeresis" value="239">
+      <type name="int"/>
+    </constant>
+    <constant name="idotless" value="697">
+      <type name="int"/>
+    </constant>
+    <constant name="ifonlyif" value="2253">
+      <type name="int"/>
+    </constant>
+    <constant name="igrave" value="236">
+      <type name="int"/>
+    </constant>
+    <constant name="ihook" value="16785097">
+      <type name="int"/>
+    </constant>
+    <constant name="imacron" value="1007">
+      <type name="int"/>
+    </constant>
+    <constant name="implies" value="2254">
+      <type name="int"/>
+    </constant>
+    <constant name="includedin" value="2266">
+      <type name="int"/>
+    </constant>
+    <constant name="includes" value="2267">
+      <type name="int"/>
+    </constant>
+    <constant name="infinity" value="2242">
+      <type name="int"/>
+    </constant>
+    <function name="init"
+              c:identifier="clutter_init"
+              doc="It will initialise everything needed to operate with Clutter and
+parses some standard command line options. @argc and @argv are
+adjusted accordingly so your own code will never see those standard
+arguments.">
+      <return-value transfer-ownership="full">
+        <type name="InitError" c:type="ClutterInitError"/>
+      </return-value>
+      <parameters>
+        <parameter name="argc"
+                   direction="inout"
+                   caller-allocates="0"
+                   transfer-ownership="full"
+                   doc="The number of arguments in @argv">
+          <type name="int" c:type="int*"/>
+        </parameter>
+        <parameter name="argv"
+                   direction="inout"
+                   caller-allocates="0"
+                   transfer-ownership="full"
+                   allow-none="1"
+                   doc="A pointer to an array of arguments.">
+          <array length="0" c:type="char***">
+            <type name="utf8"/>
+          </array>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="init_with_args"
+              c:identifier="clutter_init_with_args"
+              doc="This function does the same work as clutter_init(). Additionally,
+it allows you to add your own command line options, and it
+automatically generates nicely formatted &lt;option&gt;--help&lt;/option&gt;
+output. Note that your program will be terminated after writing
+out the help output. Also note that, in case of error, the
+error message will be placed inside @error instead of being
+printed on the display.
+initialised, or other values or #ClutterInitError in case of
+error."
+              version="0.2"
+              throws="1">
+      <return-value transfer-ownership="full">
+        <type name="InitError" c:type="ClutterInitError"/>
+      </return-value>
+      <parameters>
+        <parameter name="argc"
+                   direction="inout"
+                   caller-allocates="0"
+                   transfer-ownership="full"
+                   doc="a pointer to the number of command line arguments">
+          <type name="int" c:type="int*"/>
+        </parameter>
+        <parameter name="argv"
+                   direction="inout"
+                   caller-allocates="0"
+                   transfer-ownership="full"
+                   allow-none="1"
+                   doc="a pointer to the array of command line arguments">
+          <array length="0" c:type="char***">
+            <type name="utf8"/>
+          </array>
+        </parameter>
+        <parameter name="parameter_string"
+                   transfer-ownership="none"
+                   allow-none="1"
+                   doc="a string which is displayed in the first line of &lt;option&gt;--help&lt;/option&gt; output, after &lt;literal&gt;&lt;replaceable&gt;programname&lt;/replaceable&gt; [OPTION...]&lt;/literal&gt;">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+        <parameter name="entries"
+                   transfer-ownership="none"
+                   allow-none="1"
+                   doc="a %NULL terminated array of #GOptionEntry&lt;!-- --&gt;s describing the options of your program">
+          <type name="GLib.OptionEntry" c:type="GOptionEntry*"/>
+        </parameter>
+        <parameter name="translation_domain"
+                   transfer-ownership="none"
+                   allow-none="1"
+                   doc="a translation domain to use for translating the &lt;option&gt;--help&lt;/option&gt; output for the options in">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <constant name="integral" value="2239">
+      <type name="int"/>
+    </constant>
+    <constant name="intersection" value="2268">
+      <type name="int"/>
+    </constant>
+    <constant name="iogonek" value="999">
+      <type name="int"/>
+    </constant>
+    <constant name="itilde" value="949">
+      <type name="int"/>
+    </constant>
+    <constant name="j" value="106">
+      <type name="int"/>
+    </constant>
+    <constant name="jcircumflex" value="700">
+      <type name="int"/>
+    </constant>
+    <constant name="jot" value="3018">
+      <type name="int"/>
+    </constant>
+    <constant name="k" value="107">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_A" value="1201">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_CHI" value="1217">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_E" value="1204">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_FU" value="1228">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_HA" value="1226">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_HE" value="1229">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_HI" value="1227">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_HO" value="1230">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_HU" value="1228">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_I" value="1202">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_KA" value="1206">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_KE" value="1209">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_KI" value="1207">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_KO" value="1210">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_KU" value="1208">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_MA" value="1231">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_ME" value="1234">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_MI" value="1232">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_MO" value="1235">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_MU" value="1233">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_N" value="1245">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_NA" value="1221">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_NE" value="1224">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_NI" value="1222">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_NO" value="1225">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_NU" value="1223">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_O" value="1205">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_RA" value="1239">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_RE" value="1242">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_RI" value="1240">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_RO" value="1243">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_RU" value="1241">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_SA" value="1211">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_SE" value="1214">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_SHI" value="1212">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_SO" value="1215">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_SU" value="1213">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_TA" value="1216">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_TE" value="1219">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_TI" value="1217">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_TO" value="1220">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_TSU" value="1218">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_TU" value="1218">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_U" value="1203">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_WA" value="1244">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_WO" value="1190">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_YA" value="1236">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_YO" value="1238">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_YU" value="1237">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_a" value="1191">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_closingbracket" value="1187">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_comma" value="1188">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_conjunctive" value="1189">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_e" value="1194">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_fullstop" value="1185">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_i" value="1192">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_middledot" value="1189">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_o" value="1195">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_openingbracket" value="1186">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_switch" value="65406">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_tsu" value="1199">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_tu" value="1199">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_u" value="1193">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_ya" value="1196">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_yo" value="1198">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_yu" value="1197">
+      <type name="int"/>
+    </constant>
+    <constant name="kappa" value="930">
+      <type name="int"/>
+    </constant>
+    <constant name="kcedilla" value="1011">
+      <type name="int"/>
+    </constant>
+    <function name="keysym_to_unicode"
+              c:identifier="clutter_keysym_to_unicode"
+              doc="Convert from a Clutter key symbol to the corresponding ISO10646 (Unicode)
+character.
+character.">
+      <return-value transfer-ownership="none">
+        <type name="uint32" c:type="guint32"/>
+      </return-value>
+      <parameters>
+        <parameter name="keyval" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <constant name="kra" value="930">
+      <type name="int"/>
+    </constant>
+    <constant name="l" value="108">
+      <type name="int"/>
+    </constant>
+    <constant name="lacute" value="485">
+      <type name="int"/>
+    </constant>
+    <constant name="latincross" value="2777">
+      <type name="int"/>
+    </constant>
+    <constant name="lbelowdot" value="16784951">
+      <type name="int"/>
+    </constant>
+    <constant name="lcaron" value="437">
+      <type name="int"/>
+    </constant>
+    <constant name="lcedilla" value="950">
+      <type name="int"/>
+    </constant>
+    <constant name="leftanglebracket" value="2748">
+      <type name="int"/>
+    </constant>
+    <constant name="leftarrow" value="2299">
+      <type name="int"/>
+    </constant>
+    <constant name="leftcaret" value="2979">
+      <type name="int"/>
+    </constant>
+    <constant name="leftdoublequotemark" value="2770">
+      <type name="int"/>
+    </constant>
+    <constant name="leftmiddlecurlybrace" value="2223">
+      <type name="int"/>
+    </constant>
+    <constant name="leftopentriangle" value="2764">
+      <type name="int"/>
+    </constant>
+    <constant name="leftpointer" value="2794">
+      <type name="int"/>
+    </constant>
+    <constant name="leftradical" value="2209">
+      <type name="int"/>
+    </constant>
+    <constant name="leftshoe" value="3034">
+      <type name="int"/>
+    </constant>
+    <constant name="leftsinglequotemark" value="2768">
+      <type name="int"/>
+    </constant>
+    <constant name="leftt" value="2548">
+      <type name="int"/>
+    </constant>
+    <constant name="lefttack" value="3036">
+      <type name="int"/>
+    </constant>
+    <constant name="less" value="60">
+      <type name="int"/>
+    </constant>
+    <constant name="lessthanequal" value="2236">
+      <type name="int"/>
+    </constant>
+    <constant name="lf" value="2533">
+      <type name="int"/>
+    </constant>
+    <constant name="logicaland" value="2270">
+      <type name="int"/>
+    </constant>
+    <constant name="logicalor" value="2271">
+      <type name="int"/>
+    </constant>
+    <constant name="lowleftcorner" value="2541">
+      <type name="int"/>
+    </constant>
+    <constant name="lowrightcorner" value="2538">
+      <type name="int"/>
+    </constant>
+    <constant name="lstroke" value="435">
+      <type name="int"/>
+    </constant>
+    <constant name="m" value="109">
+      <type name="int"/>
+    </constant>
+    <constant name="mabovedot" value="16784961">
+      <type name="int"/>
+    </constant>
+    <constant name="macron" value="175">
+      <type name="int"/>
+    </constant>
+    <function name="main"
+              c:identifier="clutter_main"
+              doc="Starts the Clutter mainloop.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="main_level"
+              c:identifier="clutter_main_level"
+              doc="Retrieves the depth of the Clutter mainloop.">
+      <return-value transfer-ownership="none">
+        <type name="int" c:type="gint"/>
+      </return-value>
+    </function>
+    <function name="main_quit"
+              c:identifier="clutter_main_quit"
+              doc="Terminates the Clutter mainloop.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <constant name="malesymbol" value="2807">
+      <type name="int"/>
+    </constant>
+    <constant name="maltesecross" value="2800">
+      <type name="int"/>
+    </constant>
+    <constant name="marker" value="2751">
+      <type name="int"/>
+    </constant>
+    <constant name="masculine" value="186">
+      <type name="int"/>
+    </constant>
+    <constant name="minus" value="45">
+      <type name="int"/>
+    </constant>
+    <constant name="minutes" value="2774">
+      <type name="int"/>
+    </constant>
+    <constant name="mu" value="181">
+      <type name="int"/>
+    </constant>
+    <constant name="multiply" value="215">
+      <type name="int"/>
+    </constant>
+    <constant name="musicalflat" value="2806">
+      <type name="int"/>
+    </constant>
+    <constant name="musicalsharp" value="2805">
+      <type name="int"/>
+    </constant>
+    <constant name="n" value="110">
+      <type name="int"/>
+    </constant>
+    <constant name="nabla" value="2245">
+      <type name="int"/>
+    </constant>
+    <constant name="nacute" value="497">
+      <type name="int"/>
+    </constant>
+    <constant name="ncaron" value="498">
+      <type name="int"/>
+    </constant>
+    <constant name="ncedilla" value="1009">
+      <type name="int"/>
+    </constant>
+    <constant name="ninesubscript" value="16785545">
+      <type name="int"/>
+    </constant>
+    <constant name="ninesuperior" value="16785529">
+      <type name="int"/>
+    </constant>
+    <constant name="nl" value="2536">
+      <type name="int"/>
+    </constant>
+    <constant name="nobreakspace" value="160">
+      <type name="int"/>
+    </constant>
+    <constant name="notapproxeq" value="16785991">
+      <type name="int"/>
+    </constant>
+    <constant name="notelementof" value="16785929">
+      <type name="int"/>
+    </constant>
+    <constant name="notequal" value="2237">
+      <type name="int"/>
+    </constant>
+    <constant name="notidentical" value="16786018">
+      <type name="int"/>
+    </constant>
+    <constant name="notsign" value="172">
+      <type name="int"/>
+    </constant>
+    <constant name="ntilde" value="241">
+      <type name="int"/>
+    </constant>
+    <constant name="numbersign" value="35">
+      <type name="int"/>
+    </constant>
+    <constant name="numerosign" value="1712">
+      <type name="int"/>
+    </constant>
+    <constant name="o" value="111">
+      <type name="int"/>
+    </constant>
+    <constant name="oacute" value="243">
+      <type name="int"/>
+    </constant>
+    <constant name="obarred" value="16777845">
+      <type name="int"/>
+    </constant>
+    <constant name="obelowdot" value="16785101">
+      <type name="int"/>
+    </constant>
+    <constant name="ocaron" value="16777682">
+      <type name="int"/>
+    </constant>
+    <constant name="ocircumflex" value="244">
+      <type name="int"/>
+    </constant>
+    <constant name="ocircumflexacute" value="16785105">
+      <type name="int"/>
+    </constant>
+    <constant name="ocircumflexbelowdot" value="16785113">
+      <type name="int"/>
+    </constant>
+    <constant name="ocircumflexgrave" value="16785107">
+      <type name="int"/>
+    </constant>
+    <constant name="ocircumflexhook" value="16785109">
+      <type name="int"/>
+    </constant>
+    <constant name="ocircumflextilde" value="16785111">
+      <type name="int"/>
+    </constant>
+    <constant name="odiaeresis" value="246">
+      <type name="int"/>
+    </constant>
+    <constant name="odoubleacute" value="501">
+      <type name="int"/>
+    </constant>
+    <constant name="oe" value="5053">
+      <type name="int"/>
+    </constant>
+    <constant name="ogonek" value="434">
+      <type name="int"/>
+    </constant>
+    <constant name="ograve" value="242">
+      <type name="int"/>
+    </constant>
+    <constant name="ohook" value="16785103">
+      <type name="int"/>
+    </constant>
+    <constant name="ohorn" value="16777633">
+      <type name="int"/>
+    </constant>
+    <constant name="ohornacute" value="16785115">
+      <type name="int"/>
+    </constant>
+    <constant name="ohornbelowdot" value="16785123">
+      <type name="int"/>
+    </constant>
+    <constant name="ohorngrave" value="16785117">
+      <type name="int"/>
+    </constant>
+    <constant name="ohornhook" value="16785119">
+      <type name="int"/>
+    </constant>
+    <constant name="ohorntilde" value="16785121">
+      <type name="int"/>
+    </constant>
+    <constant name="omacron" value="1010">
+      <type name="int"/>
+    </constant>
+    <constant name="oneeighth" value="2755">
+      <type name="int"/>
+    </constant>
+    <constant name="onefifth" value="2738">
+      <type name="int"/>
+    </constant>
+    <constant name="onehalf" value="189">
+      <type name="int"/>
+    </constant>
+    <constant name="onequarter" value="188">
+      <type name="int"/>
+    </constant>
+    <constant name="onesixth" value="2742">
+      <type name="int"/>
+    </constant>
+    <constant name="onesubscript" value="16785537">
+      <type name="int"/>
+    </constant>
+    <constant name="onesuperior" value="185">
+      <type name="int"/>
+    </constant>
+    <constant name="onethird" value="2736">
+      <type name="int"/>
+    </constant>
+    <constant name="ooblique" value="248">
+      <type name="int"/>
+    </constant>
+    <constant name="openrectbullet" value="2786">
+      <type name="int"/>
+    </constant>
+    <constant name="openstar" value="2789">
+      <type name="int"/>
+    </constant>
+    <constant name="opentribulletdown" value="2788">
+      <type name="int"/>
+    </constant>
+    <constant name="opentribulletup" value="2787">
+      <type name="int"/>
+    </constant>
+    <constant name="ordfeminine" value="170">
+      <type name="int"/>
+    </constant>
+    <constant name="oslash" value="248">
+      <type name="int"/>
+    </constant>
+    <constant name="otilde" value="245">
+      <type name="int"/>
+    </constant>
+    <constant name="overbar" value="3008">
+      <type name="int"/>
+    </constant>
+    <constant name="overline" value="1150">
+      <type name="int"/>
+    </constant>
+    <constant name="p" value="112">
+      <type name="int"/>
+    </constant>
+    <constant name="pabovedot" value="16784983">
+      <type name="int"/>
+    </constant>
+    <constant name="paragraph" value="182">
+      <type name="int"/>
+    </constant>
+    <function name="param_spec_color"
+              c:identifier="clutter_param_spec_color"
+              doc="Creates a #GParamSpec for properties using #ClutterColor."
+              version="0.8.4">
+      <return-value transfer-ownership="full">
+        <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
+      </return-value>
+      <parameters>
+        <parameter name="name" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="nick" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="blurb" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="default_value" transfer-ownership="none">
+          <type name="Color" c:type="ClutterColor*"/>
+        </parameter>
+        <parameter name="flags" transfer-ownership="none">
+          <type name="GObject.ParamFlags" c:type="GParamFlags"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="param_spec_fixed"
+              c:identifier="clutter_param_spec_fixed"
+              doc="Creates a #GParamSpec for properties using #CoglFixed values"
+              version="0.8">
+      <return-value transfer-ownership="full">
+        <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
+      </return-value>
+      <parameters>
+        <parameter name="name" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="nick" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="blurb" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="minimum" transfer-ownership="none">
+          <type name="Cogl.Fixed" c:type="CoglFixed"/>
+        </parameter>
+        <parameter name="maximum" transfer-ownership="none">
+          <type name="Cogl.Fixed" c:type="CoglFixed"/>
+        </parameter>
+        <parameter name="default_value" transfer-ownership="none">
+          <type name="Cogl.Fixed" c:type="CoglFixed"/>
+        </parameter>
+        <parameter name="flags" transfer-ownership="none">
+          <type name="GObject.ParamFlags" c:type="GParamFlags"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="param_spec_units"
+              c:identifier="clutter_param_spec_units"
+              doc="Creates a #GParamSpec for properties using #ClutterUnits."
+              version="1.0">
+      <return-value transfer-ownership="full">
+        <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
+      </return-value>
+      <parameters>
+        <parameter name="name" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="nick" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="blurb" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="default_type" transfer-ownership="none">
+          <type name="UnitType" c:type="ClutterUnitType"/>
+        </parameter>
+        <parameter name="minimum" transfer-ownership="none">
+          <type name="float" c:type="gfloat"/>
+        </parameter>
+        <parameter name="maximum" transfer-ownership="none">
+          <type name="float" c:type="gfloat"/>
+        </parameter>
+        <parameter name="default_value" transfer-ownership="none">
+          <type name="float" c:type="gfloat"/>
+        </parameter>
+        <parameter name="flags" transfer-ownership="none">
+          <type name="GObject.ParamFlags" c:type="GParamFlags"/>
+        </parameter>
+      </parameters>
+    </function>
+    <constant name="parenleft" value="40">
+      <type name="int"/>
+    </constant>
+    <constant name="parenright" value="41">
+      <type name="int"/>
+    </constant>
+    <constant name="partdifferential" value="16785922">
+      <type name="int"/>
+    </constant>
+    <constant name="partialderivative" value="2287">
+      <type name="int"/>
+    </constant>
+    <constant name="percent" value="37">
+      <type name="int"/>
+    </constant>
+    <constant name="period" value="46">
+      <type name="int"/>
+    </constant>
+    <constant name="periodcentered" value="183">
+      <type name="int"/>
+    </constant>
+    <constant name="phonographcopyright" value="2811">
+      <type name="int"/>
+    </constant>
+    <constant name="plus" value="43">
+      <type name="int"/>
+    </constant>
+    <constant name="plusminus" value="177">
+      <type name="int"/>
+    </constant>
+    <constant name="prescription" value="2772">
+      <type name="int"/>
+    </constant>
+    <constant name="prolongedsound" value="1200">
+      <type name="int"/>
+    </constant>
+    <constant name="punctspace" value="2726">
+      <type name="int"/>
+    </constant>
+    <constant name="q" value="113">
+      <type name="int"/>
+    </constant>
+    <constant name="quad" value="3020">
+      <type name="int"/>
+    </constant>
+    <constant name="question" value="63">
+      <type name="int"/>
+    </constant>
+    <constant name="questiondown" value="191">
+      <type name="int"/>
+    </constant>
+    <constant name="quotedbl" value="34">
+      <type name="int"/>
+    </constant>
+    <constant name="quoteleft" value="96">
+      <type name="int"/>
+    </constant>
+    <constant name="quoteright" value="39">
+      <type name="int"/>
+    </constant>
+    <constant name="r" value="114">
+      <type name="int"/>
+    </constant>
+    <constant name="racute" value="480">
+      <type name="int"/>
+    </constant>
+    <constant name="radical" value="2262">
+      <type name="int"/>
+    </constant>
+    <constant name="rcaron" value="504">
+      <type name="int"/>
+    </constant>
+    <constant name="rcedilla" value="947">
+      <type name="int"/>
+    </constant>
+    <function name="redraw"
+              c:identifier="clutter_redraw"
+              doc="Forces a redraw of the entire stage. Applications should never use this
+function, but queue a redraw using clutter_actor_queue_redraw().
+This function should only be used by libraries integrating Clutter from
+within another toolkit.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="stage" transfer-ownership="none">
+          <type name="Stage" c:type="ClutterStage*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <constant name="registered" value="174">
+      <type name="int"/>
+    </constant>
+    <constant name="rightanglebracket" value="2750">
+      <type name="int"/>
+    </constant>
+    <constant name="rightarrow" value="2301">
+      <type name="int"/>
+    </constant>
+    <constant name="rightcaret" value="2982">
+      <type name="int"/>
+    </constant>
+    <constant name="rightdoublequotemark" value="2771">
+      <type name="int"/>
+    </constant>
+    <constant name="rightmiddlecurlybrace" value="2224">
+      <type name="int"/>
+    </constant>
+    <constant name="rightmiddlesummation" value="2231">
+      <type name="int"/>
+    </constant>
+    <constant name="rightopentriangle" value="2765">
+      <type name="int"/>
+    </constant>
+    <constant name="rightpointer" value="2795">
+      <type name="int"/>
+    </constant>
+    <constant name="rightshoe" value="3032">
+      <type name="int"/>
+    </constant>
+    <constant name="rightsinglequotemark" value="2769">
+      <type name="int"/>
+    </constant>
+    <constant name="rightt" value="2549">
+      <type name="int"/>
+    </constant>
+    <constant name="righttack" value="3068">
+      <type name="int"/>
+    </constant>
+    <constant name="s" value="115">
+      <type name="int"/>
+    </constant>
+    <constant name="sabovedot" value="16784993">
+      <type name="int"/>
+    </constant>
+    <constant name="sacute" value="438">
+      <type name="int"/>
+    </constant>
+    <constant name="scaron" value="441">
+      <type name="int"/>
+    </constant>
+    <constant name="scedilla" value="442">
+      <type name="int"/>
+    </constant>
+    <constant name="schwa" value="16777817">
+      <type name="int"/>
+    </constant>
+    <constant name="scircumflex" value="766">
+      <type name="int"/>
+    </constant>
+    <constant name="script_switch" value="65406">
+      <type name="int"/>
+    </constant>
+    <constant name="seconds" value="2775">
+      <type name="int"/>
+    </constant>
+    <constant name="section" value="167">
+      <type name="int"/>
+    </constant>
+    <constant name="semicolon" value="59">
+      <type name="int"/>
+    </constant>
+    <constant name="semivoicedsound" value="1247">
+      <type name="int"/>
+    </constant>
+    <function name="set_default_frame_rate"
+              c:identifier="clutter_set_default_frame_rate"
+              doc="Sets the default frame rate. This frame rate will be used to limit
+the number of frames drawn if Clutter is not able to synchronize
+with the vertical refresh rate of the display. When synchronization
+is possible, this value is ignored."
+              version="0.6">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="frames_per_sec" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="set_font_flags"
+              c:identifier="clutter_set_font_flags"
+              doc="Sets the font quality options for subsequent text rendering
+operations.
+Using mipmapped textures will improve the quality for scaled down
+text but will use more texture memory.
+Enabling hinting improves text quality for static text but may
+introduce some artifacts if the text is animated."
+              version="1.0">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="flags" transfer-ownership="none">
+          <type name="FontFlags" c:type="ClutterFontFlags"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="set_motion_events_enabled"
+              c:identifier="clutter_set_motion_events_enabled"
+              doc="Sets whether per-actor motion events should be enabled or not (the
+default is to enable them).
+If @enable is %FALSE the following events will not work:
+&lt;itemizedlist&gt;
+&lt;listitem&gt;&lt;para&gt;ClutterActor::motion-event, unless on the
+#ClutterStage&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;ClutterActor::enter-event&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;ClutterActor::leave-event&lt;/para&gt;&lt;/listitem&gt;
+&lt;/itemizedlist&gt;"
+              version="0.6">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="enable" transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+    <constant name="seveneighths" value="2758">
+      <type name="int"/>
+    </constant>
+    <constant name="sevensubscript" value="16785543">
+      <type name="int"/>
+    </constant>
+    <constant name="sevensuperior" value="16785527">
+      <type name="int"/>
+    </constant>
+    <constant name="signaturemark" value="2762">
+      <type name="int"/>
+    </constant>
+    <constant name="signifblank" value="2732">
+      <type name="int"/>
+    </constant>
+    <constant name="similarequal" value="2249">
+      <type name="int"/>
+    </constant>
+    <constant name="singlelowquotemark" value="2813">
+      <type name="int"/>
+    </constant>
+    <constant name="sixsubscript" value="16785542">
+      <type name="int"/>
+    </constant>
+    <constant name="sixsuperior" value="16785526">
+      <type name="int"/>
+    </constant>
+    <constant name="slash" value="47">
+      <type name="int"/>
+    </constant>
+    <constant name="soliddiamond" value="2528">
+      <type name="int"/>
+    </constant>
+    <constant name="space" value="32">
+      <type name="int"/>
+    </constant>
+    <constant name="squareroot" value="16785946">
+      <type name="int"/>
+    </constant>
+    <constant name="ssharp" value="223">
+      <type name="int"/>
+    </constant>
+    <constant name="sterling" value="163">
+      <type name="int"/>
+    </constant>
+    <constant name="stricteq" value="16786019">
+      <type name="int"/>
+    </constant>
+    <constant name="t" value="116">
+      <type name="int"/>
+    </constant>
+    <constant name="tabovedot" value="16785003">
+      <type name="int"/>
+    </constant>
+    <constant name="tcaron" value="443">
+      <type name="int"/>
+    </constant>
+    <constant name="tcedilla" value="510">
+      <type name="int"/>
+    </constant>
+    <constant name="telephone" value="2809">
+      <type name="int"/>
+    </constant>
+    <constant name="telephonerecorder" value="2810">
+      <type name="int"/>
+    </constant>
+    <constant name="therefore" value="2240">
+      <type name="int"/>
+    </constant>
+    <constant name="thinspace" value="2727">
+      <type name="int"/>
+    </constant>
+    <constant name="thorn" value="254">
+      <type name="int"/>
+    </constant>
+    <function name="threads_add_frame_source"
+              c:identifier="clutter_threads_add_frame_source"
+              doc="Simple wrapper around clutter_threads_add_frame_source_full()."
+              version="0.8">
+      <return-value transfer-ownership="none" doc="of the event source.">
+        <type name="uint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="fps" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="func"
+                   transfer-ownership="none"
+                   scope="call"
+                   closure="2">
+          <type name="GLib.SourceFunc" c:type="GSourceFunc"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="threads_add_frame_source_full"
+              c:identifier="clutter_threads_add_frame_source_full"
+              doc="Sets a function to be called at regular intervals holding the Clutter
+threads lock, with the given priority. The function is called repeatedly
+until it returns %FALSE, at which point the timeout is automatically
+removed and the function will not be called again. The @notify function
+is called when the timeout is removed.
+This function is similar to clutter_threads_add_timeout_full()
+except that it will try to compensate for delays. For example, if
+will be called again half the interval time after it finished. In
+contrast clutter_threads_add_timeout_full() would not fire until a
+full interval after the function completes so the delay between
+calls would be @interval * 1.5. This function does not however try
+to invoke the function multiple times to catch up missing frames if
+See also clutter_threads_add_idle_full()."
+              version="0.8">
+      <return-value transfer-ownership="none" doc="of the event source.">
+        <type name="uint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="priority"
+                   transfer-ownership="none"
+                   doc=" range between #G_PRIORITY_DEFAULT and #G_PRIORITY_HIGH.">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="fps" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="func"
+                   transfer-ownership="none"
+                   scope="notified"
+                   closure="3"
+                   destroy="4">
+          <type name="GLib.SourceFunc" c:type="GSourceFunc"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="notify" transfer-ownership="none" scope="call">
+          <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="threads_add_idle"
+              c:identifier="clutter_threads_add_idle"
+              doc="Simple wrapper around clutter_threads_add_idle_full() using the
+default priority."
+              version="0.4">
+      <return-value transfer-ownership="none" doc="of the event source.">
+        <type name="uint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="func"
+                   transfer-ownership="none"
+                   scope="call"
+                   closure="1">
+          <type name="GLib.SourceFunc" c:type="GSourceFunc"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="threads_add_idle_full"
+              c:identifier="clutter_threads_add_idle_full"
+              doc="Adds a function to be called whenever there are no higher priority
+events pending. If the function returns %FALSE it is automatically
+removed from the list of event sources and will not be called again.
+This function can be considered a thread-safe variant of g_idle_add_full():
+it will call @function while holding the Clutter lock. It is logically
+equivalent to the following implementation:
+|[
+static gboolean
+idle_safe_callback (gpointer data)
+{
+SafeClosure *closure = data;
+gboolean res = FALSE;
+/&amp;ast; mark the critical section &amp;ast;/
+clutter_threads_enter();
+/&amp;ast; the callback does not need to acquire the Clutter
+&amp;ast; lock itself, as it is held by the this proxy handler
+&amp;ast;/
+res = closure-&gt;callback (closure-&gt;data);
+clutter_threads_leave();
+return res;
+}
+static gulong
+add_safe_idle (GSourceFunc callback,
+gpointer    data)
+{
+SafeClosure *closure = g_new0 (SafeClosure, 1);
+closure-&amp;gt;callback = callback;
+closure-&amp;gt;data = data;
+return g_add_idle_full (G_PRIORITY_DEFAULT_IDLE,
+idle_safe_callback,
+closure,
+g_free)
+}
+|
+This function should be used by threaded applications to make sure
+that @func is emitted under the Clutter threads lock and invoked
+from the same thread that started the Clutter main loop. For instance,
+it can be used to update the UI using the results from a worker
+thread:
+|[
+static gboolean
+update_ui (gpointer data)
+{
+SomeClosure *closure = data;
+/&amp;ast; it is safe to call Clutter API from this function because
+&amp;ast; it is invoked from the same thread that started the main
+&amp;ast; loop and under the Clutter thread lock
+&amp;ast;/
+clutter_label_set_text (CLUTTER_LABEL (closure-&amp;gt;label),
+closure-&amp;gt;text);
+g_object_unref (closure-&amp;gt;label);
+g_free (closure);
+return FALSE;
+}
+/&amp;ast; within another thread &amp;ast;/
+closure = g_new0 (SomeClosure, 1);
+/&amp;ast; always take a reference on GObject instances &amp;ast;/
+closure-&amp;gt;label = g_object_ref (my_application-&amp;gt;label);
+closure-&amp;gt;text = g_strdup (processed_text_to_update_the_label);
+clutter_threads_add_idle_full (G_PRIORITY_HIGH_IDLE,
+update_ui,
+closure,
+NULL);
+]|"
+              version="0.4">
+      <return-value transfer-ownership="none" doc="of the event source.">
+        <type name="uint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="priority"
+                   transfer-ownership="none"
+                   doc=" range between #G_PRIORITY_DEFAULT_IDLE and #G_PRIORITY_HIGH_IDLE">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="func"
+                   transfer-ownership="none"
+                   scope="notified"
+                   closure="2"
+                   destroy="3">
+          <type name="GLib.SourceFunc" c:type="GSourceFunc"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="notify" transfer-ownership="none" scope="call">
+          <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="threads_add_repaint_func"
+              c:identifier="clutter_threads_add_repaint_func"
+              doc="Adds a function to be called whenever Clutter is repainting a Stage.
+If the function returns %FALSE it is automatically removed from the
+list of repaint functions and will not be called again.
+This function is guaranteed to be called from within the same thread
+that called clutter_main(), and while the Clutter lock is being held.
+A repaint function is useful to ensure that an update of the scenegraph
+is performed before the scenegraph is repainted; for instance, uploading
+a frame from a video into a #ClutterTexture.
+When the repaint function is removed (either because it returned %FALSE
+or because clutter_threads_remove_repaint_func() has been called) the
+can use the returned integer to remove the repaint function by
+calling clutter_threads_remove_repaint_func()."
+              version="1.0">
+      <return-value transfer-ownership="none"
+                    doc="of the repaint function. You">
+        <type name="uint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="func"
+                   transfer-ownership="none"
+                   scope="notified"
+                   closure="1"
+                   destroy="2">
+          <type name="GLib.SourceFunc" c:type="GSourceFunc"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="notify"
+                   transfer-ownership="none"
+                   scope="call"
+                   doc=" function, or %NULL">
+          <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="threads_add_timeout"
+              c:identifier="clutter_threads_add_timeout"
+              doc="Simple wrapper around clutter_threads_add_timeout_full()."
+              version="0.4">
+      <return-value transfer-ownership="none" doc="of the event source.">
+        <type name="uint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="interval" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="func"
+                   transfer-ownership="none"
+                   scope="call"
+                   closure="2">
+          <type name="GLib.SourceFunc" c:type="GSourceFunc"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="threads_add_timeout_full"
+              c:identifier="clutter_threads_add_timeout_full"
+              doc="Sets a function to be called at regular intervals holding the Clutter
+threads lock, with the given priority. The function is called repeatedly
+until it returns %FALSE, at which point the timeout is automatically
+removed and the function will not be called again. The @notify function
+is called when the timeout is removed.
+The first call to the function will be at the end of the first @interval.
+It is important to note that, due to how the Clutter main loop is
+implemented, the timing will not be accurate and it will not try to
+&quot;keep up&quot; with the interval. A more reliable source is available
+using clutter_threads_add_frame_source_full(), which is also internally
+used by #ClutterTimeline.
+See also clutter_threads_add_idle_full()."
+              version="0.4">
+      <return-value transfer-ownership="none" doc="of the event source.">
+        <type name="uint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="priority"
+                   transfer-ownership="none"
+                   doc=" range between #G_PRIORITY_DEFAULT and #G_PRIORITY_HIGH.">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="interval" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="func"
+                   transfer-ownership="none"
+                   scope="notified"
+                   closure="3"
+                   destroy="4">
+          <type name="GLib.SourceFunc" c:type="GSourceFunc"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="notify" transfer-ownership="none" scope="call">
+          <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="threads_enter"
+              c:identifier="clutter_threads_enter"
+              doc="Locks the Clutter thread lock."
+              version="0.4">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="threads_init"
+              c:identifier="clutter_threads_init"
+              doc="Initialises the Clutter threading mechanism, so that Clutter API can be
+called by multiple threads, using clutter_threads_enter() and
+clutter_threads_leave() to mark the critical sections.
+You must call g_thread_init() before this function.
+This function must be called before clutter_init().
+It is safe to call this function multiple times."
+              version="0.4">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="threads_leave"
+              c:identifier="clutter_threads_leave"
+              doc="Unlocks the Clutter thread lock."
+              version="0.4">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="threads_remove_repaint_func"
+              c:identifier="clutter_threads_remove_repaint_func"
+              doc="Removes the repaint function with @handle_id as its id"
+              version="1.0">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle_id" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="threads_set_lock_functions"
+              c:identifier="clutter_threads_set_lock_functions"
+              doc="Allows the application to replace the standard method that
+Clutter uses to protect its data structures. Normally, Clutter
+creates a single #GMutex that is locked by clutter_threads_enter(),
+and released by clutter_threads_leave(); using this function an
+application provides, instead, a function @enter_fn that is
+called by clutter_threads_enter() and a function @leave_fn that is
+called by clutter_threads_leave().
+The functions must provide at least same locking functionality
+as the default implementation, but can also do extra application
+specific processing.
+As an example, consider an application that has its own recursive
+lock that when held, holds the Clutter lock as well. When Clutter
+unlocks the Clutter lock when entering a recursive main loop, the
+application must temporarily release its lock as well.
+Most threaded Clutter apps won&apos;t need to use this method.
+This method must be called before clutter_threads_init(), and cannot
+be called multiple times."
+              version="0.4">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="enter_fn" transfer-ownership="none" scope="call">
+          <type name="GObject.Callback" c:type="GCallback"/>
+        </parameter>
+        <parameter name="leave_fn" transfer-ownership="none" scope="call">
+          <type name="GObject.Callback" c:type="GCallback"/>
+        </parameter>
+      </parameters>
+    </function>
+    <constant name="threeeighths" value="2756">
+      <type name="int"/>
+    </constant>
+    <constant name="threefifths" value="2740">
+      <type name="int"/>
+    </constant>
+    <constant name="threequarters" value="190">
+      <type name="int"/>
+    </constant>
+    <constant name="threesubscript" value="16785539">
+      <type name="int"/>
+    </constant>
+    <constant name="threesuperior" value="179">
+      <type name="int"/>
+    </constant>
+    <constant name="tintegral" value="16785965">
+      <type name="int"/>
+    </constant>
+    <constant name="topintegral" value="2212">
+      <type name="int"/>
+    </constant>
+    <constant name="topleftparens" value="2219">
+      <type name="int"/>
+    </constant>
+    <constant name="topleftradical" value="2210">
+      <type name="int"/>
+    </constant>
+    <constant name="topleftsqbracket" value="2215">
+      <type name="int"/>
+    </constant>
+    <constant name="topleftsummation" value="2225">
+      <type name="int"/>
+    </constant>
+    <constant name="toprightparens" value="2221">
+      <type name="int"/>
+    </constant>
+    <constant name="toprightsqbracket" value="2217">
+      <type name="int"/>
+    </constant>
+    <constant name="toprightsummation" value="2229">
+      <type name="int"/>
+    </constant>
+    <constant name="topt" value="2551">
+      <type name="int"/>
+    </constant>
+    <constant name="topvertsummationconnector" value="2227">
+      <type name="int"/>
+    </constant>
+    <constant name="trademark" value="2761">
+      <type name="int"/>
+    </constant>
+    <constant name="trademarkincircle" value="2763">
+      <type name="int"/>
+    </constant>
+    <constant name="tslash" value="956">
+      <type name="int"/>
+    </constant>
+    <constant name="twofifths" value="2739">
+      <type name="int"/>
+    </constant>
+    <constant name="twosubscript" value="16785538">
+      <type name="int"/>
+    </constant>
+    <constant name="twosuperior" value="178">
+      <type name="int"/>
+    </constant>
+    <constant name="twothirds" value="2737">
+      <type name="int"/>
+    </constant>
+    <constant name="u" value="117">
+      <type name="int"/>
+    </constant>
+    <constant name="uacute" value="250">
+      <type name="int"/>
+    </constant>
+    <constant name="ubelowdot" value="16785125">
+      <type name="int"/>
+    </constant>
+    <constant name="ubreve" value="765">
+      <type name="int"/>
+    </constant>
+    <constant name="ucircumflex" value="251">
+      <type name="int"/>
+    </constant>
+    <constant name="udiaeresis" value="252">
+      <type name="int"/>
+    </constant>
+    <constant name="udoubleacute" value="507">
+      <type name="int"/>
+    </constant>
+    <constant name="ugrave" value="249">
+      <type name="int"/>
+    </constant>
+    <constant name="uhook" value="16785127">
+      <type name="int"/>
+    </constant>
+    <constant name="uhorn" value="16777648">
+      <type name="int"/>
+    </constant>
+    <constant name="uhornacute" value="16785129">
+      <type name="int"/>
+    </constant>
+    <constant name="uhornbelowdot" value="16785137">
+      <type name="int"/>
+    </constant>
+    <constant name="uhorngrave" value="16785131">
+      <type name="int"/>
+    </constant>
+    <constant name="uhornhook" value="16785133">
+      <type name="int"/>
+    </constant>
+    <constant name="uhorntilde" value="16785135">
+      <type name="int"/>
+    </constant>
+    <constant name="umacron" value="1022">
+      <type name="int"/>
+    </constant>
+    <constant name="underbar" value="3014">
+      <type name="int"/>
+    </constant>
+    <constant name="underscore" value="95">
+      <type name="int"/>
+    </constant>
+    <function name="ungrab_keyboard"
+              c:identifier="clutter_ungrab_keyboard"
+              doc="Removes an existing grab of the keyboard."
+              version="0.6">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="ungrab_pointer"
+              c:identifier="clutter_ungrab_pointer"
+              doc="Removes an existing grab of the pointer."
+              version="0.6">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="ungrab_pointer_for_device"
+              c:identifier="clutter_ungrab_pointer_for_device"
+              doc="Removes an existing grab of the pointer events for device @id."
+              version="0.8">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="id" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <constant name="union" value="2269">
+      <type name="int"/>
+    </constant>
+    <constant name="uogonek" value="1017">
+      <type name="int"/>
+    </constant>
+    <constant name="uparrow" value="2300">
+      <type name="int"/>
+    </constant>
+    <constant name="upcaret" value="2985">
+      <type name="int"/>
+    </constant>
+    <constant name="upleftcorner" value="2540">
+      <type name="int"/>
+    </constant>
+    <constant name="uprightcorner" value="2539">
+      <type name="int"/>
+    </constant>
+    <constant name="upshoe" value="3011">
+      <type name="int"/>
+    </constant>
+    <constant name="upstile" value="3027">
+      <type name="int"/>
+    </constant>
+    <constant name="uptack" value="3022">
+      <type name="int"/>
+    </constant>
+    <constant name="uring" value="505">
+      <type name="int"/>
+    </constant>
+    <function name="util_next_p2"
+              c:identifier="clutter_util_next_p2"
+              doc="Calculates the nearest power of two, greater than or equal to @a."
+              deprecated="1.2">
+      <return-value transfer-ownership="none">
+        <type name="int" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="a" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <constant name="utilde" value="1021">
+      <type name="int"/>
+    </constant>
+    <constant name="v" value="118">
+      <type name="int"/>
+    </constant>
+    <function name="value_get_color"
+              c:identifier="clutter_value_get_color"
+              doc="Gets the #ClutterColor contained in @value."
+              version="0.8.4">
+      <return-value transfer-ownership="none">
+        <type name="Color" c:type="ClutterColor*"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_get_fixed"
+              c:identifier="clutter_value_get_fixed"
+              doc="Gets the fixed point value stored inside @value."
+              version="0.8">
+      <return-value transfer-ownership="full">
+        <type name="Cogl.Fixed" c:type="CoglFixed"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_get_shader_float"
+              c:identifier="clutter_value_get_shader_float"
+              doc="Retrieves the list of floating point values stored inside
+the passed #GValue. @value must have been initialized with
+%CLUTTER_TYPE_SHADER_FLOAT.
+The returned value is owned by the #GValue and should never
+be modified or freed."
+              version="0.8">
+      <return-value transfer-ownership="none">
+        <type name="float" c:type="gfloat*"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="length"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full"
+                   doc=" point values, or %NULL">
+          <type name="size_t" c:type="gsize*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_get_shader_int"
+              c:identifier="clutter_value_get_shader_int"
+              doc="Retrieves the list of integer values stored inside the passed
+#GValue. @value must have been initialized with
+%CLUTTER_TYPE_SHADER_INT.
+The returned value is owned by the #GValue and should never
+be modified or freed."
+              version="0.8">
+      <return-value transfer-ownership="none">
+        <type name="int" c:type="gint*"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="length"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full"
+                   doc=" values, or %NULL">
+          <type name="size_t" c:type="gsize*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_get_shader_matrix"
+              c:identifier="clutter_value_get_shader_matrix"
+              doc="Retrieves a matrix of floating point values stored inside
+the passed #GValue. @value must have been initialized with
+%CLUTTER_TYPE_SHADER_MATRIX.
+of floating point values. The returned value is owned by the #GValue and
+should never be modified or freed."
+              version="0.8">
+      <return-value transfer-ownership="none" doc="the pointer to a matrix">
+        <array length="1" c:type="gfloat*">
+          <type name="float"/>
+        </array>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="length"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full"
+                   doc="return location for the number of returned floating point values, or %NULL">
+          <type name="size_t" c:type="gsize*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_get_units"
+              c:identifier="clutter_value_get_units"
+              doc="Gets the #ClutterUnit&lt;!-- --&gt;s contained in @value."
+              version="0.8">
+      <return-value transfer-ownership="none">
+        <type name="Units" c:type="ClutterUnits*"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_set_color"
+              c:identifier="clutter_value_set_color"
+              doc="Sets @value to @color."
+              version="0.8.4">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="color" transfer-ownership="none">
+          <type name="Color" c:type="ClutterColor*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_set_fixed"
+              c:identifier="clutter_value_set_fixed"
+              doc="Sets @value to @fixed_."
+              version="0.8">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="fixed_" transfer-ownership="none">
+          <type name="Cogl.Fixed" c:type="CoglFixed"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_set_shader_float"
+              c:identifier="clutter_value_set_shader_float"
+              doc="Sets @floats as the contents of @value. The passed #GValue
+must have been initialized using %CLUTTER_TYPE_SHADER_FLOAT."
+              version="0.8">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="size" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="floats"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="none">
+          <type name="float" c:type="gfloat*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_set_shader_int"
+              c:identifier="clutter_value_set_shader_int"
+              doc="Sets @ints as the contents of @value. The passed #GValue
+must have been initialized using %CLUTTER_TYPE_SHADER_INT."
+              version="0.8">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="size" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="ints"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="none">
+          <type name="int" c:type="gint*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_set_shader_matrix"
+              c:identifier="clutter_value_set_shader_matrix"
+              doc="Sets @matrix as the contents of @value. The passed #GValue
+must have been initialized using %CLUTTER_TYPE_SHADER_MATRIX."
+              version="0.8">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="size" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="matrix"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="none">
+          <type name="float" c:type="gfloat*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_set_units"
+              c:identifier="clutter_value_set_units"
+              doc="Sets @value to @units"
+              version="0.8">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="units" transfer-ownership="none">
+          <type name="Units" c:type="ClutterUnits*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <constant name="variation" value="2241">
+      <type name="int"/>
+    </constant>
+    <constant name="vertbar" value="2552">
+      <type name="int"/>
+    </constant>
+    <constant name="vertconnector" value="2214">
+      <type name="int"/>
+    </constant>
+    <constant name="voicedsound" value="1246">
+      <type name="int"/>
+    </constant>
+    <constant name="vt" value="2537">
+      <type name="int"/>
+    </constant>
+    <constant name="w" value="119">
+      <type name="int"/>
+    </constant>
+    <constant name="wacute" value="16785027">
+      <type name="int"/>
+    </constant>
+    <constant name="wcircumflex" value="16777589">
+      <type name="int"/>
+    </constant>
+    <constant name="wdiaeresis" value="16785029">
+      <type name="int"/>
+    </constant>
+    <constant name="wgrave" value="16785025">
+      <type name="int"/>
+    </constant>
+    <constant name="x" value="120">
+      <type name="int"/>
+    </constant>
+    <constant name="xabovedot" value="16785035">
+      <type name="int"/>
+    </constant>
+    <constant name="y" value="121">
+      <type name="int"/>
+    </constant>
+    <constant name="yacute" value="253">
+      <type name="int"/>
+    </constant>
+    <constant name="ybelowdot" value="16785141">
+      <type name="int"/>
+    </constant>
+    <constant name="ycircumflex" value="16777591">
+      <type name="int"/>
+    </constant>
+    <constant name="ydiaeresis" value="255">
+      <type name="int"/>
+    </constant>
+    <constant name="yen" value="165">
+      <type name="int"/>
+    </constant>
+    <constant name="ygrave" value="16785139">
+      <type name="int"/>
+    </constant>
+    <constant name="yhook" value="16785143">
+      <type name="int"/>
+    </constant>
+    <constant name="ytilde" value="16785145">
+      <type name="int"/>
+    </constant>
+    <constant name="z" value="122">
+      <type name="int"/>
+    </constant>
+    <constant name="zabovedot" value="447">
+      <type name="int"/>
+    </constant>
+    <constant name="zacute" value="444">
+      <type name="int"/>
+    </constant>
+    <constant name="zcaron" value="446">
+      <type name="int"/>
+    </constant>
+    <constant name="zerosubscript" value="16785536">
+      <type name="int"/>
+    </constant>
+    <constant name="zerosuperior" value="16785520">
+      <type name="int"/>
+    </constant>
+    <constant name="zstroke" value="16777654">
+      <type name="int"/>
+    </constant>
+  </namespace>
+</repository>
diff --git a/extra/clutter/authors.txt b/extra/clutter/authors.txt
new file mode 100644 (file)
index 0000000..ce9bcc8
--- /dev/null
@@ -0,0 +1 @@
+Anton Gorenko
\ No newline at end of file
diff --git a/extra/clutter/clutter.factor b/extra/clutter/clutter.factor
new file mode 100644 (file)
index 0000000..a69a857
--- /dev/null
@@ -0,0 +1,5 @@
+! Copyright (C) 2010 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: clutter.ffi ;
+IN: clutter
+
diff --git a/extra/clutter/cogl/Cogl-1.0.gir b/extra/clutter/cogl/Cogl-1.0.gir
new file mode 100644 (file)
index 0000000..94159e4
--- /dev/null
@@ -0,0 +1,5539 @@
+<?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.0"
+            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="GL" version="1.0"/>
+  <include name="GLib" version="2.0"/>
+  <include name="GObject" version="2.0"/>
+  <package name="gobject-2.0"/>
+  <c:include name="cogl/cogl.h"/>
+  <namespace name="Cogl" version="1.0" shared-library="libclutter-glx-1.0.so.0" c:prefix="Cogl">
+    <alias name="Angle" target="int32" c:type="CoglAngle"/>
+    <alias name="Fixed" target="int32" c:type="CoglFixed"/>
+    <alias name="Handle" target="any" c:type="CoglHandle"/>
+    <constant name="AFIRST_BIT" value="64">
+      <type name="int"/>
+    </constant>
+    <constant name="A_BIT" value="16">
+      <type name="int"/>
+    </constant>
+    <enumeration name="AttributeType"
+                 doc="Data types for the components of cogl_vertex_buffer_add()"
+                 version="1.0"
+                 glib:type-name="CoglAttributeType"
+                 glib:get-type="cogl_attribute_type_get_type"
+                 c:type="CoglAttributeType">
+      <member name="byte"
+              value="5120"
+              c:identifier="COGL_ATTRIBUTE_TYPE_BYTE"
+              glib:nick="byte"/>
+      <member name="unsigned_byte"
+              value="5121"
+              c:identifier="COGL_ATTRIBUTE_TYPE_UNSIGNED_BYTE"
+              glib:nick="unsigned-byte"/>
+      <member name="short"
+              value="5122"
+              c:identifier="COGL_ATTRIBUTE_TYPE_SHORT"
+              glib:nick="short"/>
+      <member name="unsigned_short"
+              value="5123"
+              c:identifier="COGL_ATTRIBUTE_TYPE_UNSIGNED_SHORT"
+              glib:nick="unsigned-short"/>
+      <member name="float"
+              value="5126"
+              c:identifier="COGL_ATTRIBUTE_TYPE_FLOAT"
+              glib:nick="float"/>
+    </enumeration>
+    <constant name="BGR_BIT" value="32">
+      <type name="int"/>
+    </constant>
+    <enumeration name="BlendStringError"
+                 doc="Error enumeration for the blend strings parser"
+                 version="1.0"
+                 glib:type-name="CoglBlendStringError"
+                 glib:get-type="cogl_blend_string_error_get_type"
+                 c:type="CoglBlendStringError"
+                 glib:error-quark="cogl_blend_string_error_quark">
+      <member name="parse_error"
+              value="0"
+              c:identifier="COGL_BLEND_STRING_ERROR_PARSE_ERROR"
+              glib:nick="parse-error"/>
+      <member name="argument_parse_error"
+              value="1"
+              c:identifier="COGL_BLEND_STRING_ERROR_ARGUMENT_PARSE_ERROR"
+              glib:nick="argument-parse-error"/>
+      <member name="invalid_error"
+              value="2"
+              c:identifier="COGL_BLEND_STRING_ERROR_INVALID_ERROR"
+              glib:nick="invalid-error"/>
+      <member name="gpu_unsupported_error"
+              value="3"
+              c:identifier="COGL_BLEND_STRING_ERROR_GPU_UNSUPPORTED_ERROR"
+              glib:nick="gpu-unsupported-error"/>
+    </enumeration>
+    <bitfield name="BufferAccess"
+              doc="The access hints for cogl_buffer_set_update_hint()"
+              version="1.2"
+              glib:type-name="CoglBufferAccess"
+              glib:get-type="cogl_buffer_access_get_type"
+              c:type="CoglBufferAccess">
+      <member name="read"
+              value="1"
+              c:identifier="COGL_BUFFER_ACCESS_READ"
+              glib:nick="read"/>
+      <member name="write"
+              value="2"
+              c:identifier="COGL_BUFFER_ACCESS_WRITE"
+              glib:nick="write"/>
+      <member name="read_write"
+              value="3"
+              c:identifier="COGL_BUFFER_ACCESS_READ_WRITE"
+              glib:nick="read-write"/>
+    </bitfield>
+    <bitfield name="BufferBit"
+              doc="Types of auxiliary buffers"
+              version="1.0"
+              glib:type-name="CoglBufferBit"
+              glib:get-type="cogl_buffer_bit_get_type"
+              c:type="CoglBufferBit">
+      <member name="color"
+              value="1"
+              c:identifier="COGL_BUFFER_BIT_COLOR"
+              glib:nick="color"/>
+      <member name="depth"
+              value="2"
+              c:identifier="COGL_BUFFER_BIT_DEPTH"
+              glib:nick="depth"/>
+      <member name="stencil"
+              value="4"
+              c:identifier="COGL_BUFFER_BIT_STENCIL"
+              glib:nick="stencil"/>
+    </bitfield>
+    <bitfield name="BufferTarget"
+              doc="Target flags for FBOs."
+              version="0.8"
+              glib:type-name="CoglBufferTarget"
+              glib:get-type="cogl_buffer_target_get_type"
+              c:type="CoglBufferTarget">
+      <member name="window_buffer"
+              value="2"
+              c:identifier="COGL_WINDOW_BUFFER"
+              glib:nick="window-buffer"/>
+      <member name="offscreen_buffer"
+              value="4"
+              c:identifier="COGL_OFFSCREEN_BUFFER"
+              glib:nick="offscreen-buffer"/>
+    </bitfield>
+    <enumeration name="BufferUpdateHint"
+                 doc="The update hint on a buffer allows the user to give some detail on how often
+the buffer data is going to be updated."
+                 version="1.2"
+                 glib:type-name="CoglBufferUpdateHint"
+                 glib:get-type="cogl_buffer_update_hint_get_type"
+                 c:type="CoglBufferUpdateHint">
+      <member name="static"
+              value="0"
+              c:identifier="COGL_BUFFER_UPDATE_HINT_STATIC"
+              glib:nick="static"/>
+      <member name="dynamic"
+              value="1"
+              c:identifier="COGL_BUFFER_UPDATE_HINT_DYNAMIC"
+              glib:nick="dynamic"/>
+      <member name="stream"
+              value="2"
+              c:identifier="COGL_BUFFER_UPDATE_HINT_STREAM"
+              glib:nick="stream"/>
+    </enumeration>
+    <enumeration name="BufferUsageHint"
+                 doc="The usage hint on a buffer allows the user to give some clue on how the
+buffer will be used."
+                 version="1.2"
+                 glib:type-name="CoglBufferUsageHint"
+                 glib:get-type="cogl_buffer_usage_hint_get_type"
+                 c:type="CoglBufferUsageHint">
+      <member name="texture"
+              value="0"
+              c:identifier="COGL_BUFFER_USAGE_HINT_TEXTURE"
+              glib:nick="texture"/>
+    </enumeration>
+    <record name="Color"
+            c:type="CoglColor"
+            doc="A structure for holding a color definition. The contents of
+the CoglColor structure are private and should never by accessed
+directly."
+            version="1.0">
+      <field name="red" writable="1">
+        <type name="uint8" c:type="guint8"/>
+      </field>
+      <field name="green" writable="1">
+        <type name="uint8" c:type="guint8"/>
+      </field>
+      <field name="blue" writable="1">
+        <type name="uint8" c:type="guint8"/>
+      </field>
+      <field name="alpha" writable="1">
+        <type name="uint8" c:type="guint8"/>
+      </field>
+      <field name="padding0" writable="1">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+      <field name="padding1" writable="1">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+      <field name="padding2" writable="1">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+      <constructor name="new"
+                   c:identifier="cogl_color_new"
+                   doc="Creates a new (empty) color
+to free the allocated resources"
+                   version="1.0">
+        <return-value transfer-ownership="full">
+          <type name="Color" c:type="CoglColor*"/>
+        </return-value>
+      </constructor>
+      <method name="copy"
+              c:identifier="cogl_color_copy"
+              doc="Creates a copy of @color
+to free the allocate resources"
+              version="1.0">
+        <return-value transfer-ownership="full">
+          <type name="Color" c:type="CoglColor*"/>
+        </return-value>
+      </method>
+      <method name="free"
+              c:identifier="cogl_color_free"
+              doc="Frees the resources allocated by cogl_color_new() and cogl_color_copy()"
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="set_from_4ub"
+              c:identifier="cogl_color_set_from_4ub"
+              doc="Sets the values of the passed channels into a #CoglColor."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="red" transfer-ownership="none">
+            <type name="uint8" c:type="guint8"/>
+          </parameter>
+          <parameter name="green" transfer-ownership="none">
+            <type name="uint8" c:type="guint8"/>
+          </parameter>
+          <parameter name="blue" transfer-ownership="none">
+            <type name="uint8" c:type="guint8"/>
+          </parameter>
+          <parameter name="alpha" transfer-ownership="none">
+            <type name="uint8" c:type="guint8"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_from_4f"
+              c:identifier="cogl_color_set_from_4f"
+              doc="Sets the values of the passed channels into a #CoglColor"
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="red" transfer-ownership="none">
+            <type name="float" c:type="float"/>
+          </parameter>
+          <parameter name="green" transfer-ownership="none">
+            <type name="float" c:type="float"/>
+          </parameter>
+          <parameter name="blue" transfer-ownership="none">
+            <type name="float" c:type="float"/>
+          </parameter>
+          <parameter name="alpha" transfer-ownership="none">
+            <type name="float" c:type="float"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_red_byte"
+              c:identifier="cogl_color_get_red_byte"
+              doc="Retrieves the red channel of @color as a byte value
+between 0 and 255"
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="uint8" c:type="unsigned char"/>
+        </return-value>
+      </method>
+      <method name="get_green_byte"
+              c:identifier="cogl_color_get_green_byte"
+              doc="Retrieves the green channel of @color as a byte value
+between 0 and 255"
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="uint8" c:type="unsigned char"/>
+        </return-value>
+      </method>
+      <method name="get_blue_byte"
+              c:identifier="cogl_color_get_blue_byte"
+              doc="Retrieves the blue channel of @color as a byte value
+between 0 and 255"
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="uint8" c:type="unsigned char"/>
+        </return-value>
+      </method>
+      <method name="get_alpha_byte"
+              c:identifier="cogl_color_get_alpha_byte"
+              doc="Retrieves the alpha channel of @color as a byte value
+between 0 and 255"
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="uint8" c:type="unsigned char"/>
+        </return-value>
+      </method>
+      <method name="get_red_float"
+              c:identifier="cogl_color_get_red_float"
+              doc="Retrieves the red channel of @color as a floating point
+value between 0.0 and 1.0"
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </return-value>
+      </method>
+      <method name="get_green_float"
+              c:identifier="cogl_color_get_green_float"
+              doc="Retrieves the green channel of @color as a floating point
+value between 0.0 and 1.0"
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </return-value>
+      </method>
+      <method name="get_blue_float"
+              c:identifier="cogl_color_get_blue_float"
+              doc="Retrieves the blue channel of @color as a floating point
+value between 0.0 and 1.0"
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </return-value>
+      </method>
+      <method name="get_alpha_float"
+              c:identifier="cogl_color_get_alpha_float"
+              doc="Retrieves the alpha channel of @color as a floating point
+value between 0.0 and 1.0"
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </return-value>
+      </method>
+      <method name="get_red"
+              c:identifier="cogl_color_get_red"
+              doc="Retrieves the red channel of @color as a fixed point
+value between 0 and %1.0."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </return-value>
+      </method>
+      <method name="get_green"
+              c:identifier="cogl_color_get_green"
+              doc="Retrieves the green channel of @color as a fixed point
+value between 0 and %1.0."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </return-value>
+      </method>
+      <method name="get_blue"
+              c:identifier="cogl_color_get_blue"
+              doc="Retrieves the blue channel of @color as a fixed point
+value between 0 and %1.0."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </return-value>
+      </method>
+      <method name="get_alpha"
+              c:identifier="cogl_color_get_alpha"
+              doc="Retrieves the alpha channel of @color as a fixed point
+value between 0 and %1.0."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </return-value>
+      </method>
+      <method name="premultiply"
+              c:identifier="cogl_color_premultiply"
+              doc="Converts a non-premultiplied color to a pre-multiplied color. For
+example, semi-transparent red is (1.0, 0, 0, 0.5) when non-premultiplied
+and (0.5, 0, 0, 0.5) when premultiplied."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+    </record>
+    <bitfield name="DebugFlags"
+              glib:type-name="CoglDebugFlags"
+              glib:get-type="cogl_debug_flags_get_type"
+              c:type="CoglDebugFlags">
+      <member name="slicing"
+              value="2"
+              c:identifier="COGL_DEBUG_SLICING"
+              glib:nick="slicing"/>
+      <member name="offscreen"
+              value="4"
+              c:identifier="COGL_DEBUG_OFFSCREEN"
+              glib:nick="offscreen"/>
+      <member name="draw"
+              value="8"
+              c:identifier="COGL_DEBUG_DRAW"
+              glib:nick="draw"/>
+      <member name="pango"
+              value="16"
+              c:identifier="COGL_DEBUG_PANGO"
+              glib:nick="pango"/>
+      <member name="rectangles"
+              value="32"
+              c:identifier="COGL_DEBUG_RECTANGLES"
+              glib:nick="rectangles"/>
+      <member name="handle"
+              value="64"
+              c:identifier="COGL_DEBUG_HANDLE"
+              glib:nick="handle"/>
+      <member name="blend_strings"
+              value="128"
+              c:identifier="COGL_DEBUG_BLEND_STRINGS"
+              glib:nick="blend-strings"/>
+      <member name="disable_batching"
+              value="256"
+              c:identifier="COGL_DEBUG_DISABLE_BATCHING"
+              glib:nick="disable-batching"/>
+      <member name="disable_vbos"
+              value="512"
+              c:identifier="COGL_DEBUG_DISABLE_VBOS"
+              glib:nick="disable-vbos"/>
+      <member name="journal"
+              value="1024"
+              c:identifier="COGL_DEBUG_JOURNAL"
+              glib:nick="journal"/>
+      <member name="batching"
+              value="2048"
+              c:identifier="COGL_DEBUG_BATCHING"
+              glib:nick="batching"/>
+      <member name="disable_software_transform"
+              value="4096"
+              c:identifier="COGL_DEBUG_DISABLE_SOFTWARE_TRANSFORM"
+              glib:nick="disable-software-transform"/>
+      <member name="matrices"
+              value="8192"
+              c:identifier="COGL_DEBUG_MATRICES"
+              glib:nick="matrices"/>
+      <member name="force_scanline_paths"
+              value="16384"
+              c:identifier="COGL_DEBUG_FORCE_SCANLINE_PATHS"
+              glib:nick="force-scanline-paths"/>
+      <member name="atlas"
+              value="32768"
+              c:identifier="COGL_DEBUG_ATLAS"
+              glib:nick="atlas"/>
+      <member name="dump_atlas_image"
+              value="65536"
+              c:identifier="COGL_DEBUG_DUMP_ATLAS_IMAGE"
+              glib:nick="dump-atlas-image"/>
+      <member name="disable_atlas"
+              value="131072"
+              c:identifier="COGL_DEBUG_DISABLE_ATLAS"
+              glib:nick="disable-atlas"/>
+      <member name="opengl"
+              value="262144"
+              c:identifier="COGL_DEBUG_OPENGL"
+              glib:nick="opengl"/>
+    </bitfield>
+    <enumeration name="DriverError"
+                 glib:type-name="CoglDriverError"
+                 glib:get-type="cogl_driver_error_get_type"
+                 c:type="CoglDriverError">
+      <member name="unknown_version"
+              value="0"
+              c:identifier="COGL_DRIVER_ERROR_UNKNOWN_VERSION"
+              glib:nick="unknown-version"/>
+      <member name="invalid_version"
+              value="1"
+              c:identifier="COGL_DRIVER_ERROR_INVALID_VERSION"
+              glib:nick="invalid-version"/>
+    </enumeration>
+    <constant name="FIXED_0_5" value="32768">
+      <type name="int"/>
+    </constant>
+    <constant name="FIXED_1" value="1">
+      <type name="int"/>
+    </constant>
+    <constant name="FIXED_2_PI" value="411775">
+      <type name="int"/>
+    </constant>
+    <constant name="FIXED_BITS" value="32">
+      <type name="int"/>
+    </constant>
+    <constant name="FIXED_EPSILON" value="1">
+      <type name="int"/>
+    </constant>
+    <constant name="FIXED_MAX" value="2147483647">
+      <type name="int"/>
+    </constant>
+    <constant name="FIXED_MIN" value="-2147483648">
+      <type name="int"/>
+    </constant>
+    <constant name="FIXED_PI" value="205887">
+      <type name="int"/>
+    </constant>
+    <constant name="FIXED_PI_2" value="102944">
+      <type name="int"/>
+    </constant>
+    <constant name="FIXED_PI_4" value="51472">
+      <type name="int"/>
+    </constant>
+    <constant name="FIXED_Q" value="-16">
+      <type name="int"/>
+    </constant>
+    <bitfield name="FeatureFlags"
+              doc="Flags for the supported features."
+              version="0.8"
+              glib:type-name="CoglFeatureFlags"
+              glib:get-type="cogl_feature_flags_get_type"
+              c:type="CoglFeatureFlags">
+      <member name="texture_rectangle"
+              value="2"
+              c:identifier="COGL_FEATURE_TEXTURE_RECTANGLE"
+              glib:nick="texture-rectangle"/>
+      <member name="texture_npot"
+              value="4"
+              c:identifier="COGL_FEATURE_TEXTURE_NPOT"
+              glib:nick="texture-npot"/>
+      <member name="texture_yuv"
+              value="8"
+              c:identifier="COGL_FEATURE_TEXTURE_YUV"
+              glib:nick="texture-yuv"/>
+      <member name="texture_read_pixels"
+              value="16"
+              c:identifier="COGL_FEATURE_TEXTURE_READ_PIXELS"
+              glib:nick="texture-read-pixels"/>
+      <member name="shaders_glsl"
+              value="32"
+              c:identifier="COGL_FEATURE_SHADERS_GLSL"
+              glib:nick="shaders-glsl"/>
+      <member name="offscreen"
+              value="64"
+              c:identifier="COGL_FEATURE_OFFSCREEN"
+              glib:nick="offscreen"/>
+      <member name="offscreen_multisample"
+              value="128"
+              c:identifier="COGL_FEATURE_OFFSCREEN_MULTISAMPLE"
+              glib:nick="offscreen-multisample"/>
+      <member name="offscreen_blit"
+              value="256"
+              c:identifier="COGL_FEATURE_OFFSCREEN_BLIT"
+              glib:nick="offscreen-blit"/>
+      <member name="four_clip_planes"
+              value="512"
+              c:identifier="COGL_FEATURE_FOUR_CLIP_PLANES"
+              glib:nick="four-clip-planes"/>
+      <member name="stencil_buffer"
+              value="1024"
+              c:identifier="COGL_FEATURE_STENCIL_BUFFER"
+              glib:nick="stencil-buffer"/>
+      <member name="vbos"
+              value="2048"
+              c:identifier="COGL_FEATURE_VBOS"
+              glib:nick="vbos"/>
+      <member name="pbos"
+              value="4096"
+              c:identifier="COGL_FEATURE_PBOS"
+              glib:nick="pbos"/>
+      <member name="unsigned_int_indices"
+              value="8192"
+              c:identifier="COGL_FEATURE_UNSIGNED_INT_INDICES"
+              glib:nick="unsigned-int-indices"/>
+    </bitfield>
+    <enumeration name="FogMode"
+                 doc="The fog mode determines the equation used to calculate the fogging blend
+factor while fogging is enabled. The simplest %COGL_FOG_MODE_LINEAR mode
+determines f as:
+|[
+f = end - eye_distance / end - start
+]|
+Where eye_distance is the distance of the current fragment in eye
+coordinates from the origin."
+                 version="1.0"
+                 glib:type-name="CoglFogMode"
+                 glib:get-type="cogl_fog_mode_get_type"
+                 c:type="CoglFogMode">
+      <member name="linear"
+              value="0"
+              c:identifier="COGL_FOG_MODE_LINEAR"
+              glib:nick="linear"/>
+      <member name="exponential"
+              value="1"
+              c:identifier="COGL_FOG_MODE_EXPONENTIAL"
+              glib:nick="exponential"/>
+      <member name="exponential_squared"
+              value="2"
+              c:identifier="COGL_FOG_MODE_EXPONENTIAL_SQUARED"
+              glib:nick="exponential-squared"/>
+    </enumeration>
+    <callback name="FuncPtr"
+              c:type="CoglFuncPtr"
+              doc="The type used by cogl for function pointers, note that this type
+is used as a generic catch-all cast for function pointers and the
+actual arguments and return type may be different.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </callback>
+    <glib:boxed c:type="CoglHandle"
+                glib:name="Handle"
+                glib:type-name="CoglHandle"
+                glib:get-type="cogl_handle_get_type">
+      <method name="ref"
+              c:identifier="cogl_handle_ref"
+              doc="Increases the reference count of @handle by 1">
+        <return-value transfer-ownership="full">
+          <type name="Handle" c:type="CoglHandle"/>
+        </return-value>
+      </method>
+      <method name="unref"
+              c:identifier="cogl_handle_unref"
+              doc="Drecreases the reference count of @handle by 1; if the reference
+count reaches 0, the resources allocated by @handle will be freed">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+    </glib:boxed>
+    <enumeration name="IndicesType"
+                 doc="You should aim to use the smallest data type that gives you enough
+range, since it reduces the size of your index array and can help
+reduce the demand on memory bandwidth.
+Note that %COGL_INDICES_TYPE_UNSIGNED_INT is only supported if the
+%COGL_FEATURE_UNSIGNED_INT_INDICES feature is available. This
+should always be available on OpenGL but on OpenGL ES it will only
+be available if the GL_OES_element_index_uint extension is
+advertized."
+                 glib:type-name="CoglIndicesType"
+                 glib:get-type="cogl_indices_type_get_type"
+                 c:type="CoglIndicesType">
+      <member name="byte"
+              value="0"
+              c:identifier="COGL_INDICES_TYPE_UNSIGNED_BYTE"
+              glib:nick="byte"/>
+      <member name="short"
+              value="1"
+              c:identifier="COGL_INDICES_TYPE_UNSIGNED_SHORT"
+              glib:nick="short"/>
+      <member name="int"
+              value="2"
+              c:identifier="COGL_INDICES_TYPE_UNSIGNED_INT"
+              glib:nick="int"/>
+    </enumeration>
+    <enumeration name="MaterialAlphaFunc"
+                 doc="Alpha testing happens before blending primitives with the framebuffer and
+gives an opportunity to discard fragments based on a comparison with the
+incoming alpha value and a reference alpha value. The #CoglMaterialAlphaFunc
+determines how the comparison is done."
+                 glib:type-name="CoglMaterialAlphaFunc"
+                 glib:get-type="cogl_material_alpha_func_get_type"
+                 c:type="CoglMaterialAlphaFunc">
+      <member name="never"
+              value="512"
+              c:identifier="COGL_MATERIAL_ALPHA_FUNC_NEVER"
+              glib:nick="never"/>
+      <member name="less"
+              value="513"
+              c:identifier="COGL_MATERIAL_ALPHA_FUNC_LESS"
+              glib:nick="less"/>
+      <member name="equal"
+              value="514"
+              c:identifier="COGL_MATERIAL_ALPHA_FUNC_EQUAL"
+              glib:nick="equal"/>
+      <member name="lequal"
+              value="515"
+              c:identifier="COGL_MATERIAL_ALPHA_FUNC_LEQUAL"
+              glib:nick="lequal"/>
+      <member name="greater"
+              value="516"
+              c:identifier="COGL_MATERIAL_ALPHA_FUNC_GREATER"
+              glib:nick="greater"/>
+      <member name="notequal"
+              value="517"
+              c:identifier="COGL_MATERIAL_ALPHA_FUNC_NOTEQUAL"
+              glib:nick="notequal"/>
+      <member name="gequal"
+              value="518"
+              c:identifier="COGL_MATERIAL_ALPHA_FUNC_GEQUAL"
+              glib:nick="gequal"/>
+      <member name="always"
+              value="519"
+              c:identifier="COGL_MATERIAL_ALPHA_FUNC_ALWAYS"
+              glib:nick="always"/>
+    </enumeration>
+    <enumeration name="MaterialFilter"
+                 doc="Texture filtering is used whenever the current pixel maps either to more
+than one texture element (texel) or less than one. These filter enums
+correspond to different strategies used to come up with a pixel color, by
+possibly referring to multiple neighbouring texels and taking a weighted
+average or simply using the nearest texel."
+                 glib:type-name="CoglMaterialFilter"
+                 glib:get-type="cogl_material_filter_get_type"
+                 c:type="CoglMaterialFilter">
+      <member name="nearest"
+              value="9728"
+              c:identifier="COGL_MATERIAL_FILTER_NEAREST"
+              glib:nick="nearest"/>
+      <member name="linear"
+              value="9729"
+              c:identifier="COGL_MATERIAL_FILTER_LINEAR"
+              glib:nick="linear"/>
+      <member name="nearest_mipmap_nearest"
+              value="9984"
+              c:identifier="COGL_MATERIAL_FILTER_NEAREST_MIPMAP_NEAREST"
+              glib:nick="nearest-mipmap-nearest"/>
+      <member name="linear_mipmap_nearest"
+              value="9985"
+              c:identifier="COGL_MATERIAL_FILTER_LINEAR_MIPMAP_NEAREST"
+              glib:nick="linear-mipmap-nearest"/>
+      <member name="nearest_mipmap_linear"
+              value="9986"
+              c:identifier="COGL_MATERIAL_FILTER_NEAREST_MIPMAP_LINEAR"
+              glib:nick="nearest-mipmap-linear"/>
+      <member name="linear_mipmap_linear"
+              value="9987"
+              c:identifier="COGL_MATERIAL_FILTER_LINEAR_MIPMAP_LINEAR"
+              glib:nick="linear-mipmap-linear"/>
+    </enumeration>
+    <enumeration name="MaterialLayerType"
+                 doc="Available types of layers for a #CoglMaterial. This enumeration
+might be expanded in later versions."
+                 version="1.0"
+                 glib:type-name="CoglMaterialLayerType"
+                 glib:get-type="cogl_material_layer_type_get_type"
+                 c:type="CoglMaterialLayerType">
+      <member name="texture"
+              value="0"
+              c:identifier="COGL_MATERIAL_LAYER_TYPE_TEXTURE"
+              glib:nick="texture"/>
+    </enumeration>
+    <record name="Matrix"
+            c:type="CoglMatrix"
+            doc="A CoglMatrix holds a 4x4 transform matrix. This is a single precision,
+column-major matrix which means it is compatible with what OpenGL expects.
+A CoglMatrix can represent transforms such as, rotations, scaling,
+translation, sheering, and linear projections. You can combine these
+transforms by multiplying multiple matrices in the order you want them
+applied.
+The transformation of a vertex (x, y, z, w) by a CoglMatrix is given by:
+|[
+x_new = xx * x + xy * y + xz * z + xw * w
+y_new = yx * x + yy * y + yz * z + yw * w
+z_new = zx * x + zy * y + zz * z + zw * w
+w_new = wx * x + wy * y + wz * z + ww * w
+]|
+Where w is normally 1
+&lt;note&gt;You must consider the members of the CoglMatrix structure read only,
+and all matrix modifications must be done via the cogl_matrix API. This
+allows Cogl to annotate the matrices internally. Violation of this will give
+undefined results. If you need to initialize a matrix with a constant other
+than the identity matrix you can use cogl_matrix_init_from_array().&lt;/note&gt;">
+      <field name="xx" writable="1">
+        <type name="float" c:type="float"/>
+      </field>
+      <field name="yx" writable="1">
+        <type name="float" c:type="float"/>
+      </field>
+      <field name="zx" writable="1">
+        <type name="float" c:type="float"/>
+      </field>
+      <field name="wx" writable="1">
+        <type name="float" c:type="float"/>
+      </field>
+      <field name="xy" writable="1">
+        <type name="float" c:type="float"/>
+      </field>
+      <field name="yy" writable="1">
+        <type name="float" c:type="float"/>
+      </field>
+      <field name="zy" writable="1">
+        <type name="float" c:type="float"/>
+      </field>
+      <field name="wy" writable="1">
+        <type name="float" c:type="float"/>
+      </field>
+      <field name="xz" writable="1">
+        <type name="float" c:type="float"/>
+      </field>
+      <field name="yz" writable="1">
+        <type name="float" c:type="float"/>
+      </field>
+      <field name="zz" writable="1">
+        <type name="float" c:type="float"/>
+      </field>
+      <field name="wz" writable="1">
+        <type name="float" c:type="float"/>
+      </field>
+      <field name="xw" writable="1">
+        <type name="float" c:type="float"/>
+      </field>
+      <field name="yw" writable="1">
+        <type name="float" c:type="float"/>
+      </field>
+      <field name="zw" writable="1">
+        <type name="float" c:type="float"/>
+      </field>
+      <field name="ww" writable="1">
+        <type name="float" c:type="float"/>
+      </field>
+      <field name="inv" writable="1">
+        <array zero-terminated="0" c:type="float" fixed-size="16">
+          <type name="float"/>
+        </array>
+      </field>
+      <field name="type" writable="1">
+        <type name="uint" c:type="unsigned"/>
+      </field>
+      <field name="flags" writable="1">
+        <type name="uint" c:type="unsigned"/>
+      </field>
+      <field name="_padding3" writable="1">
+        <type name="uint" c:type="unsigned"/>
+      </field>
+      <method name="init_identity"
+              c:identifier="cogl_matrix_init_identity"
+              doc="Resets matrix to the identity matrix:
+|[
+.xx=1; .xy=0; .xz=0; .xw=0;
+.yx=0; .yy=1; .yz=0; .yw=0;
+.zx=0; .zy=0; .zz=1; .zw=0;
+.wx=0; .wy=0; .wz=0; .ww=1;
+]|">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="multiply"
+              c:identifier="cogl_matrix_multiply"
+              doc="Multiplies the two supplied matrices together and stores
+the resulting matrix inside @result">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="a" transfer-ownership="none">
+            <type name="Matrix" c:type="CoglMatrix*"/>
+          </parameter>
+          <parameter name="b" transfer-ownership="none">
+            <type name="Matrix" c:type="CoglMatrix*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="rotate"
+              c:identifier="cogl_matrix_rotate"
+              doc="Multiplies @matrix with a rotation matrix that applies a rotation
+of @angle degrees around the specified 3D vector.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="angle" transfer-ownership="none">
+            <type name="float" c:type="float"/>
+          </parameter>
+          <parameter name="x" transfer-ownership="none">
+            <type name="float" c:type="float"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <type name="float" c:type="float"/>
+          </parameter>
+          <parameter name="z" transfer-ownership="none">
+            <type name="float" c:type="float"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="translate"
+              c:identifier="cogl_matrix_translate"
+              doc="Multiplies @matrix with a transform matrix that translates along
+the X, Y and Z axis.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="x" transfer-ownership="none">
+            <type name="float" c:type="float"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <type name="float" c:type="float"/>
+          </parameter>
+          <parameter name="z" transfer-ownership="none">
+            <type name="float" c:type="float"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="scale"
+              c:identifier="cogl_matrix_scale"
+              doc="Multiplies @matrix with a transform matrix that scales along the X,
+Y and Z axis.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="sx" transfer-ownership="none">
+            <type name="float" c:type="float"/>
+          </parameter>
+          <parameter name="sy" transfer-ownership="none">
+            <type name="float" c:type="float"/>
+          </parameter>
+          <parameter name="sz" transfer-ownership="none">
+            <type name="float" c:type="float"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="frustum"
+              c:identifier="cogl_matrix_frustum"
+              doc="Multiplies @matrix by the given frustum perspective matrix.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="left" transfer-ownership="none">
+            <type name="float" c:type="float"/>
+          </parameter>
+          <parameter name="right" transfer-ownership="none">
+            <type name="float" c:type="float"/>
+          </parameter>
+          <parameter name="bottom" transfer-ownership="none">
+            <type name="float" c:type="float"/>
+          </parameter>
+          <parameter name="top" transfer-ownership="none">
+            <type name="float" c:type="float"/>
+          </parameter>
+          <parameter name="z_near" transfer-ownership="none">
+            <type name="float" c:type="float"/>
+          </parameter>
+          <parameter name="z_far" transfer-ownership="none">
+            <type name="float" c:type="float"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="perspective"
+              c:identifier="cogl_matrix_perspective"
+              doc="Multiplies @matrix by the described perspective matrix
+&lt;note&gt;You should be careful not to have to great a @z_far / @z_near ratio
+since that will reduce the effectiveness of depth testing since there wont
+be enough precision to identify the depth of objects near to each
+other.&lt;/note&gt;">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="fov_y" transfer-ownership="none">
+            <type name="float" c:type="float"/>
+          </parameter>
+          <parameter name="aspect"
+                     transfer-ownership="none"
+                     doc=" for the x axis.">
+            <type name="float" c:type="float"/>
+          </parameter>
+          <parameter name="z_near"
+                     transfer-ownership="none"
+                     doc=" a positive number.">
+            <type name="float" c:type="float"/>
+          </parameter>
+          <parameter name="z_far" transfer-ownership="none">
+            <type name="float" c:type="float"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="ortho"
+              c:identifier="cogl_matrix_ortho"
+              doc="Multiplies @matrix by a parallel projection matrix.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="left" transfer-ownership="none">
+            <type name="float" c:type="float"/>
+          </parameter>
+          <parameter name="right" transfer-ownership="none">
+            <type name="float" c:type="float"/>
+          </parameter>
+          <parameter name="bottom" transfer-ownership="none">
+            <type name="float" c:type="float"/>
+          </parameter>
+          <parameter name="top" transfer-ownership="none">
+            <type name="float" c:type="float"/>
+          </parameter>
+          <parameter name="z_near"
+                     transfer-ownership="none"
+                     doc=" the plane is behind the viewer)">
+            <type name="float" c:type="float"/>
+          </parameter>
+          <parameter name="z_far"
+                     transfer-ownership="none"
+                     doc=" the plane is behind the viewer)">
+            <type name="float" c:type="float"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="init_from_array"
+              c:identifier="cogl_matrix_init_from_array"
+              doc="Initializes @matrix with the contents of @array">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="array"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="none">
+            <type name="float" c:type="float*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_array"
+              c:identifier="cogl_matrix_get_array"
+              doc="Casts @matrix to a float array which can be directly passed to OpenGL.">
+        <return-value transfer-ownership="none">
+          <type name="float" c:type="float*"/>
+        </return-value>
+      </method>
+      <method name="get_inverse"
+              c:identifier="cogl_matrix_get_inverse"
+              doc="Gets the inverse transform of a given matrix and uses it to initialize
+a new #CoglMatrix.
+&lt;note&gt;Although the first parameter is annotated as const to indicate
+that the transform it represents isn&apos;t modified this function may
+technically save a copy of the inverse transform within the given
+#CoglMatrix so that subsequent requests for the inverse transform may
+avoid costly inversion calculations.&lt;/note&gt;
+for degenerate transformations that can&apos;t be inverted (in this case the"
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="inverse"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none"
+                     doc="The destination for a 4x4 inverse transformation matrix">
+            <type name="Matrix" c:type="CoglMatrix*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="transform_point"
+              c:identifier="cogl_matrix_transform_point"
+              doc="Transforms a point whos position is given and returned as four float
+components.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="x"
+                     direction="inout"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     doc="The X component of your points position">
+            <type name="float" c:type="float*"/>
+          </parameter>
+          <parameter name="y"
+                     direction="inout"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     doc="The Y component of your points position">
+            <type name="float" c:type="float*"/>
+          </parameter>
+          <parameter name="z"
+                     direction="inout"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     doc="The Z component of your points position">
+            <type name="float" c:type="float*"/>
+          </parameter>
+          <parameter name="w"
+                     direction="inout"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     doc="The W component of your points position">
+            <type name="float" c:type="float*"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <constant name="PIXEL_FORMAT_24" value="2">
+      <type name="int"/>
+    </constant>
+    <constant name="PIXEL_FORMAT_32" value="3">
+      <type name="int"/>
+    </constant>
+    <constant name="PREMULT_BIT" value="128">
+      <type name="int"/>
+    </constant>
+    <enumeration name="PixelFormat"
+                 doc="Pixel formats used by COGL. For the formats with a byte per
+component, the order of the components specify the order in
+increasing memory addresses. So for example
+%COGL_PIXEL_FORMAT_RGB_888 would have the red component in the
+lowest address, green in the next address and blue after that
+regardless of the endinanness of the system.
+For the 16-bit formats the component order specifies the order
+within a 16-bit number from most significant bit to least
+significant. So for %COGL_PIXEL_FORMAT_RGB_565, the red component
+would be in bits 11-15, the green component would be in 6-11 and
+the blue component would be in 1-5. Therefore the order in memory
+depends on the endianness of the system.
+When uploading a texture %COGL_PIXEL_FORMAT_ANY can be used as the
+internal format. Cogl will try to pick the best format to use
+internally and convert the texture data if necessary."
+                 version="0.8"
+                 glib:type-name="CoglPixelFormat"
+                 glib:get-type="cogl_pixel_format_get_type"
+                 c:type="CoglPixelFormat">
+      <member name="any"
+              value="0"
+              c:identifier="COGL_PIXEL_FORMAT_ANY"
+              glib:nick="any"/>
+      <member name="a_8"
+              value="17"
+              c:identifier="COGL_PIXEL_FORMAT_A_8"
+              glib:nick="a-8"/>
+      <member name="rgb_565"
+              value="4"
+              c:identifier="COGL_PIXEL_FORMAT_RGB_565"
+              glib:nick="rgb-565"/>
+      <member name="rgba_4444"
+              value="21"
+              c:identifier="COGL_PIXEL_FORMAT_RGBA_4444"
+              glib:nick="rgba-4444"/>
+      <member name="rgba_5551"
+              value="22"
+              c:identifier="COGL_PIXEL_FORMAT_RGBA_5551"
+              glib:nick="rgba-5551"/>
+      <member name="yuv"
+              value="7"
+              c:identifier="COGL_PIXEL_FORMAT_YUV"
+              glib:nick="yuv"/>
+      <member name="g_8"
+              value="8"
+              c:identifier="COGL_PIXEL_FORMAT_G_8"
+              glib:nick="g-8"/>
+      <member name="rgb_888"
+              value="2"
+              c:identifier="COGL_PIXEL_FORMAT_RGB_888"
+              glib:nick="rgb-888"/>
+      <member name="bgr_888"
+              value="34"
+              c:identifier="COGL_PIXEL_FORMAT_BGR_888"
+              glib:nick="bgr-888"/>
+      <member name="rgba_8888"
+              value="19"
+              c:identifier="COGL_PIXEL_FORMAT_RGBA_8888"
+              glib:nick="rgba-8888"/>
+      <member name="bgra_8888"
+              value="51"
+              c:identifier="COGL_PIXEL_FORMAT_BGRA_8888"
+              glib:nick="bgra-8888"/>
+      <member name="argb_8888"
+              value="83"
+              c:identifier="COGL_PIXEL_FORMAT_ARGB_8888"
+              glib:nick="argb-8888"/>
+      <member name="abgr_8888"
+              value="115"
+              c:identifier="COGL_PIXEL_FORMAT_ABGR_8888"
+              glib:nick="abgr-8888"/>
+      <member name="rgba_8888_pre"
+              value="147"
+              c:identifier="COGL_PIXEL_FORMAT_RGBA_8888_PRE"
+              glib:nick="rgba-8888-pre"/>
+      <member name="bgra_8888_pre"
+              value="179"
+              c:identifier="COGL_PIXEL_FORMAT_BGRA_8888_PRE"
+              glib:nick="bgra-8888-pre"/>
+      <member name="argb_8888_pre"
+              value="211"
+              c:identifier="COGL_PIXEL_FORMAT_ARGB_8888_PRE"
+              glib:nick="argb-8888-pre"/>
+      <member name="abgr_8888_pre"
+              value="243"
+              c:identifier="COGL_PIXEL_FORMAT_ABGR_8888_PRE"
+              glib:nick="abgr-8888-pre"/>
+      <member name="rgba_4444_pre"
+              value="149"
+              c:identifier="COGL_PIXEL_FORMAT_RGBA_4444_PRE"
+              glib:nick="rgba-4444-pre"/>
+      <member name="rgba_5551_pre"
+              value="150"
+              c:identifier="COGL_PIXEL_FORMAT_RGBA_5551_PRE"
+              glib:nick="rgba-5551-pre"/>
+    </enumeration>
+    <constant name="RADIANS_TO_DEGREES" value="3754936">
+      <type name="int"/>
+    </constant>
+    <bitfield name="ReadPixelsFlags"
+              doc="Flags for cogl_read_pixels()"
+              version="1.0"
+              glib:type-name="CoglReadPixelsFlags"
+              glib:get-type="cogl_read_pixels_flags_get_type"
+              c:type="CoglReadPixelsFlags">
+      <member name="color_buffer"
+              value="1"
+              c:identifier="COGL_READ_PIXELS_COLOR_BUFFER"
+              glib:nick="color-buffer"/>
+    </bitfield>
+    <constant name="SQRTI_ARG_10_PERCENT" value="5590">
+      <type name="int"/>
+    </constant>
+    <constant name="SQRTI_ARG_5_PERCENT" value="210">
+      <type name="int"/>
+    </constant>
+    <constant name="SQRTI_ARG_MAX" value="4194303">
+      <type name="int"/>
+    </constant>
+    <enumeration name="ShaderType"
+                 doc="Types of shaders"
+                 version="1.0"
+                 glib:type-name="CoglShaderType"
+                 glib:get-type="cogl_shader_type_get_type"
+                 c:type="CoglShaderType">
+      <member name="vertex"
+              value="0"
+              c:identifier="COGL_SHADER_TYPE_VERTEX"
+              glib:nick="vertex"/>
+      <member name="fragment"
+              value="1"
+              c:identifier="COGL_SHADER_TYPE_FRAGMENT"
+              glib:nick="fragment"/>
+    </enumeration>
+    <constant name="TEXTURE_MAX_WASTE" value="127">
+      <type name="int"/>
+    </constant>
+    <bitfield name="TextureFlags"
+              doc="Flags to pass to the cogl_texture_new_* family of functions."
+              version="1.0"
+              glib:type-name="CoglTextureFlags"
+              glib:get-type="cogl_texture_flags_get_type"
+              c:type="CoglTextureFlags">
+      <member name="none"
+              value="0"
+              c:identifier="COGL_TEXTURE_NONE"
+              glib:nick="none"/>
+      <member name="no_auto_mipmap"
+              value="1"
+              c:identifier="COGL_TEXTURE_NO_AUTO_MIPMAP"
+              glib:nick="no-auto-mipmap"/>
+      <member name="no_slicing"
+              value="2"
+              c:identifier="COGL_TEXTURE_NO_SLICING"
+              glib:nick="no-slicing"/>
+      <member name="no_atlas"
+              value="4"
+              c:identifier="COGL_TEXTURE_NO_ATLAS"
+              glib:nick="no-atlas"/>
+    </bitfield>
+    <record name="TextureVertex"
+            c:type="CoglTextureVertex"
+            doc="Used to specify vertex information when calling cogl_polygon()">
+      <field name="x" writable="1">
+        <type name="float" c:type="float"/>
+      </field>
+      <field name="y" writable="1">
+        <type name="float" c:type="float"/>
+      </field>
+      <field name="z" writable="1">
+        <type name="float" c:type="float"/>
+      </field>
+      <field name="tx" writable="1">
+        <type name="float" c:type="float"/>
+      </field>
+      <field name="ty" writable="1">
+        <type name="float" c:type="float"/>
+      </field>
+      <field name="color" writable="1">
+        <type name="Color" c:type="CoglColor"/>
+      </field>
+    </record>
+    <constant name="UNORDERED_MASK" value="15">
+      <type name="int"/>
+    </constant>
+    <constant name="UNPREMULT_MASK" value="127">
+      <type name="int"/>
+    </constant>
+    <enumeration name="VerticesMode"
+                 doc="How vertices passed to cogl_vertex_buffer_draw() and
+cogl_vertex_buffer_draw_elements() should be interpreted"
+                 version="1.0"
+                 glib:type-name="CoglVerticesMode"
+                 glib:get-type="cogl_vertices_mode_get_type"
+                 c:type="CoglVerticesMode">
+      <member name="points"
+              value="0"
+              c:identifier="COGL_VERTICES_MODE_POINTS"
+              glib:nick="points"/>
+      <member name="line_strip"
+              value="3"
+              c:identifier="COGL_VERTICES_MODE_LINE_STRIP"
+              glib:nick="line-strip"/>
+      <member name="line_loop"
+              value="2"
+              c:identifier="COGL_VERTICES_MODE_LINE_LOOP"
+              glib:nick="line-loop"/>
+      <member name="lines"
+              value="1"
+              c:identifier="COGL_VERTICES_MODE_LINES"
+              glib:nick="lines"/>
+      <member name="triangle_strip"
+              value="5"
+              c:identifier="COGL_VERTICES_MODE_TRIANGLE_STRIP"
+              glib:nick="triangle-strip"/>
+      <member name="triangle_fan"
+              value="6"
+              c:identifier="COGL_VERTICES_MODE_TRIANGLE_FAN"
+              glib:nick="triangle-fan"/>
+      <member name="triangles"
+              value="4"
+              c:identifier="COGL_VERTICES_MODE_TRIANGLES"
+              glib:nick="triangles"/>
+    </enumeration>
+    <function name="angle_cos"
+              c:identifier="cogl_angle_cos"
+              doc="Computes the cosine of @angle"
+              version="1.0">
+      <return-value transfer-ownership="full">
+        <type name="Fixed" c:type="CoglFixed"/>
+      </return-value>
+      <parameters>
+        <parameter name="angle" transfer-ownership="none">
+          <type name="Angle" c:type="CoglAngle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="angle_sin"
+              c:identifier="cogl_angle_sin"
+              doc="Computes the sine of @angle"
+              version="1.0">
+      <return-value transfer-ownership="full">
+        <type name="Fixed" c:type="CoglFixed"/>
+      </return-value>
+      <parameters>
+        <parameter name="angle" transfer-ownership="none">
+          <type name="Angle" c:type="CoglAngle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="angle_tan"
+              c:identifier="cogl_angle_tan"
+              doc="Computes the tangent of @angle"
+              version="1.0">
+      <return-value transfer-ownership="full">
+        <type name="Fixed" c:type="CoglFixed"/>
+      </return-value>
+      <parameters>
+        <parameter name="angle" transfer-ownership="none">
+          <type name="Angle" c:type="CoglAngle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="begin_gl"
+              c:identifier="cogl_begin_gl"
+              doc="We do not advise nor reliably support the interleaving of raw GL drawing and
+Cogl drawing functions, but if you insist, cogl_begin_gl() and cogl_end_gl()
+provide a simple mechanism that may at least give you a fighting chance of
+succeeding.
+through the modification of GL state; that will never be reliably supported,
+but if you are trying to do something like:
+|[
+{
+- setup some OpenGL state.
+- draw using OpenGL (e.g. glDrawArrays() )
+- reset modified OpenGL state.
+- continue using Cogl to draw
+}
+]|
+You should surround blocks of drawing using raw GL with cogl_begin_gl()
+and cogl_end_gl():
+|[
+{
+cogl_begin_gl ();
+- setup some OpenGL state.
+- draw using OpenGL (e.g. glDrawArrays() )
+- reset modified OpenGL state.
+cogl_end_gl ();
+- continue using Cogl to draw
+}
+]|
+Don&apos;t ever try and do:
+|[
+{
+- setup some OpenGL state.
+- use Cogl to draw
+- reset modified OpenGL state.
+}
+]|
+When the internals of Cogl evolves, this is very liable to break.
+This function will flush all batched primitives, and subsequently flush
+all internal Cogl state to OpenGL as if it were going to draw something
+itself.
+The result is that the OpenGL modelview matrix will be setup; the state
+corresponding to the current source material will be set up and other world
+state such as backface culling, depth and fogging enabledness will be sent
+to OpenGL.
+&lt;note&gt;No special material state is flushed, so if you want Cogl to setup a
+simplified material state it is your responsibility to set a simple source
+material before calling cogl_begin_gl(). E.g. by calling
+cogl_set_source_color4ub().&lt;/note&gt;
+&lt;note&gt;It is your responsibility to restore any OpenGL state that you modify
+to how it was after calling cogl_begin_gl() if you don&apos;t do this then the
+result of further Cogl calls is undefined.&lt;/note&gt;
+&lt;note&gt;You can not nest begin/end blocks.&lt;/note&gt;
+Again we would like to stress, we do not advise the use of this API and if
+possible we would prefer to improve Cogl than have developers require raw
+OpenGL."
+              version="1.0">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="bitmap_get_size_from_file"
+              c:identifier="cogl_bitmap_get_size_from_file"
+              doc="Parses an image file enough to extract the width and height
+of the bitmap."
+              version="1.0">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="filename" transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+        <parameter name="width"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full"
+                   doc="return location for the bitmap width, or %NULL">
+          <type name="int" c:type="int*"/>
+        </parameter>
+        <parameter name="height"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full"
+                   doc="return location for the bitmap height, or %NULL">
+          <type name="int" c:type="int*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="bitmap_new_from_file"
+              c:identifier="cogl_bitmap_new_from_file"
+              doc="Loads an image file from disk. This function can be safely called from
+within a thread.
+%COGL_INVALID_HANDLE if loading the image failed."
+              version="1.0"
+              throws="1">
+      <return-value transfer-ownership="full">
+        <type name="Handle" c:type="CoglHandle"/>
+      </return-value>
+      <parameters>
+        <parameter name="filename" transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_get_size"
+              c:identifier="cogl_buffer_get_size"
+              doc="Retrieves the size of buffer"
+              version="1.2">
+      <return-value transfer-ownership="none">
+        <type name="uint" c:type="unsigned int"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_get_size_EXP"
+              c:identifier="cogl_buffer_get_size_EXP">
+      <return-value transfer-ownership="none">
+        <type name="uint" c:type="unsigned int"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_get_update_hint"
+              c:identifier="cogl_buffer_get_update_hint"
+              doc="Retrieves the update hints set using cogl_buffer_set_update_hint()"
+              version="1.2">
+      <return-value transfer-ownership="full">
+        <type name="BufferUpdateHint" c:type="CoglBufferUpdateHint"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_get_update_hint_EXP"
+              c:identifier="cogl_buffer_get_update_hint_EXP">
+      <return-value transfer-ownership="full">
+        <type name="BufferUpdateHint" c:type="CoglBufferUpdateHint"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_get_usage_hint"
+              c:identifier="cogl_buffer_get_usage_hint"
+              doc="Retrieves the usage hint set using cogl_buffer_set_usage_hint()"
+              version="1.2">
+      <return-value transfer-ownership="full">
+        <type name="BufferUsageHint" c:type="CoglBufferUsageHint"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_get_usage_hint_EXP"
+              c:identifier="cogl_buffer_get_usage_hint_EXP">
+      <return-value transfer-ownership="full">
+        <type name="BufferUsageHint" c:type="CoglBufferUsageHint"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_map"
+              c:identifier="cogl_buffer_map"
+              doc="Maps the buffer into the application address space for direct access."
+              version="1.2">
+      <return-value transfer-ownership="full">
+        <array c:type="guint8*">
+          <type name="uint8"/>
+        </array>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+        <parameter name="access" transfer-ownership="none">
+          <type name="BufferAccess" c:type="CoglBufferAccess"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_map_EXP" c:identifier="cogl_buffer_map_EXP">
+      <return-value transfer-ownership="full">
+        <array c:type="guint8*">
+          <type name="uint8"/>
+        </array>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+        <parameter name="access" transfer-ownership="none">
+          <type name="BufferAccess" c:type="CoglBufferAccess"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_set_data"
+              c:identifier="cogl_buffer_set_data"
+              doc="Updates part of the buffer with new data from @data. Where to put this new
+data is controlled by @offset and @offset + @data should be less than the
+buffer size."
+              version="1.2">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+        <parameter name="offset" transfer-ownership="none" doc="in the buffer">
+          <type name="size_t" c:type="gsize"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <array c:type="guint8*">
+            <type name="uint8"/>
+          </array>
+        </parameter>
+        <parameter name="size" transfer-ownership="none">
+          <type name="size_t" c:type="gsize"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_set_data_EXP"
+              c:identifier="cogl_buffer_set_data_EXP">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+        <parameter name="offset" transfer-ownership="none">
+          <type name="size_t" c:type="gsize"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <array c:type="guint8*">
+            <type name="uint8"/>
+          </array>
+        </parameter>
+        <parameter name="size" transfer-ownership="none">
+          <type name="size_t" c:type="gsize"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_set_update_hint"
+              c:identifier="cogl_buffer_set_update_hint"
+              doc="Sets the update hint on a buffer. See #CoglBufferUpdateHint for a description
+of the available hints."
+              version="1.2">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+        <parameter name="hint" transfer-ownership="none">
+          <type name="BufferUpdateHint" c:type="CoglBufferUpdateHint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_set_update_hint_EXP"
+              c:identifier="cogl_buffer_set_update_hint_EXP">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+        <parameter name="hint" transfer-ownership="none">
+          <type name="BufferUpdateHint" c:type="CoglBufferUpdateHint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_set_usage_hint"
+              c:identifier="cogl_buffer_set_usage_hint"
+              doc="Sets the usage hint on a buffer. See #CoglBufferUsageHint for a description
+of the available hints."
+              version="1.2">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+        <parameter name="hint" transfer-ownership="none">
+          <type name="BufferUsageHint" c:type="CoglBufferUsageHint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_set_usage_hint_EXP"
+              c:identifier="cogl_buffer_set_usage_hint_EXP">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+        <parameter name="hint" transfer-ownership="none">
+          <type name="BufferUsageHint" c:type="CoglBufferUsageHint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_unmap"
+              c:identifier="cogl_buffer_unmap"
+              doc="Unmaps a buffer previously mapped by cogl_buffer_map()."
+              version="1.2">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_unmap_EXP" c:identifier="cogl_buffer_unmap_EXP">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="check_extension"
+              c:identifier="cogl_check_extension"
+              doc="Check whether @name occurs in list of extensions in @ext.
+not appropriate to expose OpenGL extensions through the Cogl API. This
+function can be replaced by the following equivalent code:
+|[
+]|"
+              deprecated="OpenGL is an implementation detail for Cogl and so it&apos;s"
+              deprecated-version="1.2">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="name" transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+        <parameter name="ext" transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="clear"
+              c:identifier="cogl_clear"
+              doc="Clears all the auxiliary buffers identified in the @buffers mask, and if
+that includes the color buffer then the specified @color is used.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="color" transfer-ownership="none">
+          <type name="Color" c:type="CoglColor*"/>
+        </parameter>
+        <parameter name="buffers"
+                   transfer-ownership="none"
+                   doc=" buffers to clear">
+          <type name="ulong" c:type="unsigned long"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="clip_ensure"
+              c:identifier="cogl_clip_ensure"
+              doc="Ensures that the current clipping region has been set in GL. This
+will automatically be called before any Cogl primitives but it
+maybe be neccessary to call if you are using raw GL calls with
+clipping."
+              version="1.0"
+              deprecated="Calling this function has no effect"
+              deprecated-version="1.2">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="clip_pop"
+              c:identifier="cogl_clip_pop"
+              doc="Reverts the clipping region to the state before the last call to
+cogl_clip_push().">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="clip_push"
+              c:identifier="cogl_clip_push"
+              doc="Specifies a rectangular clipping area for all subsequent drawing
+operations. Any drawing commands that extend outside the rectangle
+will be clipped so that only the portion inside the rectangle will
+be displayed. The rectangle dimensions are transformed by the
+current model-view matrix.
+The rectangle is intersected with the current clip region. To undo
+the effect of this function, call cogl_clip_pop().
+with other API that specify rectangles in model space, and when used
+with a coordinate space that puts the origin at the center and y+
+extending up, it&apos;s awkward to use. Please use cogl_clip_push_rectangle()
+instead"
+              deprecated="The x, y, width, height arguments are inconsistent"
+              deprecated-version="1.2">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="x_offset" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="y_offset" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="width" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="height" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="clip_push_from_path"
+              c:identifier="cogl_clip_push_from_path"
+              doc="Sets a new clipping area using the current path. The current path
+is then cleared. The clipping area is intersected with the previous
+clipping area. To restore the previous clipping area, call
+cogl_clip_pop()."
+              version="1.0">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="clip_push_from_path_preserve"
+              c:identifier="cogl_clip_push_from_path_preserve"
+              doc="Sets a new clipping area using the current path. The current path
+is then cleared. The clipping area is intersected with the previous
+clipping area. To restore the previous clipping area, call
+cogl_clip_pop()."
+              version="1.0">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="clip_push_rectangle"
+              c:identifier="cogl_clip_push_rectangle"
+              doc="Specifies a rectangular clipping area for all subsequent drawing
+operations. Any drawing commands that extend outside the rectangle
+will be clipped so that only the portion inside the rectangle will
+be displayed. The rectangle dimensions are transformed by the
+current model-view matrix.
+The rectangle is intersected with the current clip region. To undo
+the effect of this function, call cogl_clip_pop()."
+              version="1.2">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="x0" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="y0" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="x1" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="y1" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="clip_push_window_rect"
+              c:identifier="cogl_clip_push_window_rect"
+              doc="Specifies a rectangular clipping area for all subsequent drawing
+operations. Any drawing commands that extend outside the rectangle
+will be clipped so that only the portion inside the rectangle will
+be displayed. The rectangle dimensions are not transformed by the
+current model-view matrix.
+The rectangle is intersected with the current clip region. To undo
+the effect of this function, call cogl_clip_pop()."
+              deprecated="Use cogl_clip_push_window_rectangle() instead"
+              deprecated-version="1.2">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="x_offset" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="y_offset" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="width" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="height" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="clip_push_window_rectangle"
+              c:identifier="cogl_clip_push_window_rectangle"
+              doc="Specifies a rectangular clipping area for all subsequent drawing
+operations. Any drawing commands that extend outside the rectangle
+will be clipped so that only the portion inside the rectangle will
+be displayed. The rectangle dimensions are not transformed by the
+current model-view matrix.
+The rectangle is intersected with the current clip region. To undo
+the effect of this function, call cogl_clip_pop()."
+              version="1.2">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="x_offset" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="y_offset" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="width" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="height" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="clip_stack_restore"
+              c:identifier="cogl_clip_stack_restore"
+              doc="Restore the state of the clipping stack that was previously saved
+by cogl_clip_stack_save().
+the clip stack when switching back from an offscreen framebuffer,
+but it&apos;s not necessary anymore given that framebuffers now own
+separate clip stacks which will be automatically switched between
+when a new buffer is set. Calling this function has no effect"
+              version="0.8.2"
+              deprecated="This was originally added to allow us to restore"
+              deprecated-version="1.2">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="clip_stack_save"
+              c:identifier="cogl_clip_stack_save"
+              doc="Save the entire state of the clipping stack and then clear all
+clipping. The previous state can be returned to with
+cogl_clip_stack_restore(). Each call to cogl_clip_push() after this
+must be matched by a call to cogl_clip_pop() before calling
+cogl_clip_stack_restore().
+clip stack when switching to an offscreen framebuffer, but it&apos;s
+not necessary anymore given that framebuffers now own separate
+clip stacks which will be automatically switched between when a
+new buffer is set. Calling this function has no effect"
+              version="0.8.2"
+              deprecated="This was originally added to allow us to save the"
+              deprecated-version="1.2">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="color_equal"
+              c:identifier="cogl_color_equal"
+              doc="Compares two #CoglColor&lt;!-- --&gt;s and checks if they are the same.
+This function can be passed to g_hash_table_new() as the @key_equal_func
+parameter, when using #CoglColor&lt;!-- --&gt;s as keys in a #GHashTable."
+              version="1.0">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="v1" transfer-ownership="none">
+          <type name="any" c:type="gconstpointer"/>
+        </parameter>
+        <parameter name="v2" transfer-ownership="none">
+          <type name="any" c:type="gconstpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="create_program"
+              c:identifier="cogl_create_program"
+              doc="Create a new cogl program object that can be used to replace parts of the GL
+rendering pipeline with custom code.">
+      <return-value transfer-ownership="full">
+        <type name="Handle" c:type="CoglHandle"/>
+      </return-value>
+    </function>
+    <function name="create_shader"
+              c:identifier="cogl_create_shader"
+              doc="Create a new shader handle, use #cogl_shader_source to set the source code
+to be used on it.">
+      <return-value transfer-ownership="full">
+        <type name="Handle" c:type="CoglHandle"/>
+      </return-value>
+      <parameters>
+        <parameter name="shader_type" transfer-ownership="none">
+          <type name="ShaderType" c:type="CoglShaderType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="disable_fog"
+              c:identifier="cogl_disable_fog"
+              doc="This function disables fogging, so primitives drawn afterwards will not be
+blended with any previously set fog color.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="double_to_fixed" c:identifier="cogl_double_to_fixed">
+      <return-value transfer-ownership="full">
+        <type name="Fixed" c:type="CoglFixed"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="double" c:type="double"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="double_to_int" c:identifier="cogl_double_to_int">
+      <return-value transfer-ownership="none">
+        <type name="int" c:type="int"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="double" c:type="double"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="double_to_unit" c:identifier="cogl_double_to_unit">
+      <return-value transfer-ownership="none">
+        <type name="uint" c:type="unsigned int"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="double" c:type="double"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="end_gl"
+              c:identifier="cogl_end_gl"
+              doc="This is the counterpart to cogl_begin_gl() used to delimit blocks of drawing
+code using raw OpenGL. Please refer to cogl_begin_gl() for full details."
+              version="1.0">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="features_available"
+              c:identifier="cogl_features_available"
+              doc="Checks whether the given COGL features are available. Multiple
+features can be checked for by or-ing them together with the &apos;|&apos;
+operator. %TRUE is only returned if all of the requested features
+are available.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="features" transfer-ownership="none">
+          <type name="FeatureFlags" c:type="CoglFeatureFlags"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="fixed_atan2"
+              c:identifier="cogl_fixed_atan2"
+              doc="Computes the arc tangent of @a / @b but uses the sign of both
+arguments to return the angle in right quadrant.
+notation"
+              version="1.0">
+      <return-value transfer-ownership="full">
+        <type name="Fixed" c:type="CoglFixed"/>
+      </return-value>
+      <parameters>
+        <parameter name="a" transfer-ownership="none">
+          <type name="Fixed" c:type="CoglFixed"/>
+        </parameter>
+        <parameter name="b" transfer-ownership="none">
+          <type name="Fixed" c:type="CoglFixed"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="fixed_atani"
+              c:identifier="cogl_fixed_atani"
+              doc="Computes the arc tangent of @a."
+              version="1.0">
+      <return-value transfer-ownership="full">
+        <type name="Fixed" c:type="CoglFixed"/>
+      </return-value>
+      <parameters>
+        <parameter name="a" transfer-ownership="none">
+          <type name="Fixed" c:type="CoglFixed"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="fixed_cos"
+              c:identifier="cogl_fixed_cos"
+              doc="Computes the cosine of @angle."
+              version="1.0">
+      <return-value transfer-ownership="full">
+        <type name="Fixed" c:type="CoglFixed"/>
+      </return-value>
+      <parameters>
+        <parameter name="angle" transfer-ownership="none">
+          <type name="Fixed" c:type="CoglFixed"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="fixed_div" c:identifier="cogl_fixed_div">
+      <return-value transfer-ownership="full">
+        <type name="Fixed" c:type="CoglFixed"/>
+      </return-value>
+      <parameters>
+        <parameter name="a" transfer-ownership="none">
+          <type name="Fixed" c:type="CoglFixed"/>
+        </parameter>
+        <parameter name="b" transfer-ownership="none">
+          <type name="Fixed" c:type="CoglFixed"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="fixed_log2"
+              c:identifier="cogl_fixed_log2"
+              doc="Calculates base 2 logarithm.
+This function is some 2.5 times faster on x86, and over 12 times faster on
+fpu-less arm, than using libc log()."
+              version="1.0">
+      <return-value transfer-ownership="full">
+        <type name="Fixed" c:type="CoglFixed"/>
+      </return-value>
+      <parameters>
+        <parameter name="x" transfer-ownership="none">
+          <type name="uint" c:type="unsigned int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="fixed_mul" c:identifier="cogl_fixed_mul">
+      <return-value transfer-ownership="full">
+        <type name="Fixed" c:type="CoglFixed"/>
+      </return-value>
+      <parameters>
+        <parameter name="a" transfer-ownership="none">
+          <type name="Fixed" c:type="CoglFixed"/>
+        </parameter>
+        <parameter name="b" transfer-ownership="none">
+          <type name="Fixed" c:type="CoglFixed"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="fixed_mul_div" c:identifier="cogl_fixed_mul_div">
+      <return-value transfer-ownership="full">
+        <type name="Fixed" c:type="CoglFixed"/>
+      </return-value>
+      <parameters>
+        <parameter name="a" transfer-ownership="none">
+          <type name="Fixed" c:type="CoglFixed"/>
+        </parameter>
+        <parameter name="b" transfer-ownership="none">
+          <type name="Fixed" c:type="CoglFixed"/>
+        </parameter>
+        <parameter name="c" transfer-ownership="none">
+          <type name="Fixed" c:type="CoglFixed"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="fixed_pow"
+              c:identifier="cogl_fixed_pow"
+              doc="Calculates @x to the @y power."
+              version="1.0">
+      <return-value transfer-ownership="none">
+        <type name="uint" c:type="unsigned int"/>
+      </return-value>
+      <parameters>
+        <parameter name="x" transfer-ownership="none">
+          <type name="uint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <type name="Fixed" c:type="CoglFixed"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="fixed_pow2"
+              c:identifier="cogl_fixed_pow2"
+              doc="Calculates 2 to the @x power.
+This function is around 11 times faster on x86, and around 22 times faster
+on fpu-less arm than libc pow(2, x)."
+              version="1.0">
+      <return-value transfer-ownership="none">
+        <type name="uint" c:type="unsigned int"/>
+      </return-value>
+      <parameters>
+        <parameter name="x" transfer-ownership="none">
+          <type name="Fixed" c:type="CoglFixed"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="fixed_sin"
+              c:identifier="cogl_fixed_sin"
+              doc="Computes the sine of @angle."
+              version="1.0">
+      <return-value transfer-ownership="full">
+        <type name="Fixed" c:type="CoglFixed"/>
+      </return-value>
+      <parameters>
+        <parameter name="angle" transfer-ownership="none">
+          <type name="Fixed" c:type="CoglFixed"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="fixed_sqrt"
+              c:identifier="cogl_fixed_sqrt"
+              doc="Computes the square root of @x.
+notation"
+              version="1.0">
+      <return-value transfer-ownership="full">
+        <type name="Fixed" c:type="CoglFixed"/>
+      </return-value>
+      <parameters>
+        <parameter name="x" transfer-ownership="none">
+          <type name="Fixed" c:type="CoglFixed"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="fixed_tan"
+              c:identifier="cogl_fixed_tan"
+              doc="Computes the tangent of @angle."
+              version="1.0">
+      <return-value transfer-ownership="full">
+        <type name="Fixed" c:type="CoglFixed"/>
+      </return-value>
+      <parameters>
+        <parameter name="angle" transfer-ownership="none">
+          <type name="Fixed" c:type="CoglFixed"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="flush"
+              c:identifier="cogl_flush"
+              doc="This function should only need to be called in exceptional circumstances.
+As an optimization Cogl drawing functions may batch up primitives
+internally, so if you are trying to use raw GL outside of Cogl you stand a
+better chance of being successful if you ask Cogl to flush any batched
+geometry before making your state changes.
+It only ensure that the underlying driver is issued all the commands
+necessary to draw the batched primitives. It provides no guarantees about
+when the driver will complete the rendering.
+This provides no guarantees about the GL state upon returning and to avoid
+confusing Cogl you should aim to restore any changes you make before
+resuming use of Cogl.
+If you are making state changes with the intention of affecting Cogl drawing
+primitives you are 100% on your own since you stand a good chance of
+conflicting with Cogl internals. For example clutter-gst which currently
+uses direct GL calls to bind ARBfp programs will very likely break when Cogl
+starts to use ARBfb programs itself for the material API."
+              version="1.0">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="frustum"
+              c:identifier="cogl_frustum"
+              doc="Replaces the current projection matrix with a perspective matrix
+for the given viewing frustum."
+              version="0.8.2">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="left" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="right" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="bottom" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="top" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="z_near" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="z_far" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="get_backface_culling_enabled"
+              c:identifier="cogl_get_backface_culling_enabled"
+              doc="Queries if backface culling has been enabled via
+cogl_set_backface_culling_enabled()">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+    </function>
+    <function name="get_bitmasks"
+              c:identifier="cogl_get_bitmasks"
+              doc="Gets the number of bitplanes used for each of the color components
+in the color buffer. Pass %NULL for any of the arguments if the
+value is not required.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="red"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full"
+                   doc="Return location for the number of red bits or %NULL">
+          <type name="int" c:type="int*"/>
+        </parameter>
+        <parameter name="green"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full"
+                   doc="Return location for the number of green bits or %NULL">
+          <type name="int" c:type="int*"/>
+        </parameter>
+        <parameter name="blue"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full"
+                   doc="Return location for the number of blue bits or %NULL">
+          <type name="int" c:type="int*"/>
+        </parameter>
+        <parameter name="alpha"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full"
+                   doc="Return location for the number of alpha bits or %NULL">
+          <type name="int" c:type="int*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="get_depth_test_enabled"
+              c:identifier="cogl_get_depth_test_enabled"
+              doc="Queries if depth testing has been enabled via cogl_set_depth_test_enable()">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+    </function>
+    <function name="get_features"
+              c:identifier="cogl_get_features"
+              doc="Returns all of the features supported by COGL."
+              version="0.8">
+      <return-value transfer-ownership="full">
+        <type name="FeatureFlags" c:type="CoglFeatureFlags"/>
+      </return-value>
+    </function>
+    <function name="get_modelview_matrix"
+              c:identifier="cogl_get_modelview_matrix"
+              doc="Stores the current model-view matrix in @matrix.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="matrix"
+                   direction="out"
+                   caller-allocates="1"
+                   transfer-ownership="none"
+                   doc="return location for the model-view matrix">
+          <type name="Matrix" c:type="CoglMatrix*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="get_option_group"
+              c:identifier="cogl_get_option_group"
+              doc="Retrieves the #GOptionGroup used by COGL to parse the command
+line options. Clutter uses this to handle the COGL command line
+options during its initialization process."
+              version="1.0">
+      <return-value transfer-ownership="full">
+        <type name="GLib.OptionGroup" c:type="GOptionGroup*"/>
+      </return-value>
+    </function>
+    <function name="get_proc_address"
+              c:identifier="cogl_get_proc_address"
+              doc="Gets a pointer to a given GL or GL ES extension function. This acts
+as a wrapper around glXGetProcAddress() or whatever is the
+appropriate function for the current backend.
+function is not available.">
+      <return-value transfer-ownership="full">
+        <type name="FuncPtr" c:type="CoglFuncPtr"/>
+      </return-value>
+      <parameters>
+        <parameter name="name" transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="get_projection_matrix"
+              c:identifier="cogl_get_projection_matrix"
+              doc="Stores the current projection matrix in @matrix.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="matrix"
+                   direction="out"
+                   caller-allocates="1"
+                   transfer-ownership="none"
+                   doc="return location for the projection matrix">
+          <type name="Matrix" c:type="CoglMatrix*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="get_viewport"
+              c:identifier="cogl_get_viewport"
+              doc="Stores the current viewport in @v. @v[0] and @v[1] get the x and y
+position of the viewport and @v[2] and @v[3] get the width and
+height.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="v"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full"
+                   doc="pointer to a 4 element array of #float&lt;!-- --&gt;s to receive the viewport dimensions.">
+          <array c:type="float" fixed-size="4">
+            <type name="float"/>
+          </array>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="is_bitmap"
+              c:identifier="cogl_is_bitmap"
+              doc="Checks whether @handle is a #CoglHandle for a bitmap
+and %FALSE otherwise"
+              version="1.0">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="is_buffer"
+              c:identifier="cogl_is_buffer"
+              doc="Checks whether @handle is a buffer handle."
+              version="1.2">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="is_buffer_EXP" c:identifier="cogl_is_buffer_EXP">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="is_material"
+              c:identifier="cogl_is_material"
+              doc="Gets whether the given handle references an existing material object.
+%FALSE otherwise">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="is_offscreen"
+              c:identifier="cogl_is_offscreen"
+              doc="Determines whether the given #CoglHandle references an offscreen buffer
+object.
+%FALSE otherwise">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="is_pixel_buffer"
+              c:identifier="cogl_is_pixel_buffer"
+              doc="Checks whether @handle is a pixel buffer.
+otherwise"
+              version="1.2">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="is_pixel_buffer_EXP"
+              c:identifier="cogl_is_pixel_buffer_EXP">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="is_program"
+              c:identifier="cogl_is_program"
+              doc="Gets whether the given handle references an existing program object.
+%FALSE otherwise">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="is_shader"
+              c:identifier="cogl_is_shader"
+              doc="Gets whether the given handle references an existing shader object.
+%FALSE otherwise">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="is_texture"
+              c:identifier="cogl_is_texture"
+              doc="Gets whether the given handle references an existing texture object.
+%FALSE otherwise">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="is_vertex_buffer"
+              c:identifier="cogl_is_vertex_buffer"
+              doc="Checks whether @handle is a Vertex Buffer Object
+otherwise"
+              version="1.0">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="material_copy"
+              c:identifier="cogl_material_copy"
+              doc="Creates a new material handle with the configuration copied from the
+source material.
+We would strongly advise developers to always aim to use
+cogl_material_copy() instead of cogl_material_new() whenever there will
+be any similarity between two materials. Copying a material helps Cogl
+keep track of a materials ancestry which we may use to help minimize GPU
+state changes."
+              version="1.2">
+      <return-value transfer-ownership="full">
+        <type name="Handle" c:type="CoglHandle"/>
+      </return-value>
+      <parameters>
+        <parameter name="source" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="material_get_ambient"
+              c:identifier="cogl_material_get_ambient"
+              doc="Retrieves the current ambient color for @material"
+              version="1.0">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="material" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+        <parameter name="ambient" transfer-ownership="none">
+          <type name="Color" c:type="CoglColor*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="material_get_color"
+              c:identifier="cogl_material_get_color"
+              doc="Retrieves the current material color."
+              version="1.0">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="material" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+        <parameter name="color"
+                   direction="out"
+                   caller-allocates="1"
+                   transfer-ownership="none"
+                   doc="The location to store the color">
+          <type name="Color" c:type="CoglColor*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="material_get_diffuse"
+              c:identifier="cogl_material_get_diffuse"
+              doc="Retrieves the current diffuse color for @material"
+              version="1.0">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="material" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+        <parameter name="diffuse" transfer-ownership="none">
+          <type name="Color" c:type="CoglColor*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="material_get_emission"
+              c:identifier="cogl_material_get_emission"
+              doc="Retrieves the materials current emission color."
+              version="1.0">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="material" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+        <parameter name="emission" transfer-ownership="none">
+          <type name="Color" c:type="CoglColor*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="material_get_layers"
+              c:identifier="cogl_material_get_layers"
+              doc="This function lets you access a materials internal list of layers
+for iteration.
+#CoglHandle&lt;!-- --&gt;&apos;s that can be passed to the  cogl_material_layer_*
+functions. The list is owned by COGL and it  should not be modified or
+freed">
+      <return-value transfer-ownership="none" doc="A list of">
+        <type name="GLib.List" c:type="GList*">
+          <type name="Handle"/>
+        </type>
+      </return-value>
+      <parameters>
+        <parameter name="material" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="material_get_n_layers"
+              c:identifier="cogl_material_get_n_layers"
+              doc="Retrieves the number of layers defined for the given @material"
+              version="1.0">
+      <return-value transfer-ownership="none">
+        <type name="int" c:type="int"/>
+      </return-value>
+      <parameters>
+        <parameter name="material" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="material_get_shininess"
+              c:identifier="cogl_material_get_shininess"
+              doc="Retrieves the materials current emission color."
+              version="1.0">
+      <return-value transfer-ownership="none">
+        <type name="float" c:type="float"/>
+      </return-value>
+      <parameters>
+        <parameter name="material" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="material_get_specular"
+              c:identifier="cogl_material_get_specular"
+              doc="Retrieves the materials current specular color."
+              version="1.0">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="material" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+        <parameter name="specular" transfer-ownership="none">
+          <type name="Color" c:type="CoglColor*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="material_layer_get_mag_filter"
+              c:identifier="cogl_material_layer_get_mag_filter"
+              doc="Queries the currently set downscaling filter for a material later">
+      <return-value transfer-ownership="full">
+        <type name="MaterialFilter" c:type="CoglMaterialFilter"/>
+      </return-value>
+      <parameters>
+        <parameter name="layer" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="material_layer_get_min_filter"
+              c:identifier="cogl_material_layer_get_min_filter"
+              doc="Queries the currently set downscaling filter for a material layer">
+      <return-value transfer-ownership="full">
+        <type name="MaterialFilter" c:type="CoglMaterialFilter"/>
+      </return-value>
+      <parameters>
+        <parameter name="layer" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="material_layer_get_texture"
+              c:identifier="cogl_material_layer_get_texture"
+              doc="Extracts a texture handle for a specific layer.
+&lt;note&gt;In the future Cogl may support purely GLSL based layers; for those
+layers this function which will likely return %COGL_INVALID_HANDLE if you
+try to get the texture handle from them. Considering this scenario, you
+should call cogl_material_layer_get_type() first in order check it is of
+type %COGL_MATERIAL_LAYER_TYPE_TEXTURE before calling this function.&lt;/note&gt;">
+      <return-value transfer-ownership="full">
+        <type name="Handle" c:type="CoglHandle"/>
+      </return-value>
+      <parameters>
+        <parameter name="layer" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="material_layer_get_type"
+              c:identifier="cogl_material_layer_get_type"
+              doc="Retrieves the type of the layer
+Currently there is only one type of layer defined:
+%COGL_MATERIAL_LAYER_TYPE_TEXTURE, but considering we may add purely GLSL
+based layers in the future, you should write code that checks the type
+first.">
+      <return-value transfer-ownership="full">
+        <type name="MaterialLayerType" c:type="CoglMaterialLayerType"/>
+      </return-value>
+      <parameters>
+        <parameter name="layer" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="material_new"
+              c:identifier="cogl_material_new"
+              doc="Allocates and initializes a blank white material">
+      <return-value transfer-ownership="full">
+        <type name="Handle" c:type="CoglHandle"/>
+      </return-value>
+    </function>
+    <function name="material_ref"
+              c:identifier="cogl_material_ref"
+              doc="Increment the reference count for a cogl material."
+              version="1.0"
+              deprecated="Use cogl_handle_ref() instead"
+              deprecated-version="1.2">
+      <return-value transfer-ownership="full">
+        <type name="Handle" c:type="CoglHandle"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="material_remove_layer"
+              c:identifier="cogl_material_remove_layer"
+              doc="This function removes a layer from your material">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="material" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+        <parameter name="layer_index" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="material_set_alpha_test_function"
+              c:identifier="cogl_material_set_alpha_test_function"
+              doc="Before a primitive is blended with the framebuffer, it goes through an
+alpha test stage which lets you discard fragments based on the current
+alpha value. This function lets you change the function used to evaluate
+the alpha channel, and thus determine which fragments are discarded
+and which continue on to the blending stage.
+The default is %COGL_MATERIAL_ALPHA_FUNC_ALWAYS"
+              version="1.0">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="material" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+        <parameter name="alpha_func" transfer-ownership="none">
+          <type name="MaterialAlphaFunc" c:type="CoglMaterialAlphaFunc"/>
+        </parameter>
+        <parameter name="alpha_reference"
+                   transfer-ownership="none"
+                   doc=" to compare incoming fragments to.">
+          <type name="float" c:type="float"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="material_set_ambient"
+              c:identifier="cogl_material_set_ambient"
+              doc="Sets the material&apos;s ambient color, in the standard OpenGL lighting
+model. The ambient color affects the overall color of the object.
+Since the diffuse color will be intense when the light hits the surface
+directly, the ambient will be most apparent where the light hits at a
+slant.
+The default value is (0.2, 0.2, 0.2, 1.0)"
+              version="1.0">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="material" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+        <parameter name="ambient" transfer-ownership="none">
+          <type name="Color" c:type="CoglColor*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="material_set_ambient_and_diffuse"
+              c:identifier="cogl_material_set_ambient_and_diffuse"
+              doc="Conveniently sets the diffuse and ambient color of @material at the same
+time. See cogl_material_set_ambient() and cogl_material_set_diffuse().
+The default ambient color is (0.2, 0.2, 0.2, 1.0)
+The default diffuse color is (0.8, 0.8, 0.8, 1.0)"
+              version="1.0">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="material" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+        <parameter name="color" transfer-ownership="none">
+          <type name="Color" c:type="CoglColor*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="material_set_blend"
+              c:identifier="cogl_material_set_blend"
+              doc="If not already familiar; please refer &lt;link linkend=&quot;cogl-Blend-Strings&quot;&gt;here&lt;/link&gt;
+for an overview of what blend strings are, and their syntax.
+Blending occurs after the alpha test function, and combines fragments with
+the framebuffer.
+Currently the only blend function Cogl exposes is ADD(). So any valid
+blend statements will be of the form:
+|[
+&amp;lt;channel-mask&amp;gt;=ADD(SRC_COLOR*(&amp;lt;factor&amp;gt;), DST_COLOR*(&amp;lt;factor&amp;gt;))
+]|
+&lt;warning&gt;The brackets around blend factors are currently not
+optional!&lt;/warning&gt;
+This is the list of source-names usable as blend factors:
+&lt;itemizedlist&gt;
+&lt;/itemizedlist&gt;
+The source names can be used according to the
+&lt;link linkend=&quot;cogl-Blend-String-syntax&quot;&gt;color-source and factor syntax&lt;/link&gt;,
+so for example &quot;(1-SRC_COLOR[A])&quot; would be a valid factor, as would
+&quot;(CONSTANT[RGB])&quot;
+These can also be used as factors:
+&lt;itemizedlist&gt;
+&lt;/itemizedlist&gt;
+&lt;note&gt;Remember; all color components are normalized to the range [0, 1]
+before computing the result of blending.&lt;/note&gt;
+&lt;example id=&quot;cogl-Blend-Strings-blend-unpremul&quot;&gt;
+&lt;title&gt;Blend Strings/1&lt;/title&gt;
+&lt;para&gt;Blend a non-premultiplied source over a destination with
+premultiplied alpha:&lt;/para&gt;
+&lt;programlisting&gt;
+&quot;RGB = ADD(SRC_COLOR*(SRC_COLOR[A]), DST_COLOR*(1-SRC_COLOR[A]))&quot;
+&quot;A   = ADD(SRC_COLOR, DST_COLOR*(1-SRC_COLOR[A]))&quot;
+&lt;/programlisting&gt;
+&lt;/example&gt;
+&lt;example id=&quot;cogl-Blend-Strings-blend-premul&quot;&gt;
+&lt;title&gt;Blend Strings/2&lt;/title&gt;
+&lt;para&gt;Blend a premultiplied source over a destination with
+premultiplied alpha&lt;/para&gt;
+&lt;programlisting&gt;
+&quot;RGBA = ADD(SRC_COLOR, DST_COLOR*(1-SRC_COLOR[A]))&quot;
+&lt;/programlisting&gt;
+&lt;/example&gt;
+The default blend string is:
+|[
+RGBA = ADD (SRC_COLOR, DST_COLOR*(1-SRC_COLOR[A]))
+]|
+That gives normal alpha-blending when the calculated color for the material
+is in premultiplied form.
+described blending is supported by the underlying driver/hardware. If
+there was an error, %FALSE is returned and @error is set accordingly (if
+present)."
+              version="1.0"
+              throws="1">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="material" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+        <parameter name="blend_string"
+                   transfer-ownership="none"
+                   doc=" describing the desired blend function.">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="material_set_blend_constant"
+              c:identifier="cogl_material_set_blend_constant"
+              doc="When blending is setup to reference a CONSTANT blend factor then
+blending will depend on the constant set with this function."
+              version="1.0">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="material" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+        <parameter name="constant_color" transfer-ownership="none">
+          <type name="Color" c:type="CoglColor*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="material_set_color"
+              c:identifier="cogl_material_set_color"
+              doc="Sets the basic color of the material, used when no lighting is enabled.
+Note that if you don&apos;t add any layers to the material then the color
+will be blended unmodified with the destination; the default blend
+semi-transparent red. See cogl_color_premultiply().
+The default value is (1.0, 1.0, 1.0, 1.0)"
+              version="1.0">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="material" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+        <parameter name="color" transfer-ownership="none">
+          <type name="Color" c:type="CoglColor*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="material_set_color4f"
+              c:identifier="cogl_material_set_color4f"
+              doc="Sets the basic color of the material, used when no lighting is enabled.
+The default value is (1.0, 1.0, 1.0, 1.0)"
+              version="1.0">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="material" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+        <parameter name="red" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="green" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="blue" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="alpha" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="material_set_color4ub"
+              c:identifier="cogl_material_set_color4ub"
+              doc="Sets the basic color of the material, used when no lighting is enabled.
+The default value is (0xff, 0xff, 0xff, 0xff)"
+              version="1.0">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="material" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+        <parameter name="red" transfer-ownership="none">
+          <type name="uint8" c:type="guint8"/>
+        </parameter>
+        <parameter name="green" transfer-ownership="none">
+          <type name="uint8" c:type="guint8"/>
+        </parameter>
+        <parameter name="blue" transfer-ownership="none">
+          <type name="uint8" c:type="guint8"/>
+        </parameter>
+        <parameter name="alpha" transfer-ownership="none">
+          <type name="uint8" c:type="guint8"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="material_set_diffuse"
+              c:identifier="cogl_material_set_diffuse"
+              doc="Sets the material&apos;s diffuse color, in the standard OpenGL lighting
+model. The diffuse color is most intense where the light hits the
+surface directly - perpendicular to the surface.
+The default value is (0.8, 0.8, 0.8, 1.0)"
+              version="1.0">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="material" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+        <parameter name="diffuse" transfer-ownership="none">
+          <type name="Color" c:type="CoglColor*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="material_set_emission"
+              c:identifier="cogl_material_set_emission"
+              doc="Sets the material&apos;s emissive color, in the standard OpenGL lighting
+model. It will look like the surface is a light source emitting this
+color.
+The default value is (0.0, 0.0, 0.0, 1.0)"
+              version="1.0">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="material" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+        <parameter name="emission" transfer-ownership="none">
+          <type name="Color" c:type="CoglColor*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="material_set_layer"
+              c:identifier="cogl_material_set_layer"
+              doc="In addition to the standard OpenGL lighting model a Cogl material may have
+one or more layers comprised of textures that can be blended together in
+order, with a number of different texture combine modes. This function
+defines a new texture layer.
+The index values of multiple layers do not have to be consecutive; it is
+only their relative order that is important.
+&lt;note&gt;In the future, we may define other types of material layers, such
+as purely GLSL based layers.&lt;/note&gt;"
+              version="1.0">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="material" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+        <parameter name="layer_index" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="texture" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="material_set_layer_combine"
+              c:identifier="cogl_material_set_layer_combine"
+              doc="If not already familiar; you can refer
+&lt;link linkend=&quot;cogl-Blend-Strings&quot;&gt;here&lt;/link&gt; for an overview of what blend
+strings are and there syntax.
+These are all the functions available for texture combining:
+&lt;itemizedlist&gt;
+&lt;listitem&gt;REPLACE(arg0) = arg0&lt;/listitem&gt;
+&lt;listitem&gt;MODULATE(arg0, arg1) = arg0 x arg1&lt;/listitem&gt;
+&lt;listitem&gt;ADD(arg0, arg1) = arg0 + arg1&lt;/listitem&gt;
+&lt;listitem&gt;ADD_SIGNED(arg0, arg1) = arg0 + arg1 - 0.5&lt;/listitem&gt;
+&lt;listitem&gt;INTERPOLATE(arg0, arg1, arg2) = arg0 x arg2 + arg1 x (1 - arg2)&lt;/listitem&gt;
+&lt;listitem&gt;SUBTRACT(arg0, arg1) = arg0 - arg1&lt;/listitem&gt;
+&lt;listitem&gt;
+&lt;programlisting&gt;
+DOT3_RGB(arg0, arg1) = 4 x ((arg0[R] - 0.5)) * (arg1[R] - 0.5) +
+(arg0[G] - 0.5)) * (arg1[G] - 0.5) +
+(arg0[B] - 0.5)) * (arg1[B] - 0.5))
+&lt;/programlisting&gt;
+&lt;/listitem&gt;
+&lt;listitem&gt;
+&lt;programlisting&gt;
+DOT3_RGBA(arg0, arg1) = 4 x ((arg0[R] - 0.5)) * (arg1[R] - 0.5) +
+(arg0[G] - 0.5)) * (arg1[G] - 0.5) +
+(arg0[B] - 0.5)) * (arg1[B] - 0.5))
+&lt;/programlisting&gt;
+&lt;/listitem&gt;
+&lt;/itemizedlist&gt;
+Refer to the
+&lt;link linkend=&quot;cogl-Blend-String-syntax&quot;&gt;color-source syntax&lt;/link&gt; for
+describing the arguments. The valid source names for texture combining
+are:
+&lt;variablelist&gt;
+&lt;varlistentry&gt;
+&lt;term&gt;TEXTURE&lt;/term&gt;
+&lt;listitem&gt;Use the color from the current texture layer&lt;/listitem&gt;
+&lt;/varlistentry&gt;
+&lt;varlistentry&gt;
+&lt;term&gt;TEXTURE_0, TEXTURE_1, etc&lt;/term&gt;
+&lt;listitem&gt;Use the color from the specified texture layer&lt;/listitem&gt;
+&lt;/varlistentry&gt;
+&lt;varlistentry&gt;
+&lt;term&gt;CONSTANT&lt;/term&gt;
+&lt;listitem&gt;Use the color from the constant given with
+cogl_material_set_layer_constant()&lt;/listitem&gt;
+&lt;/varlistentry&gt;
+&lt;varlistentry&gt;
+&lt;term&gt;PRIMARY&lt;/term&gt;
+&lt;listitem&gt;Use the color of the material as set with
+cogl_material_set_color()&lt;/listitem&gt;
+&lt;/varlistentry&gt;
+&lt;varlistentry&gt;
+&lt;term&gt;PREVIOUS&lt;/term&gt;
+&lt;listitem&gt;Either use the texture color from the previous layer, or
+if this is layer 0, use the color of the material as set with
+cogl_material_set_color()&lt;/listitem&gt;
+&lt;/varlistentry&gt;
+&lt;/variablelist&gt;
+&lt;refsect2 id=&quot;cogl-Layer-Combine-Examples&quot;&gt;
+&lt;title&gt;Layer Combine Examples&lt;/title&gt;
+&lt;para&gt;This is effectively what the default blending is:&lt;/para&gt;
+&lt;informalexample&gt;&lt;programlisting&gt;
+RGBA = MODULATE (PREVIOUS, TEXTURE)
+&lt;/programlisting&gt;&lt;/informalexample&gt;
+&lt;para&gt;This could be used to cross-fade between two images, using
+the alpha component of a constant as the interpolator. The constant
+color is given by calling cogl_material_set_layer_constant.&lt;/para&gt;
+&lt;informalexample&gt;&lt;programlisting&gt;
+RGBA = INTERPOLATE (PREVIOUS, TEXTURE, CONSTANT[A])
+&lt;/programlisting&gt;&lt;/informalexample&gt;
+&lt;/refsect2&gt;
+&lt;note&gt;You can&apos;t give a multiplication factor for arguments as you can
+with blending.&lt;/note&gt;
+described texture combining is supported by the underlying driver and
+or hardware. On failure, %FALSE is returned and @error is set"
+              version="1.0"
+              throws="1">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="material" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+        <parameter name="layer_index" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="blend_string"
+                   transfer-ownership="none"
+                   doc=" describing the desired texture combine function.">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="material_set_layer_combine_constant"
+              c:identifier="cogl_material_set_layer_combine_constant"
+              doc="When you are using the &apos;CONSTANT&apos; color source in a layer combine
+description then you can use this function to define its value."
+              version="1.0">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="material" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+        <parameter name="layer_index"
+                   transfer-ownership="none"
+                   doc=" for texture combining">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="constant" transfer-ownership="none">
+          <type name="Color" c:type="CoglColor*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="material_set_layer_filters"
+              c:identifier="cogl_material_set_layer_filters"
+              doc="Changes the decimation and interpolation filters used when a texture is
+drawn at other scales than 100%.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="material" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+        <parameter name="layer_index" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="min_filter" transfer-ownership="none">
+          <type name="MaterialFilter" c:type="CoglMaterialFilter"/>
+        </parameter>
+        <parameter name="mag_filter" transfer-ownership="none">
+          <type name="MaterialFilter" c:type="CoglMaterialFilter"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="material_set_layer_matrix"
+              c:identifier="cogl_material_set_layer_matrix"
+              doc="This function lets you set a matrix that can be used to e.g. translate
+and rotate a single layer of a material used to fill your geometry.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="material" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+        <parameter name="layer_index" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="matrix" transfer-ownership="none">
+          <type name="Matrix" c:type="CoglMatrix*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="material_set_shininess"
+              c:identifier="cogl_material_set_shininess"
+              doc="Sets the materials shininess, in the standard OpenGL lighting model,
+which determines how specular highlights are calculated. A higher
+The default value is 0.0"
+              version="1.0">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="material" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+        <parameter name="shininess" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="material_set_specular"
+              c:identifier="cogl_material_set_specular"
+              doc="Sets the material&apos;s specular color, in the standard OpenGL lighting
+model. The intensity of the specular color depends on the viewport
+position, and is brightest along the lines of reflection.
+The default value is (0.0, 0.0, 0.0, 1.0)"
+              version="1.0">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="material" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+        <parameter name="specular" transfer-ownership="none">
+          <type name="Color" c:type="CoglColor*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="material_unref"
+              c:identifier="cogl_material_unref"
+              doc="Decrement the reference count for a cogl material."
+              version="1.0"
+              deprecated="Use cogl_handle_unref() instead"
+              deprecated-version="1.2">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="offscreen_new_to_texture"
+              c:identifier="cogl_offscreen_new_to_texture"
+              doc="This creates an offscreen buffer object using the given texture as the
+primary color buffer. It doesn&apos;t just initialize the contents of the
+offscreen buffer with the texture; they are tightly bound so that
+drawing to the offscreen buffer effectivly updates the contents of the
+given texture. You don&apos;t need to destroy the offscreen buffer before
+you can use the texture again.
+if it wasn&apos;t possible to create the buffer.">
+      <return-value transfer-ownership="full">
+        <type name="Handle" c:type="CoglHandle"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="offscreen_ref"
+              c:identifier="cogl_offscreen_ref"
+              doc="Increments the reference count on the offscreen buffer."
+              deprecated="cogl_handle_ref should be used in new code."
+              deprecated-version="1.2">
+      <return-value transfer-ownership="full">
+        <type name="Handle" c:type="CoglHandle"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="offscreen_unref"
+              c:identifier="cogl_offscreen_unref"
+              doc="Decreases the reference count for the offscreen buffer and frees it when
+the count reaches 0."
+              deprecated="cogl_handle_unref should be used in new code."
+              deprecated-version="1.2">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="ortho"
+              c:identifier="cogl_ortho"
+              doc="Replaces the current projection matrix with a parallel projection
+matrix."
+              version="1.0">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="left" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="right" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="bottom" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="top" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="near"
+                   transfer-ownership="none"
+                   doc=" the plane is behind the viewer)">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="far"
+                   transfer-ownership="none"
+                   doc=" the plane is behind the viewer)">
+          <type name="float" c:type="float"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="path_arc"
+              c:identifier="cogl_path_arc"
+              doc="Adds an elliptical arc segment to the current path. A straight line
+segment will link the current pen location with the first vertex
+of the arc. If you perform a move_to to the arcs start just before
+drawing it you create a free standing arc.
+The angles are measured in degrees where 0° is in the direction of
+the positive X axis and 90° is in the direction of the positive Y
+axis. The angle of the arc begins at @angle_1 and heads towards
+otherwise it will increase).">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="center_x" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="center_y" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="radius_x" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="radius_y" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="angle_1" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="angle_2" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="path_close"
+              c:identifier="cogl_path_close"
+              doc="Closes the path being constructed by adding a straight line segment
+to it that ends at the first vertex of the path.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="path_curve_to"
+              c:identifier="cogl_path_curve_to"
+              doc="Adds a cubic bezier curve segment to the current path with the given
+second, third and fourth control points and using current pen location
+as the first control point.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="x_1" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="y_1" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="x_2" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="y_2" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="x_3" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="y_3" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="path_ellipse"
+              c:identifier="cogl_path_ellipse"
+              doc="Constructs an ellipse shape. If there is an existing path this will
+start a new disjoint sub-path.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="center_x" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="center_y" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="radius_x" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="radius_y" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="path_fill"
+              c:identifier="cogl_path_fill"
+              doc="Fills the interior of the constructed shape using the current
+drawing color. The current path is then cleared. To use the path
+again, call cogl_path_fill_preserve() instead.
+The interior of the shape is determined using the &apos;even-odd&apos;
+rule. Any open sub-paths are treated as if there is an extra line
+joining the last point and first point. You can work out whether
+any point in the stage will be filled if you imagine drawing an
+infinitely long line in any direction from that point and then
+counting the number times it crosses a line in the path. If the
+number is odd it will be filled, otherwise it will not.
+See &lt;xref linkend=&quot;fill-rule&quot;/&gt; for a demonstration of the fill
+rule.
+&lt;figure id=&quot;fill-rule&quot;&gt;
+&lt;title&gt;Example of filling various paths&lt;/title&gt;
+&lt;graphic fileref=&quot;fill-rule.png&quot; format=&quot;PNG&quot;/&gt;
+&lt;/figure&gt;">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="path_fill_preserve"
+              c:identifier="cogl_path_fill_preserve"
+              doc="Fills the interior of the constructed shape using the current
+drawing color and preserves the path to be used again. See
+cogl_path_fill() for a description what is considered the interior
+of the shape."
+              version="1.0">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="path_line"
+              c:identifier="cogl_path_line"
+              doc="Constructs a straight line shape starting and ending at the given
+coordinates. If there is an existing path this will start a new
+disjoint sub-path.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="x_1" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="y_1" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="x_2" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="y_2" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="path_line_to"
+              c:identifier="cogl_path_line_to"
+              doc="Adds a straight line segment to the current path that ends at the
+given coordinates.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="x" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="path_move_to"
+              c:identifier="cogl_path_move_to"
+              doc="Moves the pen to the given location. If there is an existing path
+this will start a new disjoint subpath.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="x" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="path_new"
+              c:identifier="cogl_path_new"
+              doc="Clears the current path and starts a new one."
+              version="1.0">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="path_polygon"
+              c:identifier="cogl_path_polygon"
+              doc="Constructs a polygonal shape of the given number of vertices. If
+there is an existing path this will start a new disjoint sub-path.
+The coords array must contain 2 * num_points values. The first value
+represents the X coordinate of the first vertex, the second value
+represents the Y coordinate of the first vertex, continuing in the same
+fashion for the rest of the vertices.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="coords"
+                   transfer-ownership="none"
+                   doc="A pointer to the first element of an array of fixed-point values that specify the vertex coordinates.">
+          <array c:type="float*">
+            <type name="float"/>
+          </array>
+        </parameter>
+        <parameter name="num_points" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="path_polyline"
+              c:identifier="cogl_path_polyline"
+              doc="Constructs a series of straight line segments, starting from the
+first given vertex coordinate. If there is an existing path this
+will start a new disjoint sub-path. Each subsequent segment starts
+where the previous one ended and ends at the next given vertex
+coordinate.
+The coords array must contain 2 * num_points values. The first value
+represents the X coordinate of the first vertex, the second value
+represents the Y coordinate of the first vertex, continuing in the same
+fashion for the rest of the vertices. (num_points - 1) segments will
+be constructed.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="coords"
+                   transfer-ownership="none"
+                   doc="A pointer to the first element of an array of fixed-point values that specify the vertex coordinates.">
+          <array c:type="float*">
+            <type name="float"/>
+          </array>
+        </parameter>
+        <parameter name="num_points" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="path_rectangle"
+              c:identifier="cogl_path_rectangle"
+              doc="Constructs a rectangular shape at the given coordinates. If there
+is an existing path this will start a new disjoint sub-path.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="x_1" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="y_1" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="x_2" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="y_2" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="path_rel_curve_to"
+              c:identifier="cogl_path_rel_curve_to"
+              doc="Adds a cubic bezier curve segment to the current path with the given
+second, third and fourth control points and using current pen location
+as the first control point. The given coordinates are relative to the
+current pen location.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="x_1" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="y_1" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="x_2" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="y_2" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="x_3" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="y_3" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="path_rel_line_to"
+              c:identifier="cogl_path_rel_line_to"
+              doc="Adds a straight line segment to the current path that ends at the
+given coordinates relative to the current pen location.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="x" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="path_rel_move_to"
+              c:identifier="cogl_path_rel_move_to"
+              doc="Moves the pen to the given offset relative to the current pen
+location. If there is an existing path this will start a new
+disjoint subpath.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="x" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="path_round_rectangle"
+              c:identifier="cogl_path_round_rectangle"
+              doc="Constructs a rectangular shape with rounded corners. If there is an
+existing path this will start a new disjoint sub-path.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="x_1" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="y_1" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="x_2" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="y_2" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="radius" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="arc_step"
+                   transfer-ownership="none"
+                   doc=" the corner arcs.">
+          <type name="float" c:type="float"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="path_stroke"
+              c:identifier="cogl_path_stroke"
+              doc="Strokes the constructed shape using the current drawing color and a
+width of 1 pixel (regardless of the current transformation
+matrix). To current path is then cleared. To use the path again,
+call cogl_path_stroke_preserve() instead.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="path_stroke_preserve"
+              c:identifier="cogl_path_stroke_preserve"
+              doc="Strokes the constructed shape using the current drawing color and
+preserves the path to be used again."
+              version="1.0">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="perspective"
+              c:identifier="cogl_perspective"
+              doc="Replaces the current projection matrix with a perspective matrix
+based on the provided values.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="fovy" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="aspect" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="z_near" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="z_far" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="pixel_buffer_new"
+              c:identifier="cogl_pixel_buffer_new"
+              doc="Creates a new buffer to store pixel data. You can create a new texture from
+this buffer using cogl_texture_new_from_buffer().
+%COGL_INVALID_HANDLE on failure"
+              version="1.2">
+      <return-value transfer-ownership="full">
+        <type name="Handle" c:type="CoglHandle"/>
+      </return-value>
+      <parameters>
+        <parameter name="size" transfer-ownership="none">
+          <type name="uint" c:type="unsigned int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="pixel_buffer_new_EXP"
+              c:identifier="cogl_pixel_buffer_new_EXP">
+      <return-value transfer-ownership="full">
+        <type name="Handle" c:type="CoglHandle"/>
+      </return-value>
+      <parameters>
+        <parameter name="size" transfer-ownership="none">
+          <type name="uint" c:type="unsigned int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="pixel_buffer_new_for_size"
+              c:identifier="cogl_pixel_buffer_new_for_size"
+              doc="Creates a new buffer to store pixel data.
+&lt;note&gt;COGL will try its best to provide a hardware buffer you can map,
+write into and effectively do a zero copy upload when creating a texture
+from it with cogl_texture_new_from_buffer(). For various reasons, such
+buffers are likely to have a stride larger than width * bytes_per_pixel. The
+user must take the stride into account when writing into it.&lt;/note&gt;
+%COGL_INVALID_HANDLE on failure"
+              version="1.2">
+      <return-value transfer-ownership="full">
+        <type name="Handle" c:type="CoglHandle"/>
+      </return-value>
+      <parameters>
+        <parameter name="width" transfer-ownership="none">
+          <type name="uint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="height" transfer-ownership="none">
+          <type name="uint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="format" transfer-ownership="none">
+          <type name="PixelFormat" c:type="CoglPixelFormat"/>
+        </parameter>
+        <parameter name="stride"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full"
+                   doc=" in bytes">
+          <type name="uint" c:type="unsigned int*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="pixel_buffer_new_for_size_EXP"
+              c:identifier="cogl_pixel_buffer_new_for_size_EXP">
+      <return-value transfer-ownership="full">
+        <type name="Handle" c:type="CoglHandle"/>
+      </return-value>
+      <parameters>
+        <parameter name="width" transfer-ownership="none">
+          <type name="uint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="height" transfer-ownership="none">
+          <type name="uint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="format" transfer-ownership="none">
+          <type name="PixelFormat" c:type="CoglPixelFormat"/>
+        </parameter>
+        <parameter name="stride"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <type name="uint" c:type="unsigned int*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="polygon"
+              c:identifier="cogl_polygon"
+              doc="Draws a convex polygon using the current source material to fill / texture
+with according to the texture coordinates passed.
+If @use_color is %TRUE then the color will be changed for each vertex using
+the value specified in the color member of #CoglTextureVertex. This can be
+used for example to make the texture fade out by setting the alpha value of
+the color.
+All of the texture coordinates must be in the range [0,1] and repeating the
+texture is not supported.
+Because of the way this function is implemented it will currently
+only work if either the texture is not sliced or the backend is not
+OpenGL ES and the minifying and magnifying functions are both set
+to COGL_MATERIAL_FILTER_NEAREST."
+              version="1.0">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="vertices" transfer-ownership="none">
+          <type name="TextureVertex" c:type="CoglTextureVertex*"/>
+        </parameter>
+        <parameter name="n_vertices" transfer-ownership="none">
+          <type name="uint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="use_color" transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="pop_draw_buffer"
+              c:identifier="cogl_pop_draw_buffer"
+              doc="Restore cogl_set_draw_buffer() state."
+              deprecated="The draw buffer API was replaced with a framebuffer API"
+              deprecated-version="1.2">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="pop_framebuffer"
+              c:identifier="cogl_pop_framebuffer"
+              doc="Restores the framebuffer that was previously at the top of the stack.
+All subsequent drawing will be redirected to this framebuffer."
+              version="1.2">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="pop_matrix"
+              c:identifier="cogl_pop_matrix"
+              doc="Restores the current model-view matrix from the matrix stack.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="program_attach_shader"
+              c:identifier="cogl_program_attach_shader"
+              doc="Attaches a shader to a program object, a program can have one vertex shader
+and one fragment shader attached.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="program_handle" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+        <parameter name="shader_handle" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="program_get_uniform_location"
+              c:identifier="cogl_program_get_uniform_location"
+              doc="Retrieve the location (offset) of a uniform variable in a shader program,
+a uniform is a variable that is constant for all vertices/fragments for a
+shader object and is possible to modify as an external parameter.
+This uniform can be set using cogl_program_uniform_1f() when the
+program is in use.">
+      <return-value transfer-ownership="none">
+        <type name="int" c:type="int"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+        <parameter name="uniform_name" transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="program_link"
+              c:identifier="cogl_program_link"
+              doc="Links a program making it ready for use.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="program_ref"
+              c:identifier="cogl_program_ref"
+              doc="Add an extra reference to a program.">
+      <return-value transfer-ownership="full">
+        <type name="Handle" c:type="CoglHandle"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="program_uniform_1f"
+              c:identifier="cogl_program_uniform_1f"
+              doc="Changes the value of a floating point uniform in the currently
+used (see cogl_program_use()) shader program.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="uniform_no" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="value" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="program_uniform_1i"
+              c:identifier="cogl_program_uniform_1i"
+              doc="Changes the value of an integer uniform in the currently
+used (see cogl_program_use()) shader program.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="uniform_no" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="value" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="program_uniform_float"
+              c:identifier="cogl_program_uniform_float"
+              doc="Changes the value of a float vector uniform, or uniform array in the
+currently used (see cogl_program_use()) shader program.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="uniform_no" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="size" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="count" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="value"
+                   transfer-ownership="none"
+                   doc="the new value of the uniform.">
+          <array length="2" c:type="GLfloat*">
+            <type name="GL.float"/>
+          </array>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="program_uniform_int"
+              c:identifier="cogl_program_uniform_int"
+              doc="Changes the value of a int vector uniform, or uniform array in the
+currently used (see cogl_program_use()) shader program.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="uniform_no" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="size" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="count" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="value"
+                   transfer-ownership="none"
+                   doc="the new value of the uniform.">
+          <array length="2" c:type="int*">
+            <type name="int"/>
+          </array>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="program_uniform_matrix"
+              c:identifier="cogl_program_uniform_matrix"
+              doc="Changes the value of a matrix uniform, or uniform array in the
+currently used (see cogl_program_use()) shader program. The @size
+parameter is used to determine the square size of the matrix.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="uniform_no" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="size" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="count" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="transpose" transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </parameter>
+        <parameter name="value"
+                   transfer-ownership="none"
+                   doc="the new value of the uniform.">
+          <array length="2" c:type="float*">
+            <type name="float"/>
+          </array>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="program_unref"
+              c:identifier="cogl_program_unref"
+              doc="Removes a reference to a program. If it was the last reference the
+program object will be destroyed.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="program_use"
+              c:identifier="cogl_program_use"
+              doc="Activate a specific shader program replacing that part of the GL
+rendering pipeline, if passed in %COGL_INVALID_HANDLE the default
+behavior of GL is reinstated.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="push_draw_buffer"
+              c:identifier="cogl_push_draw_buffer"
+              doc="Save cogl_set_draw_buffer() state."
+              deprecated="The draw buffer API was replaced with a framebuffer API"
+              deprecated-version="1.2">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="push_framebuffer"
+              c:identifier="cogl_push_framebuffer"
+              doc="Redirects all subsequent drawing to the specified framebuffer. This can
+either be an offscreen buffer created with cogl_offscreen_new_to_texture ()
+or in the future it may be an onscreen framebuffer too.
+You should understand that a framebuffer owns the following state:
+&lt;itemizedlist&gt;
+&lt;li&gt;The projection matrix&lt;/li&gt;
+&lt;li&gt;The modelview matrix stack&lt;/li&gt;
+&lt;li&gt;The viewport&lt;/li&gt;
+&lt;li&gt;The clip stack&lt;/li&gt;
+&lt;/itemizedlist&gt;
+So these items will automatically be saved and restored when you
+push and pop between different framebuffers.
+Also remember a newly allocated framebuffer will have an identity matrix for
+the projection and modelview matrices which gives you a coordinate space
+like OpenGL with (-1, -1) corresponding to the top left of the viewport,
+(1, 1) corresponding to the bottom right and +z coming out towards the
+viewer.
+If you want to set up a coordinate space like Clutter does with (0, 0)
+corresponding to the top left and (framebuffer_width, framebuffer_height)
+corresponding to the bottom right you can do so like this:
+|[
+static void
+setup_viewport (unsigned int width,
+unsigned int height,
+float fovy,
+float aspect,
+float z_near,
+float z_far)
+{
+float z_camera;
+CoglMatrix projection_matrix;
+CoglMatrix mv_matrix;
+cogl_set_viewport (0, 0, width, height);
+cogl_perspective (fovy, aspect, z_near, z_far);
+cogl_get_projection_matrix (&amp;projection_matrix);
+z_camera = 0.5 * projection_matrix.xx;
+cogl_matrix_init_identity (&amp;mv_matrix);
+cogl_matrix_translate (&amp;mv_matrix, -0.5f, -0.5f, -z_camera);
+cogl_matrix_scale (&amp;mv_matrix, 1.0f / width, -1.0f / height, 1.0f / width);
+cogl_matrix_translate (&amp;mv_matrix, 0.0f, -1.0 * height, 0.0f);
+cogl_set_modelview_matrix (&amp;mv_matrix);
+}
+static void
+my_init_framebuffer (CoglHandle framebuffer,
+unsigned int framebuffer_width,
+unsigned int framebuffer_height)
+{
+ClutterActor *stage = clutter_stage_get_default ();
+ClutterPerspective perspective;
+clutter_stage_get_perspective (CLUTTER_STAGE (stage), &amp;perspective);
+cogl_push_framebuffer (framebuffer);
+setup_viewport (framebuffer_width,
+framebuffer_height,
+perspective-&gt;fovy,
+perspective.aspect,
+perspective.z_near,
+perspective.z_far);
+cogl_pop_framebuffer ();
+}
+]|
+The previous framebuffer can be restored by calling cogl_pop_framebuffer()"
+              version="1.2">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none" doc=" offscreen.">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="push_matrix"
+              c:identifier="cogl_push_matrix"
+              doc="Stores the current model-view matrix on the matrix stack. The matrix
+can later be restored with cogl_pop_matrix().">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="read_pixels"
+              c:identifier="cogl_read_pixels"
+              doc="This reads a rectangle of pixels from the current framebuffer where
+position (0, 0) is the top left. The pixel at (x, y) is the first
+read, and the data is returned with a rowstride of (width * 4).
+Currently Cogl assumes that the framebuffer is in a premultiplied
+format so if @format is non-premultiplied it will convert it. To
+read the pixel values without any conversion you should either
+specify a format that doesn&apos;t use an alpha channel or use one of
+the formats ending in PRE.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="x" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="width" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="height" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="source"
+                   transfer-ownership="none"
+                   doc=" (only COGL_READ_PIXELS_COLOR_BUFFER supported currently)">
+          <type name="ReadPixelsFlags" c:type="CoglReadPixelsFlags"/>
+        </parameter>
+        <parameter name="format"
+                   transfer-ownership="none"
+                   doc=" (only COGL_PIXEL_FORMAT_RGBA_8888 supported currently)">
+          <type name="PixelFormat" c:type="CoglPixelFormat"/>
+        </parameter>
+        <parameter name="pixels" transfer-ownership="none">
+          <array c:type="guint8*">
+            <type name="uint8"/>
+          </array>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="rectangle"
+              c:identifier="cogl_rectangle"
+              doc="Fills a rectangle at the given coordinates with the current source material">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="x_1" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="y_1" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="x_2" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="y_2" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="rectangle_with_multitexture_coords"
+              c:identifier="cogl_rectangle_with_multitexture_coords"
+              doc="This function draws a rectangle using the current source material to
+texture or fill with. As a material may contain multiple texture layers
+this interface lets you supply texture coordinates for each layer of the
+material.
+The first pair of coordinates are for the first layer (with the smallest
+layer index) and if you supply less texture coordinates than there are
+layers in the current source material then default texture coordinates
+(0.0, 0.0, 1.0, 1.0) are generated."
+              version="1.0">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="x1" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="y1" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="x2" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="y2" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="tex_coords"
+                   transfer-ownership="none"
+                   doc="An array containing groups of">
+          <array c:type="float*">
+            <type name="float"/>
+          </array>
+        </parameter>
+        <parameter name="tex_coords_len"
+                   transfer-ownership="none"
+                   doc=" and one group of texture coordinates, this would be 4)">
+          <type name="int" c:type="int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="rectangle_with_texture_coords"
+              c:identifier="cogl_rectangle_with_texture_coords"
+              doc="Draw a rectangle using the current material and supply texture coordinates
+to be used for the first texture layer of the material. To draw the entire
+texture pass in @tx1=0.0 @ty1=0.0 @tx2=1.0 @ty2=1.0."
+              version="1.0">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="x1" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="y1" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="x2" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="y2" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="tx1" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="ty1" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="tx2" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="ty2" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="rectangles"
+              c:identifier="cogl_rectangles"
+              doc="Draws a series of rectangles in the same way that
+cogl_rectangle() does. In some situations it can give a
+significant performance boost to use this function rather than
+calling cogl_rectangle() separately for each rectangle.
+parameters x1, y1, x2, and y2, and have the same
+meaning as in cogl_rectangle()."
+              version="1.0">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="verts"
+                   transfer-ownership="none"
+                   doc="an array of vertices">
+          <array c:type="float*">
+            <type name="float"/>
+          </array>
+        </parameter>
+        <parameter name="n_rects" transfer-ownership="none">
+          <type name="uint" c:type="unsigned int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="rectangles_with_texture_coords"
+              c:identifier="cogl_rectangles_with_texture_coords"
+              doc="Draws a series of rectangles in the same way that
+cogl_rectangle_with_texture_coords() does. In some situations it can give a
+significant performance boost to use this function rather than
+calling cogl_rectangle_with_texture_coords() separately for each rectangle.
+parameters x1, y1, x2, y2, tx1, ty1, tx2 and ty2 and have the same
+meaning as in cogl_rectangle_with_texture_coords()."
+              version="0.8.6">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="verts"
+                   transfer-ownership="none"
+                   doc="an array of vertices">
+          <array c:type="float*">
+            <type name="float"/>
+          </array>
+        </parameter>
+        <parameter name="n_rects" transfer-ownership="none">
+          <type name="uint" c:type="unsigned int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="rotate"
+              c:identifier="cogl_rotate"
+              doc="Multiplies the current model-view matrix by one that rotates the
+model around the vertex specified by @x, @y and @z. The rotation
+follows the right-hand thumb rule so for example rotating by 10
+degrees about the vertex (0, 0, 1) causes a small counter-clockwise
+rotation.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="angle" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="x" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="z" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="scale"
+              c:identifier="cogl_scale"
+              doc="Multiplies the current model-view matrix by one that scales the x,
+y and z axes by the given values.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="x" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="z" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="set_backface_culling_enabled"
+              c:identifier="cogl_set_backface_culling_enabled"
+              doc="Sets whether textures positioned so that their backface is showing
+should be hidden. This can be used to efficiently draw two-sided
+textures or fully closed cubes without enabling depth testing. This
+only affects calls to the cogl_rectangle* family of functions and
+cogl_vertex_buffer_draw*. Backface culling is disabled by default.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="setting" transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="set_depth_test_enabled"
+              c:identifier="cogl_set_depth_test_enabled"
+              doc="Sets whether depth testing is enabled. If it is disabled then the
+order that actors are layered on the screen depends solely on the
+order specified using clutter_actor_raise() and
+clutter_actor_lower(), otherwise it will also take into account the
+actor&apos;s depth. Depth testing is disabled by default.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="setting" transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="set_draw_buffer"
+              c:identifier="cogl_set_draw_buffer"
+              doc="Redirects all subsequent drawing to the specified framebuffer. This
+can either be an offscreen buffer created with
+cogl_offscreen_new_to_texture () or you can revert to your original
+on screen window buffer.
+the type of CoglHandle given instead."
+              deprecated="The target argument was redundant since we could look at"
+              deprecated-version="1.2">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target"
+                   transfer-ownership="none"
+                   doc=" are setting as the render target.">
+          <type name="BufferTarget" c:type="CoglBufferTarget"/>
+        </parameter>
+        <parameter name="offscreen"
+                   transfer-ownership="none"
+                   doc=" then this is a CoglHandle for the offscreen buffer.">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="set_fog"
+              c:identifier="cogl_set_fog"
+              doc="Enables fogging. Fogging causes vertices that are further away from the eye
+to be rendered with a different color. The color is determined according to
+the chosen fog mode; at it&apos;s simplest the color is linearly interpolated so
+that vertices at @z_near are drawn fully with their original color and
+vertices at @z_far are drawn fully with @fog_color. Fogging will remain
+enabled until you call cogl_disable_fog().
+&lt;note&gt;The fogging functions only work correctly when primitives use
+unmultiplied alpha colors. By default Cogl will premultiply textures
+and cogl_set_source_color() will premultiply colors, so unless you
+explicitly load your textures requesting an unmultiplied internal format
+and use cogl_material_set_color() you can only use fogging with fully
+opaque primitives. This might improve in the future when we can depend
+on fragment shaders.&lt;/note&gt;">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="fog_color" transfer-ownership="none">
+          <type name="Color" c:type="CoglColor*"/>
+        </parameter>
+        <parameter name="mode"
+                   transfer-ownership="none"
+                   doc=" fogging blend factor.">
+          <type name="FogMode" c:type="CoglFogMode"/>
+        </parameter>
+        <parameter name="density"
+                   transfer-ownership="none"
+                   doc=" %COGL_FOG_MODE_EXPONENTIAL_SQUARED equations.">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="z_near" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="z_far" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="set_framebuffer"
+              c:identifier="cogl_set_framebuffer"
+              doc="This redirects all subsequent drawing to the specified framebuffer. This can
+either be an offscreen buffer created with cogl_offscreen_new_to_texture ()
+or in the future it may be an onscreen framebuffers too."
+              version="1.2">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none" doc=" offscreen.">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="set_modelview_matrix"
+              c:identifier="cogl_set_modelview_matrix"
+              doc="Loads @matrix as the new model-view matrix.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="matrix" transfer-ownership="none">
+          <type name="Matrix" c:type="CoglMatrix*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="set_projection_matrix"
+              c:identifier="cogl_set_projection_matrix"
+              doc="Loads matrix as the new projection matrix.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="matrix" transfer-ownership="none">
+          <type name="Matrix" c:type="CoglMatrix*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="set_source"
+              c:identifier="cogl_set_source"
+              doc="This function sets the source material that will be used to fill subsequent
+geometry emitted via the cogl API.
+&lt;note&gt;In the future we may add the ability to set a front facing material,
+and a back facing material, in which case this function will set both to the
+same.&lt;/note&gt;"
+              version="1.0">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="material" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="set_source_color"
+              c:identifier="cogl_set_source_color"
+              doc="This is a convenience function for creating a solid fill source material
+from the given color. This color will be used for any subsequent drawing
+operation.
+The color will be premultiplied by Cogl, so the color should be
+semi-transparent red.
+See also cogl_set_source_color4ub() and cogl_set_source_color4f()
+if you already have the color components."
+              version="1.0">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="color" transfer-ownership="none">
+          <type name="Color" c:type="CoglColor*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="set_source_color4f"
+              c:identifier="cogl_set_source_color4f"
+              doc="This is a convenience function for creating a solid fill source material
+from the given color using normalized values for each component. This color
+will be used for any subsequent drawing operation.
+The value for each component is a fixed point number in the range
+between 0 and %1.0. If the values passed in are outside that
+range, they will be clamped."
+              version="1.0">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="red" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="green" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="blue" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="alpha" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="set_source_color4ub"
+              c:identifier="cogl_set_source_color4ub"
+              doc="This is a convenience function for creating a solid fill source material
+from the given color using unsigned bytes for each component. This
+color will be used for any subsequent drawing operation.
+The value for each component is an unsigned byte in the range
+between 0 and 255."
+              version="1.0">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="red" transfer-ownership="none">
+          <type name="uint8" c:type="guint8"/>
+        </parameter>
+        <parameter name="green" transfer-ownership="none">
+          <type name="uint8" c:type="guint8"/>
+        </parameter>
+        <parameter name="blue" transfer-ownership="none">
+          <type name="uint8" c:type="guint8"/>
+        </parameter>
+        <parameter name="alpha" transfer-ownership="none">
+          <type name="uint8" c:type="guint8"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="set_source_texture"
+              c:identifier="cogl_set_source_texture"
+              doc="This is a convenience function for creating a material with the first
+layer set to #texture_handle and setting that material as the source with
+cogl_set_source.
+and cogl_set_source_texture. If you need to blend a texture with a color then
+you can create a simple material like this:
+&lt;programlisting&gt;
+material = cogl_material_new ();
+cogl_material_set_color4ub (material, 0xff, 0x00, 0x00, 0x80);
+cogl_material_set_layer (material, 0, tex_handle);
+cogl_set_source (material);
+&lt;/programlisting&gt;"
+              version="1.0">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="texture_handle" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="set_viewport"
+              c:identifier="cogl_set_viewport"
+              doc="Replaces the current viewport with the given values."
+              version="1.2">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="x" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="width" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="height" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="shader_compile"
+              c:identifier="cogl_shader_compile"
+              doc="Compiles the shader, no return value, but the shader is now ready for
+linking into a program.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="shader_get_info_log"
+              c:identifier="cogl_shader_get_info_log"
+              doc="Retrieves the information log for a coglobject, can be used in conjunction
+with cogl_shader_get_parameteriv() to retrieve the compiler warnings/error
+messages that caused a shader to not compile correctly, mainly useful for
+debugging purposes.
+g_free() to free it">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="char*"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="shader_get_type"
+              c:identifier="cogl_shader_get_type"
+              doc="Retrieves the type of a shader #CoglHandle
+or %COGL_SHADER_TYPE_FRAGMENT if the shader is a frament processor">
+      <return-value transfer-ownership="full">
+        <type name="ShaderType" c:type="CoglShaderType"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="shader_is_compiled"
+              c:identifier="cogl_shader_is_compiled"
+              doc="Retrieves whether a shader #CoglHandle has been compiled">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="shader_ref"
+              c:identifier="cogl_shader_ref"
+              doc="Add an extra reference to a shader.">
+      <return-value transfer-ownership="full">
+        <type name="Handle" c:type="CoglHandle"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="shader_source"
+              c:identifier="cogl_shader_source"
+              doc="Replaces the current GLSL source associated with a shader with a new
+one.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="shader" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+        <parameter name="source" transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="shader_unref"
+              c:identifier="cogl_shader_unref"
+              doc="Removes a reference to a shader. If it was the last reference the
+shader object will be destroyed.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="sqrti"
+              c:identifier="cogl_sqrti"
+              doc="Very fast fixed point implementation of square root for integers.
+This function is at least 6x faster than clib sqrt() on x86, and (this is
+not a typo!) about 500x faster on ARM without FPU. It&apos;s error is less than
+5% for arguments smaller than %COGL_SQRTI_ARG_5_PERCENT and less than 10%
+for narguments smaller than %COGL_SQRTI_ARG_10_PERCENT. The maximum
+argument that can be passed to this function is %COGL_SQRTI_ARG_MAX."
+              version="1.0">
+      <return-value transfer-ownership="none">
+        <type name="int" c:type="int"/>
+      </return-value>
+      <parameters>
+        <parameter name="x" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="texture_get_data"
+              c:identifier="cogl_texture_get_data"
+              doc="Copies the pixel data from a cogl texture to system memory.
+is not valid">
+      <return-value transfer-ownership="none">
+        <type name="int" c:type="int"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+        <parameter name="format" transfer-ownership="none">
+          <type name="PixelFormat" c:type="CoglPixelFormat"/>
+        </parameter>
+        <parameter name="rowstride"
+                   transfer-ownership="none"
+                   doc=" specified.">
+          <type name="uint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="data"
+                   transfer-ownership="none"
+                   doc=" only querying the data size through the return value.">
+          <array c:type="guint8*">
+            <type name="uint8"/>
+          </array>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="texture_get_format"
+              c:identifier="cogl_texture_get_format"
+              doc="Queries the #CoglPixelFormat of a cogl texture.">
+      <return-value transfer-ownership="full">
+        <type name="PixelFormat" c:type="CoglPixelFormat"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="texture_get_gl_texture"
+              c:identifier="cogl_texture_get_gl_texture"
+              doc="Queries the GL handles for a GPU side texture through its #CoglHandle.
+If the texture is spliced the data for the first sub texture will be
+queried.
+if the handle was invalid">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+        <parameter name="out_gl_handle"
+                   direction="out"
+                   caller-allocates="1"
+                   transfer-ownership="none"
+                   allow-none="1"
+                   doc="pointer to return location for the textures GL handle, or %NULL.">
+          <type name="GL.uint" c:type="GLuint*"/>
+        </parameter>
+        <parameter name="out_gl_target"
+                   direction="out"
+                   caller-allocates="1"
+                   transfer-ownership="none"
+                   allow-none="1"
+                   doc="pointer to return location for the GL target type, or %NULL.">
+          <type name="GL.enum" c:type="GLenum*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="texture_get_height"
+              c:identifier="cogl_texture_get_height"
+              doc="Queries the height of a cogl texture.">
+      <return-value transfer-ownership="none">
+        <type name="uint" c:type="unsigned int"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="texture_get_max_waste"
+              c:identifier="cogl_texture_get_max_waste"
+              doc="Queries the maximum wasted (unused) pixels in one dimension of a GPU side
+texture.">
+      <return-value transfer-ownership="none">
+        <type name="int" c:type="int"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="texture_get_rowstride"
+              c:identifier="cogl_texture_get_rowstride"
+              doc="Queries the rowstride of a cogl texture.">
+      <return-value transfer-ownership="none">
+        <type name="uint" c:type="unsigned int"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="texture_get_width"
+              c:identifier="cogl_texture_get_width"
+              doc="Queries the width of a cogl texture.">
+      <return-value transfer-ownership="none">
+        <type name="uint" c:type="unsigned int"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="texture_is_sliced"
+              c:identifier="cogl_texture_is_sliced"
+              doc="Queries if a texture is sliced (stored as multiple GPU side tecture
+objects).
+is stored as a single GPU texture">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="texture_new_from_bitmap"
+              c:identifier="cogl_texture_new_from_bitmap"
+              doc="Creates a COGL texture from a CoglBitmap.
+%COGL_INVALID_HANDLE on failure"
+              version="1.0">
+      <return-value transfer-ownership="full">
+        <type name="Handle" c:type="CoglHandle"/>
+      </return-value>
+      <parameters>
+        <parameter name="bmp_handle" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+        <parameter name="flags" transfer-ownership="none">
+          <type name="TextureFlags" c:type="CoglTextureFlags"/>
+        </parameter>
+        <parameter name="internal_format"
+                   transfer-ownership="none"
+                   doc=" texture">
+          <type name="PixelFormat" c:type="CoglPixelFormat"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="texture_new_from_data"
+              c:identifier="cogl_texture_new_from_data"
+              doc="Creates a new COGL texture based on data residing in memory.
+%COGL_INVALID_HANDLE on failure"
+              version="0.8">
+      <return-value transfer-ownership="full">
+        <type name="Handle" c:type="CoglHandle"/>
+      </return-value>
+      <parameters>
+        <parameter name="width" transfer-ownership="none">
+          <type name="uint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="height" transfer-ownership="none">
+          <type name="uint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="flags" transfer-ownership="none">
+          <type name="TextureFlags" c:type="CoglTextureFlags"/>
+        </parameter>
+        <parameter name="format" transfer-ownership="none">
+          <type name="PixelFormat" c:type="CoglPixelFormat"/>
+        </parameter>
+        <parameter name="internal_format"
+                   transfer-ownership="none"
+                   doc=" the buffer on the GPU. If COGL_PIXEL_FORMAT_ANY is given then a premultiplied format similar to the format of the source data will be used. The default blending equations of Cogl expect premultiplied color data; the main use of passing a non-premultiplied format here is if you have non-premultiplied source data and are going to adjust the blend mode (see cogl_material_set_blend()) or use the data for something other than straight blending.">
+          <type name="PixelFormat" c:type="CoglPixelFormat"/>
+        </parameter>
+        <parameter name="rowstride"
+                   transfer-ownership="none"
+                   doc=" scanlines in @data">
+          <type name="uint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <array c:type="guint8*">
+            <type name="uint8"/>
+          </array>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="texture_new_from_file"
+              c:identifier="cogl_texture_new_from_file"
+              doc="Creates a COGL texture from an image file.
+%COGL_INVALID_HANDLE on failure"
+              version="0.8"
+              throws="1">
+      <return-value transfer-ownership="full">
+        <type name="Handle" c:type="CoglHandle"/>
+      </return-value>
+      <parameters>
+        <parameter name="filename" transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+        <parameter name="flags" transfer-ownership="none">
+          <type name="TextureFlags" c:type="CoglTextureFlags"/>
+        </parameter>
+        <parameter name="internal_format"
+                   transfer-ownership="none"
+                   doc=" texture. If %COGL_PIXEL_FORMAT_ANY is given then a premultiplied format similar to the format of the source data will be used. The default blending equations of Cogl expect premultiplied color data; the main use of passing a non-premultiplied format here is if you have non-premultiplied source data and are going to adjust the blend mode (see cogl_material_set_blend()) or use the data for something other than straight blending.">
+          <type name="PixelFormat" c:type="CoglPixelFormat"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="texture_new_from_foreign"
+              c:identifier="cogl_texture_new_from_foreign"
+              doc="Creates a COGL texture based on an existing OpenGL texture; the
+width, height and format are passed along since it is not always
+possible to query these from OpenGL.
+The waste arguments allow you to create a Cogl texture that maps to
+a region smaller than the real OpenGL texture. For instance if your
+hardware only supports power-of-two textures you may load a
+non-power-of-two image into a larger power-of-two texture and use
+the waste arguments to tell Cogl which region should be mapped to
+the texture coordinate range [0:1].
+%COGL_INVALID_HANDLE on failure"
+              version="0.8">
+      <return-value transfer-ownership="full">
+        <type name="Handle" c:type="CoglHandle"/>
+      </return-value>
+      <parameters>
+        <parameter name="gl_handle" transfer-ownership="none">
+          <type name="GL.uint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="gl_target" transfer-ownership="none">
+          <type name="GL.enum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="width" transfer-ownership="none">
+          <type name="GL.uint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="height" transfer-ownership="none">
+          <type name="GL.uint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="x_pot_waste" transfer-ownership="none">
+          <type name="GL.uint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="y_pot_waste" transfer-ownership="none">
+          <type name="GL.uint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="format" transfer-ownership="none">
+          <type name="PixelFormat" c:type="CoglPixelFormat"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="texture_new_from_sub_texture"
+              c:identifier="cogl_texture_new_from_sub_texture"
+              doc="Creates a new texture which represents a subregion of another
+texture. The GL resources will be shared so that no new texture
+data is actually allocated.
+Sub textures have undefined behaviour texture coordinates outside
+of the range [0,1] are used. They also do not work with
+CoglVertexBuffers.
+The sub texture will keep a reference to the full texture so you do
+not need to keep one separately if you only want to use the sub
+texture."
+              version="1.2">
+      <return-value transfer-ownership="full">
+        <type name="Handle" c:type="CoglHandle"/>
+      </return-value>
+      <parameters>
+        <parameter name="full_texture" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+        <parameter name="sub_x" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="sub_y" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="sub_width" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="sub_height" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="texture_new_with_size"
+              c:identifier="cogl_texture_new_with_size"
+              doc="Creates a new COGL texture with the specified dimensions and pixel format.
+%COGL_INVALID_HANDLE on failure"
+              version="0.8">
+      <return-value transfer-ownership="full">
+        <type name="Handle" c:type="CoglHandle"/>
+      </return-value>
+      <parameters>
+        <parameter name="width" transfer-ownership="none">
+          <type name="uint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="height" transfer-ownership="none">
+          <type name="uint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="flags" transfer-ownership="none">
+          <type name="TextureFlags" c:type="CoglTextureFlags"/>
+        </parameter>
+        <parameter name="internal_format"
+                   transfer-ownership="none"
+                   doc=" texture.">
+          <type name="PixelFormat" c:type="CoglPixelFormat"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="texture_ref"
+              c:identifier="cogl_texture_ref"
+              doc="Increment the reference count for a cogl texture."
+              deprecated="Use cogl_handle_ref() instead"
+              deprecated-version="1.2">
+      <return-value transfer-ownership="full">
+        <type name="Handle" c:type="CoglHandle"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="texture_set_region"
+              c:identifier="cogl_texture_set_region"
+              doc="Sets the pixels in a rectangular subregion of @handle from an in-memory
+buffer containing pixel data.
+%FALSE otherwise">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+        <parameter name="src_x" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="src_y" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="dst_x" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="dst_y" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="dst_width" transfer-ownership="none">
+          <type name="uint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="dst_height" transfer-ownership="none">
+          <type name="uint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="width" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="height" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="format" transfer-ownership="none">
+          <type name="PixelFormat" c:type="CoglPixelFormat"/>
+        </parameter>
+        <parameter name="rowstride"
+                   transfer-ownership="none"
+                   doc=" specified)">
+          <type name="uint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <array c:type="guint8*">
+            <type name="uint8"/>
+          </array>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="texture_unref"
+              c:identifier="cogl_texture_unref"
+              doc="Decrement the reference count for a cogl texture."
+              deprecated="Use cogl_handle_unref() instead"
+              deprecated-version="1.2">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="translate"
+              c:identifier="cogl_translate"
+              doc="Multiplies the current model-view matrix by one that translates the
+model along all three axes according to the given values.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="x" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="z" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="vertex_buffer_add"
+              c:identifier="cogl_vertex_buffer_add"
+              doc="Adds an attribute to a buffer.
+You either can use one of the built-in names such as &quot;gl_Vertex&quot;, or
+&quot;gl_MultiTexCoord0&quot; to add standard attributes, like positions, colors
+and normals, or you can add custom attributes for use in shaders.
+The number of vertices declared when calling cogl_vertex_buffer_new()
+determines how many attribute values will be read from the supplied
+The data for your attribute isn&apos;t copied anywhere until you call
+cogl_vertex_buffer_submit(), or issue a draw call which automatically
+submits pending attribute changes. so the supplied pointer must remain
+valid until then. If you are updating an existing attribute (done by
+re-adding it) then you still need to re-call cogl_vertex_buffer_submit()
+to commit the changes to the GPU. Be carefull to minimize the number
+of calls to cogl_vertex_buffer_submit(), though.
+&lt;note&gt;If you are interleving attributes it is assumed that each interleaved
+attribute starts no farther than +- stride bytes from the other attributes
+it is interleved with. I.e. this is ok:
+&lt;programlisting&gt;
+|-0-0-0-0-0-0-0-0-0-0|
+&lt;/programlisting&gt;
+This is not ok:
+&lt;programlisting&gt;
+|- - - - -0-0-0-0-0-0 0 0 0 0|
+&lt;/programlisting&gt;
+(Though you can have multiple groups of interleved attributes)&lt;/note&gt;">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+        <parameter name="attribute_name"
+                   transfer-ownership="none"
+                   doc=" variable name and standard attribute types must use one of following">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+        <parameter name="n_components" transfer-ownership="none" doc=" 3 or 4">
+          <type name="uint8" c:type="guint8"/>
+        </parameter>
+        <parameter name="type" transfer-ownership="none">
+          <type name="AttributeType" c:type="CoglAttributeType"/>
+        </parameter>
+        <parameter name="normalized"
+                   transfer-ownership="none"
+                   doc=" format should be mapped into the range [-1.0, 1.0] or [0.0, 1.0] for unsigned values. If %FALSE they are converted to floats directly.">
+          <type name="boolean" c:type="gboolean"/>
+        </parameter>
+        <parameter name="stride"
+                   transfer-ownership="none"
+                   doc=" value to the start of the next value (for the same attribute). So, for example, with a position interleved with color like this: XYRGBAXYRGBAXYRGBA, then if each letter represents a byte, the stride for both attributes is 6. The special value 0 means the values are stored sequentially in memory.">
+          <type name="uint16" c:type="guint16"/>
+        </parameter>
+        <parameter name="pointer"
+                   transfer-ownership="none"
+                   doc=" must remain valid until you either call cogl_vertex_buffer_submit() or issue a draw call.">
+          <type name="any" c:type="void*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="vertex_buffer_delete"
+              c:identifier="cogl_vertex_buffer_delete"
+              doc="Deletes an attribute from a buffer. You will need to call
+cogl_vertex_buffer_submit() or issue a draw call to commit this
+change to the GPU.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+        <parameter name="attribute_name" transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="vertex_buffer_disable"
+              c:identifier="cogl_vertex_buffer_disable"
+              doc="Disables a previosuly added attribute.
+Since it can be costly to add and remove new attributes to buffers; to make
+individual buffers more reuseable it is possible to enable and disable
+attributes before using a buffer for drawing.
+You don&apos;t need to call cogl_vertex_buffer_submit() after using this
+function.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+        <parameter name="attribute_name" transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="vertex_buffer_draw"
+              c:identifier="cogl_vertex_buffer_draw"
+              doc="Allows you to draw geometry using all or a subset of the
+vertices in a vertex buffer.
+Any un-submitted attribute changes are automatically submitted before
+drawing.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+        <parameter name="mode" transfer-ownership="none" doc=" interpreted.">
+          <type name="VerticesMode" c:type="CoglVerticesMode"/>
+        </parameter>
+        <parameter name="first" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="count" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="vertex_buffer_draw_elements"
+              c:identifier="cogl_vertex_buffer_draw_elements"
+              doc="This function lets you use an array of indices to specify the vertices
+within your vertex buffer that you want to draw. The indices themselves
+are created by calling cogl_vertex_buffer_indices_new ()
+Any un-submitted attribute changes are automatically submitted before
+drawing.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+        <parameter name="mode" transfer-ownership="none" doc=" interpreted.">
+          <type name="VerticesMode" c:type="CoglVerticesMode"/>
+        </parameter>
+        <parameter name="indices"
+                   transfer-ownership="none"
+                   doc=" cogl_vertex_buffer_indices_new ()">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+        <parameter name="min_index" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="max_index" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="indices_offset"
+                   transfer-ownership="none"
+                   doc=" index to use for drawing.">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="count" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="vertex_buffer_enable"
+              c:identifier="cogl_vertex_buffer_enable"
+              doc="Enables a previosuly disabled attribute.
+Since it can be costly to add and remove new attributes to buffers; to make
+individual buffers more reuseable it is possible to enable and disable
+attributes before using a buffer for drawing.
+You don&apos;t need to call cogl_vertex_buffer_submit() after using this function">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+        <parameter name="attribute_name" transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="vertex_buffer_get_n_vertices"
+              c:identifier="cogl_vertex_buffer_get_n_vertices"
+              doc="Retrieves the number of vertices that @handle represents">
+      <return-value transfer-ownership="none">
+        <type name="uint" c:type="unsigned int"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="vertex_buffer_indices_get_for_quads"
+              c:identifier="cogl_vertex_buffer_indices_get_for_quads"
+              doc="Creates a vertex buffer containing the indices needed to draw pairs
+of triangles from a list of vertices grouped as quads. There will
+be at least @n_indices entries in the buffer (but there may be
+more).
+The indices will follow this pattern:
+0, 1, 2, 0, 2, 3, 4, 5, 6, 4, 6, 7 ... etc
+For example, if you submit vertices for a quad like this:
+|[
+0        3
+########
+#      #
+#      #
+########
+1        2
+]|
+Then you can request 6 indices to render two triangles like this:
+|[
+0           0        3
+##          ########
+# ##          ##   #
+#   ##          ## #
+########          ##
+1        2           2
+]|
+owned by Cogl and should not be modified or unref&apos;d.">
+      <return-value transfer-ownership="full">
+        <type name="Handle" c:type="CoglHandle"/>
+      </return-value>
+      <parameters>
+        <parameter name="n_indices" transfer-ownership="none">
+          <type name="uint" c:type="unsigned int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="vertex_buffer_indices_get_type"
+              c:identifier="cogl_vertex_buffer_indices_get_type"
+              doc="Queries back the data type used for the given indices">
+      <return-value transfer-ownership="full">
+        <type name="IndicesType" c:type="CoglIndicesType"/>
+      </return-value>
+      <parameters>
+        <parameter name="indices" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="vertex_buffer_indices_new"
+              c:identifier="cogl_vertex_buffer_indices_new"
+              doc="Depending on how much geometry you are submitting it can be worthwhile
+optimizing the number of redundant vertices you submit. Using an index
+array allows you to reference vertices multiple times, for example
+during triangle strips.
+cogl_vertex_buffer_draw_elements().">
+      <return-value transfer-ownership="full">
+        <type name="Handle" c:type="CoglHandle"/>
+      </return-value>
+      <parameters>
+        <parameter name="indices_type"
+                   transfer-ownership="none"
+                   doc=" the indices.">
+          <type name="IndicesType" c:type="CoglIndicesType"/>
+        </parameter>
+        <parameter name="indices_array"
+                   transfer-ownership="none"
+                   doc="Specifies the address of your array of indices">
+          <array length="2" c:type="void*">
+            <type name="any"/>
+          </array>
+        </parameter>
+        <parameter name="indices_len" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="vertex_buffer_new"
+              c:identifier="cogl_vertex_buffer_new"
+              doc="Creates a new vertex buffer that you can use to add attributes.">
+      <return-value transfer-ownership="full">
+        <type name="Handle" c:type="CoglHandle"/>
+      </return-value>
+      <parameters>
+        <parameter name="n_vertices" transfer-ownership="none">
+          <type name="uint" c:type="unsigned int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="vertex_buffer_ref"
+              c:identifier="cogl_vertex_buffer_ref"
+              doc="Increment the reference count for a vertex buffer"
+              deprecated="Use cogl_handle_ref() instead"
+              deprecated-version="1.2">
+      <return-value transfer-ownership="full">
+        <type name="Handle" c:type="CoglHandle"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="vertex_buffer_submit"
+              c:identifier="cogl_vertex_buffer_submit"
+              doc="Submits all the user added attributes to the GPU; once submitted, the
+attributes can be used for drawing.
+You should aim to minimize calls to this function since it implies
+validating your data; it potentially incurs a transport cost (especially if
+you are using GLX indirect rendering) and potentially a format conversion
+cost if the GPU doesn&apos;t natively support any of the given attribute formats.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="vertex_buffer_unref"
+              c:identifier="cogl_vertex_buffer_unref"
+              doc="Decrement the reference count for a vertex buffer"
+              deprecated="Use cogl_handle_unref() instead"
+              deprecated-version="1.2">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="viewport"
+              c:identifier="cogl_viewport"
+              doc="Replace the current viewport with the given values."
+              version="0.8.2"
+              deprecated="Use cogl_set_viewport() instead"
+              deprecated-version="1.2">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="width" transfer-ownership="none">
+          <type name="uint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="height" transfer-ownership="none">
+          <type name="uint" c:type="unsigned int"/>
+        </parameter>
+      </parameters>
+    </function>
+  </namespace>
+</repository>
diff --git a/extra/clutter/cogl/cogl.factor b/extra/clutter/cogl/cogl.factor
new file mode 100644 (file)
index 0000000..6b54a07
--- /dev/null
@@ -0,0 +1,5 @@
+! Copyright (C) 2010 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: clutter.cogl.ffi ;
+IN: clutter.cogl
+
diff --git a/extra/clutter/cogl/ffi/ffi.factor b/extra/clutter/cogl/ffi/ffi.factor
new file mode 100644 (file)
index 0000000..e1d85c9
--- /dev/null
@@ -0,0 +1,25 @@
+! Copyright (C) 2010 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: alien alien.c-types alien.libraries alien.syntax
+combinators kernel opengl.gl system
+gobject-introspection glib.ffi ;
+IN: clutter.cogl.ffi
+
+<<
+"clutter.cogl" {
+    { [ os winnt? ] [ drop ] }
+    { [ os macosx? ] [ drop ] }
+    { [ os unix? ] [ "libclutter-glx-1.0.so" cdecl add-library ] }
+} cond
+>>
+
+TYPEDEF: int CoglAngle
+TYPEDEF: int CoglFixed
+TYPEDEF: void* CoglHandle
+
+REPLACE-C-TYPE: unsigned\schar uchar
+REPLACE-C-TYPE: unsigned\sint uint
+REPLACE-C-TYPE: unsigned\slong ulong
+
+GIR: vocab:clutter/cogl/Cogl-1.0.gir
+
diff --git a/extra/clutter/ffi/ffi.factor b/extra/clutter/ffi/ffi.factor
new file mode 100644 (file)
index 0000000..bbb9294
--- /dev/null
@@ -0,0 +1,20 @@
+! Copyright (C) 2010 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: alien alien.c-types alien.libraries cairo.ffi
+combinators kernel system
+gobject-introspection clutter.cogl.ffi clutter.json.ffi
+glib.ffi gobject.ffi pango.ffi ;
+IN: clutter.ffi
+
+<<
+"clutter" {
+    { [ os winnt? ] [ drop ] }
+    { [ os macosx? ] [ drop ] }
+    { [ os unix? ] [ "libclutter-glx-1.0.so" cdecl add-library ] }
+} cond
+>>
+
+IMPLEMENT-STRUCTS: ClutterVertex ;
+
+GIR: vocab:clutter/Clutter-1.0.gir
+
diff --git a/extra/clutter/gtk/GtkClutter-0.10.gir b/extra/clutter/gtk/GtkClutter-0.10.gir
new file mode 100644 (file)
index 0000000..7d92932
--- /dev/null
@@ -0,0 +1,809 @@
+<?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.0"
+            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="Atk" version="1.0"/>
+  <include name="Clutter" version="1.0"/>
+  <include name="ClutterJson" version="1.0"/>
+  <include name="Cogl" version="1.0"/>
+  <include name="GL" version="1.0"/>
+  <include name="GLib" version="2.0"/>
+  <include name="GModule" version="2.0"/>
+  <include name="GObject" version="2.0"/>
+  <include name="Gdk" version="2.0"/>
+  <include name="GdkPixbuf" version="2.0"/>
+  <include name="Gio" version="2.0"/>
+  <include name="Gtk" version="2.0"/>
+  <include name="Pango" version="1.0"/>
+  <include name="PangoCairo" version="1.0"/>
+  <include name="PangoFT2" version="1.0"/>
+  <include name="cairo" version="1.0"/>
+  <include name="fontconfig" version="2.0"/>
+  <include name="freetype2" version="2.0"/>
+  <package name="clutter-1.0"/>
+  <package name="gobject-2.0"/>
+  <package name="gtk+-2.0"/>
+  <namespace name="GtkClutter"
+             version="0.10"
+             shared-library="libclutter-gtk-0.10.so.0"
+             c:prefix="GtkClutter">
+    <enumeration name="ClutterGtkInitError"
+                 doc="Extension of the #ClutterInitError enumeration for the integration
+with GTK+"
+                 version="0.8"
+                 c:type="ClutterGtkInitError">
+      <member name="last" value="-3" c:identifier="CLUTTER_INIT_ERROR_LAST"/>
+      <member name="gtk" value="-4" c:identifier="CLUTTER_INIT_ERROR_GTK"/>
+    </enumeration>
+    <enumeration name="ClutterGtkTextureError"
+                 doc="An enumeration of error types used in ClutterGtk texture functions"
+                 version="0.10"
+                 c:type="ClutterGtkTextureError">
+      <member name="invalid_stock_id"
+              value="0"
+              c:identifier="CLUTTER_GTK_TEXTURE_INVALID_STOCK_ID"/>
+      <member name="error_last"
+              value="1"
+              c:identifier="CLUTTER_GTK_TEXTURE_ERROR_LAST"/>
+    </enumeration>
+    <class name="Embed"
+           c:type="GtkClutterEmbed"
+           doc="A #GtkWidget containing the default Clutter stage."
+           version="0.6"
+           parent="Gtk.Container"
+           glib:type-name="GtkClutterEmbed"
+           glib:get-type="gtk_clutter_embed_get_type"
+           glib:type-struct="EmbedClass">
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Gtk.Buildable"/>
+      <constructor name="new"
+                   c:identifier="gtk_clutter_embed_new"
+                   doc="Creates a new #GtkClutterEmbed widget. This widget can be
+used to build a scene using Clutter API into a GTK+ application."
+                   version="0.6">
+        <return-value transfer-ownership="full">
+          <type name="Embed" c:type="GtkWidget*"/>
+        </return-value>
+      </constructor>
+      <method name="get_stage"
+              c:identifier="gtk_clutter_embed_get_stage"
+              doc="Retrieves the #ClutterStage from @embed. The returned stage can be
+used to add actors to the Clutter scene. Multiple calls to this function
+on the same #GtkClutterEmbed widget will return the same stage.
+or unref the returned actor."
+              version="0.6">
+        <return-value transfer-ownership="none"
+                      doc="a #ClutterStage. You should never destroy">
+          <type name="Clutter.Actor" c:type="ClutterActor*"/>
+        </return-value>
+      </method>
+      <field name="parent_instance">
+        <type name="Gtk.Container" c:type="GtkContainer"/>
+      </field>
+      <field name="priv">
+        <type name="EmbedPrivate" c:type="GtkClutterEmbedPrivate*"/>
+      </field>
+    </class>
+    <record name="EmbedClass"
+            c:type="GtkClutterEmbedClass"
+            glib:is-gtype-struct-for="Embed"
+            doc="Base class for #GtkClutterEmbed."
+            version="0.6">
+      <field name="parent_class">
+        <type name="Gtk.ContainerClass" c:type="GtkContainerClass"/>
+      </field>
+      <field name="clutter_gtk_reserved1">
+        <callback name="clutter_gtk_reserved1" c:type="_clutter_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_gtk_reserved2">
+        <callback name="clutter_gtk_reserved2" c:type="_clutter_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_gtk_reserved3">
+        <callback name="clutter_gtk_reserved3" c:type="_clutter_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_gtk_reserved4">
+        <callback name="clutter_gtk_reserved4" c:type="_clutter_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_gtk_reserved5">
+        <callback name="clutter_gtk_reserved5" c:type="_clutter_gtk_reserved5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_gtk_reserved6">
+        <callback name="clutter_gtk_reserved6" c:type="_clutter_gtk_reserved6">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="EmbedPrivate" c:type="GtkClutterEmbedPrivate">
+    </record>
+    <interface name="Scrollable"
+               c:type="GtkClutterScrollable"
+               glib:type-name="GtkClutterScrollable"
+               glib:get-type="gtk_clutter_scrollable_get_type"
+               glib:type-struct="ScrollableIface">
+      <virtual-method name="set_adjustments" invoker="set_adjustments">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="h_adjust" transfer-ownership="none">
+            <type name="Gtk.Adjustment" c:type="GtkAdjustment*"/>
+          </parameter>
+          <parameter name="v_adjust" transfer-ownership="none">
+            <type name="Gtk.Adjustment" c:type="GtkAdjustment*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_adjustments" invoker="get_adjustments">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="h_adjust" transfer-ownership="none">
+            <type name="Gtk.Adjustment" c:type="GtkAdjustment**"/>
+          </parameter>
+          <parameter name="v_adjust" transfer-ownership="none">
+            <type name="Gtk.Adjustment" c:type="GtkAdjustment**"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="set_adjustments"
+              c:identifier="gtk_clutter_scrollable_set_adjustments"
+              doc="Sets the horizontal and vertical adjustments used to determine
+the position of the scrollable actor."
+              version="0.10">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="h_adjust"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="a #GtkAdjustment, or %NULL">
+            <type name="Gtk.Adjustment" c:type="GtkAdjustment*"/>
+          </parameter>
+          <parameter name="v_adjust"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="a #GtkAdjustment, or %NULL">
+            <type name="Gtk.Adjustment" c:type="GtkAdjustment*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_adjustments"
+              c:identifier="gtk_clutter_scrollable_get_adjustments"
+              doc="Retrieves the horizontal and vertical adjustments used to
+determine the position of the scrollable actor."
+              version="0.10">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="h_adjust"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     doc="return location for a #GtkAdjustment, or %NULL">
+            <type name="Gtk.Adjustment" c:type="GtkAdjustment**"/>
+          </parameter>
+          <parameter name="v_adjust"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     doc="return location for a #GtkAdjustment, or %NULL">
+            <type name="Gtk.Adjustment" c:type="GtkAdjustment**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="hadjustment"
+                version="0.10"
+                writable="1"
+                construct="1"
+                doc="The #GtkAdjustment that determines the value of the
+horizontal position for this scrollable actor.">
+        <type name="Gtk.Adjustment" c:type="GtkAdjustment"/>
+      </property>
+      <property name="vadjustment"
+                version="0.10"
+                writable="1"
+                construct="1"
+                doc="The #GtkAdjustment that determines the value of the
+vertical position for this scrollable actor.">
+        <type name="Gtk.Adjustment" c:type="GtkAdjustment"/>
+      </property>
+    </interface>
+    <record name="ScrollableIface"
+            c:type="GtkClutterScrollableIface"
+            glib:is-gtype-struct-for="Scrollable"
+            doc="The #GtkClutterScrollableIface structure contains only private data
+and should be accessed using the provided functions."
+            version="0.10">
+      <field name="parent_iface">
+        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+      </field>
+      <field name="set_adjustments">
+        <callback name="set_adjustments" c:type="set_adjustments">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="scrollable" transfer-ownership="none">
+              <type name="Scrollable" c:type="GtkClutterScrollable*"/>
+            </parameter>
+            <parameter name="h_adjust" transfer-ownership="none">
+              <type name="Gtk.Adjustment" c:type="GtkAdjustment*"/>
+            </parameter>
+            <parameter name="v_adjust" transfer-ownership="none">
+              <type name="Gtk.Adjustment" c:type="GtkAdjustment*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_adjustments">
+        <callback name="get_adjustments" c:type="get_adjustments">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="scrollable" transfer-ownership="none">
+              <type name="Scrollable" c:type="GtkClutterScrollable*"/>
+            </parameter>
+            <parameter name="h_adjust" transfer-ownership="none">
+              <type name="Gtk.Adjustment" c:type="GtkAdjustment**"/>
+            </parameter>
+            <parameter name="v_adjust" transfer-ownership="none">
+              <type name="Gtk.Adjustment" c:type="GtkAdjustment**"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+    </record>
+    <class name="Viewport"
+           c:type="GtkClutterViewport"
+           doc="The #GtkClutterViewport structure contains only private data and
+should be accessed using the provided functions."
+           version="0.8.2"
+           parent="Clutter.Actor"
+           glib:type-name="GtkClutterViewport"
+           glib:get-type="gtk_clutter_viewport_get_type"
+           glib:type-struct="ViewportClass">
+      <implements name="Clutter.Container"/>
+      <implements name="Clutter.Scriptable"/>
+      <implements name="Scrollable"/>
+      <implements name="Zoomable"/>
+      <constructor name="new"
+                   c:identifier="gtk_clutter_viewport_new"
+                   doc="Creates a new #GtkClutterViewport with the given adjustments."
+                   version="0.10">
+        <return-value transfer-ownership="full">
+          <type name="Viewport" c:type="ClutterActor*"/>
+        </return-value>
+        <parameters>
+          <parameter name="h_adjust" transfer-ownership="none">
+            <type name="Gtk.Adjustment" c:type="GtkAdjustment*"/>
+          </parameter>
+          <parameter name="v_adjust" transfer-ownership="none">
+            <type name="Gtk.Adjustment" c:type="GtkAdjustment*"/>
+          </parameter>
+          <parameter name="z_adjust" transfer-ownership="none">
+            <type name="Gtk.Adjustment" c:type="GtkAdjustment*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="get_origin"
+              c:identifier="gtk_clutter_viewport_get_origin"
+              doc="Retrieves the current translation factor (&quot;origin&quot;) used when
+displaying the child of @viewport."
+              version="0.10">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="x"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <type name="float" c:type="gfloat*"/>
+          </parameter>
+          <parameter name="y"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <type name="float" c:type="gfloat*"/>
+          </parameter>
+          <parameter name="z"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <type name="float" c:type="gfloat*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="child"
+                version="0.10"
+                writable="1"
+                doc="The #ClutterActor inside the viewport.">
+        <type name="Clutter.Actor" c:type="ClutterActor"/>
+      </property>
+      <property name="origin"
+                version="0.10"
+                doc="The current origin of the viewport. You should use the
+vertex to convert event coordinates for the child of the
+viewport.">
+        <type name="Clutter.Vertex" c:type="ClutterVertex"/>
+      </property>
+      <field name="parent_instance">
+        <type name="Clutter.Actor" c:type="ClutterActor"/>
+      </field>
+      <field name="priv">
+        <type name="ViewportPrivate" c:type="GtkClutterViewportPrivate*"/>
+      </field>
+    </class>
+    <record name="ViewportClass"
+            c:type="GtkClutterViewportClass"
+            glib:is-gtype-struct-for="Viewport"
+            doc="The #GtkClutterViewportClass structure contains only private data and
+should be accessed using the provided functions."
+            version="0.8.2">
+      <field name="parent_class">
+        <type name="Clutter.ActorClass" c:type="ClutterActorClass"/>
+      </field>
+    </record>
+    <record name="ViewportPrivate" c:type="GtkClutterViewportPrivate">
+    </record>
+    <interface name="Zoomable"
+               c:type="GtkClutterZoomable"
+               glib:type-name="GtkClutterZoomable"
+               glib:get-type="gtk_clutter_zoomable_get_type"
+               glib:type-struct="ZoomableIface">
+      <virtual-method name="set_adjustment" invoker="set_adjustment">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="z_adjust" transfer-ownership="none">
+            <type name="Gtk.Adjustment" c:type="GtkAdjustment*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_adjustment" invoker="get_adjustment">
+        <return-value transfer-ownership="full">
+          <type name="Gtk.Adjustment" c:type="GtkAdjustment*"/>
+        </return-value>
+      </virtual-method>
+      <method name="set_adjustment"
+              c:identifier="gtk_clutter_zoomable_set_adjustment"
+              doc="Sets the adjustment used to determine the zoom factor of
+the zoomable actor"
+              version="0.10">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="z_adjust"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="a #GtkAdjustment, or %NULL">
+            <type name="Gtk.Adjustment" c:type="GtkAdjustment*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_adjustment"
+              c:identifier="gtk_clutter_zoomable_get_adjustment"
+              doc="Retrieves the adjustment used to determine the zoom factor of
+the zoomable actor"
+              version="0.10">
+        <return-value transfer-ownership="none" doc="a #GtkAdjustment">
+          <type name="Gtk.Adjustment" c:type="GtkAdjustment*"/>
+        </return-value>
+      </method>
+      <property name="zadjustment"
+                version="0.10"
+                writable="1"
+                construct="1"
+                doc="The #GtkAdjustment that determines the value of
+the zoom factor for this zoomable actor">
+        <type name="Gtk.Adjustment" c:type="GtkAdjustment"/>
+      </property>
+    </interface>
+    <record name="ZoomableIface"
+            c:type="GtkClutterZoomableIface"
+            glib:is-gtype-struct-for="Zoomable"
+            doc="The #GtkClutterZoomableIface structure contains only private data"
+            version="1.0">
+      <field name="parent_iface">
+        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+      </field>
+      <field name="set_adjustment">
+        <callback name="set_adjustment" c:type="set_adjustment">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="zoomable" transfer-ownership="none">
+              <type name="Zoomable" c:type="GtkClutterZoomable*"/>
+            </parameter>
+            <parameter name="z_adjust" transfer-ownership="none">
+              <type name="Gtk.Adjustment" c:type="GtkAdjustment*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_adjustment">
+        <callback name="get_adjustment" c:type="get_adjustment">
+          <return-value transfer-ownership="full">
+            <type name="Gtk.Adjustment" c:type="GtkAdjustment*"/>
+          </return-value>
+          <parameters>
+            <parameter name="zoomable" transfer-ownership="none">
+              <type name="Zoomable" c:type="GtkClutterZoomable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+    </record>
+    <function name="get_base_color"
+              c:identifier="gtk_clutter_get_base_color"
+              doc="Retrieves the base color of @widget for the given @state and copies it
+into @color."
+              version="0.8">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="widget" transfer-ownership="none">
+          <type name="Gtk.Widget" c:type="GtkWidget*"/>
+        </parameter>
+        <parameter name="state" transfer-ownership="none">
+          <type name="Gtk.StateType" c:type="GtkStateType"/>
+        </parameter>
+        <parameter name="color" transfer-ownership="none">
+          <type name="Clutter.Color" c:type="ClutterColor*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="get_bg_color"
+              c:identifier="gtk_clutter_get_bg_color"
+              doc="Retrieves the background color of @widget for the given @state and copies
+it into @color."
+              version="0.8">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="widget" transfer-ownership="none">
+          <type name="Gtk.Widget" c:type="GtkWidget*"/>
+        </parameter>
+        <parameter name="state" transfer-ownership="none">
+          <type name="Gtk.StateType" c:type="GtkStateType"/>
+        </parameter>
+        <parameter name="color" transfer-ownership="none">
+          <type name="Clutter.Color" c:type="ClutterColor*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="get_dark_color"
+              c:identifier="gtk_clutter_get_dark_color"
+              doc="Retrieves the dark color of @widget for the given @state and copies it
+into @color."
+              version="0.8">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="widget" transfer-ownership="none">
+          <type name="Gtk.Widget" c:type="GtkWidget*"/>
+        </parameter>
+        <parameter name="state" transfer-ownership="none">
+          <type name="Gtk.StateType" c:type="GtkStateType"/>
+        </parameter>
+        <parameter name="color" transfer-ownership="none">
+          <type name="Clutter.Color" c:type="ClutterColor*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="get_fg_color"
+              c:identifier="gtk_clutter_get_fg_color"
+              doc="Retrieves the foreground color of @widget for the given @state and copies
+it into @color."
+              version="0.8">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="widget" transfer-ownership="none">
+          <type name="Gtk.Widget" c:type="GtkWidget*"/>
+        </parameter>
+        <parameter name="state" transfer-ownership="none">
+          <type name="Gtk.StateType" c:type="GtkStateType"/>
+        </parameter>
+        <parameter name="color" transfer-ownership="none">
+          <type name="Clutter.Color" c:type="ClutterColor*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="get_light_color"
+              c:identifier="gtk_clutter_get_light_color"
+              doc="Retrieves the light color of @widget for the given @state and copies it
+into @color."
+              version="0.8">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="widget" transfer-ownership="none">
+          <type name="Gtk.Widget" c:type="GtkWidget*"/>
+        </parameter>
+        <parameter name="state" transfer-ownership="none">
+          <type name="Gtk.StateType" c:type="GtkStateType"/>
+        </parameter>
+        <parameter name="color" transfer-ownership="none">
+          <type name="Clutter.Color" c:type="ClutterColor*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="get_mid_color"
+              c:identifier="gtk_clutter_get_mid_color"
+              doc="Retrieves the mid color of @widget for the given @state and copies it
+into @color."
+              version="0.8">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="widget" transfer-ownership="none">
+          <type name="Gtk.Widget" c:type="GtkWidget*"/>
+        </parameter>
+        <parameter name="state" transfer-ownership="none">
+          <type name="Gtk.StateType" c:type="GtkStateType"/>
+        </parameter>
+        <parameter name="color" transfer-ownership="none">
+          <type name="Clutter.Color" c:type="ClutterColor*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="get_text_aa_color"
+              c:identifier="gtk_clutter_get_text_aa_color"
+              doc="Retrieves the text-aa color of @widget for the given @state and copies it
+into @color."
+              version="0.8">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="widget" transfer-ownership="none">
+          <type name="Gtk.Widget" c:type="GtkWidget*"/>
+        </parameter>
+        <parameter name="state" transfer-ownership="none">
+          <type name="Gtk.StateType" c:type="GtkStateType"/>
+        </parameter>
+        <parameter name="color" transfer-ownership="none">
+          <type name="Clutter.Color" c:type="ClutterColor*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="get_text_color"
+              c:identifier="gtk_clutter_get_text_color"
+              doc="Retrieves the text color of @widget for the given @state and copies it
+into @color."
+              version="0.8">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="widget" transfer-ownership="none">
+          <type name="Gtk.Widget" c:type="GtkWidget*"/>
+        </parameter>
+        <parameter name="state" transfer-ownership="none">
+          <type name="Gtk.StateType" c:type="GtkStateType"/>
+        </parameter>
+        <parameter name="color" transfer-ownership="none">
+          <type name="Clutter.Color" c:type="ClutterColor*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="init"
+              c:identifier="gtk_clutter_init"
+              doc="This function should be called instead of clutter_init() and
+gtk_init().
+on failure."
+              version="0.8">
+      <return-value transfer-ownership="full">
+        <type name="Clutter.InitError" c:type="ClutterInitError"/>
+      </return-value>
+      <parameters>
+        <parameter name="argc"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <type name="int" c:type="int*"/>
+        </parameter>
+        <parameter name="argv" transfer-ownership="none">
+          <type name="utf8" c:type="char***"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="init_with_args"
+              c:identifier="gtk_clutter_init_with_args"
+              doc="This function should be called instead of clutter_init() and
+gtk_init_with_args().
+on failure."
+              version="0.10"
+              throws="1">
+      <return-value transfer-ownership="full">
+        <type name="Clutter.InitError" c:type="ClutterInitError"/>
+      </return-value>
+      <parameters>
+        <parameter name="argc"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <type name="int" c:type="int*"/>
+        </parameter>
+        <parameter name="argv" transfer-ownership="none">
+          <type name="utf8" c:type="char***"/>
+        </parameter>
+        <parameter name="parameter_string"
+                   transfer-ownership="none"
+                   doc=" the first line of &lt;option&gt;--help&lt;/option&gt; output, after &lt;literal&gt;&lt;replaceable&gt;programname&lt;/replaceable&gt; [OPTION...]&lt;/literal&gt;">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+        <parameter name="entries"
+                   transfer-ownership="none"
+                   doc=" describing the options of your program">
+          <type name="GLib.OptionEntry" c:type="GOptionEntry*"/>
+        </parameter>
+        <parameter name="translation_domain"
+                   transfer-ownership="none"
+                   doc=" the &lt;option&gt;--help&lt;/option&gt; output for the options in @entries with gettext(), or %NULL">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="texture_new_from_icon_name"
+              c:identifier="gtk_clutter_texture_new_from_icon_name"
+              doc="Creates a new #ClutterTexture and sets its contents to be
+the @icon_name from the current icon theme.
+was %NULL and @icon_name was not found."
+              version="0.8">
+      <return-value transfer-ownership="full">
+        <type name="Clutter.Actor" c:type="ClutterActor*"/>
+      </return-value>
+      <parameters>
+        <parameter name="widget" transfer-ownership="none">
+          <type name="Gtk.Widget" c:type="GtkWidget*"/>
+        </parameter>
+        <parameter name="icon_name" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="size" transfer-ownership="none">
+          <type name="Gtk.IconSize" c:type="GtkIconSize"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="texture_new_from_pixbuf"
+              c:identifier="gtk_clutter_texture_new_from_pixbuf"
+              doc="Creates a new #ClutterTexture and sets its contents with a copy
+of @pixbuf."
+              version="0.8">
+      <return-value transfer-ownership="full">
+        <type name="Clutter.Actor" c:type="ClutterActor*"/>
+      </return-value>
+      <parameters>
+        <parameter name="pixbuf" transfer-ownership="none">
+          <type name="GdkPixbuf.Pixbuf" c:type="GdkPixbuf*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="texture_new_from_stock"
+              c:identifier="gtk_clutter_texture_new_from_stock"
+              doc="Creates a new #ClutterTexture and sets its contents using the stock
+icon @stock_id as rendered by @widget."
+              version="0.8">
+      <return-value transfer-ownership="full">
+        <type name="Clutter.Actor" c:type="ClutterActor*"/>
+      </return-value>
+      <parameters>
+        <parameter name="widget" transfer-ownership="none">
+          <type name="Gtk.Widget" c:type="GtkWidget*"/>
+        </parameter>
+        <parameter name="stock_id" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="size" transfer-ownership="none">
+          <type name="Gtk.IconSize" c:type="GtkIconSize"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="texture_set_from_icon_name"
+              c:identifier="gtk_clutter_texture_set_from_icon_name"
+              doc="Sets the contents of @texture using the @icon_name from the
+current icon theme."
+              version="0.8"
+              throws="1">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="texture" transfer-ownership="none">
+          <type name="Clutter.Texture" c:type="ClutterTexture*"/>
+        </parameter>
+        <parameter name="widget" transfer-ownership="none">
+          <type name="Gtk.Widget" c:type="GtkWidget*"/>
+        </parameter>
+        <parameter name="icon_name" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="size" transfer-ownership="none">
+          <type name="Gtk.IconSize" c:type="GtkIconSize"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="texture_set_from_pixbuf"
+              c:identifier="gtk_clutter_texture_set_from_pixbuf"
+              doc="Sets the contents of @texture with a copy of @pixbuf."
+              version="0.8"
+              throws="1">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="texture" transfer-ownership="none">
+          <type name="Clutter.Texture" c:type="ClutterTexture*"/>
+        </parameter>
+        <parameter name="pixbuf" transfer-ownership="none">
+          <type name="GdkPixbuf.Pixbuf" c:type="GdkPixbuf*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="texture_set_from_stock"
+              c:identifier="gtk_clutter_texture_set_from_stock"
+              doc="Sets the contents of @texture using the stock icon @stock_id, as
+rendered by @widget."
+              version="0.8"
+              throws="1">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="texture" transfer-ownership="none">
+          <type name="Clutter.Texture" c:type="ClutterTexture*"/>
+        </parameter>
+        <parameter name="widget" transfer-ownership="none">
+          <type name="Gtk.Widget" c:type="GtkWidget*"/>
+        </parameter>
+        <parameter name="stock_id" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="size" transfer-ownership="none">
+          <type name="Gtk.IconSize" c:type="GtkIconSize"/>
+        </parameter>
+      </parameters>
+    </function>
+  </namespace>
+</repository>
diff --git a/extra/clutter/gtk/ffi/ffi.factor b/extra/clutter/gtk/ffi/ffi.factor
new file mode 100644 (file)
index 0000000..eba6b39
--- /dev/null
@@ -0,0 +1,18 @@
+! Copyright (C) 2010 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: alien alien.c-types alien.libraries combinators kernel
+system
+gobject-introspection clutter.ffi gdk.pixbuf.ffi glib.ffi
+gtk.ffi ;
+IN: clutter.gtk.ffi
+
+<<
+"clutter.gtk" {
+    { [ os winnt? ] [ drop ] }
+    { [ os macosx? ] [ drop ] }
+    { [ os unix? ] [ "libclutter-gtk-0.10.so" cdecl add-library ] }
+} cond
+>>
+
+GIR: vocab:clutter/gtk/GtkClutter-0.10.gir
+
diff --git a/extra/clutter/gtk/gtk.factor b/extra/clutter/gtk/gtk.factor
new file mode 100644 (file)
index 0000000..6c495f5
--- /dev/null
@@ -0,0 +1,5 @@
+! Copyright (C) 2010 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: clutter.gtk.ffi ;
+IN: clutter.gtk
+
diff --git a/extra/clutter/json/ClutterJson-1.0.gir b/extra/clutter/json/ClutterJson-1.0.gir
new file mode 100644 (file)
index 0000000..e0b3cf9
--- /dev/null
@@ -0,0 +1,1549 @@
+<?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.0"
+            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="GLib" version="2.0"/>
+  <include name="GObject" version="2.0"/>
+  <package name="gobject-2.0"/>
+  <namespace name="ClutterJson"
+             version="1.0"
+             shared-library="libclutter-glx-1.0.so.0"
+             c:prefix="ClutterJson">
+    <record name="JsonArray"
+            c:type="JsonArray"
+            doc="A JSON array type. The contents of the #JsonArray structure are private
+and should only be accessed by the provided API"
+            glib:type-name="JsonArray"
+            glib:get-type="json_array_get_type">
+      <constructor name="new"
+                   c:identifier="json_array_new"
+                   doc="Creates a new #JsonArray.">
+        <return-value transfer-ownership="full">
+          <type name="JsonArray" c:type="JsonArray*"/>
+        </return-value>
+      </constructor>
+      <method name="ref"
+              c:identifier="json_array_ref"
+              doc="Increase by one the reference count of a #JsonArray.
+increased by one.">
+        <return-value transfer-ownership="full">
+          <type name="JsonArray" c:type="JsonArray*"/>
+        </return-value>
+      </method>
+      <method name="unref"
+              c:identifier="json_array_unref"
+              doc="Decreases by one the reference count of a #JsonArray. If the
+reference count reaches zero, the array is destroyed and all
+its allocated resources are freed.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="add_element"
+              c:identifier="json_array_add_element"
+              doc="Appends @node inside @array. The array will take ownership of the
+#JsonNode.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="node" transfer-ownership="none">
+            <type name="JsonNode" c:type="JsonNode*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_int_element"
+              c:identifier="json_array_add_int_element"
+              doc="Conveniently adds an integer @value into @array"
+              version="0.8">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="value" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_double_element"
+              c:identifier="json_array_add_double_element"
+              doc="Conveniently adds a floating point @value into @array"
+              version="0.8">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="value" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_boolean_element"
+              c:identifier="json_array_add_boolean_element"
+              doc="Conveniently adds a boolean @value into @array"
+              version="0.8">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="value" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_string_element"
+              c:identifier="json_array_add_string_element"
+              doc="Conveniently adds a string @value into @array"
+              version="0.8">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="value" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_null_element"
+              c:identifier="json_array_add_null_element"
+              doc="Conveniently adds a null element into @array"
+              version="0.8">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="add_array_element"
+              c:identifier="json_array_add_array_element"
+              doc="Conveniently adds an array into @array. The @array takes ownership
+of the newly added #JsonArray"
+              version="0.8">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="value" transfer-ownership="none">
+            <type name="JsonArray" c:type="JsonArray*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_object_element"
+              c:identifier="json_array_add_object_element"
+              doc="Conveniently adds an object into @array. The @array takes ownership
+of the newly added #JsonObject"
+              version="0.8">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="value" transfer-ownership="none">
+            <type name="JsonObject" c:type="JsonObject*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_elements"
+              c:identifier="json_array_get_elements"
+              doc="Gets the elements of a #JsonArray as a list of #JsonNode&lt;!-- --&gt;s.
+contents of the list are owned by the array and should never be
+modified or freed. Use g_list_free() on the returned list when
+done using it">
+        <return-value transfer-ownership="full">
+          <type name="GLib.List" c:type="GList*"/>
+        </return-value>
+      </method>
+      <method name="get_element"
+              c:identifier="json_array_get_element"
+              doc="Retrieves the #JsonNode containing the value of the element at @index_
+inside a #JsonArray.">
+        <return-value transfer-ownership="full">
+          <type name="JsonNode" c:type="JsonNode*"/>
+        </return-value>
+        <parameters>
+          <parameter name="index_" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_int_element"
+              c:identifier="json_array_get_int_element"
+              doc="Conveniently retrieves the integer value of the element at @index_
+inside @array"
+              version="0.8">
+        <return-value transfer-ownership="none">
+          <type name="int64" c:type="gint64"/>
+        </return-value>
+        <parameters>
+          <parameter name="index_" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_double_element"
+              c:identifier="json_array_get_double_element"
+              doc="Conveniently retrieves the floating point value of the element at"
+              version="0.8">
+        <return-value transfer-ownership="none">
+          <type name="double" c:type="gdouble"/>
+        </return-value>
+        <parameters>
+          <parameter name="index_" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_boolean_element"
+              c:identifier="json_array_get_boolean_element"
+              doc="Conveniently retrieves the boolean value of the element at @index_
+inside @array"
+              version="0.8">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="index_" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_string_element"
+              c:identifier="json_array_get_string_element"
+              doc="Conveniently retrieves the string value of the element at @index_
+inside @array
+the #JsonArray and should not be modified or freed"
+              version="0.8">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="index_" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_null_element"
+              c:identifier="json_array_get_null_element"
+              doc="Conveniently retrieves whether the element at @index_ is set to null"
+              version="0.8">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="index_" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_array_element"
+              c:identifier="json_array_get_array_element"
+              doc="Conveniently retrieves the array from the element at @index_
+inside @array"
+              version="0.8">
+        <return-value transfer-ownership="full">
+          <type name="JsonArray" c:type="JsonArray*"/>
+        </return-value>
+        <parameters>
+          <parameter name="index_" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_object_element"
+              c:identifier="json_array_get_object_element"
+              doc="Conveniently retrieves the object from the element at @index_
+inside @array"
+              version="0.8">
+        <return-value transfer-ownership="full">
+          <type name="JsonObject" c:type="JsonObject*"/>
+        </return-value>
+        <parameters>
+          <parameter name="index_" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="dup_element"
+              c:identifier="json_array_dup_element"
+              doc="Retrieves a copy of the #JsonNode containing the value of the
+element at @index_ inside a #JsonArray
+Use json_node_free() when done."
+              version="0.6">
+        <return-value transfer-ownership="full">
+          <type name="JsonNode" c:type="JsonNode*"/>
+        </return-value>
+        <parameters>
+          <parameter name="index_" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_element"
+              c:identifier="json_array_remove_element"
+              doc="Removes the #JsonNode inside @array at @index_ freeing its allocated
+resources.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="index_" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_length"
+              c:identifier="json_array_get_length"
+              doc="Retrieves the length of a #JsonArray">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="foreach_element"
+              c:identifier="json_array_foreach_element"
+              doc="Iterates over all elements of @array and calls @func on
+each one of them.
+It is safe to change the value of a #JsonNode of the @array
+from within the iterator @func, but it is not safe to add or
+remove elements from the @array."
+              version="0.8">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="2">
+            <type name="JsonArrayForeach" c:type="JsonArrayForeach"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <callback name="JsonArrayForeach"
+              c:type="JsonArrayForeach"
+              doc="The function to be passed to json_array_foreach_element(). You
+should not add or remove elements to and from @array within
+this function. It is safe to change the value of @element_node."
+              version="0.8">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="array" transfer-ownership="none">
+          <type name="JsonArray" c:type="JsonArray*"/>
+        </parameter>
+        <parameter name="index_" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="element_node" transfer-ownership="none">
+          <type name="JsonNode" c:type="JsonNode*"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="3">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <class name="JsonGenerator"
+           c:type="JsonGenerator"
+           doc="JSON data streams generator. The contents of the #JsonGenerator structure
+are private and should only be accessed via the provided API."
+           parent="GObject.Object"
+           glib:type-name="JsonGenerator"
+           glib:get-type="json_generator_get_type"
+           glib:type-struct="JsonGeneratorClass">
+      <constructor name="new"
+                   c:identifier="json_generator_new"
+                   doc="Creates a new #JsonGenerator. You can use this object to generate a
+JSON data stream starting from a data object model composed by
+#JsonNode&lt;!-- --&gt;s.">
+        <return-value transfer-ownership="full">
+          <type name="JsonGenerator" c:type="JsonGenerator*"/>
+        </return-value>
+      </constructor>
+      <method name="to_data"
+              c:identifier="json_generator_to_data"
+              doc="Generates a JSON data stream from @generator and returns it as a
+buffer.
+g_free() to free the allocated resources.">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="length"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <type name="size_t" c:type="gsize*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="to_file"
+              c:identifier="json_generator_to_file"
+              doc="Creates a JSON data stream and puts it inside @filename, overwriting the
+current file contents. This operation is atomic."
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="filename" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_root"
+              c:identifier="json_generator_set_root"
+              doc="Sets @node as the root of the JSON data stream to be serialized by
+the #JsonGenerator.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="node" transfer-ownership="none">
+            <type name="JsonNode" c:type="JsonNode*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="indent"
+                writable="1"
+                doc="Number of spaces to be used to indent when pretty printing.">
+        <type name="uint" c:type="guint"/>
+      </property>
+      <property name="pretty"
+                writable="1"
+                doc="Whether the output should be &quot;pretty-printed&quot;, with indentation and
+newlines. The indentation level can be controlled by using the
+JsonGenerator:indent property">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <field name="parent_instance">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="priv">
+        <type name="JsonGeneratorPrivate" c:type="JsonGeneratorPrivate*"/>
+      </field>
+    </class>
+    <record name="JsonGeneratorClass"
+            c:type="JsonGeneratorClass"
+            glib:is-gtype-struct-for="JsonGenerator"
+            doc="#JsonGenerator class">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="json_reserved1">
+        <callback name="json_reserved1" c:type="_json_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="json_reserved2">
+        <callback name="json_reserved2" c:type="_json_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="json_reserved3">
+        <callback name="json_reserved3" c:type="_json_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="json_reserved4">
+        <callback name="json_reserved4" c:type="_json_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="JsonGeneratorPrivate" c:type="JsonGeneratorPrivate">
+    </record>
+    <record name="JsonNode"
+            c:type="JsonNode"
+            doc="A generic container of JSON data types. The contents of the #JsonNode
+structure are private and should only be accessed via the provided
+functions and never directly."
+            glib:type-name="JsonNode"
+            glib:get-type="json_node_get_type">
+      <constructor name="new"
+                   c:identifier="json_node_new"
+                   doc="Creates a new #JsonNode of @type.">
+        <return-value transfer-ownership="full">
+          <type name="JsonNode" c:type="JsonNode*"/>
+        </return-value>
+        <parameters>
+          <parameter name="type" transfer-ownership="none">
+            <type name="JsonNodeType" c:type="JsonNodeType"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="copy"
+              c:identifier="json_node_copy"
+              doc="Copies @node. If the node contains complex data types then the reference
+count of the objects is increased.">
+        <return-value transfer-ownership="full">
+          <type name="JsonNode" c:type="JsonNode*"/>
+        </return-value>
+      </method>
+      <method name="free"
+              c:identifier="json_node_free"
+              doc="Frees the resources allocated by @node.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_node_type"
+              c:identifier="json_node_get_node_type"
+              doc="Retrieves the #JsonNodeType of @node"
+              version="0.8">
+        <return-value transfer-ownership="full">
+          <type name="JsonNodeType" c:type="JsonNodeType"/>
+        </return-value>
+      </method>
+      <method name="get_value_type"
+              c:identifier="json_node_get_value_type"
+              doc="Returns the #GType of the payload of the node."
+              version="0.4">
+        <return-value transfer-ownership="none">
+          <type name="GType" c:type="GType"/>
+        </return-value>
+      </method>
+      <method name="get_parent"
+              c:identifier="json_node_get_parent"
+              doc="Retrieves the parent #JsonNode of @node.">
+        <return-value transfer-ownership="full">
+          <type name="JsonNode" c:type="JsonNode*"/>
+        </return-value>
+      </method>
+      <method name="type_name"
+              c:identifier="json_node_type_name"
+              doc="Retrieves the user readable name of the data type contained by @node.
+is owned by the node and should never be modified or freed">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="set_object"
+              c:identifier="json_node_set_object"
+              doc="Sets @objects inside @node. The reference count of @object is increased.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="JsonObject" c:type="JsonObject*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="take_object"
+              c:identifier="json_node_take_object"
+              doc="Sets @object inside @node. The reference count of @object is not increased.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="JsonObject" c:type="JsonObject*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_object"
+              c:identifier="json_node_get_object"
+              doc="Retrieves the #JsonObject stored inside a #JsonNode">
+        <return-value transfer-ownership="full">
+          <type name="JsonObject" c:type="JsonObject*"/>
+        </return-value>
+      </method>
+      <method name="dup_object"
+              c:identifier="json_node_dup_object"
+              doc="Retrieves the #JsonObject inside @node. The reference count of
+the returned object is increased.">
+        <return-value transfer-ownership="full">
+          <type name="JsonObject" c:type="JsonObject*"/>
+        </return-value>
+      </method>
+      <method name="set_array"
+              c:identifier="json_node_set_array"
+              doc="Sets @array inside @node and increases the #JsonArray reference count">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="array" transfer-ownership="none">
+            <type name="JsonArray" c:type="JsonArray*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="take_array"
+              c:identifier="json_node_take_array"
+              doc="Sets @array into @node without increasing the #JsonArray reference count.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="array" transfer-ownership="none">
+            <type name="JsonArray" c:type="JsonArray*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_array"
+              c:identifier="json_node_get_array"
+              doc="Retrieves the #JsonArray stored inside a #JsonNode">
+        <return-value transfer-ownership="full">
+          <type name="JsonArray" c:type="JsonArray*"/>
+        </return-value>
+      </method>
+      <method name="dup_array" c:identifier="json_node_dup_array">
+        <return-value transfer-ownership="full">
+          <type name="JsonArray" c:type="JsonArray*"/>
+        </return-value>
+      </method>
+      <method name="set_value"
+              c:identifier="json_node_set_value"
+              doc="Sets @value inside @node. The passed #GValue is copied into the #JsonNode">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="value" transfer-ownership="none">
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_value"
+              c:identifier="json_node_get_value"
+              doc="Retrieves a value from a #JsonNode and copies into @value. When done
+using it, call g_value_unset() on the #GValue.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="value" transfer-ownership="none">
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_string"
+              c:identifier="json_node_set_string"
+              doc="Sets @value as the string content of the @node, replacing any existing
+content.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="value" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_string"
+              c:identifier="json_node_get_string"
+              doc="Gets the string value stored inside a #JsonNode">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="dup_string"
+              c:identifier="json_node_dup_string"
+              doc="Gets a copy of the string value stored inside a #JsonNode
+the #JsonNode contents">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="set_int"
+              c:identifier="json_node_set_int"
+              doc="Sets @value as the integer content of the @node, replacing any existing
+content.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="value" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_int"
+              c:identifier="json_node_get_int"
+              doc="Gets the integer value stored inside a #JsonNode">
+        <return-value transfer-ownership="none">
+          <type name="int64" c:type="gint64"/>
+        </return-value>
+      </method>
+      <method name="set_double"
+              c:identifier="json_node_set_double"
+              doc="Sets @value as the double content of the @node, replacing any existing
+content.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="value" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_double"
+              c:identifier="json_node_get_double"
+              doc="Gets the double value stored inside a #JsonNode">
+        <return-value transfer-ownership="none">
+          <type name="double" c:type="gdouble"/>
+        </return-value>
+      </method>
+      <method name="set_boolean"
+              c:identifier="json_node_set_boolean"
+              doc="Sets @value as the boolean content of the @node, replacing any existing
+content.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="value" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_boolean"
+              c:identifier="json_node_get_boolean"
+              doc="Gets the boolean value stored inside a #JsonNode">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="is_null"
+              c:identifier="json_node_is_null"
+              doc="Checks whether @node is a %JSON_NODE_NULL
+&lt;note&gt;A null node is not the same as a %NULL #JsonNode&lt;/note&gt;"
+              version="0.8">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+    </record>
+    <enumeration name="JsonNodeType"
+                 doc="Indicates the content of a #JsonNode."
+                 c:type="JsonNodeType">
+      <member name="object" value="0" c:identifier="JSON_NODE_OBJECT"/>
+      <member name="array" value="1" c:identifier="JSON_NODE_ARRAY"/>
+      <member name="value" value="2" c:identifier="JSON_NODE_VALUE"/>
+      <member name="null" value="3" c:identifier="JSON_NODE_NULL"/>
+    </enumeration>
+    <record name="JsonObject"
+            c:type="JsonObject"
+            doc="A JSON object type. The contents of the #JsonObject structure are private
+and should only be accessed by the provided API"
+            glib:type-name="JsonObject"
+            glib:get-type="json_object_get_type">
+      <constructor name="new"
+                   c:identifier="json_object_new"
+                   doc="Creates a new #JsonObject, an JSON object type representation.">
+        <return-value transfer-ownership="full">
+          <type name="JsonObject" c:type="JsonObject*"/>
+        </return-value>
+      </constructor>
+      <method name="ref"
+              c:identifier="json_object_ref"
+              doc="Increase by one the reference count of a #JsonObject.
+increased by one.">
+        <return-value transfer-ownership="full">
+          <type name="JsonObject" c:type="JsonObject*"/>
+        </return-value>
+      </method>
+      <method name="unref"
+              c:identifier="json_object_unref"
+              doc="Decreases by one the reference count of a #JsonObject. If the
+reference count reaches zero, the object is destroyed and all
+its allocated resources are freed.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="add_member"
+              c:identifier="json_object_add_member"
+              doc="Adds a member named @member_name and containing @node into a #JsonObject.
+The object will take ownership of the #JsonNode.
+This function will return if the @object already contains a member"
+              deprecated="Use json_object_set_member() instead"
+              deprecated-version="0.8">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="member_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="node" transfer-ownership="none">
+            <type name="JsonNode" c:type="JsonNode*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_member"
+              c:identifier="json_object_set_member"
+              doc="Sets @node as the value of @member_name inside @object.
+If @object already contains a member called @member_name then
+the member&apos;s current value is overwritten. Otherwise, a new
+member is added to @object."
+              version="0.8">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="member_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="node" transfer-ownership="none">
+            <type name="JsonNode" c:type="JsonNode*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_int_member"
+              c:identifier="json_object_set_int_member"
+              doc="Convenience function for setting an integer @value of"
+              version="0.8">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="member_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_double_member"
+              c:identifier="json_object_set_double_member"
+              doc="Convenience function for setting a floating point @value
+of @member_name inside @object."
+              version="0.8">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="member_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_boolean_member"
+              c:identifier="json_object_set_boolean_member"
+              doc="Convenience function for setting a boolean @value of"
+              version="0.8">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="member_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_string_member"
+              c:identifier="json_object_set_string_member"
+              doc="Convenience function for setting a string @value of"
+              version="0.8">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="member_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_null_member"
+              c:identifier="json_object_set_null_member"
+              doc="Convenience function for setting a null @value of"
+              version="0.8">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="member_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_array_member"
+              c:identifier="json_object_set_array_member"
+              doc="Convenience function for setting an array @value of
+The @object will take ownership of the passed #JsonArray"
+              version="0.8">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="member_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="JsonArray" c:type="JsonArray*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_object_member"
+              c:identifier="json_object_set_object_member"
+              doc="Convenience function for setting an object @value of
+The @object will take ownership of the passed #JsonObject"
+              version="0.8">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="member_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="JsonObject" c:type="JsonObject*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_members"
+              c:identifier="json_object_get_members"
+              doc="Retrieves all the names of the members of a #JsonObject. You can
+obtain the value for each member using json_object_get_member().
+is owned by the #JsonObject and should never be modified or
+freed. When you have finished using the returned list, use
+g_list_free() to free the resources it has allocated.">
+        <return-value transfer-ownership="full">
+          <type name="GLib.List" c:type="GList*"/>
+        </return-value>
+      </method>
+      <method name="get_member"
+              c:identifier="json_object_get_member"
+              doc="Retrieves the #JsonNode containing the value of @member_name inside
+a #JsonObject.
+member, or %NULL">
+        <return-value transfer-ownership="full">
+          <type name="JsonNode" c:type="JsonNode*"/>
+        </return-value>
+        <parameters>
+          <parameter name="member_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="dup_member"
+              c:identifier="json_object_dup_member"
+              doc="Retrieves a copy of the #JsonNode containing the value of @member_name
+inside a #JsonObject
+or %NULL. Use json_node_free() when done."
+              version="0.6">
+        <return-value transfer-ownership="full">
+          <type name="JsonNode" c:type="JsonNode*"/>
+        </return-value>
+        <parameters>
+          <parameter name="member_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_int_member"
+              c:identifier="json_object_get_int_member"
+              doc="Convenience function that retrieves the integer value
+stored in @member_name of @object"
+              version="0.8">
+        <return-value transfer-ownership="none">
+          <type name="int64" c:type="gint64"/>
+        </return-value>
+        <parameters>
+          <parameter name="member_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_double_member"
+              c:identifier="json_object_get_double_member"
+              doc="Convenience function that retrieves the floating point value
+stored in @member_name of @object"
+              version="0.8">
+        <return-value transfer-ownership="none">
+          <type name="double" c:type="gdouble"/>
+        </return-value>
+        <parameters>
+          <parameter name="member_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_boolean_member"
+              c:identifier="json_object_get_boolean_member"
+              doc="Convenience function that retrieves the boolean value
+stored in @member_name of @object"
+              version="0.8">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="member_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_string_member"
+              c:identifier="json_object_get_string_member"
+              doc="Convenience function that retrieves the string value
+stored in @member_name of @object"
+              version="0.8">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="member_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_null_member"
+              c:identifier="json_object_get_null_member"
+              doc="Convenience function that checks whether the value
+stored in @member_name of @object is null"
+              version="0.8">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="member_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_array_member"
+              c:identifier="json_object_get_array_member"
+              doc="Convenience function that retrieves the array
+stored in @member_name of @object"
+              version="0.8">
+        <return-value transfer-ownership="full">
+          <type name="JsonArray" c:type="JsonArray*"/>
+        </return-value>
+        <parameters>
+          <parameter name="member_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_object_member"
+              c:identifier="json_object_get_object_member"
+              doc="Convenience function that retrieves the object
+stored in @member_name of @object"
+              version="0.8">
+        <return-value transfer-ownership="full">
+          <type name="JsonObject" c:type="JsonObject*"/>
+        </return-value>
+        <parameters>
+          <parameter name="member_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="has_member"
+              c:identifier="json_object_has_member"
+              doc="Checks whether @object has a member named @member_name.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="member_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_member"
+              c:identifier="json_object_remove_member"
+              doc="Removes @member_name from @object, freeing its allocated resources.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="member_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_values"
+              c:identifier="json_object_get_values"
+              doc="Retrieves all the values of the members of a #JsonObject.
+list is owned by the #JsonObject and should never be modified
+or freed. When you have finished using the returned list, use
+g_list_free() to free the resources it has allocated.">
+        <return-value transfer-ownership="full">
+          <type name="GLib.List" c:type="GList*"/>
+        </return-value>
+      </method>
+      <method name="get_size"
+              c:identifier="json_object_get_size"
+              doc="Retrieves the number of members of a #JsonObject.">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="foreach_member"
+              c:identifier="json_object_foreach_member"
+              doc="Iterates over all members of @object and calls @func on
+each one of them.
+It is safe to change the value of a #JsonNode of the @object
+from within the iterator @func, but it is not safe to add or
+remove members from the @object."
+              version="0.8">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="2">
+            <type name="JsonObjectForeach" c:type="JsonObjectForeach"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <callback name="JsonObjectForeach"
+              c:type="JsonObjectForeach"
+              doc="The function to be passed to json_object_foreach_member(). You
+should not add or remove members to and from @object within
+this function. It is safe to change the value of @member_node."
+              version="0.8">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="object" transfer-ownership="none">
+          <type name="JsonObject" c:type="JsonObject*"/>
+        </parameter>
+        <parameter name="member_name" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="member_node" transfer-ownership="none">
+          <type name="JsonNode" c:type="JsonNode*"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="3">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <class name="JsonParser"
+           c:type="JsonParser"
+           doc="JSON data streams parser. The contents of the #JsonParser structure are
+private and should only be accessed via the provided API."
+           parent="GObject.Object"
+           glib:type-name="JsonParser"
+           glib:get-type="json_parser_get_type"
+           glib:type-struct="JsonParserClass">
+      <constructor name="new"
+                   c:identifier="json_parser_new"
+                   doc="Creates a new #JsonParser instance. You can use the #JsonParser to
+load a JSON stream from either a file or a buffer and then walk the
+hierarchy using the data types API.
+to release all the memory it allocates.">
+        <return-value transfer-ownership="full">
+          <type name="JsonParser" c:type="JsonParser*"/>
+        </return-value>
+      </constructor>
+      <method name="load_from_file"
+              c:identifier="json_parser_load_from_file"
+              doc="Loads a JSON stream from the content of @filename and parses it. See
+json_parser_load_from_data().
+In case of error, @error is set accordingly and %FALSE is returned"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="filename" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="load_from_data"
+              c:identifier="json_parser_load_from_data"
+              doc="Loads a JSON stream from a buffer and parses it. You can call this function
+multiple times with the same #JsonParser object, but the contents of the
+parser will be destroyed each time.
+of error, @error is set accordingly and %FALSE is returned"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="length" transfer-ownership="none">
+            <type name="ssize_t" c:type="gssize"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_root"
+              c:identifier="json_parser_get_root"
+              doc="Retrieves the top level node from the parsed JSON stream.
+is owned by the #JsonParser and should never be modified or freed.">
+        <return-value transfer-ownership="none"
+                      doc="the root #JsonNode . The returned node">
+          <type name="JsonNode" c:type="JsonNode*"/>
+        </return-value>
+      </method>
+      <method name="get_current_line"
+              c:identifier="json_parser_get_current_line"
+              doc="Retrieves the line currently parsed, starting from 1.">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="get_current_pos"
+              c:identifier="json_parser_get_current_pos"
+              doc="Retrieves the current position inside the current line, starting
+from 0.">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </method>
+      <field name="parent_instance">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="priv">
+        <type name="JsonParserPrivate" c:type="JsonParserPrivate*"/>
+      </field>
+      <glib:signal name="array-element"
+                   doc="The ::array-element signal is emitted each time the #JsonParser
+has successfully parsed a single element of a #JsonArray. The
+array and element index are passed to the signal handlers.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="array" transfer-ownership="none">
+            <type name="JsonArray" c:type="JsonArray"/>
+          </parameter>
+          <parameter name="index_" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="array-end"
+                   doc="The ::array-end signal is emitted each time the #JsonParser
+has successfully parsed an entire #JsonArray">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="array" transfer-ownership="none">
+            <type name="JsonArray" c:type="JsonArray"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="array-start"
+                   doc="The ::array-start signal is emitted each time the #JsonParser
+starts parsing a #JsonArray">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="error"
+                   doc="The ::error signal is emitted each time a #JsonParser encounters
+an error in a JSON stream.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="error" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="object-end"
+                   doc="The ::object-end signal is emitted each time the #JsonParser
+has successfully parsed an entire #JsonObject.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="JsonObject" c:type="JsonObject"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="object-member"
+                   doc="The ::object-member signal is emitted each time the #JsonParser
+has successfully parsed a single member of a #JsonObject. The
+object and member are passed to the signal handlers.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="JsonObject" c:type="JsonObject"/>
+          </parameter>
+          <parameter name="member_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchararray"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="object-start"
+                   doc="The ::object-start signal is emitted each time the #JsonParser
+starts parsing a #JsonObject.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="parse-end"
+                   doc="The ::parse-end signal is emitted when the parser successfully
+finished parsing a JSON data stream">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="parse-start"
+                   doc="The ::parse-start signal is emitted when the parser began parsing
+a JSON data stream.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+    </class>
+    <record name="JsonParserClass"
+            c:type="JsonParserClass"
+            glib:is-gtype-struct-for="JsonParser"
+            doc="#JsonParser class.">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="parse_start">
+        <callback name="parse_start" c:type="parse_start">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="parser" transfer-ownership="none">
+              <type name="JsonParser" c:type="JsonParser*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="object_start">
+        <callback name="object_start" c:type="object_start">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="parser" transfer-ownership="none">
+              <type name="JsonParser" c:type="JsonParser*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="object_member">
+        <callback name="object_member" c:type="object_member">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="parser" transfer-ownership="none">
+              <type name="JsonParser" c:type="JsonParser*"/>
+            </parameter>
+            <parameter name="object" transfer-ownership="none">
+              <type name="JsonObject" c:type="JsonObject*"/>
+            </parameter>
+            <parameter name="member_name" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="object_end">
+        <callback name="object_end" c:type="object_end">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="parser" transfer-ownership="none">
+              <type name="JsonParser" c:type="JsonParser*"/>
+            </parameter>
+            <parameter name="object" transfer-ownership="none">
+              <type name="JsonObject" c:type="JsonObject*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="array_start">
+        <callback name="array_start" c:type="array_start">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="parser" transfer-ownership="none">
+              <type name="JsonParser" c:type="JsonParser*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="array_element">
+        <callback name="array_element" c:type="array_element">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="parser" transfer-ownership="none">
+              <type name="JsonParser" c:type="JsonParser*"/>
+            </parameter>
+            <parameter name="array" transfer-ownership="none">
+              <type name="JsonArray" c:type="JsonArray*"/>
+            </parameter>
+            <parameter name="index_" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="array_end">
+        <callback name="array_end" c:type="array_end">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="parser" transfer-ownership="none">
+              <type name="JsonParser" c:type="JsonParser*"/>
+            </parameter>
+            <parameter name="array" transfer-ownership="none">
+              <type name="JsonArray" c:type="JsonArray*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="parse_end">
+        <callback name="parse_end" c:type="parse_end">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="parser" transfer-ownership="none">
+              <type name="JsonParser" c:type="JsonParser*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="error">
+        <callback name="error" c:type="error">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="parser" transfer-ownership="none">
+              <type name="JsonParser" c:type="JsonParser*"/>
+            </parameter>
+            <parameter name="error" transfer-ownership="none">
+              <type name="GLib.Error" c:type="GError*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="json_reserved1">
+        <callback name="json_reserved1" c:type="_json_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="json_reserved2">
+        <callback name="json_reserved2" c:type="_json_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="json_reserved3">
+        <callback name="json_reserved3" c:type="_json_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="json_reserved4">
+        <callback name="json_reserved4" c:type="_json_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="json_reserved5">
+        <callback name="json_reserved5" c:type="_json_reserved5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="json_reserved6">
+        <callback name="json_reserved6" c:type="_json_reserved6">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="json_reserved7">
+        <callback name="json_reserved7" c:type="_json_reserved7">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="json_reserved8">
+        <callback name="json_reserved8" c:type="_json_reserved8">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <enumeration name="JsonParserError"
+                 doc="Error enumeration for #JsonParser"
+                 c:type="JsonParserError"
+                 glib:error-quark="json_parser_error_quark">
+      <member name="parse" value="0" c:identifier="JSON_PARSER_ERROR_PARSE"/>
+      <member name="unknown"
+              value="1"
+              c:identifier="JSON_PARSER_ERROR_UNKNOWN"/>
+    </enumeration>
+    <record name="JsonParserPrivate" c:type="JsonParserPrivate">
+    </record>
+    <enumeration name="JsonTokenType" c:type="JsonTokenType">
+      <member name="invalid" value="270" c:identifier="JSON_TOKEN_INVALID"/>
+      <member name="true" value="271" c:identifier="JSON_TOKEN_TRUE"/>
+      <member name="false" value="272" c:identifier="JSON_TOKEN_FALSE"/>
+      <member name="null" value="273" c:identifier="JSON_TOKEN_NULL"/>
+      <member name="last" value="274" c:identifier="JSON_TOKEN_LAST"/>
+    </enumeration>
+    <function name="json_array_sized_new"
+              c:identifier="json_array_sized_new"
+              doc="Creates a new #JsonArray with @n_elements slots already allocated.">
+      <return-value transfer-ownership="full">
+        <type name="JsonArray" c:type="JsonArray*"/>
+      </return-value>
+      <parameters>
+        <parameter name="n_elements" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+  </namespace>
+</repository>
diff --git a/extra/clutter/json/ffi/ffi.factor b/extra/clutter/json/ffi/ffi.factor
new file mode 100644 (file)
index 0000000..e9b811c
--- /dev/null
@@ -0,0 +1,16 @@
+! Copyright (C) 2010 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: alien alien.libraries combinators kernel system
+gobject-introspection glib.ffi gobject.ffi ;
+IN: clutter.json.ffi
+
+<<
+"clutter.json" {
+    { [ os winnt? ] [ drop ] }
+    { [ os macosx? ] [ drop ] }
+    { [ os unix? ] [ "libclutter-glx-1.0.so" cdecl add-library ] }
+} cond
+>>
+
+GIR: vocab:clutter/json/ClutterJson-1.0.gir
+
diff --git a/extra/clutter/json/json.factor b/extra/clutter/json/json.factor
new file mode 100644 (file)
index 0000000..9530483
--- /dev/null
@@ -0,0 +1,5 @@
+! Copyright (C) 2010 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: clutter.json.ffi ;
+IN: clutter.json
+
diff --git a/extra/clutter/summary.txt b/extra/clutter/summary.txt
new file mode 100644 (file)
index 0000000..e7b8c48
--- /dev/null
@@ -0,0 +1 @@
+Clutter binding
diff --git a/extra/clutter/tags.txt b/extra/clutter/tags.txt
new file mode 100755 (executable)
index 0000000..bb863cf
--- /dev/null
@@ -0,0 +1 @@
+bindings
index 4a102deeb1561d583a00bb8bc17bd9ced721ad29..18ca0d02aa47e92a9424f3daba5a6a60f83f65b5 100644 (file)
@@ -1,7 +1,7 @@
 ! Copyright (C) 2010 Dmitry Shubin.
 ! See http://factorcode.org/license.txt for BSD license.
 USING: accessors arrays continuations gdbm io.directories
-io.files.temp kernel sequences sets tools.test ;
+io.files.temp kernel sequences sets system tools.test ;
 IN: gdbm.tests
 
 : db-path ( -- filename ) "test.db" temp-file ;
@@ -12,52 +12,53 @@ IN: gdbm.tests
 
 : with-test.db ( quot -- ) test.db swap with-gdbm ; inline
 
+os windows? cpu x86.64? and [
+    CLEANUP
 
-CLEANUP
 
+    [
+        test.db reader >>role [ ] with-gdbm
+    ] [ gdbm-file-open-error = ] must-fail-with
 
-[
-    test.db reader >>role [ ] with-gdbm
-] [ gdbm-file-open-error = ] must-fail-with
-
-[ f ] [ [ "foo" exists? ] with-test.db ] unit-test
+    [ f ] [ [ "foo" exists? ] with-test.db ] unit-test
 
-[ ] [ [ "foo" 41 insert ] with-test.db ] unit-test
+    [ ] [ [ "foo" 41 insert ] with-test.db ] unit-test
 
-[
-    db-path [ "foo" 42 insert ] with-gdbm-writer
-] [ gdbm-cannot-replace = ] must-fail-with
+    [
+        db-path [ "foo" 42 insert ] with-gdbm-writer
+    ] [ gdbm-cannot-replace = ] must-fail-with
 
-[ ]
-[
+    [ ]
     [
-        "foo" 42 replace
-        "bar" 43 replace
-        "baz" 44 replace
-    ] with-test.db
-] unit-test
+        [
+            "foo" 42 replace
+            "bar" 43 replace
+            "baz" 44 replace
+        ] with-test.db
+    ] unit-test
 
-[ 42 t ] [ db-path [ "foo" fetch* ] with-gdbm-reader ] unit-test
+    [ 42 t ] [ db-path [ "foo" fetch* ] with-gdbm-reader ] unit-test
 
-[ f f ] [ [ "unknown" fetch* ] with-test.db ] unit-test
+    [ f f ] [ [ "unknown" fetch* ] with-test.db ] unit-test
 
-[
     [
-        300 set-cache-size 300 set-cache-size
-    ] with-test.db
-] [ gdbm-option-already-set = ] must-fail-with
+        [
+            300 set-cache-size 300 set-cache-size
+        ] with-test.db
+    ] [ gdbm-option-already-set = ] must-fail-with
 
-[ t ]
-[
-    V{ } [ [ 2array append ] each-record ] with-test.db
-    V{ "foo" "bar" "baz" 42 43 44 } set=
+    [ t ]
+    [
+        V{ } [ [ 2array append ] each-record ] with-test.db
+        V{ "foo" "bar" "baz" 42 43 44 } set=
 
-] unit-test
+    ] unit-test
 
-[ f ]
-[
-    test.db newdb >>role [ "foo" exists? ] with-gdbm
-] unit-test
+    [ f ]
+    [
+        test.db newdb >>role [ "foo" exists? ] with-gdbm
+    ] unit-test
 
 
-CLEANUP
+    CLEANUP
+] unless
index 28deff905c39ed1924d7613ed4f2b8721b24f00d..f29e12c1a27a4673393d40e1fe6f71da7caa83f9 100644 (file)
@@ -119,10 +119,6 @@ UNIFORM-TUPLE: loading-uniforms
     100000 <uint-vector>
     (parse-bunny-model) ; inline
 
-:: normal ( a b c -- normal )
-    c a v-
-    b a v- cross normalize ; inline
-
 :: calc-bunny-normal ( a b c vertexes -- )
     a b c [ vertexes nth vertex>> ] tri@ normal :> n
     a b c [ vertexes nth [ n v+ ] change-normal drop ] tri@ ; inline
diff --git a/extra/gstreamer/Gst-0.10.gir b/extra/gstreamer/Gst-0.10.gir
new file mode 100644 (file)
index 0000000..d187fe1
--- /dev/null
@@ -0,0 +1,22063 @@
+<?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.0"
+            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="GLib" version="2.0"/>
+  <include name="GModule" version="2.0"/>
+  <include name="GObject" version="2.0"/>
+  <include name="libxml2" version="2.0"/>
+  <package name="glib-2.0"/>
+  <package name="gmodule-no-export-2.0"/>
+  <package name="gobject-2.0"/>
+  <package name="gthread-2.0"/>
+  <package name="libxml-2.0"/>
+  <c:include name="gst/gst.h"/>
+  <namespace name="Gst"
+             version="0.10"
+             shared-library="libgstreamer-0.10.so.0"
+             c:prefix="Gst">
+    <alias name="ClockID" target="any" c:type="GstClockID"/>
+    <alias name="ClockTime" target="uint64" c:type="GstClockTime"/>
+    <alias name="ClockTimeDiff" target="int64" c:type="GstClockTimeDiff"/>
+    <enumeration name="ActivateMode"
+                 doc="The status of a GstPad. After activating a pad, which usually happens when the
+parent element goes from READY to PAUSED, the GstActivateMode defines if the
+pad operates in push or pull mode."
+                 c:type="GstActivateMode">
+      <member name="none" value="0" c:identifier="GST_ACTIVATE_NONE"/>
+      <member name="push" value="1" c:identifier="GST_ACTIVATE_PUSH"/>
+      <member name="pull" value="2" c:identifier="GST_ACTIVATE_PULL"/>
+    </enumeration>
+    <record name="AllocTrace"
+            c:type="GstAllocTrace"
+            doc="The main tracing object">
+      <field name="name" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="flags" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="live" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="mem_live" writable="1">
+        <type name="GLib.SList" c:type="GSList*"/>
+      </field>
+      <method name="print"
+              c:identifier="gst_alloc_trace_print"
+              doc="Print the status of the given GstAllocTrace.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="set_flags"
+              c:identifier="gst_alloc_trace_set_flags"
+              doc="Enable the given features on the given GstAllocTrace object.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="AllocTraceFlags" c:type="GstAllocTraceFlags"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <bitfield name="AllocTraceFlags"
+              doc="Flags indicating which tracing feature to enable."
+              c:type="GstAllocTraceFlags">
+      <member name="live" value="1" c:identifier="GST_ALLOC_TRACE_LIVE"/>
+      <member name="mem_live"
+              value="2"
+              c:identifier="GST_ALLOC_TRACE_MEM_LIVE"/>
+    </bitfield>
+    <bitfield name="AssocFlags"
+              doc="that marks a place where one can randomly seek to.
+is one that marks a place where one can relatively seek to.
+Flags for an association entry."
+              c:type="GstAssocFlags">
+      <member name="none" value="0" c:identifier="GST_ASSOCIATION_FLAG_NONE"/>
+      <member name="key_unit"
+              value="1"
+              c:identifier="GST_ASSOCIATION_FLAG_KEY_UNIT"/>
+      <member name="delta_unit"
+              value="2"
+              c:identifier="GST_ASSOCIATION_FLAG_DELTA_UNIT"/>
+      <member name="last"
+              value="256"
+              c:identifier="GST_ASSOCIATION_FLAG_LAST"/>
+    </bitfield>
+    <constant name="BUFFER_COPY_ALL" value="0">
+      <type name="int"/>
+    </constant>
+    <constant name="BUFFER_OFFSET_NONE" value="-1">
+      <type name="int"/>
+    </constant>
+    <constant name="BUFFER_TRACE_NAME" value="GstBuffer">
+      <type name="utf8"/>
+    </constant>
+    <class name="Bin"
+           c:type="GstBin"
+           doc="The GstBin base class. Subclasses can access these fields provided
+the LOCK is taken."
+           parent="Element"
+           glib:type-name="GstBin"
+           glib:get-type="gst_bin_get_type"
+           glib:type-struct="BinClass">
+      <implements name="ChildProxy"/>
+      <constructor name="new"
+                   c:identifier="gst_bin_new"
+                   doc="Creates a new bin with the given name.">
+        <return-value transfer-ownership="full">
+          <type name="Bin" c:type="GstElement*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <virtual-method name="add_element">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="element" transfer-ownership="none">
+            <type name="Element" c:type="GstElement*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="remove_element">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="element" transfer-ownership="none">
+            <type name="Element" c:type="GstElement*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="handle_message">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="message" transfer-ownership="none">
+            <type name="Message" c:type="GstMessage*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="add"
+              c:identifier="gst_bin_add"
+              doc="Adds the given element to the bin.  Sets the element&apos;s parent, and thus
+takes ownership of the element. An element can only be added to one bin.
+If the element&apos;s pads are linked to other pads, the pads will be unlinked
+before the element is added to the bin.
+MT safe.
+the bin does not want to accept the element.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="element" transfer-ownership="none">
+            <type name="Element" c:type="GstElement*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove"
+              c:identifier="gst_bin_remove"
+              doc="Removes the element from the bin, unparenting it as well.
+Unparenting the element means that the element will be dereferenced,
+so if the bin holds the only reference to the element, the element
+will be freed in the process of removing it from the bin.  If you
+want the element to still exist after removing, you need to call
+gst_object_ref() before removing it from the bin.
+If the element&apos;s pads are linked to other pads, the pads will be unlinked
+before the element is removed from the bin.
+MT safe.
+the bin does not want to remove the element.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="element" transfer-ownership="none">
+            <type name="Element" c:type="GstElement*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_by_name"
+              c:identifier="gst_bin_get_by_name"
+              doc="Gets the element with the given name from a bin. This
+function recurses into child bins.
+Returns NULL if no element with the given name is found in the bin.
+MT safe.  Caller owns returned reference.">
+        <return-value transfer-ownership="full">
+          <type name="Element" c:type="GstElement*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_by_name_recurse_up"
+              c:identifier="gst_bin_get_by_name_recurse_up"
+              doc="Gets the element with the given name from this bin. If the
+element is not found, a recursion is performed on the parent bin.
+Returns NULL if:
+- no element with the given name is found in the bin
+MT safe.  Caller owns returned reference.">
+        <return-value transfer-ownership="full">
+          <type name="Element" c:type="GstElement*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_by_interface"
+              c:identifier="gst_bin_get_by_interface"
+              doc="Looks for an element inside the bin that implements the given
+interface. If such an element is found, it returns the element.
+You can cast this element to the given interface afterwards.  If you want
+all elements that implement the interface, use
+gst_bin_iterate_all_by_interface(). This function recurses into child bins.
+MT safe.  Caller owns returned reference.">
+        <return-value transfer-ownership="full">
+          <type name="Element" c:type="GstElement*"/>
+        </return-value>
+        <parameters>
+          <parameter name="iface" transfer-ownership="none">
+            <type name="GType" c:type="GType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="iterate_elements"
+              c:identifier="gst_bin_iterate_elements"
+              doc="Gets an iterator for the elements in this bin.
+Each element yielded by the iterator will have its refcount increased, so
+unref after use.
+MT safe.  Caller owns returned value.">
+        <return-value transfer-ownership="full">
+          <type name="Iterator" c:type="GstIterator*"/>
+        </return-value>
+      </method>
+      <method name="iterate_sorted"
+              c:identifier="gst_bin_iterate_sorted"
+              doc="Gets an iterator for the elements in this bin in topologically
+sorted order. This means that the elements are returned from
+the most downstream elements (sinks) to the sources.
+This function is used internally to perform the state changes
+of the bin elements and for clock selection.
+Each element yielded by the iterator will have its refcount increased, so
+unref after use.
+MT safe.  Caller owns returned value.">
+        <return-value transfer-ownership="full">
+          <type name="Iterator" c:type="GstIterator*"/>
+        </return-value>
+      </method>
+      <method name="iterate_recurse"
+              c:identifier="gst_bin_iterate_recurse"
+              doc="Gets an iterator for the elements in this bin.
+This iterator recurses into GstBin children.
+Each element yielded by the iterator will have its refcount increased, so
+unref after use.
+MT safe.  Caller owns returned value.">
+        <return-value transfer-ownership="full">
+          <type name="Iterator" c:type="GstIterator*"/>
+        </return-value>
+      </method>
+      <method name="iterate_sinks"
+              c:identifier="gst_bin_iterate_sinks"
+              doc="Gets an iterator for all elements in the bin that have the
+#GST_ELEMENT_IS_SINK flag set.
+Each element yielded by the iterator will have its refcount increased, so
+unref after use.
+MT safe.  Caller owns returned value.">
+        <return-value transfer-ownership="full">
+          <type name="Iterator" c:type="GstIterator*"/>
+        </return-value>
+      </method>
+      <method name="iterate_sources"
+              c:identifier="gst_bin_iterate_sources"
+              doc="Gets an iterator for all elements in the bin that have no sinkpads and have
+the #GST_ELEMENT_IS_SINK flag unset.
+Each element yielded by the iterator will have its refcount increased, so
+unref after use.
+MT safe.  Caller owns returned value.">
+        <return-value transfer-ownership="full">
+          <type name="Iterator" c:type="GstIterator*"/>
+        </return-value>
+      </method>
+      <method name="iterate_all_by_interface"
+              c:identifier="gst_bin_iterate_all_by_interface"
+              doc="Looks for all elements inside the bin that implements the given
+interface. You can safely cast all returned elements to the given interface.
+The function recurses inside child bins. The iterator will yield a series
+of #GstElement that should be unreffed after use.
+Each element yielded by the iterator will have its refcount increased, so
+unref after use.
+MT safe.  Caller owns returned value.
+implementing the given interface, or NULL">
+        <return-value transfer-ownership="full">
+          <type name="Iterator" c:type="GstIterator*"/>
+        </return-value>
+        <parameters>
+          <parameter name="iface" transfer-ownership="none">
+            <type name="GType" c:type="GType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="recalculate_latency"
+              c:identifier="gst_bin_recalculate_latency"
+              doc="Query @bin for the current latency using and reconfigures this latency to all the
+elements with a LATENCY event.
+This method is typically called on the pipeline when a #GST_MESSAGE_LATENCY
+is posted on the bus.
+This function simply emits the &apos;do-latency&apos; signal so any custom latency
+calculations will be performed."
+              version="0.10.22.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="add_many"
+              c:identifier="gst_bin_add_many"
+              doc="Adds a NULL-terminated list of elements to a bin.  This function is
+equivalent to calling gst_bin_add() for each member of the list. The return
+value of each gst_bin_add() is ignored.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="element_1" transfer-ownership="none">
+            <type name="Element" c:type="GstElement*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_many"
+              c:identifier="gst_bin_remove_many"
+              doc="Remove a list of elements from a bin. This function is equivalent
+to calling gst_bin_remove() with each member of the list.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="element_1" transfer-ownership="none">
+            <type name="Element" c:type="GstElement*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="find_unlinked_pad"
+              c:identifier="gst_bin_find_unlinked_pad"
+              doc="Recursively looks for elements with an unlinked pad of the given
+direction within the specified bin and returns an unlinked pad
+if one is found, or NULL otherwise. If a pad is found, the caller
+owns a reference to it and should use gst_object_unref() on the
+pad when it is not needed any longer."
+              version="0.10.20">
+        <return-value transfer-ownership="full">
+          <type name="Pad" c:type="GstPad*"/>
+        </return-value>
+        <parameters>
+          <parameter name="direction" transfer-ownership="none">
+            <type name="PadDirection" c:type="GstPadDirection"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="find_unconnected_pad"
+              c:identifier="gst_bin_find_unconnected_pad"
+              doc="Recursively looks for elements with an unlinked pad of the given
+direction within the specified bin and returns an unlinked pad
+if one is found, or NULL otherwise. If a pad is found, the caller
+owns a reference to it and should use gst_object_unref() on the
+pad when it is not needed any longer."
+              version="0.10.3"
+              deprecated="use gst_bin_find_unlinked_pad() instead.">
+        <return-value transfer-ownership="full">
+          <type name="Pad" c:type="GstPad*"/>
+        </return-value>
+        <parameters>
+          <parameter name="direction" transfer-ownership="none">
+            <type name="PadDirection" c:type="GstPadDirection"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="async-handling" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <field name="element">
+        <type name="Element" c:type="GstElement"/>
+      </field>
+      <field name="numchildren">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="children">
+        <type name="GLib.List" c:type="GList*"/>
+      </field>
+      <field name="children_cookie">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+      <field name="child_bus">
+        <type name="Bus" c:type="GstBus*"/>
+      </field>
+      <field name="messages">
+        <type name="GLib.List" c:type="GList*"/>
+      </field>
+      <field name="polling">
+        <type name="boolean" c:type="gboolean"/>
+      </field>
+      <field name="state_dirty">
+        <type name="boolean" c:type="gboolean"/>
+      </field>
+      <field name="clock_dirty">
+        <type name="boolean" c:type="gboolean"/>
+      </field>
+      <field name="provided_clock">
+        <type name="Clock" c:type="GstClock*"/>
+      </field>
+      <field name="clock_provider">
+        <type name="Element" c:type="GstElement*"/>
+      </field>
+      <field name="priv">
+        <type name="BinPrivate" c:type="GstBinPrivate*"/>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="3">
+          <type name="any"/>
+        </array>
+      </field>
+      <glib:signal name="do-latency"
+                   doc="Will be emitted when the bin needs to perform latency calculations. This
+signal is only emited for toplevel bins or when async-handling is
+enabled.
+Only one signal handler is invoked. If no signals are connected, the
+default handler is invoked, which will query and distribute the lowest
+possible latency to all sinks.
+Connect to this signal if the default latency calculations are not
+sufficient, like when you need different latencies for different sinks in
+the same pipeline."
+                   version="0.10.22">
+        <return-value transfer-ownership="full">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="element-added"
+                   doc="Will be emitted after the element was added to the bin.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="element" transfer-ownership="none">
+            <type name="Element" c:type="GstElement"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="element-removed"
+                   doc="Will be emitted after the element was removed from the bin.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="element" transfer-ownership="none">
+            <type name="Element" c:type="GstElement"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <record name="BinClass"
+            c:type="GstBinClass"
+            glib:is-gtype-struct-for="Bin"
+            doc="Subclasses can override the @add_element and @remove_element to
+update the list of children in the bin.
+The @handle_message method can be overridden to implement custom
+message handling.  @handle_message takes ownership of the message, just like
+#gst_element_post_message.">
+      <field name="parent_class">
+        <type name="ElementClass" c:type="GstElementClass"/>
+      </field>
+      <field name="pool">
+        <type name="GLib.ThreadPool" c:type="GThreadPool*"/>
+      </field>
+      <field name="element_added">
+        <callback name="element_added" c:type="element_added">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="bin" transfer-ownership="none">
+              <type name="Bin" c:type="GstBin*"/>
+            </parameter>
+            <parameter name="child" transfer-ownership="none">
+              <type name="Element" c:type="GstElement*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="element_removed">
+        <callback name="element_removed" c:type="element_removed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="bin" transfer-ownership="none">
+              <type name="Bin" c:type="GstBin*"/>
+            </parameter>
+            <parameter name="child" transfer-ownership="none">
+              <type name="Element" c:type="GstElement*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="add_element">
+        <callback name="add_element" c:type="add_element">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="bin" transfer-ownership="none">
+              <type name="Bin" c:type="GstBin*"/>
+            </parameter>
+            <parameter name="element" transfer-ownership="none">
+              <type name="Element" c:type="GstElement*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="remove_element">
+        <callback name="remove_element" c:type="remove_element">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="bin" transfer-ownership="none">
+              <type name="Bin" c:type="GstBin*"/>
+            </parameter>
+            <parameter name="element" transfer-ownership="none">
+              <type name="Element" c:type="GstElement*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="handle_message">
+        <callback name="handle_message" c:type="handle_message">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="bin" transfer-ownership="none">
+              <type name="Bin" c:type="GstBin*"/>
+            </parameter>
+            <parameter name="message" transfer-ownership="none">
+              <type name="Message" c:type="GstMessage*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="do_latency">
+        <callback name="do_latency" c:type="do_latency">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="bin" transfer-ownership="none">
+              <type name="Bin" c:type="GstBin*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="3">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <bitfield name="BinFlags"
+              doc="Derived classes can use this as first value in a list of flags.
+GstBinFlags are a set of flags specific to bins. Most are set/used
+internally. They can be checked using the GST_OBJECT_FLAG_IS_SET () macro,
+and (un)set using GST_OBJECT_FLAG_SET () and GST_OBJECT_FLAG_UNSET ()."
+              c:type="GstBinFlags">
+      <member name="bin_flag_last"
+              value="33554432"
+              c:identifier="GST_BIN_FLAG_LAST"/>
+    </bitfield>
+    <record name="BinPrivate" c:type="GstBinPrivate">
+    </record>
+    <record name="Buffer"
+            c:type="GstBuffer"
+            doc="timestamp is not known or relevant.
+when the duration is not known or relevant.
+For video frames, this is the frame number of this buffer.
+For audio samples, this is the offset of the first sample in this buffer.
+For file data or compressed data this is the byte offset of the first
+byte in this buffer.
+format as @offset.
+When the buffer is freed, this data will freed with @free_func.
+to g_free(). Since 0.10.22.
+The structure of a #GstBuffer. Use the associated macros to access the public
+variables.">
+      <field name="mini_object" writable="1">
+        <type name="MiniObject" c:type="GstMiniObject"/>
+      </field>
+      <field name="data" writable="1">
+        <type name="any" c:type="guint8*"/>
+      </field>
+      <field name="size" writable="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="timestamp" writable="1">
+        <type name="ClockTime" c:type="GstClockTime"/>
+      </field>
+      <field name="duration" writable="1">
+        <type name="ClockTime" c:type="GstClockTime"/>
+      </field>
+      <field name="caps" writable="1">
+        <type name="Caps" c:type="GstCaps*"/>
+      </field>
+      <field name="offset" writable="1">
+        <type name="uint64" c:type="guint64"/>
+      </field>
+      <field name="offset_end" writable="1">
+        <type name="uint64" c:type="guint64"/>
+      </field>
+      <field name="malloc_data" writable="1">
+        <type name="any" c:type="guint8*"/>
+      </field>
+      <field name="free_func" writable="1">
+        <type name="GLib.FreeFunc" c:type="GFreeFunc"/>
+      </field>
+      <field name="parent" writable="1">
+        <type name="Buffer" c:type="GstBuffer*"/>
+      </field>
+      <field name="_gst_reserved" writable="1">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="2">
+          <type name="any"/>
+        </array>
+      </field>
+      <constructor name="new"
+                   c:identifier="gst_buffer_new"
+                   doc="Creates a newly allocated buffer without any data.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="Buffer" c:type="GstBuffer*"/>
+        </return-value>
+      </constructor>
+      <constructor name="new_and_alloc"
+                   c:identifier="gst_buffer_new_and_alloc"
+                   doc="Creates a newly allocated buffer with data of the given size.
+The buffer memory is not cleared. If the requested amount of
+memory can&apos;t be allocated, the program will abort. Use
+gst_buffer_try_new_and_alloc() if you want to handle this case
+gracefully or have gotten the size to allocate from an untrusted
+source such as a media stream.
+Note that when @size == 0, the buffer data pointer will be NULL.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="Buffer" c:type="GstBuffer*"/>
+        </return-value>
+        <parameters>
+          <parameter name="size" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="copy_metadata"
+              c:identifier="gst_buffer_copy_metadata"
+              doc="Copies the metadata from @src into @dest. The data, size and mallocdata
+fields are not copied.
+all the metadata fields.
+This function is typically called from a custom buffer copy function after
+creating @dest and setting the data, size, mallocdata."
+              version="0.10.13">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="src" transfer-ownership="none">
+            <type name="Buffer" c:type="GstBuffer*"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="BufferCopyFlags" c:type="GstBufferCopyFlags"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="is_metadata_writable"
+              c:identifier="gst_buffer_is_metadata_writable"
+              doc="Similar to gst_buffer_is_writable, but this only ensures that the
+refcount of the buffer is 1, indicating that the caller is the sole
+owner and can change the buffer metadata, such as caps and timestamps.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="make_metadata_writable"
+              c:identifier="gst_buffer_make_metadata_writable"
+              doc="Similar to gst_buffer_make_writable, but does not ensure that the buffer
+data array is writable. Instead, this just ensures that the returned buffer
+is solely owned by the caller, by creating a subbuffer of the original
+buffer if necessary.
+After calling this function, @buf should not be referenced anymore. The
+result of this function has guaranteed writable metadata.">
+        <return-value transfer-ownership="full">
+          <type name="Buffer" c:type="GstBuffer*"/>
+        </return-value>
+      </method>
+      <method name="get_caps"
+              c:identifier="gst_buffer_get_caps"
+              doc="Gets the media type of the buffer. This can be NULL if there
+is no media type attached to this buffer.
+Returns NULL if there were no caps on this buffer.">
+        <return-value transfer-ownership="full">
+          <type name="Caps" c:type="GstCaps*"/>
+        </return-value>
+      </method>
+      <method name="set_caps"
+              c:identifier="gst_buffer_set_caps"
+              doc="Sets the media type on the buffer. The refcount of the caps will
+be increased and any previous caps on the buffer will be
+unreffed.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="caps" transfer-ownership="none">
+            <type name="Caps" c:type="GstCaps*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="create_sub"
+              c:identifier="gst_buffer_create_sub"
+              doc="begins.
+Creates a sub-buffer from @parent at @offset and @size.
+This sub-buffer uses the actual memory space of the parent buffer.
+This function will copy the offset and timestamp fields when the
+offset is 0. If not, they will be set to #GST_CLOCK_TIME_NONE and
+#GST_BUFFER_OFFSET_NONE.
+If @offset equals 0 and @size equals the total size of @buffer, the
+duration and offset end fields are also copied. If not they will be set
+to #GST_CLOCK_TIME_NONE and #GST_BUFFER_OFFSET_NONE.
+MT safe.
+Returns NULL if the arguments were invalid.">
+        <return-value transfer-ownership="full">
+          <type name="Buffer" c:type="GstBuffer*"/>
+        </return-value>
+        <parameters>
+          <parameter name="offset" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="size" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="is_span_fast"
+              c:identifier="gst_buffer_is_span_fast"
+              doc="Determines whether a gst_buffer_span() can be done without copying
+the contents, that is, whether the data areas are contiguous sub-buffers of
+the same buffer.
+MT safe.
+FALSE if a copy would be required.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="buf2" transfer-ownership="none">
+            <type name="Buffer" c:type="GstBuffer*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="span"
+              c:identifier="gst_buffer_span"
+              doc="buffer should start.
+Creates a new buffer that consists of part of buf1 and buf2.
+Logically, buf1 and buf2 are concatenated into a single larger
+buffer, and a new buffer is created at the given offset inside
+this space, with a given length.
+If the two source buffers are children of the same larger buffer,
+and are contiguous, the new buffer will be a child of the shared
+parent, and thus no copying is necessary. you can use
+gst_buffer_is_span_fast() to determine if a memcpy will be needed.
+MT safe.
+Returns NULL if the arguments are invalid.">
+        <return-value transfer-ownership="full">
+          <type name="Buffer" c:type="GstBuffer*"/>
+        </return-value>
+        <parameters>
+          <parameter name="offset" transfer-ownership="none">
+            <type name="uint32" c:type="guint32"/>
+          </parameter>
+          <parameter name="buf2" transfer-ownership="none">
+            <type name="Buffer" c:type="GstBuffer*"/>
+          </parameter>
+          <parameter name="len" transfer-ownership="none">
+            <type name="uint32" c:type="guint32"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="merge"
+              c:identifier="gst_buffer_merge"
+              doc="Create a new buffer that is the concatenation of the two source
+buffers.  The original source buffers will not be modified or
+unref&apos;d.  Make sure you unref the source buffers if they are not used
+anymore afterwards.
+If the buffers point to contiguous areas of memory, the buffer
+is created without copying the data.">
+        <return-value transfer-ownership="full">
+          <type name="Buffer" c:type="GstBuffer*"/>
+        </return-value>
+        <parameters>
+          <parameter name="buf2" transfer-ownership="none">
+            <type name="Buffer" c:type="GstBuffer*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="join"
+              c:identifier="gst_buffer_join"
+              doc="Create a new buffer that is the concatenation of the two source
+buffers, and unrefs the original source buffers.
+If the buffers point to contiguous areas of memory, the buffer
+is created without copying the data.
+This is a convenience function for C programmers. See also
+gst_buffer_merge(), which does the same thing without
+unreffing the input parameters. Language bindings without
+explicit reference counting should not wrap this function.">
+        <return-value transfer-ownership="full">
+          <type name="Buffer" c:type="GstBuffer*"/>
+        </return-value>
+        <parameters>
+          <parameter name="buf2" transfer-ownership="none">
+            <type name="Buffer" c:type="GstBuffer*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="stamp"
+              c:identifier="gst_buffer_stamp"
+              doc="Copies additional information (the timestamp, duration, and offset start
+and end) from one buffer to the other.
+This function does not copy any buffer flags or caps and is equivalent to
+gst_buffer_copy_metadata(@dest, @src, GST_BUFFER_COPY_TIMESTAMPS).
+control."
+              deprecated="use gst_buffer_copy_metadata() instead, it provides more">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="src" transfer-ownership="none">
+            <type name="Buffer" c:type="GstBuffer*"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <record name="BufferClass" c:type="GstBufferClass">
+      <field name="mini_object_class" writable="1">
+        <type name="MiniObjectClass" c:type="GstMiniObjectClass"/>
+      </field>
+    </record>
+    <bitfield name="BufferCopyFlags"
+              doc="offset and offset_end should be copied
+A set of flags that can be provided to the gst_buffer_copy_metadata()
+function to specify which metadata fields should be copied."
+              version="0.10.13"
+              c:type="GstBufferCopyFlags">
+      <member name="flags" value="1" c:identifier="GST_BUFFER_COPY_FLAGS"/>
+      <member name="timestamps"
+              value="2"
+              c:identifier="GST_BUFFER_COPY_TIMESTAMPS"/>
+      <member name="caps" value="4" c:identifier="GST_BUFFER_COPY_CAPS"/>
+    </bitfield>
+    <bitfield name="BufferFlag"
+              doc="the buffer should not be modified. The metadata might still be modified.
+displayed.
+This typically occurs after a seek or a dropped buffer from a live or
+network source.
+stream and contains media neutral data (elements can switch to optimized code
+path that ignores the buffer content).
+A set of buffer flags used to describe properties of a #GstBuffer."
+              c:type="GstBufferFlag">
+      <member name="readonly"
+              value="1"
+              c:identifier="GST_BUFFER_FLAG_READONLY"/>
+      <member name="preroll"
+              value="16"
+              c:identifier="GST_BUFFER_FLAG_PREROLL"/>
+      <member name="discont"
+              value="32"
+              c:identifier="GST_BUFFER_FLAG_DISCONT"/>
+      <member name="in_caps"
+              value="64"
+              c:identifier="GST_BUFFER_FLAG_IN_CAPS"/>
+      <member name="gap" value="128" c:identifier="GST_BUFFER_FLAG_GAP"/>
+      <member name="delta_unit"
+              value="256"
+              c:identifier="GST_BUFFER_FLAG_DELTA_UNIT"/>
+      <member name="media1" value="512" c:identifier="GST_BUFFER_FLAG_MEDIA1"/>
+      <member name="media2"
+              value="1024"
+              c:identifier="GST_BUFFER_FLAG_MEDIA2"/>
+      <member name="media3"
+              value="2048"
+              c:identifier="GST_BUFFER_FLAG_MEDIA3"/>
+      <member name="last" value="4096" c:identifier="GST_BUFFER_FLAG_LAST"/>
+    </bitfield>
+    <record name="BufferList"
+            c:type="GstBufferList"
+            doc="Opaque list of grouped buffers."
+            version="0.10.24">
+      <constructor name="new"
+                   c:identifier="gst_buffer_list_new"
+                   doc="Creates a new, empty #GstBufferList. The caller is responsible for unreffing
+the returned #GstBufferList."
+                   version="0.10.24">
+        <return-value transfer-ownership="full" doc="after usage.">
+          <type name="BufferList" c:type="GstBufferList*"/>
+        </return-value>
+      </constructor>
+      <method name="n_groups"
+              c:identifier="gst_buffer_list_n_groups"
+              doc="Returns the number of groups in @list."
+              version="0.10.24">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="foreach"
+              c:identifier="gst_buffer_list_foreach"
+              doc="Call @func with @data for each buffer in @list.
+of @func define if this function returns or if the remaining buffers in a
+group should be skipped."
+              version="0.10.24">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="2">
+            <type name="BufferListFunc" c:type="GstBufferListFunc"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get"
+              c:identifier="gst_buffer_list_get"
+              doc="Get the buffer at @idx in @group.
+Note that this function is not efficient for iterating over the entire list.
+Use an iterator or gst_buffer_list_foreach() instead.
+buffer remains valid as long as @list is valid."
+              version="0.10.24">
+        <return-value transfer-ownership="full">
+          <type name="Buffer" c:type="GstBuffer*"/>
+        </return-value>
+        <parameters>
+          <parameter name="group" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="idx" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="iterate"
+              c:identifier="gst_buffer_list_iterate"
+              doc="Iterate the buffers in @list. The owner of the iterator must also be the
+owner of a reference to @list while the returned iterator is in use.
+gst_buffer_list_iterator_free() after usage"
+              version="0.10.24">
+        <return-value transfer-ownership="full">
+          <type name="BufferListIterator" c:type="GstBufferListIterator*"/>
+        </return-value>
+      </method>
+    </record>
+    <record name="BufferListClass" c:type="GstBufferListClass">
+    </record>
+    <callback name="BufferListDoFunction"
+              c:type="GstBufferListDoFunction"
+              doc="A function for accessing the last buffer returned by
+gst_buffer_list_iterator_next(). The function can leave @buffer in the list,
+replace @buffer in the list or remove @buffer from the list, depending on
+the return value. If the function returns NULL, @buffer will be removed from
+the list, otherwise @buffer will be replaced with the returned buffer.
+The last buffer returned by gst_buffer_list_iterator_next() will be replaced
+with the buffer returned from the function. The function takes ownership of
+unreffed. If NULL is returned, the buffer will be removed from the list. The
+list must be writable.
+from the list"
+              version="0.10.24">
+      <return-value transfer-ownership="full">
+        <type name="Buffer" c:type="GstBuffer*"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none">
+          <type name="Buffer" c:type="GstBuffer*"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="1">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="BufferListFunc"
+              c:type="GstBufferListFunc"
+              doc="A function that will be called from gst_buffer_list_foreach(). The @buffer
+field will point to a the reference of the buffer at @idx in @group.
+When this function returns #GST_BUFFER_LIST_CONTINUE, the next buffer will be
+returned. When #GST_BUFFER_LIST_SKIP_GROUP is returned, all remaining buffers
+in the current group will be skipped and the first buffer of the next group
+is returned (if any). When GST_BUFFER_LIST_END is returned,
+gst_buffer_list_foreach() will return.
+When @buffer is set to NULL, the item will be removed from the bufferlist.
+When @buffer has been made writable, the new buffer reference can be assigned
+to @buffer. This function is responsible for unreffing the old buffer when
+removing or modifying."
+              version="0.10.24">
+      <return-value transfer-ownership="full">
+        <type name="BufferListItem" c:type="GstBufferListItem"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none">
+          <type name="Buffer" c:type="GstBuffer**"/>
+        </parameter>
+        <parameter name="group" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="idx" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="3">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <enumeration name="BufferListItem"
+                 doc="The result of the #GstBufferListFunc."
+                 version="0.10.24"
+                 c:type="GstBufferListItem">
+      <member name="continue"
+              value="0"
+              c:identifier="GST_BUFFER_LIST_CONTINUE"/>
+      <member name="skip_group"
+              value="1"
+              c:identifier="GST_BUFFER_LIST_SKIP_GROUP"/>
+      <member name="end" value="2" c:identifier="GST_BUFFER_LIST_END"/>
+    </enumeration>
+    <record name="BufferListIterator"
+            c:type="GstBufferListIterator"
+            doc="Opaque iterator for a #GstBufferList."
+            version="0.10.24">
+      <method name="free"
+              c:identifier="gst_buffer_list_iterator_free"
+              doc="Free the iterator."
+              version="0.10.24">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="n_buffers"
+              c:identifier="gst_buffer_list_iterator_n_buffers"
+              doc="Returns the number of buffers left to iterate in the current group. I.e. the
+number of calls that can be made to gst_buffer_list_iterator_next() before
+it returns NULL.
+This function will not move the implicit cursor or in any other way affect
+the state of the iterator @it."
+              version="0.10.24">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="next"
+              c:identifier="gst_buffer_list_iterator_next"
+              doc="Returns the next buffer in the list iterated with @it. If the iterator is at
+the end of a group, NULL will be returned. This function may be called
+repeatedly to iterate through the current group.
+The caller will not get a new ref to the returned #GstBuffer and must not
+unref it."
+              version="0.10.24">
+        <return-value transfer-ownership="full">
+          <type name="Buffer" c:type="GstBuffer*"/>
+        </return-value>
+      </method>
+      <method name="next_group"
+              c:identifier="gst_buffer_list_iterator_next_group"
+              doc="Advance the iterator @it to the first buffer in the next group. If the
+iterator is at the last group, FALSE will be returned. This function may be
+called repeatedly to iterate through the groups in a buffer list.
+the iterator was already at the last group"
+              version="0.10.24">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="add"
+              c:identifier="gst_buffer_list_iterator_add"
+              doc="Inserts @buffer into the #GstBufferList iterated with @it. The buffer is
+inserted into the current group, immediately before the buffer that would be
+returned by gst_buffer_list_iterator_next(). The buffer is inserted before
+the implicit cursor, a subsequent call to gst_buffer_list_iterator_next()
+will return the buffer after the inserted buffer, if any.
+This function takes ownership of @buffer."
+              version="0.10.24">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="buffer" transfer-ownership="none">
+            <type name="Buffer" c:type="GstBuffer*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_group"
+              c:identifier="gst_buffer_list_iterator_add_group"
+              doc="Inserts a new, empty group into the #GstBufferList iterated with @it. The
+group is inserted immediately before the group that would be returned by
+gst_buffer_list_iterator_next_group(). A subsequent call to
+gst_buffer_list_iterator_next_group() will advance the iterator to the group
+after the inserted group, if any."
+              version="0.10.24">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="remove"
+              c:identifier="gst_buffer_list_iterator_remove"
+              doc="Removes the last buffer returned by gst_buffer_list_iterator_next() from
+the #GstBufferList iterated with @it. gst_buffer_list_iterator_next() must
+have been called on @it before this function is called. This function can
+only be called once per call to gst_buffer_list_iterator_next().
+The removed buffer is unreffed."
+              version="0.10.24">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="steal"
+              c:identifier="gst_buffer_list_iterator_steal"
+              doc="Returns the last buffer returned by gst_buffer_list_iterator_next() without
+modifying the refcount of the buffer."
+              version="0.10.24">
+        <return-value transfer-ownership="full">
+          <type name="Buffer" c:type="GstBuffer*"/>
+        </return-value>
+      </method>
+      <method name="take"
+              c:identifier="gst_buffer_list_iterator_take"
+              doc="Replaces the last buffer returned by gst_buffer_list_iterator_next() with
+this function is called. gst_buffer_list_iterator_remove() must not have been
+called since the last call to gst_buffer_list_iterator_next().
+This function unrefs the replaced buffer if it has not been stolen with
+gst_buffer_list_iterator_steal() and takes ownership of @buffer (i.e. the
+refcount of @buffer is not increased)."
+              version="0.10.24">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="buffer" transfer-ownership="none">
+            <type name="Buffer" c:type="GstBuffer*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="do"
+              c:identifier="gst_buffer_list_iterator_do"
+              doc="Calls the given function for the last buffer returned by
+gst_buffer_list_iterator_next(). gst_buffer_list_iterator_next() must have
+been called on @it before this function is called.
+gst_buffer_list_iterator_remove() and gst_buffer_list_iterator_steal() must
+not have been called since the last call to gst_buffer_list_iterator_next().
+See #GstBufferListDoFunction for more details."
+              version="0.10.24">
+        <return-value transfer-ownership="full">
+          <type name="Buffer" c:type="GstBuffer*"/>
+        </return-value>
+        <parameters>
+          <parameter name="do_func"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="2">
+            <type name="BufferListDoFunction"
+                  c:type="GstBufferListDoFunction"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="merge_group"
+              c:identifier="gst_buffer_list_iterator_merge_group"
+              doc="Merge a buffer list group into a normal #GstBuffer by copying its metadata
+and memcpying its data into consecutive memory. All buffers in the current
+group after the implicit cursor will be merged into one new buffer. The
+metadata of the new buffer will be a copy of the metadata of the buffer that
+would be returned by gst_buffer_list_iterator_next(). If there is no buffer
+in the current group after the implicit cursor, NULL will be returned.
+This function will not move the implicit cursor or in any other way affect
+the state of the iterator @it or the list."
+              version="0.10.24">
+        <return-value transfer-ownership="full" doc="after usage, or NULL">
+          <type name="Buffer" c:type="GstBuffer*"/>
+        </return-value>
+      </method>
+    </record>
+    <enumeration name="BufferingMode"
+                 doc="The different types of buffering methods."
+                 c:type="GstBufferingMode">
+      <member name="stream" value="0" c:identifier="GST_BUFFERING_STREAM"/>
+      <member name="download" value="1" c:identifier="GST_BUFFERING_DOWNLOAD"/>
+      <member name="timeshift"
+              value="2"
+              c:identifier="GST_BUFFERING_TIMESHIFT"/>
+      <member name="live" value="3" c:identifier="GST_BUFFERING_LIVE"/>
+    </enumeration>
+    <class name="Bus"
+           c:type="GstBus"
+           doc="The opaque #GstBus data structure."
+           parent="Object"
+           glib:type-name="GstBus"
+           glib:get-type="gst_bus_get_type"
+           glib:type-struct="BusClass">
+      <constructor name="new"
+                   c:identifier="gst_bus_new"
+                   doc="Creates a new #GstBus instance.">
+        <return-value transfer-ownership="full">
+          <type name="Bus" c:type="GstBus*"/>
+        </return-value>
+      </constructor>
+      <method name="post"
+              c:identifier="gst_bus_post"
+              doc="Post a message on the given bus. Ownership of the message
+is taken by the bus.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="message" transfer-ownership="none">
+            <type name="Message" c:type="GstMessage*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="have_pending"
+              c:identifier="gst_bus_have_pending"
+              doc="Check if there are pending messages on the bus that
+should be handled.
+otherwise.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="peek"
+              c:identifier="gst_bus_peek"
+              doc="Peek the message on the top of the bus&apos; queue. The message will remain
+on the bus&apos; message queue. A reference is returned, and needs to be unreffed
+by the caller.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="Message" c:type="GstMessage*"/>
+        </return-value>
+      </method>
+      <method name="pop"
+              c:identifier="gst_bus_pop"
+              doc="Get a message from the bus.
+The message is taken from the bus and needs to be unreffed with
+gst_message_unref() after usage.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="Message" c:type="GstMessage*"/>
+        </return-value>
+      </method>
+      <method name="pop_filtered"
+              c:identifier="gst_bus_pop_filtered"
+              doc="Get a message matching @type from the bus.  Will discard all messages on
+the bus that do not match @type and that have been posted before the first
+message that does match @type.  If there is no message matching @type on
+the bus, all messages will be discarded.
+the bus is empty or there is no message matching @type.
+The message is taken from the bus and needs to be unreffed with
+gst_message_unref() after usage.
+MT safe."
+              version="0.10.15">
+        <return-value transfer-ownership="full">
+          <type name="Message" c:type="GstMessage*"/>
+        </return-value>
+        <parameters>
+          <parameter name="types" transfer-ownership="none">
+            <type name="MessageType" c:type="GstMessageType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="timed_pop"
+              c:identifier="gst_bus_timed_pop"
+              doc="Get a message from the bus, waiting up to the specified timeout.
+If @timeout is 0, this function behaves like gst_bus_pop(). If @timeout is
+#GST_CLOCK_TIME_NONE, this function will block forever until a message was
+posted on the bus.
+or NULL if the bus is empty after the timeout expired.
+The message is taken from the bus and needs to be unreffed with
+gst_message_unref() after usage.
+MT safe."
+              version="0.10.12">
+        <return-value transfer-ownership="full">
+          <type name="Message" c:type="GstMessage*"/>
+        </return-value>
+        <parameters>
+          <parameter name="timeout" transfer-ownership="none">
+            <type name="ClockTime" c:type="GstClockTime"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="timed_pop_filtered"
+              c:identifier="gst_bus_timed_pop_filtered"
+              doc="Get a message from the bus whose type matches the message type mask @types,
+waiting up to the specified timeout (and discarding any messages that do not
+match the mask provided).
+If @timeout is 0, this function behaves like gst_bus_pop_filtered(). If
+matching message was posted on the bus.
+message was found on the bus until the timeout expired.
+The message is taken from the bus and needs to be unreffed with
+gst_message_unref() after usage.
+MT safe."
+              version="0.10.15">
+        <return-value transfer-ownership="full">
+          <type name="Message" c:type="GstMessage*"/>
+        </return-value>
+        <parameters>
+          <parameter name="timeout" transfer-ownership="none">
+            <type name="ClockTime" c:type="GstClockTime"/>
+          </parameter>
+          <parameter name="types" transfer-ownership="none">
+            <type name="MessageType" c:type="GstMessageType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_flushing"
+              c:identifier="gst_bus_set_flushing"
+              doc="If @flushing, flush out and unref any messages queued in the bus. Releases
+references to the message origin objects. Will flush future messages until
+gst_bus_set_flushing() sets @flushing to #FALSE.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="flushing" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_sync_handler"
+              c:identifier="gst_bus_set_sync_handler"
+              doc="Sets the synchronous handler on the bus. The function will be called
+every time a new message is posted on the bus. Note that the function
+will be called in the same thread context as the posting object. This
+function is usually only called by the creator of the bus. Applications
+should handle messages asynchronously using the gst_bus watch and poll
+functions.
+You cannot replace an existing sync_handler. You can pass NULL to this
+function, which will clear the existing handler.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="2">
+            <type name="BusSyncHandler" c:type="GstBusSyncHandler"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="create_watch"
+              c:identifier="gst_bus_create_watch"
+              doc="Create watch for this bus. The GSource will be dispatched whenever
+a message is on the bus. After the GSource is dispatched, the
+message is popped off the bus and unreffed.">
+        <return-value transfer-ownership="full">
+          <type name="GLib.Source" c:type="GSource*"/>
+        </return-value>
+      </method>
+      <method name="add_watch_full"
+              c:identifier="gst_bus_add_watch_full"
+              doc="Adds a bus watch to the default main context with the given @priority.
+This function is used to receive asynchronous messages in the main loop.
+There can only be a single bus watch per bus, you must remove it before you
+can set a new one.
+When @func is called, the message belongs to the caller; if you want to
+keep a copy of it, call gst_message_ref() before leaving @func.
+The watch can be removed using g_source_remove() or by returning FALSE
+from @func.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+        <parameters>
+          <parameter name="priority" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     scope="notified"
+                     closure="3"
+                     destroy="4">
+            <type name="BusFunc" c:type="GstBusFunc"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+          <parameter name="notify" transfer-ownership="none" scope="call">
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_watch"
+              c:identifier="gst_bus_add_watch"
+              doc="Adds a bus watch to the default main context with the default priority.
+This function is used to receive asynchronous messages in the main loop.
+There can only be a single bus watch per bus, you must remove it before you
+can set a new one.
+The watch can be removed using g_source_remove() or by returning FALSE
+from @func.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+        <parameters>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="2">
+            <type name="BusFunc" c:type="GstBusFunc"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="poll"
+              c:identifier="gst_bus_poll"
+              doc="poll for.
+indefinitely.
+Poll the bus for messages. Will block while waiting for messages to come.
+You can specify a maximum time to poll with the @timeout parameter. If
+All messages not in @events will be popped off the bus and will be ignored.
+Because poll is implemented using the &quot;message&quot; signal enabled by
+gst_bus_add_signal_watch(), calling gst_bus_poll() will cause the &quot;message&quot;
+signal to be emitted for every message that poll sees. Thus a &quot;message&quot;
+signal handler will see the same messages that this function sees -- neither
+will steal messages from the other.
+This function will run a main loop from the default main context when
+polling.
+You should never use this function, since it is pure evil. This is
+especially true for GUI applications based on Gtk+ or Qt, but also for any
+other non-trivial application that uses the GLib main loop. As this function
+runs a GLib main loop, any callback attached to the default GLib main
+context may be invoked. This could be timeouts, GUI events, I/O events etc.;
+even if gst_bus_poll() is called with a 0 timeout. Any of these callbacks
+may do things you do not expect, e.g. destroy the main application window or
+some other resource; change other application state; display a dialog and
+run another main loop until the user clicks it away. In short, using this
+function may add a lot of complexity to your code through unexpected
+re-entrancy and unexpected changes to your application&apos;s state.
+For 0 timeouts use gst_bus_pop_filtered() instead of this function; for
+other short timeouts use gst_bus_timed_pop_filtered(); everything else is
+better handled by setting up an asynchronous bus watch and doing things
+from there.
+The message is taken from the bus and needs to be unreffed with
+gst_message_unref() after usage.">
+        <return-value transfer-ownership="full">
+          <type name="Message" c:type="GstMessage*"/>
+        </return-value>
+        <parameters>
+          <parameter name="events" transfer-ownership="none">
+            <type name="MessageType" c:type="GstMessageType"/>
+          </parameter>
+          <parameter name="timeout" transfer-ownership="none">
+            <type name="ClockTimeDiff" c:type="GstClockTimeDiff"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="async_signal_func"
+              c:identifier="gst_bus_async_signal_func"
+              doc="A helper #GstBusFunc that can be used to convert all asynchronous messages
+into signals.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="message" transfer-ownership="none">
+            <type name="Message" c:type="GstMessage*"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="sync_signal_handler"
+              c:identifier="gst_bus_sync_signal_handler"
+              doc="A helper GstBusSyncHandler that can be used to convert all synchronous
+messages into signals.">
+        <return-value transfer-ownership="full">
+          <type name="BusSyncReply" c:type="GstBusSyncReply"/>
+        </return-value>
+        <parameters>
+          <parameter name="message" transfer-ownership="none">
+            <type name="Message" c:type="GstMessage*"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_signal_watch"
+              c:identifier="gst_bus_add_signal_watch"
+              doc="Adds a bus signal watch to the default main context with the default
+priority.
+After calling this statement, the bus will emit the &quot;message&quot; signal for each
+message posted on the bus.
+This function may be called multiple times. To clean up, the caller is
+responsible for calling gst_bus_remove_signal_watch() as many times as this
+function is called.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="add_signal_watch_full"
+              c:identifier="gst_bus_add_signal_watch_full"
+              doc="Adds a bus signal watch to the default main context with the given priority.
+After calling this statement, the bus will emit the &quot;message&quot; signal for each
+message posted on the bus when the main loop is running.
+This function may be called multiple times. To clean up, the caller is
+responsible for calling gst_bus_remove_signal_watch() as many times as this
+function is called.
+There can only be a single bus watch per bus, you most remove all signal watch
+before you can set another type of watch.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="priority" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_signal_watch"
+              c:identifier="gst_bus_remove_signal_watch"
+              doc="Removes a signal watch previously added with gst_bus_add_signal_watch().
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="enable_sync_message_emission"
+              c:identifier="gst_bus_enable_sync_message_emission"
+              doc="Instructs GStreamer to emit the &quot;sync-message&quot; signal after running the bus&apos;s
+sync handler. This function is here so that code can ensure that they can
+synchronously receive messages without having to affect what the bin&apos;s sync
+handler is.
+This function may be called multiple times. To clean up, the caller is
+responsible for calling gst_bus_disable_sync_message_emission() as many times
+as this function is called.
+While this function looks similar to gst_bus_add_signal_watch(), it is not
+exactly the same -- this function enables &lt;emphasis&gt;synchronous&lt;/emphasis&gt; emission of
+signals when messages arrive; gst_bus_add_signal_watch() adds an idle callback
+to pop messages off the bus &lt;emphasis&gt;asynchronously&lt;/emphasis&gt;. The sync-message signal
+comes from the thread of whatever object posted the message; the &quot;message&quot;
+signal is marshalled to the main thread via the main loop.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="disable_sync_message_emission"
+              c:identifier="gst_bus_disable_sync_message_emission"
+              doc="gst_bus_enable_sync_message_emission()
+Instructs GStreamer to stop emitting the &quot;sync-message&quot; signal for this bus.
+See gst_bus_enable_sync_message_emission() for more information.
+In the event that multiple pieces of code have called
+gst_bus_enable_sync_message_emission(), the sync-message emissions will only
+be stopped after all calls to gst_bus_enable_sync_message_emission() were
+&quot;cancelled&quot; by calling this function. In this way the semantics are exactly
+the same as gst_object_ref() that which calls enable should also call
+disable.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <field name="object">
+        <type name="Object" c:type="GstObject"/>
+      </field>
+      <field name="queue">
+        <type name="GLib.Queue" c:type="GQueue*"/>
+      </field>
+      <field name="queue_lock">
+        <type name="GLib.Mutex" c:type="GMutex*"/>
+      </field>
+      <field name="sync_handler">
+        <type name="BusSyncHandler" c:type="GstBusSyncHandler"/>
+      </field>
+      <field name="sync_handler_data">
+        <type name="any" c:type="gpointer"/>
+      </field>
+      <field name="signal_watch_id">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="num_signal_watchers">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="priv">
+        <type name="BusPrivate" c:type="GstBusPrivate*"/>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="3">
+          <type name="any"/>
+        </array>
+      </field>
+      <glib:signal name="message"
+                   doc="A message has been posted on the bus. This signal is emitted from a
+GSource added to the mainloop. this signal will only be emitted when
+there is a mainloop running.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="message" transfer-ownership="none">
+            <type name="Message" c:type="GstMessage"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="sync-message"
+                   doc="A message has been posted on the bus. This signal is emitted from the
+thread that posted the message so one has to be careful with locking.
+This signal will not be emitted by default, you have to set up
+gst_bus_sync_signal_handler() as a sync handler if you want this
+signal to be emitted when a message is posted on the bus, like this:
+&lt;programlisting&gt;
+gst_bus_set_sync_handler (bus, gst_bus_sync_signal_handler, yourdata);
+&lt;/programlisting&gt;">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="message" transfer-ownership="none">
+            <type name="Message" c:type="GstMessage"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <record name="BusClass"
+            c:type="GstBusClass"
+            glib:is-gtype-struct-for="Bus">
+      <field name="parent_class">
+        <type name="ObjectClass" c:type="GstObjectClass"/>
+      </field>
+      <field name="message">
+        <callback name="message" c:type="message">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="bus" transfer-ownership="none">
+              <type name="Bus" c:type="GstBus*"/>
+            </parameter>
+            <parameter name="message" transfer-ownership="none">
+              <type name="Message" c:type="GstMessage*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="sync_message">
+        <callback name="sync_message" c:type="sync_message">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="bus" transfer-ownership="none">
+              <type name="Bus" c:type="GstBus*"/>
+            </parameter>
+            <parameter name="message" transfer-ownership="none">
+              <type name="Message" c:type="GstMessage*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <bitfield name="BusFlags"
+              doc="The standard flags that a bus may have."
+              c:type="GstBusFlags">
+      <member name="flushing" value="16" c:identifier="GST_BUS_FLUSHING"/>
+      <member name="flag_last" value="32" c:identifier="GST_BUS_FLAG_LAST"/>
+    </bitfield>
+    <callback name="BusFunc"
+              c:type="GstBusFunc"
+              doc="Specifies the type of function passed to gst_bus_add_watch() or
+gst_bus_add_watch_full(), which is called from the mainloop when a message
+is available on the bus.
+The message passed to the function will be unreffed after execution of this
+function so it should not be freed in the function.
+Note that this function is used as a GSourceFunc which means that returning
+FALSE will remove the GSource from the mainloop.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="bus" transfer-ownership="none">
+          <type name="Bus" c:type="GstBus*"/>
+        </parameter>
+        <parameter name="message" transfer-ownership="none">
+          <type name="Message" c:type="GstMessage*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <record name="BusPrivate" c:type="GstBusPrivate">
+    </record>
+    <callback name="BusSyncHandler"
+              c:type="GstBusSyncHandler"
+              doc="Handler will be invoked synchronously, when a new message has been injected
+into the bus. This function is mostly used internally. Only one sync handler
+can be attached to a given bus.
+If the handler returns GST_BUS_DROP, it should unref the message, else the
+message should not be unreffed by the sync handler.">
+      <return-value transfer-ownership="full">
+        <type name="BusSyncReply" c:type="GstBusSyncReply"/>
+      </return-value>
+      <parameters>
+        <parameter name="bus" transfer-ownership="none">
+          <type name="Bus" c:type="GstBus*"/>
+        </parameter>
+        <parameter name="message" transfer-ownership="none">
+          <type name="Message" c:type="GstMessage*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <enumeration name="BusSyncReply"
+                 doc="The result values for a GstBusSyncHandler."
+                 c:type="GstBusSyncReply">
+      <member name="drop" value="0" c:identifier="GST_BUS_DROP"/>
+      <member name="pass" value="1" c:identifier="GST_BUS_PASS"/>
+      <member name="async" value="2" c:identifier="GST_BUS_ASYNC"/>
+    </enumeration>
+    <constant name="CAN_INLINE" value="1">
+      <type name="int"/>
+    </constant>
+    <constant name="CLOCK_ENTRY_TRACE_NAME" value="GstClockEntry">
+      <type name="utf8"/>
+    </constant>
+    <constant name="CLOCK_TIME_NONE" value="-1">
+      <type name="int"/>
+    </constant>
+    <record name="Caps"
+            c:type="GstCaps"
+            doc="Object describing media types."
+            glib:type-name="GstCaps"
+            glib:get-type="gst_caps_get_type">
+      <field name="type" writable="1">
+        <type name="GType" c:type="GType"/>
+      </field>
+      <field name="refcount" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="flags" writable="1">
+        <type name="CapsFlags" c:type="GstCapsFlags"/>
+      </field>
+      <field name="structs" writable="1">
+        <type name="GLib.PtrArray" c:type="GPtrArray*"/>
+      </field>
+      <field name="_gst_reserved" writable="1">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+      <constructor name="new_empty"
+                   c:identifier="gst_caps_new_empty"
+                   doc="Creates a new #GstCaps that is empty.  That is, the returned
+#GstCaps contains no media formats.
+Caller is responsible for unreffing the returned caps.">
+        <return-value transfer-ownership="full">
+          <type name="Caps" c:type="GstCaps*"/>
+        </return-value>
+      </constructor>
+      <constructor name="new_any"
+                   c:identifier="gst_caps_new_any"
+                   doc="Creates a new #GstCaps that indicates that it is compatible with
+any media format.">
+        <return-value transfer-ownership="full">
+          <type name="Caps" c:type="GstCaps*"/>
+        </return-value>
+      </constructor>
+      <constructor name="new_simple"
+                   c:identifier="gst_caps_new_simple"
+                   doc="Creates a new #GstCaps that contains one #GstStructure.  The
+structure is defined by the arguments, which have the same format
+as gst_structure_new().
+Caller is responsible for unreffing the returned caps.">
+        <return-value transfer-ownership="full">
+          <type name="Caps" c:type="GstCaps*"/>
+        </return-value>
+        <parameters>
+          <parameter name="media_type" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="fieldname" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_full"
+                   c:identifier="gst_caps_new_full"
+                   doc="Creates a new #GstCaps and adds all the structures listed as
+arguments.  The list must be NULL-terminated.  The structures
+are not copied; the returned #GstCaps owns the structures.">
+        <return-value transfer-ownership="full">
+          <type name="Caps" c:type="GstCaps*"/>
+        </return-value>
+        <parameters>
+          <parameter name="struct1" transfer-ownership="none">
+            <type name="Structure" c:type="GstStructure*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="ref"
+              c:identifier="gst_caps_ref"
+              doc="Add a reference to a #GstCaps object.
+From this point on, until the caller calls gst_caps_unref() or
+gst_caps_make_writable(), it is guaranteed that the caps object will not
+change. This means its structures won&apos;t change, etc. To use a #GstCaps
+object, you must always have a refcount on it -- either the one made
+implicitly by e.g. gst_caps_new_simple(), or via taking one explicitly with
+this function.">
+        <return-value transfer-ownership="full">
+          <type name="Caps" c:type="GstCaps*"/>
+        </return-value>
+      </method>
+      <method name="copy"
+              c:identifier="gst_caps_copy"
+              doc="Creates a new #GstCaps as a copy of the old @caps. The new caps will have a
+refcount of 1, owned by the caller. The structures are copied as well.
+Note that this function is the semantic equivalent of a gst_caps_ref()
+followed by a gst_caps_make_writable(). If you only want to hold on to a
+reference to the data, you should use gst_caps_ref().
+When you are finished with the caps, call gst_caps_unref() on it.">
+        <return-value transfer-ownership="full">
+          <type name="Caps" c:type="GstCaps*"/>
+        </return-value>
+      </method>
+      <method name="make_writable"
+              c:identifier="gst_caps_make_writable"
+              doc="Returns a writable copy of @caps.
+If there is only one reference count on @caps, the caller must be the owner,
+and so this function will return the caps object unchanged. If on the other
+hand there is more than one reference on the object, a new caps object will
+be returned. The caller&apos;s reference on @caps will be removed, and instead the
+caller will own a reference to the returned object.
+In short, this function unrefs the caps in the argument and refs the caps
+that it returns. Don&apos;t access the argument after calling this function. See">
+        <return-value transfer-ownership="full">
+          <type name="Caps" c:type="GstCaps*"/>
+        </return-value>
+      </method>
+      <method name="unref"
+              c:identifier="gst_caps_unref"
+              doc="Unref a #GstCaps and and free all its structures and the
+structures&apos; values when the refcount reaches 0.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="append"
+              c:identifier="gst_caps_append"
+              doc="Appends the structures contained in @caps2 to @caps1. The structures in
+freed. If either caps is ANY, the resulting caps will be ANY.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="caps2" transfer-ownership="none">
+            <type name="Caps" c:type="GstCaps*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="merge"
+              c:identifier="gst_caps_merge"
+              doc="Appends the structures contained in @caps2 to @caps1 if they are not yet
+expressed by @caps1. The structures in @caps2 are not copied -- they are
+transferred to @caps1, and then @caps2 is freed.
+If either caps is ANY, the resulting caps will be ANY."
+              version="0.10.10">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="caps2" transfer-ownership="none">
+            <type name="Caps" c:type="GstCaps*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="append_structure"
+              c:identifier="gst_caps_append_structure"
+              doc="Appends @structure to @caps.  The structure is not copied; @caps
+becomes the owner of @structure.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="structure" transfer-ownership="none">
+            <type name="Structure" c:type="GstStructure*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_structure"
+              c:identifier="gst_caps_remove_structure"
+              doc="removes the stucture with the given index from the list of structures
+contained in @caps.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="idx" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="merge_structure"
+              c:identifier="gst_caps_merge_structure"
+              doc="Appends @structure to @caps if its not already expressed by @caps.  The
+structure is not copied; @caps becomes the owner of @structure.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="structure" transfer-ownership="none">
+            <type name="Structure" c:type="GstStructure*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_size"
+              c:identifier="gst_caps_get_size"
+              doc="Gets the number of structures contained in @caps.">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="get_structure"
+              c:identifier="gst_caps_get_structure"
+              doc="Finds the structure in @caps that has the index @index, and
+returns it.
+non-const GstStructure *.  This is for programming convenience --
+the caller should be aware that structures inside a constant
+#GstCaps should not be modified. However, if you know the caps
+are writable, either because you have just copied them or made
+them writable with gst_caps_make_writable(), you may modify the
+structure returned in the usual way, e.g. with functions like
+gst_structure_set().
+You do not need to free or unref the structure returned, it
+belongs to the #GstCaps.">
+        <return-value transfer-ownership="full">
+          <type name="Structure" c:type="GstStructure*"/>
+        </return-value>
+        <parameters>
+          <parameter name="index" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="copy_nth"
+              c:identifier="gst_caps_copy_nth"
+              doc="Creates a new #GstCaps and appends a copy of the nth structure
+contained in @caps.">
+        <return-value transfer-ownership="full">
+          <type name="Caps" c:type="GstCaps*"/>
+        </return-value>
+        <parameters>
+          <parameter name="nth" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="truncate"
+              c:identifier="gst_caps_truncate"
+              doc="Destructively discard all but the first structure from @caps. Useful when
+fixating. @caps must be writable.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="set_value"
+              c:identifier="gst_caps_set_value"
+              doc="Sets the given @field on all structures of @caps to the given @value.
+This is a convenience function for calling gst_structure_set_value() on
+all structures of @caps."
+              version="0.10.26">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="field" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_simple"
+              c:identifier="gst_caps_set_simple"
+              doc="Sets fields in a #GstCaps.  The arguments must be passed in the same
+manner as gst_structure_set(), and be NULL-terminated.
+&lt;note&gt;Prior to GStreamer version 0.10.26, this function failed when
+of GStreamer, you may only call this function when GST_CAPS_IS_SIMPLE()
+is %TRUE for @caps.&lt;/note&gt;">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="field" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="is_any"
+              c:identifier="gst_caps_is_any"
+              doc="Determines if @caps represents any media format.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="is_empty"
+              c:identifier="gst_caps_is_empty"
+              doc="Determines if @caps represents no media formats.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="is_fixed"
+              c:identifier="gst_caps_is_fixed"
+              doc="Fixed #GstCaps describe exactly one format, that is, they have exactly
+one structure, and each field in the structure describes a fixed type.
+Examples of non-fixed types are GST_TYPE_INT_RANGE and GST_TYPE_LIST.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="is_always_compatible"
+              c:identifier="gst_caps_is_always_compatible"
+              doc="A given #GstCaps structure is always compatible with another if
+every media format that is in the first is also contained in the
+second.  That is, @caps1 is a subset of @caps2.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="caps2" transfer-ownership="none">
+            <type name="Caps" c:type="GstCaps*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="is_subset"
+              c:identifier="gst_caps_is_subset"
+              doc="Checks if all caps represented by @subset are also represented by @superset.
+&lt;note&gt;This function does not work reliably if optional properties for caps
+are included on one caps and omitted on the other.&lt;/note&gt;">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="superset" transfer-ownership="none">
+            <type name="Caps" c:type="GstCaps*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="is_equal"
+              c:identifier="gst_caps_is_equal"
+              doc="Checks if the given caps represent the same set of caps.
+&lt;note&gt;This function does not work reliably if optional properties for caps
+are included on one caps and omitted on the other.&lt;/note&gt;
+This function deals correctly with passing NULL for any of the caps.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="caps2" transfer-ownership="none">
+            <type name="Caps" c:type="GstCaps*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="is_equal_fixed"
+              c:identifier="gst_caps_is_equal_fixed"
+              doc="Tests if two #GstCaps are equal.  This function only works on fixed
+#GstCaps.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="caps2" transfer-ownership="none">
+            <type name="Caps" c:type="GstCaps*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="can_intersect"
+              c:identifier="gst_caps_can_intersect"
+              doc="Tries intersecting @caps1 and @caps2 and reports wheter the result would not
+be empty"
+              version="0.10.25">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="caps2" transfer-ownership="none">
+            <type name="Caps" c:type="GstCaps*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="intersect"
+              c:identifier="gst_caps_intersect"
+              doc="Creates a new #GstCaps that contains all the formats that are common
+to both @caps1 and @caps2.">
+        <return-value transfer-ownership="full">
+          <type name="Caps" c:type="GstCaps*"/>
+        </return-value>
+        <parameters>
+          <parameter name="caps2" transfer-ownership="none">
+            <type name="Caps" c:type="GstCaps*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="subtract"
+              c:identifier="gst_caps_subtract"
+              doc="Subtracts the @subtrahend from the @minuend.
+&lt;note&gt;This function does not work reliably if optional properties for caps
+are included on one caps and omitted on the other.&lt;/note&gt;">
+        <return-value transfer-ownership="full">
+          <type name="Caps" c:type="GstCaps*"/>
+        </return-value>
+        <parameters>
+          <parameter name="subtrahend" transfer-ownership="none">
+            <type name="Caps" c:type="GstCaps*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="union"
+              c:identifier="gst_caps_union"
+              doc="Creates a new #GstCaps that contains all the formats that are in
+either @caps1 and @caps2.">
+        <return-value transfer-ownership="full">
+          <type name="Caps" c:type="GstCaps*"/>
+        </return-value>
+        <parameters>
+          <parameter name="caps2" transfer-ownership="none">
+            <type name="Caps" c:type="GstCaps*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="normalize"
+              c:identifier="gst_caps_normalize"
+              doc="Creates a new #GstCaps that represents the same set of formats as">
+        <return-value transfer-ownership="full">
+          <type name="Caps" c:type="GstCaps*"/>
+        </return-value>
+      </method>
+      <method name="do_simplify"
+              c:identifier="gst_caps_do_simplify"
+              doc="Modifies the given @caps inplace into a representation that represents the
+same set of formats, but in a simpler form.  Component structures that are
+identical are merged.  Component structures that have values that can be
+merged are also merged.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="save_thyself"
+              c:identifier="gst_caps_save_thyself"
+              doc="Serializes a #GstCaps to XML and adds it as a child node of @parent.">
+        <return-value transfer-ownership="full">
+          <type name="libxml2.NodePtr" c:type="xmlNodePtr"/>
+        </return-value>
+        <parameters>
+          <parameter name="parent" transfer-ownership="none">
+            <type name="libxml2.NodePtr" c:type="xmlNodePtr"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="replace"
+              c:identifier="gst_caps_replace"
+              doc="Replaces *caps with @newcaps.  Unrefs the #GstCaps in the location
+pointed to by @caps, if applicable, then modifies @caps to point to
+This function does not take any locks so you might want to lock
+the object owning @caps pointer.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="newcaps" transfer-ownership="none">
+            <type name="Caps" c:type="GstCaps*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="to_string"
+              c:identifier="gst_caps_to_string"
+              doc="Converts @caps to a string representation.  This string representation
+can be converted back to a #GstCaps by gst_caps_from_string().
+For debugging purposes its easier to do something like this:
+|[
+GST_LOG (&quot;caps are %&quot; GST_PTR_FORMAT, caps);
+]|
+This prints the caps in human readble form.">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+    </record>
+    <bitfield name="CapsFlags"
+              doc="anything.
+Extra flags for a caps."
+              c:type="GstCapsFlags">
+      <member name="caps_flags_any"
+              value="1"
+              c:identifier="GST_CAPS_FLAGS_ANY"/>
+    </bitfield>
+    <interface name="ChildProxy"
+               c:type="GstChildProxy"
+               doc="Opaque #GstChildProxy data structure."
+               glib:type-name="GstChildProxy"
+               glib:get-type="gst_child_proxy_get_type"
+               glib:type-struct="ChildProxyInterface">
+      <prerequisite name="Object"/>
+      <virtual-method name="get_child_by_index" invoker="get_child_by_index">
+        <return-value transfer-ownership="full">
+          <type name="Object" c:type="GstObject*"/>
+        </return-value>
+        <parameters>
+          <parameter name="index" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_children_count" invoker="get_children_count">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </virtual-method>
+      <method name="get_child_by_name"
+              c:identifier="gst_child_proxy_get_child_by_name"
+              doc="Looks up a child element by the given name.
+Implementors can use #GstObject together with gst_object_get_name()
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="Object" c:type="GstObject*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_child_by_index"
+              c:identifier="gst_child_proxy_get_child_by_index"
+              doc="Fetches a child by its number.
+after usage.
+MT safe.">
+        <return-value transfer-ownership="full" doc="Unref">
+          <type name="Object" c:type="GstObject*"/>
+        </return-value>
+        <parameters>
+          <parameter name="index" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_children_count"
+              c:identifier="gst_child_proxy_get_children_count"
+              doc="Gets the number of child objects this parent contains.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </method>
+      <glib:signal name="child-added">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="GObject.Object" c:type="GObject"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="child-removed">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="GObject.Object" c:type="GObject"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </interface>
+    <record name="ChildProxyInterface"
+            c:type="GstChildProxyInterface"
+            glib:is-gtype-struct-for="ChildProxy"
+            doc="#GstChildProxy interface.">
+      <field name="parent">
+        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+      </field>
+      <field name="get_child_by_index">
+        <callback name="get_child_by_index" c:type="get_child_by_index">
+          <return-value transfer-ownership="full">
+            <type name="Object" c:type="GstObject*"/>
+          </return-value>
+          <parameters>
+            <parameter name="parent" transfer-ownership="none">
+              <type name="ChildProxy" c:type="GstChildProxy*"/>
+            </parameter>
+            <parameter name="index" transfer-ownership="none">
+              <type name="uint" c:type="guint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_children_count">
+        <callback name="get_children_count" c:type="get_children_count">
+          <return-value transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </return-value>
+          <parameters>
+            <parameter name="parent" transfer-ownership="none">
+              <type name="ChildProxy" c:type="GstChildProxy*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="child_added">
+        <callback name="child_added" c:type="child_added">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="parent" transfer-ownership="none">
+              <type name="ChildProxy" c:type="GstChildProxy*"/>
+            </parameter>
+            <parameter name="child" transfer-ownership="none">
+              <type name="Object" c:type="GstObject*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="child_removed">
+        <callback name="child_removed" c:type="child_removed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="parent" transfer-ownership="none">
+              <type name="ChildProxy" c:type="GstChildProxy*"/>
+            </parameter>
+            <parameter name="child" transfer-ownership="none">
+              <type name="Object" c:type="GstObject*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <class name="Clock"
+           c:type="GstClock"
+           doc="#GstClock base structure. The values of this structure are
+protected for subclasses, use the methods to use the #GstClock."
+           parent="Object"
+           glib:type-name="GstClock"
+           glib:get-type="gst_clock_get_type"
+           glib:type-struct="ClockClass">
+      <function name="id_ref"
+                c:identifier="gst_clock_id_ref"
+                doc="Increase the refcount of given @id.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="ClockID" c:type="GstClockID"/>
+        </return-value>
+        <parameters>
+          <parameter name="id" transfer-ownership="none">
+            <type name="ClockID" c:type="GstClockID"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="id_unref"
+                c:identifier="gst_clock_id_unref"
+                doc="Unref given @id. When the refcount reaches 0 the
+#GstClockID will be freed.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="id" transfer-ownership="none">
+            <type name="ClockID" c:type="GstClockID"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="id_compare_func"
+                c:identifier="gst_clock_id_compare_func">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="id1" transfer-ownership="none">
+            <type name="any" c:type="gconstpointer"/>
+          </parameter>
+          <parameter name="id2" transfer-ownership="none">
+            <type name="any" c:type="gconstpointer"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="id_get_time" c:identifier="gst_clock_id_get_time">
+        <return-value transfer-ownership="full">
+          <type name="ClockTime" c:type="GstClockTime"/>
+        </return-value>
+        <parameters>
+          <parameter name="id" transfer-ownership="none">
+            <type name="ClockID" c:type="GstClockID"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="id_wait" c:identifier="gst_clock_id_wait">
+        <return-value transfer-ownership="full">
+          <type name="ClockReturn" c:type="GstClockReturn"/>
+        </return-value>
+        <parameters>
+          <parameter name="id" transfer-ownership="none">
+            <type name="ClockID" c:type="GstClockID"/>
+          </parameter>
+          <parameter name="jitter" transfer-ownership="none">
+            <type name="ClockTimeDiff" c:type="GstClockTimeDiff*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="id_wait_async"
+                c:identifier="gst_clock_id_wait_async"
+                doc="Register a callback on the given #GstClockID @id with the given
+function and user_data. When passing a #GstClockID with an invalid
+time to this function, the callback will be called immediately
+with  a time set to GST_CLOCK_TIME_NONE. The callback will
+be called when the time of @id has been reached.
+The callback @func can be invoked from any thread, either provided by the
+core or from a streaming thread. The application should be prepared for this.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="ClockReturn" c:type="GstClockReturn"/>
+        </return-value>
+        <parameters>
+          <parameter name="id" transfer-ownership="none">
+            <type name="ClockID" c:type="GstClockID"/>
+          </parameter>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="2">
+            <type name="ClockCallback" c:type="GstClockCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="id_unschedule"
+                c:identifier="gst_clock_id_unschedule"
+                doc="Cancel an outstanding request with @id. This can either
+be an outstanding async notification or a pending sync notification.
+After this call, @id cannot be used anymore to receive sync or
+async notifications, you need to create a new #GstClockID.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="id" transfer-ownership="none">
+            <type name="ClockID" c:type="GstClockID"/>
+          </parameter>
+        </parameters>
+      </function>
+      <virtual-method name="change_resolution">
+        <return-value transfer-ownership="full">
+          <type name="ClockTime" c:type="GstClockTime"/>
+        </return-value>
+        <parameters>
+          <parameter name="old_resolution" transfer-ownership="none">
+            <type name="ClockTime" c:type="GstClockTime"/>
+          </parameter>
+          <parameter name="new_resolution" transfer-ownership="none">
+            <type name="ClockTime" c:type="GstClockTime"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_resolution" invoker="get_resolution">
+        <return-value transfer-ownership="full">
+          <type name="ClockTime" c:type="GstClockTime"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_internal_time" invoker="get_internal_time">
+        <return-value transfer-ownership="full">
+          <type name="ClockTime" c:type="GstClockTime"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="wait">
+        <return-value transfer-ownership="full">
+          <type name="ClockReturn" c:type="GstClockReturn"/>
+        </return-value>
+        <parameters>
+          <parameter name="entry" transfer-ownership="none">
+            <type name="ClockEntry" c:type="GstClockEntry*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="wait_async">
+        <return-value transfer-ownership="full">
+          <type name="ClockReturn" c:type="GstClockReturn"/>
+        </return-value>
+        <parameters>
+          <parameter name="entry" transfer-ownership="none">
+            <type name="ClockEntry" c:type="GstClockEntry*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="unschedule">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="entry" transfer-ownership="none">
+            <type name="ClockEntry" c:type="GstClockEntry*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="wait_jitter">
+        <return-value transfer-ownership="full">
+          <type name="ClockReturn" c:type="GstClockReturn"/>
+        </return-value>
+        <parameters>
+          <parameter name="entry" transfer-ownership="none">
+            <type name="ClockEntry" c:type="GstClockEntry*"/>
+          </parameter>
+          <parameter name="jitter" transfer-ownership="none">
+            <type name="ClockTimeDiff" c:type="GstClockTimeDiff*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="set_resolution" c:identifier="gst_clock_set_resolution">
+        <return-value transfer-ownership="full">
+          <type name="ClockTime" c:type="GstClockTime"/>
+        </return-value>
+        <parameters>
+          <parameter name="resolution" transfer-ownership="none">
+            <type name="ClockTime" c:type="GstClockTime"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_resolution" c:identifier="gst_clock_get_resolution">
+        <return-value transfer-ownership="full">
+          <type name="ClockTime" c:type="GstClockTime"/>
+        </return-value>
+      </method>
+      <method name="get_time" c:identifier="gst_clock_get_time">
+        <return-value transfer-ownership="full">
+          <type name="ClockTime" c:type="GstClockTime"/>
+        </return-value>
+      </method>
+      <method name="set_calibration" c:identifier="gst_clock_set_calibration">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="internal" transfer-ownership="none">
+            <type name="ClockTime" c:type="GstClockTime"/>
+          </parameter>
+          <parameter name="external" transfer-ownership="none">
+            <type name="ClockTime" c:type="GstClockTime"/>
+          </parameter>
+          <parameter name="rate_num" transfer-ownership="none">
+            <type name="ClockTime" c:type="GstClockTime"/>
+          </parameter>
+          <parameter name="rate_denom" transfer-ownership="none">
+            <type name="ClockTime" c:type="GstClockTime"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_calibration" c:identifier="gst_clock_get_calibration">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="internal" transfer-ownership="none">
+            <type name="ClockTime" c:type="GstClockTime*"/>
+          </parameter>
+          <parameter name="external" transfer-ownership="none">
+            <type name="ClockTime" c:type="GstClockTime*"/>
+          </parameter>
+          <parameter name="rate_num" transfer-ownership="none">
+            <type name="ClockTime" c:type="GstClockTime*"/>
+          </parameter>
+          <parameter name="rate_denom" transfer-ownership="none">
+            <type name="ClockTime" c:type="GstClockTime*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_master" c:identifier="gst_clock_set_master">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="master" transfer-ownership="none">
+            <type name="Clock" c:type="GstClock*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_master" c:identifier="gst_clock_get_master">
+        <return-value transfer-ownership="full">
+          <type name="Clock" c:type="GstClock*"/>
+        </return-value>
+      </method>
+      <method name="add_observation" c:identifier="gst_clock_add_observation">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="slave" transfer-ownership="none">
+            <type name="ClockTime" c:type="GstClockTime"/>
+          </parameter>
+          <parameter name="master" transfer-ownership="none">
+            <type name="ClockTime" c:type="GstClockTime"/>
+          </parameter>
+          <parameter name="r_squared"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="double" c:type="gdouble*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_internal_time"
+              c:identifier="gst_clock_get_internal_time">
+        <return-value transfer-ownership="full">
+          <type name="ClockTime" c:type="GstClockTime"/>
+        </return-value>
+      </method>
+      <method name="adjust_unlocked" c:identifier="gst_clock_adjust_unlocked">
+        <return-value transfer-ownership="full">
+          <type name="ClockTime" c:type="GstClockTime"/>
+        </return-value>
+        <parameters>
+          <parameter name="internal" transfer-ownership="none">
+            <type name="ClockTime" c:type="GstClockTime"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="unadjust_unlocked"
+              c:identifier="gst_clock_unadjust_unlocked">
+        <return-value transfer-ownership="full">
+          <type name="ClockTime" c:type="GstClockTime"/>
+        </return-value>
+        <parameters>
+          <parameter name="external" transfer-ownership="none">
+            <type name="ClockTime" c:type="GstClockTime"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="new_single_shot_id"
+              c:identifier="gst_clock_new_single_shot_id">
+        <return-value transfer-ownership="full">
+          <type name="ClockID" c:type="GstClockID"/>
+        </return-value>
+        <parameters>
+          <parameter name="time" transfer-ownership="none">
+            <type name="ClockTime" c:type="GstClockTime"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="new_periodic_id" c:identifier="gst_clock_new_periodic_id">
+        <return-value transfer-ownership="full">
+          <type name="ClockID" c:type="GstClockID"/>
+        </return-value>
+        <parameters>
+          <parameter name="start_time" transfer-ownership="none">
+            <type name="ClockTime" c:type="GstClockTime"/>
+          </parameter>
+          <parameter name="interval" transfer-ownership="none">
+            <type name="ClockTime" c:type="GstClockTime"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="stats" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="timeout" writable="1">
+        <type name="uint64" c:type="guint64"/>
+      </property>
+      <property name="window-size" writable="1">
+        <type name="int" c:type="gint"/>
+      </property>
+      <property name="window-threshold" writable="1">
+        <type name="int" c:type="gint"/>
+      </property>
+      <field name="object">
+        <type name="Object" c:type="GstObject"/>
+      </field>
+      <field name="slave_lock">
+        <type name="GLib.Mutex" c:type="GMutex*"/>
+      </field>
+      <field name="internal_calibration">
+        <type name="ClockTime" c:type="GstClockTime"/>
+      </field>
+      <field name="external_calibration">
+        <type name="ClockTime" c:type="GstClockTime"/>
+      </field>
+      <field name="rate_numerator">
+        <type name="ClockTime" c:type="GstClockTime"/>
+      </field>
+      <field name="rate_denominator">
+        <type name="ClockTime" c:type="GstClockTime"/>
+      </field>
+      <field name="last_time">
+        <type name="ClockTime" c:type="GstClockTime"/>
+      </field>
+      <field name="entries">
+        <type name="GLib.List" c:type="GList*"/>
+      </field>
+      <field name="entries_changed">
+        <type name="GLib.Cond" c:type="GCond*"/>
+      </field>
+      <field name="resolution">
+        <type name="ClockTime" c:type="GstClockTime"/>
+      </field>
+      <field name="stats">
+        <type name="boolean" c:type="gboolean"/>
+      </field>
+      <field name="master">
+        <type name="Clock" c:type="GstClock*"/>
+      </field>
+      <field name="filling">
+        <type name="boolean" c:type="gboolean"/>
+      </field>
+      <field name="window_size">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="window_threshold">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="time_index">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="timeout">
+        <type name="ClockTime" c:type="GstClockTime"/>
+      </field>
+      <field name="times">
+        <type name="ClockTime" c:type="GstClockTime*"/>
+      </field>
+      <field name="clockid">
+        <type name="ClockID" c:type="GstClockID"/>
+      </field>
+      <union name="ABI" c:type="ABI">
+        <field name="priv" writable="1">
+          <type name="ClockPrivate" c:type="GstClockPrivate*"/>
+        </field>
+        <field name="_gst_reserved" writable="1">
+          <array zero-terminated="0" c:type="GstClockTime" fixed-size="4">
+            <type name="ClockTime"/>
+          </array>
+        </field>
+      </union>
+    </class>
+    <callback name="ClockCallback"
+              c:type="GstClockCallback"
+              doc="The function prototype of the callback.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="clock" transfer-ownership="none">
+          <type name="Clock" c:type="GstClock*"/>
+        </parameter>
+        <parameter name="time" transfer-ownership="none">
+          <type name="ClockTime" c:type="GstClockTime"/>
+        </parameter>
+        <parameter name="id" transfer-ownership="none">
+          <type name="ClockID" c:type="GstClockID"/>
+        </parameter>
+        <parameter name="user_data"
+                   transfer-ownership="none"
+                   closure="3"
+                   doc="function">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <record name="ClockClass"
+            c:type="GstClockClass"
+            glib:is-gtype-struct-for="Clock"
+            doc="be acceptable. The new resolution should be returned.
+implement @wait_jitter instead.
+GStreamer clock class. Override the vmethods to implement the clock
+functionality.">
+      <field name="parent_class">
+        <type name="ObjectClass" c:type="GstObjectClass"/>
+      </field>
+      <field name="change_resolution">
+        <callback name="change_resolution" c:type="change_resolution">
+          <return-value transfer-ownership="full">
+            <type name="ClockTime" c:type="GstClockTime"/>
+          </return-value>
+          <parameters>
+            <parameter name="clock" transfer-ownership="none">
+              <type name="Clock" c:type="GstClock*"/>
+            </parameter>
+            <parameter name="old_resolution" transfer-ownership="none">
+              <type name="ClockTime" c:type="GstClockTime"/>
+            </parameter>
+            <parameter name="new_resolution" transfer-ownership="none">
+              <type name="ClockTime" c:type="GstClockTime"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_resolution">
+        <callback name="get_resolution" c:type="get_resolution">
+          <return-value transfer-ownership="full">
+            <type name="ClockTime" c:type="GstClockTime"/>
+          </return-value>
+          <parameters>
+            <parameter name="clock" transfer-ownership="none">
+              <type name="Clock" c:type="GstClock*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_internal_time">
+        <callback name="get_internal_time" c:type="get_internal_time">
+          <return-value transfer-ownership="full">
+            <type name="ClockTime" c:type="GstClockTime"/>
+          </return-value>
+          <parameters>
+            <parameter name="clock" transfer-ownership="none">
+              <type name="Clock" c:type="GstClock*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="wait">
+        <callback name="wait" c:type="wait">
+          <return-value transfer-ownership="full">
+            <type name="ClockReturn" c:type="GstClockReturn"/>
+          </return-value>
+          <parameters>
+            <parameter name="clock" transfer-ownership="none">
+              <type name="Clock" c:type="GstClock*"/>
+            </parameter>
+            <parameter name="entry" transfer-ownership="none">
+              <type name="ClockEntry" c:type="GstClockEntry*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="wait_async">
+        <callback name="wait_async" c:type="wait_async">
+          <return-value transfer-ownership="full">
+            <type name="ClockReturn" c:type="GstClockReturn"/>
+          </return-value>
+          <parameters>
+            <parameter name="clock" transfer-ownership="none">
+              <type name="Clock" c:type="GstClock*"/>
+            </parameter>
+            <parameter name="entry" transfer-ownership="none">
+              <type name="ClockEntry" c:type="GstClockEntry*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="unschedule">
+        <callback name="unschedule" c:type="unschedule">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="clock" transfer-ownership="none">
+              <type name="Clock" c:type="GstClock*"/>
+            </parameter>
+            <parameter name="entry" transfer-ownership="none">
+              <type name="ClockEntry" c:type="GstClockEntry*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="wait_jitter">
+        <callback name="wait_jitter" c:type="wait_jitter">
+          <return-value transfer-ownership="full">
+            <type name="ClockReturn" c:type="GstClockReturn"/>
+          </return-value>
+          <parameters>
+            <parameter name="clock" transfer-ownership="none">
+              <type name="Clock" c:type="GstClock*"/>
+            </parameter>
+            <parameter name="entry" transfer-ownership="none">
+              <type name="ClockEntry" c:type="GstClockEntry*"/>
+            </parameter>
+            <parameter name="jitter" transfer-ownership="none">
+              <type name="ClockTimeDiff" c:type="GstClockTimeDiff*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="3">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <record name="ClockEntry"
+            c:type="GstClockEntry"
+            doc="All pending timeouts or periodic notifies are converted into
+an entry.">
+      <field name="refcount" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="clock" writable="1">
+        <type name="Clock" c:type="GstClock*"/>
+      </field>
+      <field name="type" writable="1">
+        <type name="ClockEntryType" c:type="GstClockEntryType"/>
+      </field>
+      <field name="time" writable="1">
+        <type name="ClockTime" c:type="GstClockTime"/>
+      </field>
+      <field name="interval" writable="1">
+        <type name="ClockTime" c:type="GstClockTime"/>
+      </field>
+      <field name="status" writable="1">
+        <type name="ClockReturn" c:type="GstClockReturn"/>
+      </field>
+      <field name="func" writable="1">
+        <type name="ClockCallback" c:type="GstClockCallback"/>
+      </field>
+      <field name="user_data" writable="1">
+        <type name="any" c:type="gpointer"/>
+      </field>
+    </record>
+    <enumeration name="ClockEntryType"
+                 doc="The type of the clock entry"
+                 c:type="GstClockEntryType">
+      <member name="single" value="0" c:identifier="GST_CLOCK_ENTRY_SINGLE"/>
+      <member name="periodic"
+              value="1"
+              c:identifier="GST_CLOCK_ENTRY_PERIODIC"/>
+    </enumeration>
+    <bitfield name="ClockFlags"
+              doc="The capabilities of this clock"
+              c:type="GstClockFlags">
+      <member name="can_do_single_sync"
+              value="16"
+              c:identifier="GST_CLOCK_FLAG_CAN_DO_SINGLE_SYNC"/>
+      <member name="can_do_single_async"
+              value="32"
+              c:identifier="GST_CLOCK_FLAG_CAN_DO_SINGLE_ASYNC"/>
+      <member name="can_do_periodic_sync"
+              value="64"
+              c:identifier="GST_CLOCK_FLAG_CAN_DO_PERIODIC_SYNC"/>
+      <member name="can_do_periodic_async"
+              value="128"
+              c:identifier="GST_CLOCK_FLAG_CAN_DO_PERIODIC_ASYNC"/>
+      <member name="can_set_resolution"
+              value="256"
+              c:identifier="GST_CLOCK_FLAG_CAN_SET_RESOLUTION"/>
+      <member name="can_set_master"
+              value="512"
+              c:identifier="GST_CLOCK_FLAG_CAN_SET_MASTER"/>
+      <member name="last" value="4096" c:identifier="GST_CLOCK_FLAG_LAST"/>
+    </bitfield>
+    <record name="ClockPrivate" c:type="GstClockPrivate">
+    </record>
+    <enumeration name="ClockReturn"
+                 doc="The return value of a clock operation."
+                 c:type="GstClockReturn">
+      <member name="ok" value="0" c:identifier="GST_CLOCK_OK"/>
+      <member name="early" value="1" c:identifier="GST_CLOCK_EARLY"/>
+      <member name="unscheduled"
+              value="2"
+              c:identifier="GST_CLOCK_UNSCHEDULED"/>
+      <member name="busy" value="3" c:identifier="GST_CLOCK_BUSY"/>
+      <member name="badtime" value="4" c:identifier="GST_CLOCK_BADTIME"/>
+      <member name="error" value="5" c:identifier="GST_CLOCK_ERROR"/>
+      <member name="unsupported"
+              value="6"
+              c:identifier="GST_CLOCK_UNSUPPORTED"/>
+    </enumeration>
+    <enumeration name="ClockType"
+                 doc="point
+The different kind of clocks."
+                 c:type="GstClockType">
+      <member name="realtime"
+              value="0"
+              c:identifier="GST_CLOCK_TYPE_REALTIME"/>
+      <member name="monotonic"
+              value="1"
+              c:identifier="GST_CLOCK_TYPE_MONOTONIC"/>
+    </enumeration>
+    <callback name="CopyFunction"
+              c:type="GstCopyFunction"
+              doc="A function to create a copy of some object or
+increase its reference count."
+              version="0.10.25">
+      <return-value transfer-ownership="none">
+        <type name="any" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="object" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <enumeration name="CoreError"
+                 doc="category.  Make sure you add a custom message to the error call.
+deciding where to go while developing code.
+this functionality yet.
+Core errors are errors inside the core GStreamer library."
+                 c:type="GstCoreError"
+                 glib:error-quark="gst_core_error_quark">
+      <member name="failed" value="1" c:identifier="GST_CORE_ERROR_FAILED"/>
+      <member name="too_lazy"
+              value="2"
+              c:identifier="GST_CORE_ERROR_TOO_LAZY"/>
+      <member name="not_implemented"
+              value="3"
+              c:identifier="GST_CORE_ERROR_NOT_IMPLEMENTED"/>
+      <member name="state_change"
+              value="4"
+              c:identifier="GST_CORE_ERROR_STATE_CHANGE"/>
+      <member name="pad" value="5" c:identifier="GST_CORE_ERROR_PAD"/>
+      <member name="thread" value="6" c:identifier="GST_CORE_ERROR_THREAD"/>
+      <member name="negotiation"
+              value="7"
+              c:identifier="GST_CORE_ERROR_NEGOTIATION"/>
+      <member name="event" value="8" c:identifier="GST_CORE_ERROR_EVENT"/>
+      <member name="seek" value="9" c:identifier="GST_CORE_ERROR_SEEK"/>
+      <member name="caps" value="10" c:identifier="GST_CORE_ERROR_CAPS"/>
+      <member name="tag" value="11" c:identifier="GST_CORE_ERROR_TAG"/>
+      <member name="missing_plugin"
+              value="12"
+              c:identifier="GST_CORE_ERROR_MISSING_PLUGIN"/>
+      <member name="clock" value="13" c:identifier="GST_CORE_ERROR_CLOCK"/>
+      <member name="disabled"
+              value="14"
+              c:identifier="GST_CORE_ERROR_DISABLED"/>
+      <member name="num_errors"
+              value="15"
+              c:identifier="GST_CORE_ERROR_NUM_ERRORS"/>
+    </enumeration>
+    <constant name="DEBUG_BG_MASK" value="240">
+      <type name="int"/>
+    </constant>
+    <constant name="DEBUG_FG_MASK" value="15">
+      <type name="int"/>
+    </constant>
+    <constant name="DEBUG_FORMAT_MASK" value="65280">
+      <type name="int"/>
+    </constant>
+    <glib:boxed c:type="GstDate"
+                glib:name="Date"
+                glib:type-name="GstDate"
+                glib:get-type="gst_date_get_type">
+    </glib:boxed>
+    <record name="DebugCategory"
+            c:type="GstDebugCategory"
+            doc="This is the struct that describes the categories. Once initialized with
+#GST_DEBUG_CATEGORY_INIT, its values can&apos;t be changed anymore.">
+      <field name="threshold" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="color" writable="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="name" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="description" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <method name="free"
+              c:identifier="gst_debug_category_free"
+              doc="Removes and frees the category and all associated resources.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="set_threshold"
+              c:identifier="gst_debug_category_set_threshold"
+              doc="Sets the threshold of the category to the given level. Debug information will
+only be output if the threshold is lower or equal to the level of the
+debugging message.
+&lt;note&gt;&lt;para&gt;
+Do not use this function in production code, because other functions may
+change the threshold of categories as side effect. It is however a nice
+function to use when debugging (even from gdb).
+&lt;/para&gt;&lt;/note&gt;">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="level" transfer-ownership="none">
+            <type name="DebugLevel" c:type="GstDebugLevel"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="reset_threshold"
+              c:identifier="gst_debug_category_reset_threshold"
+              doc="Resets the threshold of the category to the default level. Debug information
+will only be output if the threshold is lower or equal to the level of the
+debugging message.
+Use this function to set the threshold back to where it was after using
+gst_debug_category_set_threshold().">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_threshold"
+              c:identifier="gst_debug_category_get_threshold"
+              doc="Returns the threshold of a #GstDebugCategory.">
+        <return-value transfer-ownership="full">
+          <type name="DebugLevel" c:type="GstDebugLevel"/>
+        </return-value>
+      </method>
+      <method name="get_name"
+              c:identifier="gst_debug_category_get_name"
+              doc="Returns the name of a debug category.">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_color"
+              c:identifier="gst_debug_category_get_color"
+              doc="Returns the color of a debug category used when printing output in this
+category.">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="get_description"
+              c:identifier="gst_debug_category_get_description"
+              doc="Returns the description of a debug category.">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+    </record>
+    <enumeration name="DebugColorFlags"
+                 doc="These are some terminal style flags you can use when creating your
+debugging categories to make them stand out in debugging output."
+                 c:type="GstDebugColorFlags">
+      <member name="fg_black" value="0" c:identifier="GST_DEBUG_FG_BLACK"/>
+      <member name="fg_red" value="1" c:identifier="GST_DEBUG_FG_RED"/>
+      <member name="fg_green" value="2" c:identifier="GST_DEBUG_FG_GREEN"/>
+      <member name="fg_yellow" value="3" c:identifier="GST_DEBUG_FG_YELLOW"/>
+      <member name="fg_blue" value="4" c:identifier="GST_DEBUG_FG_BLUE"/>
+      <member name="fg_magenta" value="5" c:identifier="GST_DEBUG_FG_MAGENTA"/>
+      <member name="fg_cyan" value="6" c:identifier="GST_DEBUG_FG_CYAN"/>
+      <member name="fg_white" value="7" c:identifier="GST_DEBUG_FG_WHITE"/>
+      <member name="bg_black" value="0" c:identifier="GST_DEBUG_BG_BLACK"/>
+      <member name="bg_red" value="16" c:identifier="GST_DEBUG_BG_RED"/>
+      <member name="bg_green" value="32" c:identifier="GST_DEBUG_BG_GREEN"/>
+      <member name="bg_yellow" value="48" c:identifier="GST_DEBUG_BG_YELLOW"/>
+      <member name="bg_blue" value="64" c:identifier="GST_DEBUG_BG_BLUE"/>
+      <member name="bg_magenta"
+              value="80"
+              c:identifier="GST_DEBUG_BG_MAGENTA"/>
+      <member name="bg_cyan" value="96" c:identifier="GST_DEBUG_BG_CYAN"/>
+      <member name="bg_white" value="112" c:identifier="GST_DEBUG_BG_WHITE"/>
+      <member name="bold" value="256" c:identifier="GST_DEBUG_BOLD"/>
+      <member name="underline" value="512" c:identifier="GST_DEBUG_UNDERLINE"/>
+    </enumeration>
+    <callback name="DebugFuncPtr" c:type="GstDebugFuncPtr">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </callback>
+    <bitfield name="DebugGraphDetails"
+              doc="Available details for pipeline graphs produced by GST_DEBUG_BIN_TO_DOT_FILE()
+and GST_DEBUG_BIN_TO_DOT_FILE_WITH_TS()."
+              version="0.10.15"
+              c:type="GstDebugGraphDetails">
+      <member name="media_type"
+              value="1"
+              c:identifier="GST_DEBUG_GRAPH_SHOW_MEDIA_TYPE"/>
+      <member name="caps_details"
+              value="2"
+              c:identifier="GST_DEBUG_GRAPH_SHOW_CAPS_DETAILS"/>
+      <member name="non_default_params"
+              value="4"
+              c:identifier="GST_DEBUG_GRAPH_SHOW_NON_DEFAULT_PARAMS"/>
+      <member name="states"
+              value="8"
+              c:identifier="GST_DEBUG_GRAPH_SHOW_STATES"/>
+      <member name="all" value="15" c:identifier="GST_DEBUG_GRAPH_SHOW_ALL"/>
+    </bitfield>
+    <enumeration name="DebugLevel"
+                 doc="debugging output.
+that stops the application from keeping working correctly.
+An examples is gst_element_error, which outputs a message with this priority.
+It does not mean that the application is terminating as with g_errror.
+that could lead to problems or weird behaviour later on. An example of this
+would be clocking issues (&quot;your computer is pretty slow&quot;) or broken input
+data (&quot;Can&apos;t synchronize to stream.&quot;)
+updated about what is happening.
+Examples where this should be used are when a typefind function has
+successfully determined the type of the stream or when an mp3 plugin detects
+the format to be used. (&quot;This file has mono sound.&quot;)
+happens that is not the expected default behavior.
+An example would be notifications about state changes or receiving/sending of
+events.
+useful to know. As a rule of thumb a pipeline that is iterating as expected
+should never output anzthing else but LOG messages.
+Examples for this are referencing/dereferencing of objects or cothread switches.
+in the executed code path is not fully implemented or handled yet. Note
+that this does not replace proper error handling in any way, the purpose
+of this message is to make it easier to spot incomplete/unfinished pieces
+data as memory dumps in the log. They will be displayed as hexdump with
+The level defines the importance of a debugging message. The more important a
+message is, the greater the probability that the debugging system outputs it."
+                 c:type="GstDebugLevel">
+      <member name="none" value="0" c:identifier="GST_LEVEL_NONE"/>
+      <member name="error" value="1" c:identifier="GST_LEVEL_ERROR"/>
+      <member name="warning" value="2" c:identifier="GST_LEVEL_WARNING"/>
+      <member name="info" value="3" c:identifier="GST_LEVEL_INFO"/>
+      <member name="debug" value="4" c:identifier="GST_LEVEL_DEBUG"/>
+      <member name="log" value="5" c:identifier="GST_LEVEL_LOG"/>
+      <member name="fixme" value="6" c:identifier="GST_LEVEL_FIXME"/>
+      <member name="memdump" value="9" c:identifier="GST_LEVEL_MEMDUMP"/>
+      <member name="count" value="10" c:identifier="GST_LEVEL_COUNT"/>
+    </enumeration>
+    <record name="DebugMessage" c:type="GstDebugMessage">
+      <method name="get"
+              c:identifier="gst_debug_message_get"
+              doc="Gets the string representation of a #GstDebugMessage. This function is used
+in debug handlers to extract the message.">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+    </record>
+    <constant name="ERROR_SYSTEM" value="system error: %s">
+      <type name="utf8"/>
+    </constant>
+    <constant name="EVENT_TRACE_NAME" value="GstEvent">
+      <type name="utf8"/>
+    </constant>
+    <constant name="EVENT_TYPE_BOTH" value="0">
+      <type name="int"/>
+    </constant>
+    <constant name="EVENT_TYPE_SHIFT" value="4">
+      <type name="int"/>
+    </constant>
+    <class name="Element"
+           c:type="GstElement"
+           doc="gst_element_set_state() and gst_element_get_state()
+the element is in the correct state.
+#GST_STATE_VOID_PENDING if the element is in the correct state
+parent element or the application. A #GstPipeline has a bus of its own.
+element by the toplevel #GstPipeline.
+PLAYING. Subtracting @base_time from the current clock time in the PLAYING
+state will yield the running_time against the clock.
+GStreamer element abstract base class."
+           parent="Object"
+           abstract="1"
+           glib:type-name="GstElement"
+           glib:get-type="gst_element_get_type"
+           glib:type-struct="ElementClass">
+      <function name="register"
+                c:identifier="gst_element_register"
+                doc="element (note that passing NULL only works in GStreamer 0.10.13 and later)
+Create a new elementfactory capable of instantiating objects of the">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="plugin" transfer-ownership="none">
+            <type name="Plugin" c:type="GstPlugin*"/>
+          </parameter>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="rank" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="type" transfer-ownership="none">
+            <type name="GType" c:type="GType"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="make_from_uri"
+                c:identifier="gst_element_make_from_uri"
+                doc="Creates an element for handling the given URI.">
+        <return-value transfer-ownership="full">
+          <type name="Element" c:type="GstElement*"/>
+        </return-value>
+        <parameters>
+          <parameter name="type" transfer-ownership="none">
+            <type name="URIType" c:type="GstURIType"/>
+          </parameter>
+          <parameter name="uri" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="elementname" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="state_get_name"
+                c:identifier="gst_element_state_get_name"
+                doc="Gets a string representing the given state.">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="state" transfer-ownership="none">
+            <type name="State" c:type="GstState"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="state_change_return_get_name"
+                c:identifier="gst_element_state_change_return_get_name"
+                doc="Gets a string representing the given state change result."
+                version="0.10.11">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="state_ret" transfer-ownership="none">
+            <type name="StateChangeReturn" c:type="GstStateChangeReturn"/>
+          </parameter>
+        </parameters>
+      </function>
+      <virtual-method name="request_new_pad">
+        <return-value transfer-ownership="full">
+          <type name="Pad" c:type="GstPad*"/>
+        </return-value>
+        <parameters>
+          <parameter name="templ" transfer-ownership="none">
+            <type name="PadTemplate" c:type="GstPadTemplate*"/>
+          </parameter>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="release_pad">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="pad" transfer-ownership="none">
+            <type name="Pad" c:type="GstPad*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_state" invoker="get_state">
+        <return-value transfer-ownership="full">
+          <type name="StateChangeReturn" c:type="GstStateChangeReturn"/>
+        </return-value>
+        <parameters>
+          <parameter name="state" transfer-ownership="none">
+            <type name="State" c:type="GstState*"/>
+          </parameter>
+          <parameter name="pending" transfer-ownership="none">
+            <type name="State" c:type="GstState*"/>
+          </parameter>
+          <parameter name="timeout" transfer-ownership="none">
+            <type name="ClockTime" c:type="GstClockTime"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="set_state" invoker="set_state">
+        <return-value transfer-ownership="full">
+          <type name="StateChangeReturn" c:type="GstStateChangeReturn"/>
+        </return-value>
+        <parameters>
+          <parameter name="state" transfer-ownership="none">
+            <type name="State" c:type="GstState"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="change_state" invoker="change_state">
+        <return-value transfer-ownership="full">
+          <type name="StateChangeReturn" c:type="GstStateChangeReturn"/>
+        </return-value>
+        <parameters>
+          <parameter name="transition" transfer-ownership="none">
+            <type name="StateChange" c:type="GstStateChange"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="set_bus" invoker="set_bus">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="bus" transfer-ownership="none">
+            <type name="Bus" c:type="GstBus*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="provide_clock" invoker="provide_clock">
+        <return-value transfer-ownership="full">
+          <type name="Clock" c:type="GstClock*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="set_clock" invoker="set_clock">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="clock" transfer-ownership="none">
+            <type name="Clock" c:type="GstClock*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_index" invoker="get_index">
+        <return-value transfer-ownership="full">
+          <type name="Index" c:type="GstIndex*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="set_index" invoker="set_index">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="index" transfer-ownership="none">
+            <type name="Index" c:type="GstIndex*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="send_event" invoker="send_event">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="none">
+            <type name="Event" c:type="GstEvent*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_query_types" invoker="get_query_types">
+        <return-value transfer-ownership="none">
+          <type name="QueryType" c:type="GstQueryType*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="query" invoker="query">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="query" transfer-ownership="none">
+            <type name="Query" c:type="GstQuery*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="requires_clock"
+              c:identifier="gst_element_requires_clock"
+              doc="Query if the element requires a clock.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="provides_clock"
+              c:identifier="gst_element_provides_clock"
+              doc="Query if the element provides a clock. A #GstClock provided by an
+element can be used as the global #GstClock for the pipeline.
+An element that can provide a clock is only required to do so in the PAUSED
+state, this means when it is fully negotiated and has allocated the resources
+to operate the clock.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="provide_clock"
+              c:identifier="gst_element_provide_clock"
+              doc="Get the clock provided by the given element.
+&lt;note&gt;An element is only required to provide a clock in the PAUSED
+state. Some elements can provide a clock in other states.&lt;/note&gt;
+if no clock could be provided.  Unref after usage.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="Clock" c:type="GstClock*"/>
+        </return-value>
+      </method>
+      <method name="get_clock"
+              c:identifier="gst_element_get_clock"
+              doc="Gets the currently configured clock of the element. This is the clock as was
+last set with gst_element_set_clock().
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="Clock" c:type="GstClock*"/>
+        </return-value>
+      </method>
+      <method name="set_clock"
+              c:identifier="gst_element_set_clock"
+              doc="Sets the clock for the element. This function increases the
+refcount on the clock. Any previously set clock on the object
+is unreffed.
+clock when it, for example, is not able to slave its internal clock to the
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="clock" transfer-ownership="none">
+            <type name="Clock" c:type="GstClock*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_base_time"
+              c:identifier="gst_element_set_base_time"
+              doc="Set the base time of an element. See gst_element_get_base_time().
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="time" transfer-ownership="none">
+            <type name="ClockTime" c:type="GstClockTime"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_base_time"
+              c:identifier="gst_element_get_base_time"
+              doc="Returns the base time of the element. The base time is the
+absolute time of the clock when this element was last put to
+PLAYING. Subtracting the base time from the clock time gives
+the running time of the element.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="ClockTime" c:type="GstClockTime"/>
+        </return-value>
+      </method>
+      <method name="set_start_time"
+              c:identifier="gst_element_set_start_time"
+              doc="Set the start time of an element. The start time of the element is the
+running time of the element when it last went to the PAUSED state. In READY
+or after a flushing seek, it is set to 0.
+Toplevel elements like #GstPipeline will manage the start_time and
+base_time on its children. Setting the start_time to #GST_CLOCK_TIME_NONE
+on such a toplevel element will disable the distribution of the base_time to
+the children and can be useful if the application manages the base_time
+itself, for example if you want to synchronize capture from multiple
+pipelines, and you can also ensure that the pipelines have the same clock.
+MT safe."
+              version="0.10.24">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="time" transfer-ownership="none">
+            <type name="ClockTime" c:type="GstClockTime"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_start_time"
+              c:identifier="gst_element_get_start_time"
+              doc="Returns the start time of the element. The start time is the
+running time of the clock when this element was last put to PAUSED.
+Usually the start_time is managed by a toplevel element such as
+#GstPipeline.
+MT safe."
+              version="0.10.24">
+        <return-value transfer-ownership="full">
+          <type name="ClockTime" c:type="GstClockTime"/>
+        </return-value>
+      </method>
+      <method name="is_indexable"
+              c:identifier="gst_element_is_indexable"
+              doc="Queries if the element can be indexed.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_index"
+              c:identifier="gst_element_set_index"
+              doc="Set @index on the element. The refcount of the index
+will be increased, any previously set index is unreffed.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="index" transfer-ownership="none">
+            <type name="Index" c:type="GstIndex*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_index"
+              c:identifier="gst_element_get_index"
+              doc="Gets the index from the element.
+element. unref after usage.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="Index" c:type="GstIndex*"/>
+        </return-value>
+      </method>
+      <method name="set_bus"
+              c:identifier="gst_element_set_bus"
+              doc="Sets the bus of the element. Increases the refcount on the bus.
+For internal use only, unless you&apos;re testing elements.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="bus" transfer-ownership="none">
+            <type name="Bus" c:type="GstBus*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_bus"
+              c:identifier="gst_element_get_bus"
+              doc="Returns the bus of the element. Note that only a #GstPipeline will provide a
+bus for the application.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="Bus" c:type="GstBus*"/>
+        </return-value>
+      </method>
+      <method name="add_pad"
+              c:identifier="gst_element_add_pad"
+              doc="Adds a pad (link point) to @element. @pad&apos;s parent will be set to @element;
+see gst_object_set_parent() for refcounting information.
+Pads are not automatically activated so elements should perform the needed
+steps to activate the pad in case this pad is added in the PAUSED or PLAYING
+state. See gst_pad_set_active() for more information about activating pads.
+The pad and the element should be unlocked when calling this function.
+This function will emit the #GstElement::pad-added signal on the element.
+a pad with the same name already existed or the pad already had another
+parent.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="pad" transfer-ownership="none">
+            <type name="Pad" c:type="GstPad*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_pad"
+              c:identifier="gst_element_remove_pad"
+              doc="Removes @pad from @element. @pad will be destroyed if it has not been
+referenced elsewhere using gst_object_unparent().
+This function is used by plugin developers and should not be used
+by applications. Pads that were dynamically requested from elements
+with gst_element_get_request_pad() should be released with the
+gst_element_release_request_pad() function instead.
+Pads are not automatically deactivated so elements should perform the needed
+steps to deactivate the pad in case this pad is removed in the PAUSED or
+PLAYING state. See gst_pad_set_active() for more information about
+deactivating pads.
+The pad and the element should be unlocked when calling this function.
+This function will emit the #GstElement::pad-removed signal on the element.
+pad does not belong to the provided element.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="pad" transfer-ownership="none">
+            <type name="Pad" c:type="GstPad*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="no_more_pads"
+              c:identifier="gst_element_no_more_pads"
+              doc="Use this function to signal that the element does not expect any more pads
+to show up in the current pipeline. This function should be called whenever
+pads have been added by the element itself. Elements with #GST_PAD_SOMETIMES
+pad templates use this in combination with autopluggers to figure out that
+the element is done initializing its pads.
+This function emits the #GstElement::no-more-pads signal.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_pad"
+              c:identifier="gst_element_get_pad"
+              doc="Retrieves a pad from @element by name. Tries gst_element_get_static_pad()
+first, then gst_element_get_request_pad().
+to the result pad should be released with gst_object_unref() in case of a static pad
+or gst_element_release_request_pad() in case of a request pad.
+Use gst_element_get_static_pad() or gst_element_get_request_pad() instead.
+depending on the type of the pad."
+              deprecated="This function is deprecated as it&apos;s unclear if the reference">
+        <return-value transfer-ownership="full">
+          <type name="Pad" c:type="GstPad*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_static_pad"
+              c:identifier="gst_element_get_static_pad"
+              doc="Retrieves a pad from @element by name. This version only retrieves
+already-existing (i.e. &apos;static&apos;) pads.
+usage.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="Pad" c:type="GstPad*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_request_pad"
+              c:identifier="gst_element_get_request_pad"
+              doc="Retrieves a pad from the element by name. This version only retrieves
+request pads. The pad should be released with
+gst_element_release_request_pad().">
+        <return-value transfer-ownership="full">
+          <type name="Pad" c:type="GstPad*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="release_request_pad"
+              c:identifier="gst_element_release_request_pad"
+              doc="Makes the element free the previously requested pad as obtained
+with gst_element_get_request_pad().
+This does not unref the pad. If the pad was created by using
+gst_element_get_request_pad(), gst_element_release_request_pad() needs to be
+followed by gst_object_unref() to free the @pad.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="pad" transfer-ownership="none">
+            <type name="Pad" c:type="GstPad*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="iterate_pads"
+              c:identifier="gst_element_iterate_pads"
+              doc="Retrieves an iterattor of @element&apos;s pads. The iterator should
+be freed after usage.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="Iterator" c:type="GstIterator*"/>
+        </return-value>
+      </method>
+      <method name="iterate_src_pads"
+              c:identifier="gst_element_iterate_src_pads"
+              doc="Retrieves an iterator of @element&apos;s source pads.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="Iterator" c:type="GstIterator*"/>
+        </return-value>
+      </method>
+      <method name="iterate_sink_pads"
+              c:identifier="gst_element_iterate_sink_pads"
+              doc="Retrieves an iterator of @element&apos;s sink pads.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="Iterator" c:type="GstIterator*"/>
+        </return-value>
+      </method>
+      <method name="send_event"
+              c:identifier="gst_element_send_event"
+              doc="Sends an event to an element. If the element doesn&apos;t implement an
+event handler, the event will be pushed on a random linked sink pad for
+upstream events or a random linked source pad for downstream events.
+This function takes owership of the provided event so you should
+gst_event_ref() it if you want to reuse the event after this call.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="none">
+            <type name="Event" c:type="GstEvent*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="seek"
+              c:identifier="gst_element_seek"
+              doc="Sends a seek event to an element. See gst_event_new_seek() for the details of
+the parameters. The seek event is sent to the element using
+gst_element_send_event().
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="rate" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="SeekFlags" c:type="GstSeekFlags"/>
+          </parameter>
+          <parameter name="cur_type" transfer-ownership="none">
+            <type name="SeekType" c:type="GstSeekType"/>
+          </parameter>
+          <parameter name="cur" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+          <parameter name="stop_type" transfer-ownership="none">
+            <type name="SeekType" c:type="GstSeekType"/>
+          </parameter>
+          <parameter name="stop" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_query_types"
+              c:identifier="gst_element_get_query_types"
+              doc="Get an array of query types from the element.
+If the element doesn&apos;t implement a query types function,
+the query will be forwarded to the peer of a random linked sink pad.
+be freed or modified.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="QueryType" c:type="GstQueryType*"/>
+        </return-value>
+      </method>
+      <method name="query"
+              c:identifier="gst_element_query"
+              doc="Performs a query on the given element.
+For elements that don&apos;t implement a query handler, this function
+forwards the query to a random srcpad or to the peer of a
+random linked sinkpad of this element.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="query" transfer-ownership="none">
+            <type name="Query" c:type="GstQuery*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="post_message"
+              c:identifier="gst_element_post_message"
+              doc="Post a message on the element&apos;s #GstBus. This function takes ownership of the
+message; if you want to access the message after this call, you should add an
+additional reference before calling.
+%FALSE if the element did not have a bus.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="message" transfer-ownership="none">
+            <type name="Message" c:type="GstMessage*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="message_full"
+              c:identifier="gst_element_message_full"
+              doc="default message connected to code, or %NULL
+default debugging information, or %NULL
+Post an error, warning or info message on the bus from inside an element.
+#GST_MESSAGE_INFO.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="type" transfer-ownership="none">
+            <type name="MessageType" c:type="GstMessageType"/>
+          </parameter>
+          <parameter name="domain" transfer-ownership="none">
+            <type name="GLib.Quark" c:type="GQuark"/>
+          </parameter>
+          <parameter name="code" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="text" transfer-ownership="full">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="debug" transfer-ownership="full">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="file" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="function" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="line" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="is_locked_state"
+              c:identifier="gst_element_is_locked_state"
+              doc="Checks if the state of an element is locked.
+If the state of an element is locked, state changes of the parent don&apos;t
+affect the element.
+This way you can leave currently unused elements inside bins. Just lock their
+state before changing the state from #GST_STATE_NULL.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_locked_state"
+              c:identifier="gst_element_set_locked_state"
+              doc="Locks the state of an element, so state changes of the parent don&apos;t affect
+this element anymore.
+MT safe.
+or the elements state-locking needed no change.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="locked_state" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="sync_state_with_parent"
+              c:identifier="gst_element_sync_state_with_parent"
+              doc="Tries to change the state of the element to the same as its parent.
+If this function returns FALSE, the state of element is undefined.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_state"
+              c:identifier="gst_element_get_state"
+              doc="Can be %NULL.
+state change or %GST_CLOCK_TIME_NONE for infinite timeout.
+Gets the state of the element.
+For elements that performed an ASYNC state change, as reported by
+gst_element_set_state(), this function will block up to the
+specified timeout value for the state change to complete.
+If the element completes the state change or goes into
+an error, this function returns immediately with a return value of
+%GST_STATE_CHANGE_SUCCESS or %GST_STATE_CHANGE_FAILURE respectively.
+For elements that did not return %GST_STATE_CHANGE_ASYNC, this function
+returns the current and pending state immediately.
+This function returns %GST_STATE_CHANGE_NO_PREROLL if the element
+successfully changed its state but is not able to provide data yet.
+This mostly happens for live sources that only produce data in
+%GST_STATE_PLAYING. While the state change return is equivalent to
+%GST_STATE_CHANGE_SUCCESS, it is returned to the application to signal that
+some sink elements might not be able to complete their state change because
+an element is not producing data to complete the preroll. When setting the
+element to playing, the preroll will complete and playback will start.
+and the last state change succeeded, %GST_STATE_CHANGE_ASYNC if the
+element is still performing a state change or
+%GST_STATE_CHANGE_FAILURE if the last state change failed.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="StateChangeReturn" c:type="GstStateChangeReturn"/>
+        </return-value>
+        <parameters>
+          <parameter name="state"
+                     direction="out"
+                     transfer-ownership="full"
+                     doc="a pointer to #GstState to hold the state. Can be %NULL.">
+            <type name="State" c:type="GstState*"/>
+          </parameter>
+          <parameter name="pending"
+                     direction="out"
+                     transfer-ownership="full"
+                     doc="a pointer to #GstState to hold the pending state.">
+            <type name="State" c:type="GstState*"/>
+          </parameter>
+          <parameter name="timeout" transfer-ownership="none">
+            <type name="ClockTime" c:type="GstClockTime"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_state"
+              c:identifier="gst_element_set_state"
+              doc="Sets the state of the element. This function will try to set the
+requested state by going through all the intermediary states and calling
+the class&apos;s state change function for each.
+This function can return #GST_STATE_CHANGE_ASYNC, in which case the
+element will perform the remainder of the state change asynchronously in
+another thread.
+An application can use gst_element_get_state() to wait for the completion
+of the state change or it can wait for a state change message on the bus.
+State changes to %GST_STATE_READY or %GST_STATE_NULL never return
+#GST_STATE_CHANGE_ASYNC.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="StateChangeReturn" c:type="GstStateChangeReturn"/>
+        </return-value>
+        <parameters>
+          <parameter name="state" transfer-ownership="none">
+            <type name="State" c:type="GstState"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="abort_state"
+              c:identifier="gst_element_abort_state"
+              doc="Abort the state change of the element. This function is used
+by elements that do asynchronous state changes and find out
+something is wrong.
+This function should be called with the STATE_LOCK held.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="change_state"
+              c:identifier="gst_element_change_state"
+              doc="Perform @transition on @element.
+This function must be called with STATE_LOCK held and is mainly used
+internally.">
+        <return-value transfer-ownership="full">
+          <type name="StateChangeReturn" c:type="GstStateChangeReturn"/>
+        </return-value>
+        <parameters>
+          <parameter name="transition" transfer-ownership="none">
+            <type name="StateChange" c:type="GstStateChange"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="continue_state"
+              c:identifier="gst_element_continue_state"
+              doc="Commit the state change of the element and proceed to the next
+pending state if any. This function is used
+by elements that do asynchronous state changes.
+The core will normally call this method automatically when an
+element returned %GST_STATE_CHANGE_SUCCESS from the state change function.
+If after calling this method the element still has not reached
+the pending state, the next state change is performed.
+This method is used internally and should normally not be called by plugins
+or applications.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="StateChangeReturn" c:type="GstStateChangeReturn"/>
+        </return-value>
+        <parameters>
+          <parameter name="ret" transfer-ownership="none">
+            <type name="StateChangeReturn" c:type="GstStateChangeReturn"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="lost_state"
+              c:identifier="gst_element_lost_state"
+              doc="Brings the element to the lost state. This function calls
+gst_element_lost_state_full() with the new_base_time set to %TRUE.
+This function is used internally and should normally not be called from
+plugins or applications.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="lost_state_full"
+              c:identifier="gst_element_lost_state_full"
+              doc="Brings the element to the lost state. The current state of the
+element is copied to the pending state so that any call to
+gst_element_get_state() will return %GST_STATE_CHANGE_ASYNC.
+An ASYNC_START message is posted with indication to distribute a new
+base_time to the element when @new_base_time is %TRUE.
+If the element was PLAYING, it will go to PAUSED. The element
+will be restored to its PLAYING state by the parent pipeline when it
+prerolls again.
+This is mostly used for elements that lost their preroll buffer
+in the %GST_STATE_PAUSED or %GST_STATE_PLAYING state after a flush,
+they will go to their pending state again when a new preroll buffer is
+queued. This function can only be called when the element is currently
+not in error or an async state change.
+This function is used internally and should normally not be called from
+plugins or applications.
+MT safe."
+              version="0.10.24">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="new_base_time" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_factory"
+              c:identifier="gst_element_get_factory"
+              doc="Retrieves the factory that was used to create this element.
+no refcounting is needed.">
+        <return-value transfer-ownership="full">
+          <type name="ElementFactory" c:type="GstElementFactory*"/>
+        </return-value>
+      </method>
+      <method name="implements_interface"
+              c:identifier="gst_element_implements_interface"
+              doc="Test whether the given element implements a certain interface of type
+iface_type, and test whether it is supported for this specific instance.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="iface_type"
+                     transfer-ownership="none"
+                     doc="type of the interface which we want to be implemented">
+            <type name="GType" c:type="GType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="create_all_pads"
+              c:identifier="gst_element_create_all_pads"
+              doc="Creates a pad for each pad template that is always available.
+This function is only useful during object intialization of
+subclasses of #GstElement.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_compatible_pad"
+              c:identifier="gst_element_get_compatible_pad"
+              doc="Looks for an unlinked pad to which the given pad can link. It is not
+guaranteed that linking the pads will work, though it should work in most
+cases.
+found. gst_object_unref() after usage.">
+        <return-value transfer-ownership="full">
+          <type name="Pad" c:type="GstPad*"/>
+        </return-value>
+        <parameters>
+          <parameter name="pad" transfer-ownership="none">
+            <type name="Pad" c:type="GstPad*"/>
+          </parameter>
+          <parameter name="caps" transfer-ownership="none">
+            <type name="Caps" c:type="GstCaps*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_compatible_pad_template"
+              c:identifier="gst_element_get_compatible_pad_template"
+              doc="Retrieves a pad template from @element that is compatible with @compattempl.
+Pads from compatible templates can be linked together.
+unreferencing is necessary.">
+        <return-value transfer-ownership="full">
+          <type name="PadTemplate" c:type="GstPadTemplate*"/>
+        </return-value>
+        <parameters>
+          <parameter name="compattempl" transfer-ownership="none">
+            <type name="PadTemplate" c:type="GstPadTemplate*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="link"
+              c:identifier="gst_element_link"
+              doc="Links @src to @dest. The link must be from source to
+destination; the other direction will not be tried. The function looks for
+existing pads that aren&apos;t linked yet. It will request new pads if necessary.
+Such pads need to be released manualy when unlinking.
+If multiple links are possible, only one is established.
+Make sure you have added your elements to a bin or pipeline with
+gst_bin_add() before trying to link them.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="dest" transfer-ownership="none">
+            <type name="Element" c:type="GstElement*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="link_many"
+              c:identifier="gst_element_link_many"
+              doc="Chain together a series of elements. Uses gst_element_link().
+Make sure you have added your elements to a bin or pipeline with
+gst_bin_add() before trying to link them.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="element_2" transfer-ownership="none">
+            <type name="Element" c:type="GstElement*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="link_filtered"
+              c:identifier="gst_element_link_filtered"
+              doc="Links @src to @dest using the given caps as filtercaps.
+The link must be from source to
+destination; the other direction will not be tried. The function looks for
+existing pads that aren&apos;t linked yet. It will request new pads if necessary.
+If multiple links are possible, only one is established.
+Make sure you have added your elements to a bin or pipeline with
+gst_bin_add() before trying to link them.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="dest" transfer-ownership="none">
+            <type name="Element" c:type="GstElement*"/>
+          </parameter>
+          <parameter name="filter" transfer-ownership="none">
+            <type name="Caps" c:type="GstCaps*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="unlink"
+              c:identifier="gst_element_unlink"
+              doc="Unlinks all source pads of the source element with all sink pads
+of the sink element to which they are linked.
+If the link has been made using gst_element_link(), it could have created an
+requestpad, which has to be released using gst_element_release_request_pad().">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="dest" transfer-ownership="none">
+            <type name="Element" c:type="GstElement*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="unlink_many"
+              c:identifier="gst_element_unlink_many"
+              doc="Unlinks a series of elements. Uses gst_element_unlink().">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="element_2" transfer-ownership="none">
+            <type name="Element" c:type="GstElement*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="link_pads"
+              c:identifier="gst_element_link_pads"
+              doc="or NULL for any pad.
+Links the two named pads of the source and destination elements.
+Side effect is that if one of the pads has no parent, it becomes a
+child of the parent of the other element.  If they have different
+parents, the link fails.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="srcpadname" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="dest" transfer-ownership="none">
+            <type name="Element" c:type="GstElement*"/>
+          </parameter>
+          <parameter name="destpadname" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="unlink_pads"
+              c:identifier="gst_element_unlink_pads"
+              doc="Unlinks the two named pads of the source and destination elements.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="srcpadname" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="dest" transfer-ownership="none">
+            <type name="Element" c:type="GstElement*"/>
+          </parameter>
+          <parameter name="destpadname" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="link_pads_filtered"
+              c:identifier="gst_element_link_pads_filtered"
+              doc="Links the two named pads of the source and destination elements. Side effect
+is that if one of the pads has no parent, it becomes a child of the parent of
+the other element. If they have different parents, the link fails. If @caps
+is not #NULL, makes sure that the caps of the link is a subset of @caps.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="srcpadname" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="dest" transfer-ownership="none">
+            <type name="Element" c:type="GstElement*"/>
+          </parameter>
+          <parameter name="destpadname" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="filter" transfer-ownership="none">
+            <type name="Caps" c:type="GstCaps*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="seek_simple" c:identifier="gst_element_seek_simple">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="seek_flags" transfer-ownership="none">
+            <type name="SeekFlags" c:type="GstSeekFlags"/>
+          </parameter>
+          <parameter name="seek_pos" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="query_position"
+              c:identifier="gst_element_query_position"
+              doc="On return contains the #GstFormat used.
+Queries an element for the stream position.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat*"/>
+          </parameter>
+          <parameter name="cur" direction="out" transfer-ownership="full">
+            <type name="int64" c:type="gint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="query_duration"
+              c:identifier="gst_element_query_duration"
+              doc="On return contains the #GstFormat used.
+Queries an element for the total stream duration.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="format"
+                     direction="inout"
+                     transfer-ownership="full"
+                     doc="a pointer to the #GstFormat asked for.">
+            <type name="Format" c:type="GstFormat*"/>
+          </parameter>
+          <parameter name="duration"
+                     direction="out"
+                     transfer-ownership="full"
+                     doc="A location in which to store the total duration, or NULL.">
+            <type name="int64" c:type="gint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="query_convert"
+              c:identifier="gst_element_query_convert"
+              doc="Queries an element to convert @src_val in @src_format to @dest_format.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="src_format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="src_val" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+          <parameter name="dest_format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat*"/>
+          </parameter>
+          <parameter name="dest_val" direction="out" transfer-ownership="full">
+            <type name="int64" c:type="gint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="found_tags_for_pad"
+              c:identifier="gst_element_found_tags_for_pad"
+              doc="Posts a message to the bus that new tags were found and pushes the
+tags as event. Takes ownership of the @list.
+This is a utility method for elements. Applications should use the
+#GstTagSetter interface.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="pad" transfer-ownership="none">
+            <type name="Pad" c:type="GstPad*"/>
+          </parameter>
+          <parameter name="list" transfer-ownership="none">
+            <type name="TagList" c:type="GstTagList*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="found_tags"
+              c:identifier="gst_element_found_tags"
+              doc="Posts a message to the bus that new tags were found, and pushes an event
+to all sourcepads. Takes ownership of the @list.
+This is a utility method for elements. Applications should use the
+#GstTagSetter interface.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="list" transfer-ownership="none">
+            <type name="TagList" c:type="GstTagList*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <field name="object">
+        <type name="Object" c:type="GstObject"/>
+      </field>
+      <field name="state_lock">
+        <type name="GLib.StaticRecMutex" c:type="GStaticRecMutex*"/>
+      </field>
+      <field name="state_cond">
+        <type name="GLib.Cond" c:type="GCond*"/>
+      </field>
+      <field name="state_cookie">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+      <field name="current_state">
+        <type name="State" c:type="GstState"/>
+      </field>
+      <field name="next_state">
+        <type name="State" c:type="GstState"/>
+      </field>
+      <field name="pending_state">
+        <type name="State" c:type="GstState"/>
+      </field>
+      <field name="last_return">
+        <type name="StateChangeReturn" c:type="GstStateChangeReturn"/>
+      </field>
+      <field name="bus">
+        <type name="Bus" c:type="GstBus*"/>
+      </field>
+      <field name="clock">
+        <type name="Clock" c:type="GstClock*"/>
+      </field>
+      <field name="base_time">
+        <type name="ClockTimeDiff" c:type="GstClockTimeDiff"/>
+      </field>
+      <field name="numpads">
+        <type name="uint16" c:type="guint16"/>
+      </field>
+      <field name="pads">
+        <type name="GLib.List" c:type="GList*"/>
+      </field>
+      <field name="numsrcpads">
+        <type name="uint16" c:type="guint16"/>
+      </field>
+      <field name="srcpads">
+        <type name="GLib.List" c:type="GList*"/>
+      </field>
+      <field name="numsinkpads">
+        <type name="uint16" c:type="guint16"/>
+      </field>
+      <field name="sinkpads">
+        <type name="GLib.List" c:type="GList*"/>
+      </field>
+      <field name="pads_cookie">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+      <union name="abidata" c:type="abidata">
+        <record name="ABI" c:type="ABI">
+          <field name="target_state" writable="1">
+            <type name="State" c:type="GstState"/>
+          </field>
+          <field name="start_time" writable="1">
+            <type name="ClockTime" c:type="GstClockTime"/>
+          </field>
+        </record>
+        <field name="_gst_reserved" writable="1">
+          <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+            <type name="any"/>
+          </array>
+        </field>
+      </union>
+      <glib:signal name="no-more-pads"
+                   doc="This signals that the element will not generate more dynamic pads.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="pad-added"
+                   doc="a new #GstPad has been added to the element.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="new_pad" transfer-ownership="none">
+            <type name="Pad" c:type="GstPad"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="pad-removed"
+                   doc="a #GstPad has been removed from the element">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="old_pad" transfer-ownership="none">
+            <type name="Pad" c:type="GstPad"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <record name="ElementClass"
+            c:type="GstElementClass"
+            glib:is-gtype-struct-for="Element"
+            doc="GStreamer element class. Override the vmethods to implement the element
+functionality.">
+      <field name="parent_class">
+        <type name="ObjectClass" c:type="GstObjectClass"/>
+      </field>
+      <field name="details">
+        <type name="ElementDetails" c:type="GstElementDetails"/>
+      </field>
+      <field name="elementfactory">
+        <type name="ElementFactory" c:type="GstElementFactory*"/>
+      </field>
+      <field name="padtemplates">
+        <type name="GLib.List" c:type="GList*"/>
+      </field>
+      <field name="numpadtemplates">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="pad_templ_cookie">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+      <field name="pad_added">
+        <callback name="pad_added" c:type="pad_added">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="element" transfer-ownership="none">
+              <type name="Element" c:type="GstElement*"/>
+            </parameter>
+            <parameter name="pad" transfer-ownership="none">
+              <type name="Pad" c:type="GstPad*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="pad_removed">
+        <callback name="pad_removed" c:type="pad_removed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="element" transfer-ownership="none">
+              <type name="Element" c:type="GstElement*"/>
+            </parameter>
+            <parameter name="pad" transfer-ownership="none">
+              <type name="Pad" c:type="GstPad*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="no_more_pads">
+        <callback name="no_more_pads" c:type="no_more_pads">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="element" transfer-ownership="none">
+              <type name="Element" c:type="GstElement*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="request_new_pad">
+        <callback name="request_new_pad" c:type="request_new_pad">
+          <return-value transfer-ownership="full">
+            <type name="Pad" c:type="GstPad*"/>
+          </return-value>
+          <parameters>
+            <parameter name="element" transfer-ownership="none">
+              <type name="Element" c:type="GstElement*"/>
+            </parameter>
+            <parameter name="templ" transfer-ownership="none">
+              <type name="PadTemplate" c:type="GstPadTemplate*"/>
+            </parameter>
+            <parameter name="name" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="release_pad">
+        <callback name="release_pad" c:type="release_pad">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="element" transfer-ownership="none">
+              <type name="Element" c:type="GstElement*"/>
+            </parameter>
+            <parameter name="pad" transfer-ownership="none">
+              <type name="Pad" c:type="GstPad*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_state">
+        <callback name="get_state" c:type="get_state">
+          <return-value transfer-ownership="full">
+            <type name="StateChangeReturn" c:type="GstStateChangeReturn"/>
+          </return-value>
+          <parameters>
+            <parameter name="element" transfer-ownership="none">
+              <type name="Element" c:type="GstElement*"/>
+            </parameter>
+            <parameter name="state" transfer-ownership="none">
+              <type name="State" c:type="GstState*"/>
+            </parameter>
+            <parameter name="pending" transfer-ownership="none">
+              <type name="State" c:type="GstState*"/>
+            </parameter>
+            <parameter name="timeout" transfer-ownership="none">
+              <type name="ClockTime" c:type="GstClockTime"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_state">
+        <callback name="set_state" c:type="set_state">
+          <return-value transfer-ownership="full">
+            <type name="StateChangeReturn" c:type="GstStateChangeReturn"/>
+          </return-value>
+          <parameters>
+            <parameter name="element" transfer-ownership="none">
+              <type name="Element" c:type="GstElement*"/>
+            </parameter>
+            <parameter name="state" transfer-ownership="none">
+              <type name="State" c:type="GstState"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="change_state">
+        <callback name="change_state" c:type="change_state">
+          <return-value transfer-ownership="full">
+            <type name="StateChangeReturn" c:type="GstStateChangeReturn"/>
+          </return-value>
+          <parameters>
+            <parameter name="element" transfer-ownership="none">
+              <type name="Element" c:type="GstElement*"/>
+            </parameter>
+            <parameter name="transition" transfer-ownership="none">
+              <type name="StateChange" c:type="GstStateChange"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_bus">
+        <callback name="set_bus" c:type="set_bus">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="element" transfer-ownership="none">
+              <type name="Element" c:type="GstElement*"/>
+            </parameter>
+            <parameter name="bus" transfer-ownership="none">
+              <type name="Bus" c:type="GstBus*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="provide_clock">
+        <callback name="provide_clock" c:type="provide_clock">
+          <return-value transfer-ownership="full">
+            <type name="Clock" c:type="GstClock*"/>
+          </return-value>
+          <parameters>
+            <parameter name="element" transfer-ownership="none">
+              <type name="Element" c:type="GstElement*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_clock">
+        <callback name="set_clock" c:type="set_clock">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="element" transfer-ownership="none">
+              <type name="Element" c:type="GstElement*"/>
+            </parameter>
+            <parameter name="clock" transfer-ownership="none">
+              <type name="Clock" c:type="GstClock*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_index">
+        <callback name="get_index" c:type="get_index">
+          <return-value transfer-ownership="full">
+            <type name="Index" c:type="GstIndex*"/>
+          </return-value>
+          <parameters>
+            <parameter name="element" transfer-ownership="none">
+              <type name="Element" c:type="GstElement*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_index">
+        <callback name="set_index" c:type="set_index">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="element" transfer-ownership="none">
+              <type name="Element" c:type="GstElement*"/>
+            </parameter>
+            <parameter name="index" transfer-ownership="none">
+              <type name="Index" c:type="GstIndex*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="send_event">
+        <callback name="send_event" c:type="send_event">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="element" transfer-ownership="none">
+              <type name="Element" c:type="GstElement*"/>
+            </parameter>
+            <parameter name="event" transfer-ownership="none">
+              <type name="Event" c:type="GstEvent*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_query_types">
+        <callback name="get_query_types" c:type="get_query_types">
+          <return-value transfer-ownership="none">
+            <type name="QueryType" c:type="GstQueryType*"/>
+          </return-value>
+          <parameters>
+            <parameter name="element" transfer-ownership="none">
+              <type name="Element" c:type="GstElement*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="query">
+        <callback name="query" c:type="query">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="element" transfer-ownership="none">
+              <type name="Element" c:type="GstElement*"/>
+            </parameter>
+            <parameter name="query" transfer-ownership="none">
+              <type name="Query" c:type="GstQuery*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+      <method name="add_pad_template"
+              c:identifier="gst_element_class_add_pad_template"
+              doc="Adds a padtemplate to an element class. This is mainly used in the _base_init
+functions of classes.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="templ" transfer-ownership="none">
+            <type name="PadTemplate" c:type="GstPadTemplate*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_pad_template"
+              c:identifier="gst_element_class_get_pad_template"
+              doc="Retrieves a padtemplate from @element_class with the given name.
+&lt;note&gt;If you use this function in the #GInstanceInitFunc of an object class
+that has subclasses, make sure to pass the g_class parameter of the
+#GInstanceInitFunc here.&lt;/note&gt;
+No unreferencing is necessary.">
+        <return-value transfer-ownership="full">
+          <type name="PadTemplate" c:type="GstPadTemplate*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_pad_template_list"
+              c:identifier="gst_element_class_get_pad_template_list"
+              doc="Retrieves a list of the pad templates associated with @element_class. The
+list must not be modified by the calling code.
+&lt;note&gt;If you use this function in the #GInstanceInitFunc of an object class
+that has subclasses, make sure to pass the g_class parameter of the
+#GInstanceInitFunc here.&lt;/note&gt;">
+        <return-value transfer-ownership="full">
+          <type name="GLib.List" c:type="GList*"/>
+        </return-value>
+      </method>
+      <method name="set_details"
+              c:identifier="gst_element_class_set_details"
+              doc="Sets the detailed information for a #GstElementClass.
+&lt;note&gt;This function is for use in _base_init functions only.&lt;/note&gt;
+The @details are copied."
+              deprecated="Use gst_element_class_set_details_simple() instead.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="details" transfer-ownership="none">
+            <type name="ElementDetails" c:type="GstElementDetails*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_details_simple"
+              c:identifier="gst_element_class_set_details_simple"
+              doc="separated with slashes (&apos;/&apos;). See draft-klass.txt of the design docs
+Sets the detailed information for a #GstElementClass. Simpler version of
+gst_element_class_set_details() that generates less linker overhead.
+&lt;note&gt;This function is for use in _base_init functions only.&lt;/note&gt;
+The detail parameter strings are copied into the #GstElementDetails for
+the element class."
+              version="0.10.14">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="longname" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="classification" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="description" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="author"
+                     transfer-ownership="none"
+                     doc="Use \n to separate">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="install_std_props"
+              c:identifier="gst_element_class_install_std_props"
+              doc="in a NULL terminated
+further &apos;name&apos;, &apos;id&apos;, &apos;flags&apos; triplets and terminated by NULL.
+Adds a list of standardized properties with types to the @klass.
+the id is for the property switch in your get_prop method, and
+the flags determine readability / writeability.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="first_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <record name="ElementDetails"
+            c:type="GstElementDetails"
+            doc="separated with slashes (&apos;/&apos;). See draft-klass.txt of the design docs
+for more details and common types
+This struct defines the public information about a #GstElement. It contains
+meta-data about the element that is mostly for the benefit of editors.
+The @klass member can be used by applications to filter elements based
+on functionality.">
+      <field name="longname" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="klass" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="description" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="author" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="_gst_reserved" writable="1">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <class name="ElementFactory"
+           c:type="GstElementFactory"
+           doc="The opaque #GstElementFactory data structure."
+           parent="PluginFeature"
+           glib:type-name="GstElementFactory"
+           glib:get-type="gst_element_factory_get_type"
+           glib:type-struct="ElementFactoryClass">
+      <function name="find"
+                c:identifier="gst_element_factory_find"
+                doc="Search for an element factory of the given name. Refs the returned
+element factory; caller is responsible for unreffing.">
+        <return-value transfer-ownership="full">
+          <type name="ElementFactory" c:type="GstElementFactory*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="make"
+                c:identifier="gst_element_factory_make"
+                doc="Create a new element of the type defined by the given element factory.
+If name is NULL, then the element will receive a guaranteed unique name,
+consisting of the element factory name and a number.
+If name is given, it will be given the name supplied.">
+        <return-value transfer-ownership="full">
+          <type name="Element" c:type="GstElement*"/>
+        </return-value>
+        <parameters>
+          <parameter name="factoryname" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <method name="get_element_type"
+              c:identifier="gst_element_factory_get_element_type"
+              doc="Get the #GType for elements managed by this factory. The type can
+only be retrieved if the element factory is loaded, which can be
+assured with gst_plugin_feature_load().
+the factory is not loaded.">
+        <return-value transfer-ownership="none">
+          <type name="GType" c:type="GType"/>
+        </return-value>
+      </method>
+      <method name="get_longname"
+              c:identifier="gst_element_factory_get_longname"
+              doc="Gets the longname for this factory">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_klass"
+              c:identifier="gst_element_factory_get_klass"
+              doc="Gets the class for this factory.">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_description"
+              c:identifier="gst_element_factory_get_description"
+              doc="Gets the description for this factory.">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_author"
+              c:identifier="gst_element_factory_get_author"
+              doc="Gets the author for this factory.">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_num_pad_templates"
+              c:identifier="gst_element_factory_get_num_pad_templates"
+              doc="Gets the number of pad_templates in this factory.">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="get_static_pad_templates"
+              c:identifier="gst_element_factory_get_static_pad_templates"
+              doc="Gets the #GList of #GstStaticPadTemplate for this factory.">
+        <return-value transfer-ownership="none">
+          <type name="GLib.List" c:type="GList*"/>
+        </return-value>
+      </method>
+      <method name="get_uri_type"
+              c:identifier="gst_element_factory_get_uri_type"
+              doc="Gets the type of URIs the element supports or #GST_URI_UNKNOWN if none.">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_uri_protocols"
+              c:identifier="gst_element_factory_get_uri_protocols"
+              doc="Gets a NULL-terminated array of protocols this element supports or NULL if
+no protocols are supported. You may not change the contents of the returned
+array, as it is still owned by the element factory. Use g_strdupv() to
+make a copy of the protocol string array if you need to.">
+        <return-value transfer-ownership="full">
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </return-value>
+      </method>
+      <method name="has_interface"
+              c:identifier="gst_element_factory_has_interface"
+              doc="Check if @factory implements the interface with name @interfacename."
+              version="0.10.14">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="interfacename" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="create"
+              c:identifier="gst_element_factory_create"
+              doc="Create a new element of the type defined by the given elementfactory.
+It will be given the name supplied, since all elements require a name as
+their first argument.">
+        <return-value transfer-ownership="full">
+          <type name="Element" c:type="GstElement*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="can_src_caps"
+              c:identifier="gst_element_factory_can_src_caps"
+              doc="Checks if the factory can source the given capability.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="caps" transfer-ownership="none">
+            <type name="Caps" c:type="GstCaps*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="can_sink_caps"
+              c:identifier="gst_element_factory_can_sink_caps"
+              doc="Checks if the factory can sink the given capability.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="caps" transfer-ownership="none">
+            <type name="Caps" c:type="GstCaps*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <field name="parent">
+        <type name="PluginFeature" c:type="GstPluginFeature"/>
+      </field>
+      <field name="type">
+        <type name="GType" c:type="GType"/>
+      </field>
+      <field name="details">
+        <type name="ElementDetails" c:type="GstElementDetails"/>
+      </field>
+      <field name="staticpadtemplates">
+        <type name="GLib.List" c:type="GList*"/>
+      </field>
+      <field name="numpadtemplates">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="uri_type">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="uri_protocols">
+        <type name="utf8" c:type="gchar**"/>
+      </field>
+      <field name="interfaces">
+        <type name="GLib.List" c:type="GList*"/>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </class>
+    <record name="ElementFactoryClass"
+            c:type="GstElementFactoryClass"
+            glib:is-gtype-struct-for="ElementFactory">
+      <field name="parent_class">
+        <type name="PluginFeatureClass" c:type="GstPluginFeatureClass"/>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <bitfield name="ElementFlags"
+              doc="gst_bin_remove() on a child already being removed immediately returns FALSE
+The standard flags that an element may have."
+              c:type="GstElementFlags">
+      <member name="locked_state"
+              value="16"
+              c:identifier="GST_ELEMENT_LOCKED_STATE"/>
+      <member name="is_sink" value="32" c:identifier="GST_ELEMENT_IS_SINK"/>
+      <member name="unparenting"
+              value="64"
+              c:identifier="GST_ELEMENT_UNPARENTING"/>
+      <member name="flag_last"
+              value="1048576"
+              c:identifier="GST_ELEMENT_FLAG_LAST"/>
+    </bitfield>
+    <record name="Event" c:type="GstEvent" doc="A #GstEvent.">
+      <field name="mini_object" writable="1">
+        <type name="MiniObject" c:type="GstMiniObject"/>
+      </field>
+      <field name="type" writable="1">
+        <type name="EventType" c:type="GstEventType"/>
+      </field>
+      <field name="timestamp" writable="1">
+        <type name="uint64" c:type="guint64"/>
+      </field>
+      <field name="src" writable="1">
+        <type name="Object" c:type="GstObject*"/>
+      </field>
+      <field name="structure" writable="1">
+        <type name="Structure" c:type="GstStructure*"/>
+      </field>
+      <union name="abidata" c:type="abidata">
+        <field name="seqnum" writable="1">
+          <type name="uint32" c:type="guint32"/>
+        </field>
+        <field name="_gst_reserved" writable="1">
+          <type name="any" c:type="gpointer"/>
+        </field>
+      </union>
+      <constructor name="new_custom"
+                   c:identifier="gst_event_new_custom"
+                   doc="the structure.
+Create a new custom-typed event. This can be used for anything not
+handled by other event-specific functions to pass an event to another
+element.
+Make sure to allocate an event type with the #GST_EVENT_MAKE_TYPE macro,
+assigning a free number and filling in the correct direction and
+serialization flags.
+New custom events can also be created by subclassing the event type if
+needed.">
+        <return-value transfer-ownership="full">
+          <type name="Event" c:type="GstEvent*"/>
+        </return-value>
+        <parameters>
+          <parameter name="type" transfer-ownership="none">
+            <type name="EventType" c:type="GstEventType"/>
+          </parameter>
+          <parameter name="structure" transfer-ownership="none">
+            <type name="Structure" c:type="GstStructure*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_flush_start"
+                   c:identifier="gst_event_new_flush_start"
+                   doc="Allocate a new flush start event. The flush start event can be sent
+upstream and downstream and travels out-of-bounds with the dataflow.
+It marks pads as being flushing and will make them return
+#GST_FLOW_WRONG_STATE when used for data flow with gst_pad_push(),
+gst_pad_chain(), gst_pad_alloc_buffer(), gst_pad_get_range() and
+gst_pad_pull_range(). Any event (except a #GST_EVENT_FLUSH_STOP) received
+on a flushing pad will return %FALSE immediately.
+Elements should unlock any blocking functions and exit their streaming
+functions as fast as possible when this event is received.
+This event is typically generated after a seek to flush out all queued data
+in the pipeline so that the new media is played as soon as possible.">
+        <return-value transfer-ownership="full">
+          <type name="Event" c:type="GstEvent*"/>
+        </return-value>
+      </constructor>
+      <constructor name="new_flush_stop"
+                   c:identifier="gst_event_new_flush_stop"
+                   doc="Allocate a new flush stop event. The flush stop event can be sent
+upstream and downstream and travels serialized with the dataflow.
+It is typically sent after sending a FLUSH_START event to make the
+pads accept data again.
+Elements can process this event synchronized with the dataflow since
+the preceeding FLUSH_START event stopped the dataflow.
+This event is typically generated to complete a seek and to resume
+dataflow.">
+        <return-value transfer-ownership="full">
+          <type name="Event" c:type="GstEvent*"/>
+        </return-value>
+      </constructor>
+      <constructor name="new_eos"
+                   c:identifier="gst_event_new_eos"
+                   doc="Create a new EOS event. The eos event can only travel downstream
+synchronized with the buffer flow. Elements that receive the EOS
+event on a pad can return #GST_FLOW_UNEXPECTED as a #GstFlowReturn
+when data after the EOS event arrives.
+The EOS event will travel down to the sink elements in the pipeline
+which will then post the #GST_MESSAGE_EOS on the bus after they have
+finished playing any buffered data.
+When all sinks have posted an EOS message, an EOS message is
+forwarded to the application.
+The EOS event itself will not cause any state transitions of the pipeline.">
+        <return-value transfer-ownership="full">
+          <type name="Event" c:type="GstEvent*"/>
+        </return-value>
+      </constructor>
+      <constructor name="new_new_segment"
+                   c:identifier="gst_event_new_new_segment"
+                   doc="Allocate a new newsegment event with the given format/values tripplets
+This method calls gst_event_new_new_segment_full() passing a default
+value of 1.0 for applied_rate">
+        <return-value transfer-ownership="full">
+          <type name="Event" c:type="GstEvent*"/>
+        </return-value>
+        <parameters>
+          <parameter name="update" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="rate" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="start" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+          <parameter name="stop" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+          <parameter name="position" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_new_segment_full"
+                   c:identifier="gst_event_new_new_segment_full"
+                   doc="Allocate a new newsegment event with the given format/values triplets.
+The newsegment event marks the range of buffers to be processed. All
+data not within the segment range is not to be processed. This can be
+used intelligently by plugins to apply more efficient methods of skipping
+unneeded data. The valid range is expressed with the @start and @stop
+values.
+The position value of the segment is used in conjunction with the start
+value to convert the buffer timestamps into the stream time. This is
+usually done in sinks to report the current stream_time.
+is a valid @stop given, it must be greater or equal the @start, including
+when the indicated playback @rate is &lt; 0.
+The @applied_rate value provides information about any rate adjustment that
+has already been made to the timestamps and content on the buffers of the
+stream. (@rate * @applied_rate) should always equal the rate that has been
+requested for playback. For example, if an element has an input segment
+with intended playback @rate of 2.0 and applied_rate of 1.0, it can adjust
+incoming timestamps and buffer content by half and output a newsegment event
+with @rate of 1.0 and @applied_rate of 2.0
+After a newsegment event, the buffer stream time is calculated with:
+position + (TIMESTAMP(buf) - start) * ABS (rate * applied_rate)"
+                   version="0.10.6">
+        <return-value transfer-ownership="full">
+          <type name="Event" c:type="GstEvent*"/>
+        </return-value>
+        <parameters>
+          <parameter name="update" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="rate" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="applied_rate" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="start" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+          <parameter name="stop" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+          <parameter name="position" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_tag"
+                   c:identifier="gst_event_new_tag"
+                   doc="Generates a metadata tag event from the given @taglist.">
+        <return-value transfer-ownership="full">
+          <type name="Event" c:type="GstEvent*"/>
+        </return-value>
+        <parameters>
+          <parameter name="taglist" transfer-ownership="none">
+            <type name="TagList" c:type="GstTagList*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_buffer_size"
+                   c:identifier="gst_event_new_buffer_size"
+                   doc="Create a new buffersize event. The event is sent downstream and notifies
+elements that they should provide a buffer of the specified dimensions.
+When the @async flag is set, a thread boundary is prefered.">
+        <return-value transfer-ownership="full">
+          <type name="Event" c:type="GstEvent*"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="minsize" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+          <parameter name="maxsize" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+          <parameter name="async" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_qos"
+                   c:identifier="gst_event_new_qos"
+                   doc="Allocate a new qos event with the given values.
+The QOS event is generated in an element that wants an upstream
+element to either reduce or increase its rate because of
+high/low CPU load or other resource usage such as network performance.
+Typically sinks generate these events for each buffer they receive.
+element that generated the QoS event (usually the sink). The value is
+generally computed based on more long term statistics about the streams
+timestamps compared to the clock.
+A value &lt; 1.0 indicates that the upstream element is producing data faster
+than real-time. A value &gt; 1.0 indicates that the upstream element is not
+producing data fast enough. 1.0 is the ideal @proportion value. The
+proportion value can safely be used to lower or increase the quality of
+the element.
+buffer that caused the element to generate the QOS event. A negative value
+means that the buffer with @timestamp arrived in time. A positive value
+indicates how late the buffer with @timestamp was.
+to generate the QOS event. It is expressed in running time and thus an ever
+increasing value.
+The upstream element can use the @diff and @timestamp values to decide
+whether to process more buffers. For possitive @diff, all buffers with
+timestamp &lt;= @timestamp + @diff will certainly arrive late in the sink
+as well. A (negative) @diff value so that @timestamp + @diff would yield a
+result smaller than 0 is not allowed.
+The application can use general event probes to intercept the QoS
+event and implement custom application specific QoS handling.">
+        <return-value transfer-ownership="full">
+          <type name="Event" c:type="GstEvent*"/>
+        </return-value>
+        <parameters>
+          <parameter name="proportion" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="diff" transfer-ownership="none">
+            <type name="ClockTimeDiff" c:type="GstClockTimeDiff"/>
+          </parameter>
+          <parameter name="timestamp" transfer-ownership="none">
+            <type name="ClockTime" c:type="GstClockTime"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_seek"
+                   c:identifier="gst_event_new_seek"
+                   doc="Allocate a new seek event with the given parameters.
+The seek event configures playback of the pipeline between @start to @stop
+at the speed given in @rate, also called a playback segment.
+The @start and @stop values are expressed in @format.
+A @rate of 1.0 means normal playback rate, 2.0 means double speed.
+Negatives values means backwards playback. A value of 0.0 for the
+rate is not allowed and should be accomplished instead by PAUSING the
+pipeline.
+A pipeline has a default playback segment configured with a start
+position of 0, a stop position of -1 and a rate of 1.0. The currently
+configured playback segment can be queried with #GST_QUERY_SEGMENT.
+start and stop fields in playback segment. Adjustments can be made relative
+or absolute to the last configured values. A type of #GST_SEEK_TYPE_NONE
+means that the position should not be updated.
+When the rate is positive and @start has been updated, playback will start
+from the newly configured start position.
+For negative rates, playback will start from the newly configured stop
+position (if any). If the stop position if updated, it must be different from
+-1 for negative rates.
+It is not possible to seek relative to the current playback position, to do
+this, PAUSE the pipeline, query the current playback position with
+#GST_QUERY_POSITION and update the playback segment current position with a
+#GST_SEEK_TYPE_SET to the desired position.">
+        <return-value transfer-ownership="full">
+          <type name="Event" c:type="GstEvent*"/>
+        </return-value>
+        <parameters>
+          <parameter name="rate" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="SeekFlags" c:type="GstSeekFlags"/>
+          </parameter>
+          <parameter name="start_type" transfer-ownership="none">
+            <type name="SeekType" c:type="GstSeekType"/>
+          </parameter>
+          <parameter name="start" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+          <parameter name="stop_type" transfer-ownership="none">
+            <type name="SeekType" c:type="GstSeekType"/>
+          </parameter>
+          <parameter name="stop" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_navigation"
+                   c:identifier="gst_event_new_navigation"
+                   doc="structure.
+Create a new navigation event from the given description.">
+        <return-value transfer-ownership="full">
+          <type name="Event" c:type="GstEvent*"/>
+        </return-value>
+        <parameters>
+          <parameter name="structure" transfer-ownership="none">
+            <type name="Structure" c:type="GstStructure*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_latency"
+                   c:identifier="gst_event_new_latency"
+                   doc="Create a new latency event. The event is sent upstream from the sinks and
+notifies elements that they should add an additional @latency to the
+running time before synchronising against the clock.
+The latency is mostly used in live sinks and is always expressed in
+the time format."
+                   version="0.10.12">
+        <return-value transfer-ownership="full">
+          <type name="Event" c:type="GstEvent*"/>
+        </return-value>
+        <parameters>
+          <parameter name="latency" transfer-ownership="none">
+            <type name="ClockTime" c:type="GstClockTime"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_step"
+                   c:identifier="gst_event_new_step"
+                   doc="Create a new step event. The purpose of the step event is to instruct a sink
+to skip @amount (expressed in @format) of media. It can be used to implement
+stepping through the video frame by frame or for doing fast trick modes.
+A rate of &lt;= 0.0 is not allowed, pause the pipeline or reverse the playback
+direction of the pipeline to get the same effect.
+The @flush flag will clear any pending data in the pipeline before starting
+the step operation.
+The @intermediate flag instructs the pipeline that this step operation is
+part of a larger step operation."
+                   version="0.10.24">
+        <return-value transfer-ownership="full">
+          <type name="Event" c:type="GstEvent*"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="amount" transfer-ownership="none">
+            <type name="uint64" c:type="guint64"/>
+          </parameter>
+          <parameter name="rate" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="flush" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="intermediate" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_sink_message"
+                   c:identifier="gst_event_new_sink_message"
+                   doc="Create a new sink-message event. The purpose of the sink-message event is
+to instruct a sink to post the message contained in the event synchronized
+with the stream."
+                   version="0.10.26">
+        <return-value transfer-ownership="full">
+          <type name="Event" c:type="GstEvent*"/>
+        </return-value>
+        <parameters>
+          <parameter name="msg" transfer-ownership="none">
+            <type name="Message" c:type="GstMessage*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="get_structure"
+              c:identifier="gst_event_get_structure"
+              doc="Access the structure of the event.
+owned by the event, which means that you should not free it and
+that the pointer becomes invalid when you free the event.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="Structure" c:type="GstStructure*"/>
+        </return-value>
+      </method>
+      <method name="has_name"
+              c:identifier="gst_event_has_name"
+              doc="Checks if @event has the given @name. This function is usually used to
+check the name of a custom event."
+              version="0.10.20">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_seqnum"
+              c:identifier="gst_event_get_seqnum"
+              doc="Retrieve the sequence number of a event.
+Events have ever-incrementing sequence numbers, which may also be set
+explicitly via gst_event_set_seqnum(). Sequence numbers are typically used to
+indicate that a event corresponds to some other set of events or messages,
+for example an EOS event corresponding to a SEEK event. It is considered good
+practice to make this correspondence when possible, though it is not
+required.
+Note that events and messages share the same sequence number incrementor;
+two events or messages will never not have the same sequence number unless
+that correspondence was made explicitly.
+MT safe."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="uint32" c:type="guint32"/>
+        </return-value>
+      </method>
+      <method name="set_seqnum"
+              c:identifier="gst_event_set_seqnum"
+              doc="Set the sequence number of a event.
+This function might be called by the creator of a event to indicate that the
+event relates to other events or messages. See gst_event_get_seqnum() for
+more information.
+MT safe."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="seqnum" transfer-ownership="none">
+            <type name="uint32" c:type="guint32"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_new_segment"
+              c:identifier="gst_event_parse_new_segment"
+              doc="Get the update flag, rate, format, start, stop and position in the
+newsegment event. In general, gst_event_parse_new_segment_full() should
+be used instead of this, to also retrieve the applied_rate value of the
+segment. See gst_event_new_new_segment_full() for a full description
+of the newsegment event.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="update" direction="out" transfer-ownership="full">
+            <type name="boolean" c:type="gboolean*"/>
+          </parameter>
+          <parameter name="rate" direction="out" transfer-ownership="full">
+            <type name="double" c:type="gdouble*"/>
+          </parameter>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat*"/>
+          </parameter>
+          <parameter name="start" direction="out" transfer-ownership="full">
+            <type name="int64" c:type="gint64*"/>
+          </parameter>
+          <parameter name="stop" direction="out" transfer-ownership="full">
+            <type name="int64" c:type="gint64*"/>
+          </parameter>
+          <parameter name="position" direction="out" transfer-ownership="full">
+            <type name="int64" c:type="gint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_new_segment_full"
+              c:identifier="gst_event_parse_new_segment_full"
+              doc="Get the update, rate, applied_rate, format, start, stop and
+position in the newsegment event. See gst_event_new_new_segment_full()
+for a full description of the newsegment event."
+              version="0.10.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="update" direction="out" transfer-ownership="full">
+            <type name="boolean" c:type="gboolean*"/>
+          </parameter>
+          <parameter name="rate" direction="out" transfer-ownership="full">
+            <type name="double" c:type="gdouble*"/>
+          </parameter>
+          <parameter name="applied_rate"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="double" c:type="gdouble*"/>
+          </parameter>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat*"/>
+          </parameter>
+          <parameter name="start" direction="out" transfer-ownership="full">
+            <type name="int64" c:type="gint64*"/>
+          </parameter>
+          <parameter name="stop" direction="out" transfer-ownership="full">
+            <type name="int64" c:type="gint64*"/>
+          </parameter>
+          <parameter name="position" direction="out" transfer-ownership="full">
+            <type name="int64" c:type="gint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_tag"
+              c:identifier="gst_event_parse_tag"
+              doc="Parses a tag @event and stores the results in the given @taglist location.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="taglist" transfer-ownership="none">
+            <type name="TagList" c:type="GstTagList**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_buffer_size"
+              c:identifier="gst_event_parse_buffer_size"
+              doc="Get the format, minsize, maxsize and async-flag in the buffersize event.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat*"/>
+          </parameter>
+          <parameter name="minsize" direction="out" transfer-ownership="full">
+            <type name="int64" c:type="gint64*"/>
+          </parameter>
+          <parameter name="maxsize" direction="out" transfer-ownership="full">
+            <type name="int64" c:type="gint64*"/>
+          </parameter>
+          <parameter name="async" direction="out" transfer-ownership="full">
+            <type name="boolean" c:type="gboolean*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_qos"
+              c:identifier="gst_event_parse_qos"
+              doc="Get the proportion, diff and timestamp in the qos event. See
+gst_event_new_qos() for more information about the different QoS values.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="proportion"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="double" c:type="gdouble*"/>
+          </parameter>
+          <parameter name="diff" transfer-ownership="none">
+            <type name="ClockTimeDiff" c:type="GstClockTimeDiff*"/>
+          </parameter>
+          <parameter name="timestamp" transfer-ownership="none">
+            <type name="ClockTime" c:type="GstClockTime*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_seek"
+              c:identifier="gst_event_parse_seek"
+              doc="Parses a seek @event and stores the results in the given result locations.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="rate" direction="out" transfer-ownership="full">
+            <type name="double" c:type="gdouble*"/>
+          </parameter>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat*"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="SeekFlags" c:type="GstSeekFlags*"/>
+          </parameter>
+          <parameter name="start_type" transfer-ownership="none">
+            <type name="SeekType" c:type="GstSeekType*"/>
+          </parameter>
+          <parameter name="start" direction="out" transfer-ownership="full">
+            <type name="int64" c:type="gint64*"/>
+          </parameter>
+          <parameter name="stop_type" transfer-ownership="none">
+            <type name="SeekType" c:type="GstSeekType*"/>
+          </parameter>
+          <parameter name="stop" direction="out" transfer-ownership="full">
+            <type name="int64" c:type="gint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_latency"
+              c:identifier="gst_event_parse_latency"
+              doc="Get the latency in the latency event."
+              version="0.10.12">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="latency" transfer-ownership="none">
+            <type name="ClockTime" c:type="GstClockTime*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_step"
+              c:identifier="gst_event_parse_step"
+              doc="Parse the step event."
+              version="0.10.24">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat*"/>
+          </parameter>
+          <parameter name="amount" direction="out" transfer-ownership="full">
+            <type name="uint64" c:type="guint64*"/>
+          </parameter>
+          <parameter name="rate" direction="out" transfer-ownership="full">
+            <type name="double" c:type="gdouble*"/>
+          </parameter>
+          <parameter name="flush" direction="out" transfer-ownership="full">
+            <type name="boolean" c:type="gboolean*"/>
+          </parameter>
+          <parameter name="intermediate"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="boolean" c:type="gboolean*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_sink_message"
+              c:identifier="gst_event_parse_sink_message"
+              doc="Parse the sink-message event. Unref @msg after usage."
+              version="0.10.26">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="msg" transfer-ownership="none">
+            <type name="Message" c:type="GstMessage**"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <record name="EventClass" c:type="GstEventClass">
+      <field name="mini_object_class" writable="1">
+        <type name="MiniObjectClass" c:type="GstMiniObjectClass"/>
+      </field>
+      <field name="_gst_reserved" writable="1">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <bitfield name="EventType"
+              doc="without a NEWSEGMENT event.
+send messages that should be emitted in sync with
+rendering.
+that the downstream elements are being starved of or
+flooded with data.
+user requests, such as mouse or keyboard movements,
+to upstream elements.
+data flow.
+In-band when travelling downstream.
+#GstEventType lists the standard event types that can be sent in a pipeline.
+The custom event types can be used for private messages between elements
+that can&apos;t be expressed using normal
+GStreamer buffer passing semantics. Custom events carry an arbitrary
+#GstStructure.
+Specific custom events are distinguished by the name of the structure."
+              c:type="GstEventType">
+      <member name="unknown" value="0" c:identifier="GST_EVENT_UNKNOWN"/>
+      <member name="flush_start"
+              value="19"
+              c:identifier="GST_EVENT_FLUSH_START"/>
+      <member name="flush_stop"
+              value="39"
+              c:identifier="GST_EVENT_FLUSH_STOP"/>
+      <member name="eos" value="86" c:identifier="GST_EVENT_EOS"/>
+      <member name="newsegment"
+              value="102"
+              c:identifier="GST_EVENT_NEWSEGMENT"/>
+      <member name="tag" value="118" c:identifier="GST_EVENT_TAG"/>
+      <member name="buffersize"
+              value="134"
+              c:identifier="GST_EVENT_BUFFERSIZE"/>
+      <member name="sink_message"
+              value="150"
+              c:identifier="GST_EVENT_SINK_MESSAGE"/>
+      <member name="qos" value="241" c:identifier="GST_EVENT_QOS"/>
+      <member name="seek" value="257" c:identifier="GST_EVENT_SEEK"/>
+      <member name="navigation"
+              value="273"
+              c:identifier="GST_EVENT_NAVIGATION"/>
+      <member name="latency" value="289" c:identifier="GST_EVENT_LATENCY"/>
+      <member name="step" value="305" c:identifier="GST_EVENT_STEP"/>
+      <member name="custom_upstream"
+              value="513"
+              c:identifier="GST_EVENT_CUSTOM_UPSTREAM"/>
+      <member name="custom_downstream"
+              value="518"
+              c:identifier="GST_EVENT_CUSTOM_DOWNSTREAM"/>
+      <member name="custom_downstream_oob"
+              value="514"
+              c:identifier="GST_EVENT_CUSTOM_DOWNSTREAM_OOB"/>
+      <member name="custom_both"
+              value="519"
+              c:identifier="GST_EVENT_CUSTOM_BOTH"/>
+      <member name="custom_both_oob"
+              value="515"
+              c:identifier="GST_EVENT_CUSTOM_BOTH_OOB"/>
+    </bitfield>
+    <bitfield name="EventTypeFlags"
+              doc="flow.
+#GstEventTypeFlags indicate the aspects of the different #GstEventType
+values. You can get the type flags of a #GstEventType with the
+gst_event_type_get_flags() function."
+              c:type="GstEventTypeFlags">
+      <member name="upstream"
+              value="1"
+              c:identifier="GST_EVENT_TYPE_UPSTREAM"/>
+      <member name="downstream"
+              value="2"
+              c:identifier="GST_EVENT_TYPE_DOWNSTREAM"/>
+      <member name="serialized"
+              value="4"
+              c:identifier="GST_EVENT_TYPE_SERIALIZED"/>
+    </bitfield>
+    <constant name="FOURCC_FORMAT" value="c%c%c%c">
+      <type name="utf8"/>
+    </constant>
+    <callback name="FilterFunc"
+              c:type="GstFilterFunc"
+              doc="Function prototype for a filter callback taht can be use in gst_filter_run().
+The function should apply its filtering to @obj. Additional data passed to
+gst_filter_run() are in @data.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="obj" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="1">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <enumeration name="FlowReturn"
+                 doc="sent yet) (unused/unimplemented).
+this error should post an error message with more
+details.
+this (and higher) to define custom success
+codes. Since 0.10.7.
+custom success code to this to avoid compiler
+warnings). Since 0.10.29.
+this (and lower) to define custom error codes.
+Since 0.10.7.
+custom error code to this to avoid compiler
+warnings). Since 0.10.29.
+The result of passing data to a pad.
+Note that the custom return values should not be exposed outside of the
+element scope and are available since 0.10.7."
+                 c:type="GstFlowReturn">
+      <member name="custom_success_2"
+              value="102"
+              c:identifier="GST_FLOW_CUSTOM_SUCCESS_2"/>
+      <member name="custom_success_1"
+              value="101"
+              c:identifier="GST_FLOW_CUSTOM_SUCCESS_1"/>
+      <member name="custom_success"
+              value="100"
+              c:identifier="GST_FLOW_CUSTOM_SUCCESS"/>
+      <member name="resend" value="1" c:identifier="GST_FLOW_RESEND"/>
+      <member name="ok" value="0" c:identifier="GST_FLOW_OK"/>
+      <member name="not_linked" value="-1" c:identifier="GST_FLOW_NOT_LINKED"/>
+      <member name="wrong_state"
+              value="-2"
+              c:identifier="GST_FLOW_WRONG_STATE"/>
+      <member name="unexpected" value="-3" c:identifier="GST_FLOW_UNEXPECTED"/>
+      <member name="not_negotiated"
+              value="-4"
+              c:identifier="GST_FLOW_NOT_NEGOTIATED"/>
+      <member name="error" value="-5" c:identifier="GST_FLOW_ERROR"/>
+      <member name="not_supported"
+              value="-6"
+              c:identifier="GST_FLOW_NOT_SUPPORTED"/>
+      <member name="custom_error"
+              value="-100"
+              c:identifier="GST_FLOW_CUSTOM_ERROR"/>
+      <member name="custom_error_1"
+              value="-101"
+              c:identifier="GST_FLOW_CUSTOM_ERROR_1"/>
+      <member name="custom_error_2"
+              value="-102"
+              c:identifier="GST_FLOW_CUSTOM_ERROR_2"/>
+    </enumeration>
+    <enumeration name="Format"
+                 doc="samples for raw audio, frames/fields for raw video (some, but not all,
+elements support this; use @GST_FORMAT_TIME if you don&apos;t have a good
+reason to query for samples/frames)
+May 2009)
+this as of May 2009)
+Standard predefined formats"
+                 c:type="GstFormat">
+      <member name="undefined" value="0" c:identifier="GST_FORMAT_UNDEFINED"/>
+      <member name="default" value="1" c:identifier="GST_FORMAT_DEFAULT"/>
+      <member name="bytes" value="2" c:identifier="GST_FORMAT_BYTES"/>
+      <member name="time" value="3" c:identifier="GST_FORMAT_TIME"/>
+      <member name="buffers" value="4" c:identifier="GST_FORMAT_BUFFERS"/>
+      <member name="percent" value="5" c:identifier="GST_FORMAT_PERCENT"/>
+    </enumeration>
+    <record name="FormatDefinition"
+            c:type="GstFormatDefinition"
+            doc="A format definition">
+      <field name="value" writable="1">
+        <type name="Format" c:type="GstFormat"/>
+      </field>
+      <field name="nick" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="description" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="quark" writable="1">
+        <type name="GLib.Quark" c:type="GQuark"/>
+      </field>
+    </record>
+    <glib:boxed c:type="GstGError"
+                glib:name="GError"
+                glib:type-name="GstGError"
+                glib:get-type="gst_g_error_get_type">
+    </glib:boxed>
+    <class name="GhostPad"
+           c:type="GstGhostPad"
+           doc="Opaque #GstGhostPad structure."
+           parent="ProxyPad"
+           glib:type-name="GstGhostPad"
+           glib:get-type="gst_ghost_pad_get_type"
+           glib:type-struct="GhostPadClass">
+      <constructor name="new"
+                   c:identifier="gst_ghost_pad_new"
+                   doc="Create a new ghostpad with @target as the target. The direction will be taken
+from the target pad. @target must be unlinked.
+Will ref the target.">
+        <return-value transfer-ownership="full">
+          <type name="GhostPad" c:type="GstPad*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="target" transfer-ownership="none">
+            <type name="Pad" c:type="GstPad*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_no_target"
+                   c:identifier="gst_ghost_pad_new_no_target"
+                   doc="Create a new ghostpad without a target with the given direction.
+A target can be set on the ghostpad later with the
+gst_ghost_pad_set_target() function.
+The created ghostpad will not have a padtemplate.">
+        <return-value transfer-ownership="full">
+          <type name="GhostPad" c:type="GstPad*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="dir" transfer-ownership="none">
+            <type name="PadDirection" c:type="GstPadDirection"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_from_template"
+                   c:identifier="gst_ghost_pad_new_from_template"
+                   doc="Create a new ghostpad with @target as the target. The direction will be taken
+from the target pad. The template used on the ghostpad will be @template.
+Will ref the target."
+                   version="0.10.10">
+        <return-value transfer-ownership="full">
+          <type name="GhostPad" c:type="GstPad*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="target" transfer-ownership="none">
+            <type name="Pad" c:type="GstPad*"/>
+          </parameter>
+          <parameter name="templ" transfer-ownership="none">
+            <type name="PadTemplate" c:type="GstPadTemplate*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_no_target_from_template"
+                   c:identifier="gst_ghost_pad_new_no_target_from_template"
+                   doc="Create a new ghostpad based on @templ, without setting a target. The
+direction will be taken from the @templ."
+                   version="0.10.10">
+        <return-value transfer-ownership="full">
+          <type name="GhostPad" c:type="GstPad*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="templ" transfer-ownership="none">
+            <type name="PadTemplate" c:type="GstPadTemplate*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="get_target"
+              c:identifier="gst_ghost_pad_get_target"
+              doc="Get the target pad of @gpad. Unref target pad after usage.
+has no target set. Unref target pad after usage.">
+        <return-value transfer-ownership="full">
+          <type name="Pad" c:type="GstPad*"/>
+        </return-value>
+      </method>
+      <method name="set_target"
+              c:identifier="gst_ghost_pad_set_target"
+              doc="Set the new target of the ghostpad @gpad. Any existing target
+is unlinked and links to the new target are established. if @newtarget is
+NULL the target will be cleared.
+when the internal pads could not be linked.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="newtarget" transfer-ownership="none">
+            <type name="Pad" c:type="GstPad*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="construct"
+              c:identifier="gst_ghost_pad_construct"
+              doc="Finish initialization of a newly allocated ghost pad.
+This function is most useful in language bindings and when subclassing
+#GstGhostPad; plugin and application developers normally will not call this
+function. Call this function directly after a call to g_object_new
+(GST_TYPE_GHOST_PAD, &quot;direction&quot;, @dir, ..., NULL)."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <field name="pad">
+        <type name="ProxyPad" c:type="GstProxyPad"/>
+      </field>
+      <field name="priv">
+        <type name="GhostPadPrivate" c:type="GstGhostPadPrivate*"/>
+      </field>
+    </class>
+    <record name="GhostPadClass"
+            c:type="GstGhostPadClass"
+            glib:is-gtype-struct-for="GhostPad">
+      <field name="parent_class">
+        <type name="ProxyPadClass" c:type="GstProxyPadClass"/>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <record name="GhostPadPrivate" c:type="GstGhostPadPrivate">
+    </record>
+    <constant name="INDEX_ID_INVALID" value="-1">
+      <type name="int"/>
+    </constant>
+    <interface name="ImplementsInterface"
+               c:type="GstImplementsInterface"
+               doc="Opaque #GstImplementsInterface structure."
+               glib:type-name="GstImplementsInterface"
+               glib:get-type="gst_implements_interface_get_type"
+               glib:type-struct="ImplementsInterfaceClass">
+      <prerequisite name="Element"/>
+      <virtual-method name="supported">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="iface_type" transfer-ownership="none">
+            <type name="GType" c:type="GType"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+    </interface>
+    <record name="ImplementsInterfaceClass"
+            c:type="GstImplementsInterfaceClass"
+            glib:is-gtype-struct-for="ImplementsInterface">
+      <field name="parent">
+        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+      </field>
+      <field name="supported">
+        <callback name="supported" c:type="supported">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="iface" transfer-ownership="none">
+              <type name="ImplementsInterface"
+                    c:type="GstImplementsInterface*"/>
+            </parameter>
+            <parameter name="iface_type" transfer-ownership="none">
+              <type name="GType" c:type="GType"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <class name="Index"
+           c:type="GstIndex"
+           doc="Opaque #GstIndex structure."
+           parent="Object"
+           glib:type-name="GstIndex"
+           glib:get-type="gst_index_get_type"
+           glib:type-struct="IndexClass">
+      <constructor name="new"
+                   c:identifier="gst_index_new"
+                   doc="Create a new tileindex object">
+        <return-value transfer-ownership="full">
+          <type name="Index" c:type="GstIndex*"/>
+        </return-value>
+      </constructor>
+      <virtual-method name="get_writer_id">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="writer_id"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+          <parameter name="writer_string" transfer-ownership="full">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="commit" invoker="commit">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="id" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="add_entry">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="entry" transfer-ownership="none">
+            <type name="IndexEntry" c:type="GstIndexEntry*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_assoc_entry">
+        <return-value transfer-ownership="full">
+          <type name="IndexEntry" c:type="GstIndexEntry*"/>
+        </return-value>
+        <parameters>
+          <parameter name="id" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="method" transfer-ownership="none">
+            <type name="IndexLookupMethod" c:type="GstIndexLookupMethod"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="AssocFlags" c:type="GstAssocFlags"/>
+          </parameter>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+          <parameter name="func" transfer-ownership="none">
+            <type name="GLib.CompareDataFunc" c:type="GCompareDataFunc"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none" closure="7">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="commit"
+              c:identifier="gst_index_commit"
+              doc="Tell the index that the writer with the given id is done
+with this index and is not going to write any more entries
+to it.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="id" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_group"
+              c:identifier="gst_index_get_group"
+              doc="Get the id of the current group.">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="new_group"
+              c:identifier="gst_index_new_group"
+              doc="Create a new group for the given index. It will be
+set as the current group.">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="set_group"
+              c:identifier="gst_index_set_group"
+              doc="Set the current groupnumber to the given argument.
+did not exist.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="groupnum" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_certainty"
+              c:identifier="gst_index_set_certainty"
+              doc="Set the certainty of the given index.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="certainty" transfer-ownership="none">
+            <type name="IndexCertainty" c:type="GstIndexCertainty"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_certainty"
+              c:identifier="gst_index_get_certainty"
+              doc="Get the certainty of the given index.">
+        <return-value transfer-ownership="full">
+          <type name="IndexCertainty" c:type="GstIndexCertainty"/>
+        </return-value>
+      </method>
+      <method name="set_filter"
+              c:identifier="gst_index_set_filter"
+              doc="Lets the app register a custom filter function so that
+it can select what entries should be stored in the index.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="filter"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="2">
+            <type name="IndexFilter" c:type="GstIndexFilter"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_filter_full"
+              c:identifier="gst_index_set_filter_full"
+              doc="Lets the app register a custom filter function so that
+it can select what entries should be stored in the index.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="filter"
+                     transfer-ownership="none"
+                     scope="notified"
+                     closure="2"
+                     destroy="3">
+            <type name="IndexFilter" c:type="GstIndexFilter"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+          <parameter name="user_data_destroy"
+                     transfer-ownership="none"
+                     scope="call">
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_resolver"
+              c:identifier="gst_index_set_resolver"
+              doc="Lets the app register a custom function to map index
+ids to writer descriptions.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="resolver"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="2">
+            <type name="IndexResolver" c:type="GstIndexResolver"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_resolver_full"
+              c:identifier="gst_index_set_resolver_full"
+              doc="Lets the app register a custom function to map index
+ids to writer descriptions."
+              version="0.10.18">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="resolver"
+                     transfer-ownership="none"
+                     scope="notified"
+                     closure="2"
+                     destroy="3">
+            <type name="IndexResolver" c:type="GstIndexResolver"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+          <parameter name="user_data_destroy"
+                     transfer-ownership="none"
+                     scope="call">
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_writer_id"
+              c:identifier="gst_index_get_writer_id"
+              doc="Before entries can be added to the index, a writer
+should obtain a unique id. The methods to add new entries
+to the index require this id as an argument.
+The application can implement a custom function to map the writer object
+to a string. That string will be used to register or look up an id
+in the index.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="writer" transfer-ownership="none">
+            <type name="Object" c:type="GstObject*"/>
+          </parameter>
+          <parameter name="id" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_format"
+              c:identifier="gst_index_add_format"
+              doc="Adds a format entry into the index. This function is
+used to map dynamic GstFormat ids to their original
+format key.">
+        <return-value transfer-ownership="full">
+          <type name="IndexEntry" c:type="GstIndexEntry*"/>
+        </return-value>
+        <parameters>
+          <parameter name="id" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_associationv"
+              c:identifier="gst_index_add_associationv"
+              doc="Associate given format/value pairs with each other.">
+        <return-value transfer-ownership="full">
+          <type name="IndexEntry" c:type="GstIndexEntry*"/>
+        </return-value>
+        <parameters>
+          <parameter name="id" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="AssocFlags" c:type="GstAssocFlags"/>
+          </parameter>
+          <parameter name="n" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="list" transfer-ownership="none">
+            <type name="IndexAssociation" c:type="GstIndexAssociation*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_association"
+              c:identifier="gst_index_add_association"
+              doc="Associate given format/value pairs with each other.
+Be sure to pass gint64 values to this functions varargs,
+you might want to use a gint64 cast to be sure.">
+        <return-value transfer-ownership="full">
+          <type name="IndexEntry" c:type="GstIndexEntry*"/>
+        </return-value>
+        <parameters>
+          <parameter name="id" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="AssocFlags" c:type="GstAssocFlags"/>
+          </parameter>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_object"
+              c:identifier="gst_index_add_object"
+              doc="Add the given object to the index with the given key.
+This function is not yet implemented.">
+        <return-value transfer-ownership="full">
+          <type name="IndexEntry" c:type="GstIndexEntry*"/>
+        </return-value>
+        <parameters>
+          <parameter name="id" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="key" transfer-ownership="full">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="type" transfer-ownership="none">
+            <type name="GType" c:type="GType"/>
+          </parameter>
+          <parameter name="object" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_id"
+              c:identifier="gst_index_add_id"
+              doc="Add an id entry into the index.">
+        <return-value transfer-ownership="full">
+          <type name="IndexEntry" c:type="GstIndexEntry*"/>
+        </return-value>
+        <parameters>
+          <parameter name="id" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="description" transfer-ownership="full">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_assoc_entry"
+              c:identifier="gst_index_get_assoc_entry"
+              doc="Finds the given format/value in the index
+value was not found.">
+        <return-value transfer-ownership="full">
+          <type name="IndexEntry" c:type="GstIndexEntry*"/>
+        </return-value>
+        <parameters>
+          <parameter name="id" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="method" transfer-ownership="none">
+            <type name="IndexLookupMethod" c:type="GstIndexLookupMethod"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="AssocFlags" c:type="GstAssocFlags"/>
+          </parameter>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_assoc_entry_full"
+              c:identifier="gst_index_get_assoc_entry_full"
+              doc="Finds the given format/value in the index with the given
+compare function and user_data.
+value was not found.">
+        <return-value transfer-ownership="full">
+          <type name="IndexEntry" c:type="GstIndexEntry*"/>
+        </return-value>
+        <parameters>
+          <parameter name="id" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="method" transfer-ownership="none">
+            <type name="IndexLookupMethod" c:type="GstIndexLookupMethod"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="AssocFlags" c:type="GstAssocFlags"/>
+          </parameter>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="7">
+            <type name="GLib.CompareDataFunc" c:type="GCompareDataFunc"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="resolver" writable="1">
+        <type name="IndexResolver" c:type="GstIndexResolver"/>
+      </property>
+      <field name="object">
+        <type name="Object" c:type="GstObject"/>
+      </field>
+      <field name="groups">
+        <type name="GLib.List" c:type="GList*"/>
+      </field>
+      <field name="curgroup">
+        <type name="IndexGroup" c:type="GstIndexGroup*"/>
+      </field>
+      <field name="maxgroup">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="method">
+        <type name="IndexResolverMethod" c:type="GstIndexResolverMethod"/>
+      </field>
+      <field name="resolver">
+        <type name="IndexResolver" c:type="GstIndexResolver"/>
+      </field>
+      <field name="resolver_user_data">
+        <type name="any" c:type="gpointer"/>
+      </field>
+      <field name="filter">
+        <type name="IndexFilter" c:type="GstIndexFilter"/>
+      </field>
+      <field name="filter_user_data">
+        <type name="any" c:type="gpointer"/>
+      </field>
+      <field name="filter_user_data_destroy">
+        <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+      </field>
+      <field name="writers">
+        <type name="GLib.HashTable" c:type="GHashTable*"/>
+      </field>
+      <field name="last_id">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="resolver_user_data_destroy">
+        <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="3">
+          <type name="any"/>
+        </array>
+      </field>
+      <glib:signal name="entry-added">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="IndexEntry" c:type="GstIndexEntry"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <record name="IndexAssociation"
+            c:type="GstIndexAssociation"
+            doc="An association in an entry.">
+      <field name="format" writable="1">
+        <type name="Format" c:type="GstFormat"/>
+      </field>
+      <field name="value" writable="1">
+        <type name="int64" c:type="gint64"/>
+      </field>
+    </record>
+    <enumeration name="IndexCertainty"
+                 doc="The certainty of a group in the index."
+                 c:type="GstIndexCertainty">
+      <member name="unknown" value="0" c:identifier="GST_INDEX_UNKNOWN"/>
+      <member name="certain" value="1" c:identifier="GST_INDEX_CERTAIN"/>
+      <member name="fuzzy" value="2" c:identifier="GST_INDEX_FUZZY"/>
+    </enumeration>
+    <record name="IndexClass"
+            c:type="GstIndexClass"
+            glib:is-gtype-struct-for="Index">
+      <field name="parent_class">
+        <type name="ObjectClass" c:type="GstObjectClass"/>
+      </field>
+      <field name="get_writer_id">
+        <callback name="get_writer_id" c:type="get_writer_id">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="index" transfer-ownership="none">
+              <type name="Index" c:type="GstIndex*"/>
+            </parameter>
+            <parameter name="writer_id"
+                       direction="out"
+                       transfer-ownership="full">
+              <type name="int" c:type="gint*"/>
+            </parameter>
+            <parameter name="writer_string" transfer-ownership="full">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="commit">
+        <callback name="commit" c:type="commit">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="index" transfer-ownership="none">
+              <type name="Index" c:type="GstIndex*"/>
+            </parameter>
+            <parameter name="id" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="add_entry">
+        <callback name="add_entry" c:type="add_entry">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="index" transfer-ownership="none">
+              <type name="Index" c:type="GstIndex*"/>
+            </parameter>
+            <parameter name="entry" transfer-ownership="none">
+              <type name="IndexEntry" c:type="GstIndexEntry*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_assoc_entry">
+        <callback name="get_assoc_entry" c:type="get_assoc_entry">
+          <return-value transfer-ownership="full">
+            <type name="IndexEntry" c:type="GstIndexEntry*"/>
+          </return-value>
+          <parameters>
+            <parameter name="index" transfer-ownership="none">
+              <type name="Index" c:type="GstIndex*"/>
+            </parameter>
+            <parameter name="id" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+            <parameter name="method" transfer-ownership="none">
+              <type name="IndexLookupMethod" c:type="GstIndexLookupMethod"/>
+            </parameter>
+            <parameter name="flags" transfer-ownership="none">
+              <type name="AssocFlags" c:type="GstAssocFlags"/>
+            </parameter>
+            <parameter name="format" transfer-ownership="none">
+              <type name="Format" c:type="GstFormat"/>
+            </parameter>
+            <parameter name="value" transfer-ownership="none">
+              <type name="int64" c:type="gint64"/>
+            </parameter>
+            <parameter name="func" transfer-ownership="none">
+              <type name="GLib.CompareDataFunc" c:type="GCompareDataFunc"/>
+            </parameter>
+            <parameter name="user_data" transfer-ownership="none" closure="7">
+              <type name="any" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="entry_added">
+        <callback name="entry_added" c:type="entry_added">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="index" transfer-ownership="none">
+              <type name="Index" c:type="GstIndex*"/>
+            </parameter>
+            <parameter name="entry" transfer-ownership="none">
+              <type name="IndexEntry" c:type="GstIndexEntry*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <record name="IndexEntry"
+            c:type="GstIndexEntry"
+            doc="The basic element of an index."
+            glib:type-name="GstIndexEntry"
+            glib:get-type="gst_index_entry_get_type">
+      <field name="type" writable="1">
+        <type name="IndexEntryType" c:type="GstIndexEntryType"/>
+      </field>
+      <field name="id" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <union name="data" c:type="data">
+        <record name="id" c:type="id">
+          <field name="description" writable="1">
+            <type name="utf8" c:type="gchar*"/>
+          </field>
+        </record>
+        <record name="assoc" c:type="assoc">
+          <field name="nassocs" writable="1">
+            <type name="int" c:type="gint"/>
+          </field>
+          <field name="assocs" writable="1">
+            <type name="IndexAssociation" c:type="GstIndexAssociation*"/>
+          </field>
+          <field name="flags" writable="1">
+            <type name="AssocFlags" c:type="GstAssocFlags"/>
+          </field>
+        </record>
+        <record name="object" c:type="object">
+          <field name="key" writable="1">
+            <type name="utf8" c:type="gchar*"/>
+          </field>
+          <field name="type" writable="1">
+            <type name="GType" c:type="GType"/>
+          </field>
+          <field name="object" writable="1">
+            <type name="any" c:type="gpointer"/>
+          </field>
+        </record>
+        <record name="format" c:type="format">
+          <field name="format" writable="1">
+            <type name="Format" c:type="GstFormat"/>
+          </field>
+          <field name="key" writable="1">
+            <type name="utf8" c:type="gchar*"/>
+          </field>
+        </record>
+      </union>
+      <method name="copy"
+              c:identifier="gst_index_entry_copy"
+              doc="Copies an entry and returns the result.">
+        <return-value transfer-ownership="full">
+          <type name="IndexEntry" c:type="GstIndexEntry*"/>
+        </return-value>
+      </method>
+      <method name="free"
+              c:identifier="gst_index_entry_free"
+              doc="Free the memory used by the given entry.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="assoc_map"
+              c:identifier="gst_index_entry_assoc_map"
+              doc="Gets alternative formats associated with the indexentry.
+format.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="value" direction="out" transfer-ownership="full">
+            <type name="int64" c:type="gint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <enumeration name="IndexEntryType"
+                 doc="The different types of entries in the index."
+                 c:type="GstIndexEntryType">
+      <member name="id" value="0" c:identifier="GST_INDEX_ENTRY_ID"/>
+      <member name="association"
+              value="1"
+              c:identifier="GST_INDEX_ENTRY_ASSOCIATION"/>
+      <member name="object" value="2" c:identifier="GST_INDEX_ENTRY_OBJECT"/>
+      <member name="format" value="3" c:identifier="GST_INDEX_ENTRY_FORMAT"/>
+    </enumeration>
+    <class name="IndexFactory"
+           c:type="GstIndexFactory"
+           doc="The GstIndexFactory object"
+           parent="PluginFeature"
+           glib:type-name="GstIndexFactory"
+           glib:get-type="gst_index_factory_get_type"
+           glib:type-struct="IndexFactoryClass">
+      <constructor name="new"
+                   c:identifier="gst_index_factory_new"
+                   doc="Create a new indexfactory with the given parameters">
+        <return-value transfer-ownership="full">
+          <type name="IndexFactory" c:type="GstIndexFactory*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="longdesc" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="type" transfer-ownership="none">
+            <type name="GType" c:type="GType"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <function name="find"
+                c:identifier="gst_index_factory_find"
+                doc="Search for an indexfactory of the given name.">
+        <return-value transfer-ownership="full">
+          <type name="IndexFactory" c:type="GstIndexFactory*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="make"
+                c:identifier="gst_index_factory_make"
+                doc="Create a new #GstIndex instance from the
+indexfactory with the given name.">
+        <return-value transfer-ownership="full">
+          <type name="Index" c:type="GstIndex*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <method name="destroy"
+              c:identifier="gst_index_factory_destroy"
+              doc="Removes the index from the global list.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="create"
+              c:identifier="gst_index_factory_create"
+              doc="Create a new #GstIndex instance from the
+given indexfactory.">
+        <return-value transfer-ownership="full">
+          <type name="Index" c:type="GstIndex*"/>
+        </return-value>
+      </method>
+      <field name="feature">
+        <type name="PluginFeature" c:type="GstPluginFeature"/>
+      </field>
+      <field name="longdesc">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="type">
+        <type name="GType" c:type="GType"/>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </class>
+    <record name="IndexFactoryClass"
+            c:type="GstIndexFactoryClass"
+            glib:is-gtype-struct-for="IndexFactory">
+      <field name="parent">
+        <type name="PluginFeatureClass" c:type="GstPluginFeatureClass"/>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <callback name="IndexFilter"
+              c:type="GstIndexFilter"
+              doc="Function to filter out entries in the index.
+to the index, %FALSE otherwise.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="index" transfer-ownership="none">
+          <type name="Index" c:type="GstIndex*"/>
+        </parameter>
+        <parameter name="entry" transfer-ownership="none">
+          <type name="IndexEntry" c:type="GstIndexEntry*"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="2">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <bitfield name="IndexFlags"
+              doc="Flags for this index"
+              c:type="GstIndexFlags">
+      <member name="writable" value="16" c:identifier="GST_INDEX_WRITABLE"/>
+      <member name="readable" value="32" c:identifier="GST_INDEX_READABLE"/>
+      <member name="flag_last"
+              value="4096"
+              c:identifier="GST_INDEX_FLAG_LAST"/>
+    </bitfield>
+    <record name="IndexGroup"
+            c:type="GstIndexGroup"
+            doc="A group of related entries in an index.">
+      <field name="groupnum" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="entries" writable="1">
+        <type name="GLib.List" c:type="GList*"/>
+      </field>
+      <field name="certainty" writable="1">
+        <type name="IndexCertainty" c:type="GstIndexCertainty"/>
+      </field>
+      <field name="peergroup" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+    </record>
+    <enumeration name="IndexLookupMethod"
+                 doc="Specify the method to find an index entry in the index."
+                 c:type="GstIndexLookupMethod">
+      <member name="exact" value="0" c:identifier="GST_INDEX_LOOKUP_EXACT"/>
+      <member name="before" value="1" c:identifier="GST_INDEX_LOOKUP_BEFORE"/>
+      <member name="after" value="2" c:identifier="GST_INDEX_LOOKUP_AFTER"/>
+    </enumeration>
+    <callback name="IndexResolver"
+              c:type="GstIndexResolver"
+              doc="Function to resolve ids to writer descriptions.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="index" transfer-ownership="none">
+          <type name="Index" c:type="GstIndex*"/>
+        </parameter>
+        <parameter name="writer" transfer-ownership="none">
+          <type name="Object" c:type="GstObject*"/>
+        </parameter>
+        <parameter name="writer_string" transfer-ownership="none">
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="3">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <enumeration name="IndexResolverMethod"
+                 doc="The method used to resolve index writers"
+                 c:type="GstIndexResolverMethod">
+      <member name="custom"
+              value="0"
+              c:identifier="GST_INDEX_RESOLVER_CUSTOM"/>
+      <member name="gtype" value="1" c:identifier="GST_INDEX_RESOLVER_GTYPE"/>
+      <member name="path" value="2" c:identifier="GST_INDEX_RESOLVER_PATH"/>
+    </enumeration>
+    <record name="Iterator"
+            c:type="GstIterator"
+            doc="created.
+#GstIterator base structure. The values of this structure are
+protected for subclasses, use the methods to use the #GstIterator.">
+      <field name="next" writable="1">
+        <type name="IteratorNextFunction" c:type="GstIteratorNextFunction"/>
+      </field>
+      <field name="item" writable="1">
+        <type name="IteratorItemFunction" c:type="GstIteratorItemFunction"/>
+      </field>
+      <field name="resync" writable="1">
+        <type name="IteratorResyncFunction"
+              c:type="GstIteratorResyncFunction"/>
+      </field>
+      <field name="free" writable="1">
+        <type name="IteratorFreeFunction" c:type="GstIteratorFreeFunction"/>
+      </field>
+      <field name="pushed" writable="1">
+        <type name="Iterator" c:type="GstIterator*"/>
+      </field>
+      <field name="type" writable="1">
+        <type name="GType" c:type="GType"/>
+      </field>
+      <field name="lock" writable="1">
+        <type name="GLib.Mutex" c:type="GMutex*"/>
+      </field>
+      <field name="cookie" writable="1">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+      <field name="master_cookie" writable="1">
+        <type name="any" c:type="guint32*"/>
+      </field>
+      <field name="_gst_reserved" writable="1">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+      <constructor name="new"
+                   c:identifier="gst_iterator_new"
+                   doc="iterator changed.
+Create a new iterator. This function is mainly used for objects
+implementing the next/resync/free function to iterate a data structure.
+For each item retrieved, the @item function is called with the lock
+held. The @free function is called when the iterator is freed.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="Iterator" c:type="GstIterator*"/>
+        </return-value>
+        <parameters>
+          <parameter name="size" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="type" transfer-ownership="none">
+            <type name="GType" c:type="GType"/>
+          </parameter>
+          <parameter name="lock" transfer-ownership="none">
+            <type name="GLib.Mutex" c:type="GMutex*"/>
+          </parameter>
+          <parameter name="master_cookie"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="uint32" c:type="guint32*"/>
+          </parameter>
+          <parameter name="next" transfer-ownership="none" scope="call">
+            <type name="IteratorNextFunction"
+                  c:type="GstIteratorNextFunction"/>
+          </parameter>
+          <parameter name="item" transfer-ownership="none" scope="call">
+            <type name="IteratorItemFunction"
+                  c:type="GstIteratorItemFunction"/>
+          </parameter>
+          <parameter name="resync" transfer-ownership="none" scope="call">
+            <type name="IteratorResyncFunction"
+                  c:type="GstIteratorResyncFunction"/>
+          </parameter>
+          <parameter name="free" transfer-ownership="none" scope="call">
+            <type name="IteratorFreeFunction"
+                  c:type="GstIteratorFreeFunction"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_list"
+                   c:identifier="gst_iterator_new_list"
+                   doc="is changed.
+Create a new iterator designed for iterating @list.
+The list you iterate is usually part of a data structure @owner and is
+protected with @lock.
+The iterator will use @lock to retrieve the next item of the list and it
+will then call the @item function before releasing @lock again.
+The @item function usualy makes sure that the item remains alive while
+responsible for freeing/unreffing the item after usage as explained in
+gst_iterator_next().
+When a concurrent update to the list is performed, usually by @owner while
+holding @lock, @master_cookie will be updated. The iterator implementation
+will notice the update of the cookie and will return %GST_ITERATOR_RESYNC to
+the user of the iterator in the next call to gst_iterator_next().
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="Iterator" c:type="GstIterator*"/>
+        </return-value>
+        <parameters>
+          <parameter name="type" transfer-ownership="none">
+            <type name="GType" c:type="GType"/>
+          </parameter>
+          <parameter name="lock" transfer-ownership="none">
+            <type name="GLib.Mutex" c:type="GMutex*"/>
+          </parameter>
+          <parameter name="master_cookie"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="uint32" c:type="guint32*"/>
+          </parameter>
+          <parameter name="list" transfer-ownership="none">
+            <type name="GLib.List" c:type="GList**"/>
+          </parameter>
+          <parameter name="owner" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+          <parameter name="item" transfer-ownership="none" scope="call">
+            <type name="IteratorItemFunction"
+                  c:type="GstIteratorItemFunction"/>
+          </parameter>
+          <parameter name="free" transfer-ownership="none" scope="call">
+            <type name="IteratorDisposeFunction"
+                  c:type="GstIteratorDisposeFunction"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_single"
+                   c:identifier="gst_iterator_new_single"
+                   doc="This #GstIterator is a convenient iterator for the common
+case where a #GstIterator needs to be returned but only
+a single object has to be considered. This happens often
+for the #GstPadIterIntLinkFunction."
+                   version="0.10.25">
+        <return-value transfer-ownership="full">
+          <type name="Iterator" c:type="GstIterator*"/>
+        </return-value>
+        <parameters>
+          <parameter name="type" transfer-ownership="none">
+            <type name="GType" c:type="GType"/>
+          </parameter>
+          <parameter name="object" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+          <parameter name="copy" transfer-ownership="none" scope="call">
+            <type name="CopyFunction" c:type="GstCopyFunction"/>
+          </parameter>
+          <parameter name="free" transfer-ownership="none" scope="call">
+            <type name="GLib.FreeFunc" c:type="GFreeFunc"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="next"
+              c:identifier="gst_iterator_next"
+              doc="Get the next item from the iterator in @elem.
+Only when this function returns %GST_ITERATOR_OK, @elem will contain a valid
+value. For iterators that return refcounted objects, the returned object
+will have its refcount increased and should therefore be unreffed after
+usage.
+When this function returns %GST_ITERATOR_DONE, no more elements can be
+retrieved from @it.
+A return value of %GST_ITERATOR_RESYNC indicates that the element list was
+concurrently updated. The user of @it should call gst_iterator_resync() to
+get the newly updated list.
+A return value of %GST_ITERATOR_ERROR indicates an unrecoverable fatal error.
+is a refcounted object.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="IteratorResult" c:type="GstIteratorResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="elem" transfer-ownership="none">
+            <type name="any" c:type="gpointer*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="resync"
+              c:identifier="gst_iterator_resync"
+              doc="Resync the iterator. this function is mostly called
+after gst_iterator_next() returned %GST_ITERATOR_RESYNC.
+When an iterator was pushed on @it, it will automatically be popped again
+with this function.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="free"
+              c:identifier="gst_iterator_free"
+              doc="Free the iterator.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="push"
+              c:identifier="gst_iterator_push"
+              doc="Pushes @other iterator onto @it. All calls performed on @it are
+forwarded to @other. If @other returns %GST_ITERATOR_DONE, it is
+popped again and calls are handled by @it again.
+This function is mainly used by objects implementing the iterator
+next function to recurse into substructures.
+When gst_iterator_resync() is called on @it, @other will automatically be
+popped.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="other" transfer-ownership="none">
+            <type name="Iterator" c:type="GstIterator*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="filter"
+              c:identifier="gst_iterator_filter"
+              doc="Create a new iterator from an existing iterator. The new iterator
+will only return those elements that match the given compare function @func.
+in the iterator.
+When this iterator is freed, @it will also be freed.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="Iterator" c:type="GstIterator*"/>
+        </return-value>
+        <parameters>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="2">
+            <type name="GLib.CompareFunc" c:type="GCompareFunc"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="fold"
+              c:identifier="gst_iterator_fold"
+              doc="Folds @func over the elements of @iter. That is to say, @func will be called
+as @func (object, @ret, @user_data) for each object in @it. The normal use
+of this procedure is to accumulate the results of operating on the objects in
+before @func is called, and it should be unrefed after use in @func.
+This procedure can be used (and is used internally) to implement the
+gst_iterator_foreach() and gst_iterator_find_custom() operations.
+The fold will proceed as long as @func returns TRUE. When the iterator has no
+more arguments, %GST_ITERATOR_DONE will be returned. If @func returns FALSE,
+the fold will stop, and %GST_ITERATOR_OK will be returned. Errors or resyncs
+will cause fold to return %GST_ITERATOR_ERROR or %GST_ITERATOR_RESYNC as
+appropriate.
+The iterator will not be freed.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="IteratorResult" c:type="GstIteratorResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="func" transfer-ownership="none" scope="call">
+            <type name="IteratorFoldFunction"
+                  c:type="GstIteratorFoldFunction"/>
+          </parameter>
+          <parameter name="ret" transfer-ownership="none">
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="foreach"
+              c:identifier="gst_iterator_foreach"
+              doc="Iterate over all element of @it and call the given function @func for
+each element.  As in gst_iterator_fold(), the refcount of a refcounted
+object will be increased before @func is called, and should be unrefed
+after use.
+freed.
+MT safe.">
+        <return-value transfer-ownership="full" doc="The iterator will not be">
+          <type name="IteratorResult" c:type="GstIteratorResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="2">
+            <type name="GLib.Func" c:type="GFunc"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="find_custom"
+              c:identifier="gst_iterator_find_custom"
+              doc="Find the first element in @it that matches the compare function @func.
+the refcount of a refcounted object will be increased before @func is
+called, and should be unrefed after use.
+The iterator will not be freed.
+This function will return NULL if an error or resync happened to
+the iterator.
+function or NULL when no element matched.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </return-value>
+        <parameters>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="2">
+            <type name="GLib.CompareFunc" c:type="GCompareFunc"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <callback name="IteratorDisposeFunction"
+              c:type="GstIteratorDisposeFunction"
+              doc="The function that will be called when a #GList iterator is freed. The
+owner of the #GList iterator can then clean up its resources.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="owner" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="IteratorFoldFunction"
+              c:type="GstIteratorFoldFunction"
+              doc="A function to be passed to gst_iterator_fold().">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="item" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="ret" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="2">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="IteratorFreeFunction"
+              c:type="GstIteratorFreeFunction"
+              doc="This function will be called when the iterator is freed.
+Implementors of a #GstIterator should implement this
+function and pass it to the constructor of the custom iterator.
+The function will be called with the iterator lock held.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="it" transfer-ownership="none">
+          <type name="Iterator" c:type="GstIterator*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <enumeration name="IteratorItem"
+                 doc="The result of a #GstIteratorItemFunction."
+                 c:type="GstIteratorItem">
+      <member name="skip" value="0" c:identifier="GST_ITERATOR_ITEM_SKIP"/>
+      <member name="pass" value="1" c:identifier="GST_ITERATOR_ITEM_PASS"/>
+      <member name="end" value="2" c:identifier="GST_ITERATOR_ITEM_END"/>
+    </enumeration>
+    <callback name="IteratorItemFunction"
+              c:type="GstIteratorItemFunction"
+              doc="The function that will be called after the next item of the iterator
+has been retrieved. This function will typically increase the refcount
+of the item or make a copy.
+Implementors of a #GstIterator should implement this
+function and pass it to the constructor of the custom iterator.
+The function will be called with the iterator lock held.">
+      <return-value transfer-ownership="full">
+        <type name="IteratorItem" c:type="GstIteratorItem"/>
+      </return-value>
+      <parameters>
+        <parameter name="it" transfer-ownership="none">
+          <type name="Iterator" c:type="GstIterator*"/>
+        </parameter>
+        <parameter name="item" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="IteratorNextFunction"
+              c:type="GstIteratorNextFunction"
+              doc="The function that will be called when the next element of the iterator
+should be retrieved.
+Implementors of a #GstIterator should implement this
+function and pass it to the constructor of the custom iterator.
+The function will be called with the iterator lock held.">
+      <return-value transfer-ownership="full">
+        <type name="IteratorResult" c:type="GstIteratorResult"/>
+      </return-value>
+      <parameters>
+        <parameter name="it" transfer-ownership="none">
+          <type name="Iterator" c:type="GstIterator*"/>
+        </parameter>
+        <parameter name="result" transfer-ownership="none">
+          <type name="any" c:type="gpointer*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <enumeration name="IteratorResult"
+                 doc="The result of gst_iterator_next()."
+                 c:type="GstIteratorResult">
+      <member name="done" value="0" c:identifier="GST_ITERATOR_DONE"/>
+      <member name="ok" value="1" c:identifier="GST_ITERATOR_OK"/>
+      <member name="resync" value="2" c:identifier="GST_ITERATOR_RESYNC"/>
+      <member name="error" value="3" c:identifier="GST_ITERATOR_ERROR"/>
+    </enumeration>
+    <callback name="IteratorResyncFunction"
+              c:type="GstIteratorResyncFunction"
+              doc="This function will be called whenever a concurrent update happened
+to the iterated datastructure. The implementor of the iterator should
+restart the iterator from the beginning and clean up any state it might
+have.
+Implementors of a #GstIterator should implement this
+function and pass it to the constructor of the custom iterator.
+The function will be called with the iterator lock held.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="it" transfer-ownership="none">
+          <type name="Iterator" c:type="GstIterator*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <constant name="LICENSE_UNKNOWN" value="unknown">
+      <type name="utf8"/>
+    </constant>
+    <enumeration name="LibraryError"
+                 doc="category.  Make sure you add a custom message to the error call.
+deciding where to go while developing code.
+Library errors are for errors from the library being used by elements
+(initializing, finalizing, settings, ...)"
+                 c:type="GstLibraryError"
+                 glib:error-quark="gst_library_error_quark">
+      <member name="failed" value="1" c:identifier="GST_LIBRARY_ERROR_FAILED"/>
+      <member name="too_lazy"
+              value="2"
+              c:identifier="GST_LIBRARY_ERROR_TOO_LAZY"/>
+      <member name="init" value="3" c:identifier="GST_LIBRARY_ERROR_INIT"/>
+      <member name="shutdown"
+              value="4"
+              c:identifier="GST_LIBRARY_ERROR_SHUTDOWN"/>
+      <member name="settings"
+              value="5"
+              c:identifier="GST_LIBRARY_ERROR_SETTINGS"/>
+      <member name="encode" value="6" c:identifier="GST_LIBRARY_ERROR_ENCODE"/>
+      <member name="num_errors"
+              value="7"
+              c:identifier="GST_LIBRARY_ERROR_NUM_ERRORS"/>
+    </enumeration>
+    <callback name="LogFunction"
+              c:type="GstLogFunction"
+              doc="Function prototype for a logging function that can be registered with
+gst_debug_add_log_function().
+Use G_GNUC_NO_INSTRUMENT on that function.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="category" transfer-ownership="none">
+          <type name="DebugCategory" c:type="GstDebugCategory*"/>
+        </parameter>
+        <parameter name="level" transfer-ownership="none">
+          <type name="DebugLevel" c:type="GstDebugLevel"/>
+        </parameter>
+        <parameter name="file" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="function" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="line" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="object" transfer-ownership="none">
+          <type name="GObject.Object" c:type="GObject*"/>
+        </parameter>
+        <parameter name="message" transfer-ownership="none">
+          <type name="DebugMessage" c:type="GstDebugMessage*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <constant name="MESSAGE_TRACE_NAME" value="GstMessage">
+      <type name="utf8"/>
+    </constant>
+    <constant name="MSECOND" value="0">
+      <type name="int"/>
+    </constant>
+    <constant name="M_PI" value="3.14159265359">
+      <type name="double"/>
+    </constant>
+    <record name="Message" c:type="GstMessage" doc="A #GstMessage.">
+      <field name="mini_object" writable="1">
+        <type name="MiniObject" c:type="GstMiniObject"/>
+      </field>
+      <field name="lock" writable="1">
+        <type name="GLib.Mutex" c:type="GMutex*"/>
+      </field>
+      <field name="cond" writable="1">
+        <type name="GLib.Cond" c:type="GCond*"/>
+      </field>
+      <field name="type" writable="1">
+        <type name="MessageType" c:type="GstMessageType"/>
+      </field>
+      <field name="timestamp" writable="1">
+        <type name="uint64" c:type="guint64"/>
+      </field>
+      <field name="src" writable="1">
+        <type name="Object" c:type="GstObject*"/>
+      </field>
+      <field name="structure" writable="1">
+        <type name="Structure" c:type="GstStructure*"/>
+      </field>
+      <union name="abidata" c:type="abidata">
+        <record name="ABI" c:type="ABI">
+          <field name="seqnum" writable="1">
+            <type name="uint32" c:type="guint32"/>
+          </field>
+        </record>
+        <field name="_gst_reserved" writable="1">
+          <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+            <type name="any"/>
+          </array>
+        </field>
+      </union>
+      <constructor name="new_eos"
+                   c:identifier="gst_message_new_eos"
+                   doc="Create a new eos message. This message is generated and posted in
+the sink elements of a GstBin. The bin will only forward the EOS
+message to the application if all sinks have posted an EOS message.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="Message" c:type="GstMessage*"/>
+        </return-value>
+        <parameters>
+          <parameter name="src" transfer-ownership="none">
+            <type name="Object" c:type="GstObject*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_error"
+                   c:identifier="gst_message_new_error"
+                   doc="Create a new error message. The message will copy @error and
+occured. The pipeline will probably (partially) stop. The application
+receiving this message should stop the pipeline.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="Message" c:type="GstMessage*"/>
+        </return-value>
+        <parameters>
+          <parameter name="src" transfer-ownership="none">
+            <type name="Object" c:type="GstObject*"/>
+          </parameter>
+          <parameter name="error" transfer-ownership="none">
+            <type name="GLib.Error" c:type="GError*"/>
+          </parameter>
+          <parameter name="debug" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_warning"
+                   c:identifier="gst_message_new_warning"
+                   doc="Create a new warning message. The message will make copies of @error and
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="Message" c:type="GstMessage*"/>
+        </return-value>
+        <parameters>
+          <parameter name="src" transfer-ownership="none">
+            <type name="Object" c:type="GstObject*"/>
+          </parameter>
+          <parameter name="error" transfer-ownership="none">
+            <type name="GLib.Error" c:type="GError*"/>
+          </parameter>
+          <parameter name="debug" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_info"
+                   c:identifier="gst_message_new_info"
+                   doc="Create a new info message. The message will make copies of @error and
+MT safe."
+                   version="0.10.12">
+        <return-value transfer-ownership="full">
+          <type name="Message" c:type="GstMessage*"/>
+        </return-value>
+        <parameters>
+          <parameter name="src" transfer-ownership="none">
+            <type name="Object" c:type="GstObject*"/>
+          </parameter>
+          <parameter name="error" transfer-ownership="none">
+            <type name="GLib.Error" c:type="GError*"/>
+          </parameter>
+          <parameter name="debug" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_tag"
+                   c:identifier="gst_message_new_tag"
+                   doc="Create a new tag message. The message will take ownership of the tag list.
+The message is posted by elements that discovered a new taglist.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="Message" c:type="GstMessage*"/>
+        </return-value>
+        <parameters>
+          <parameter name="src" transfer-ownership="none">
+            <type name="Object" c:type="GstObject*"/>
+          </parameter>
+          <parameter name="tag_list" transfer-ownership="none">
+            <type name="TagList" c:type="GstTagList*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_tag_full"
+                   c:identifier="gst_message_new_tag_full"
+                   doc="Create a new tag message. The message will take ownership of the tag list.
+The message is posted by elements that discovered a new taglist.
+MT safe."
+                   version="0.10.24">
+        <return-value transfer-ownership="full">
+          <type name="Message" c:type="GstMessage*"/>
+        </return-value>
+        <parameters>
+          <parameter name="src" transfer-ownership="none">
+            <type name="Object" c:type="GstObject*"/>
+          </parameter>
+          <parameter name="pad" transfer-ownership="none">
+            <type name="Pad" c:type="GstPad*"/>
+          </parameter>
+          <parameter name="tag_list" transfer-ownership="none">
+            <type name="TagList" c:type="GstTagList*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_buffering"
+                   c:identifier="gst_message_new_buffering"
+                   doc="Create a new buffering message. This message can be posted by an element that
+needs to buffer data before it can continue processing. @percent should be a
+value between 0 and 100. A value of 100 means that the buffering completed.
+When @percent is &lt; 100 the application should PAUSE a PLAYING pipeline. When
+The application must be prepared to receive BUFFERING messages in the
+PREROLLING state and may only set the pipeline to PLAYING after receiving a
+message with @percent set to 100, which can happen after the pipeline
+completed prerolling.
+MT safe."
+                   version="0.10.11">
+        <return-value transfer-ownership="full">
+          <type name="Message" c:type="GstMessage*"/>
+        </return-value>
+        <parameters>
+          <parameter name="src" transfer-ownership="none">
+            <type name="Object" c:type="GstObject*"/>
+          </parameter>
+          <parameter name="percent" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_state_changed"
+                   c:identifier="gst_message_new_state_changed"
+                   doc="Create a state change message. This message is posted whenever an element
+changed its state.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="Message" c:type="GstMessage*"/>
+        </return-value>
+        <parameters>
+          <parameter name="src" transfer-ownership="none">
+            <type name="Object" c:type="GstObject*"/>
+          </parameter>
+          <parameter name="oldstate" transfer-ownership="none">
+            <type name="State" c:type="GstState"/>
+          </parameter>
+          <parameter name="newstate" transfer-ownership="none" doc="state">
+            <type name="State" c:type="GstState"/>
+          </parameter>
+          <parameter name="pending" transfer-ownership="none" doc="state">
+            <type name="State" c:type="GstState"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_state_dirty"
+                   c:identifier="gst_message_new_state_dirty"
+                   doc="Create a state dirty message. This message is posted whenever an element
+changed its state asynchronously and is used internally to update the
+states of container objects.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="Message" c:type="GstMessage*"/>
+        </return-value>
+        <parameters>
+          <parameter name="src" transfer-ownership="none">
+            <type name="Object" c:type="GstObject*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_step_done"
+                   c:identifier="gst_message_new_step_done"
+                   doc="This message is posted by elements when they complete a part, when @intermediate set
+to TRUE, or a complete step operation.
+MT safe."
+                   version="0.10.24">
+        <return-value transfer-ownership="full">
+          <type name="Message" c:type="GstMessage*"/>
+        </return-value>
+        <parameters>
+          <parameter name="src" transfer-ownership="none">
+            <type name="Object" c:type="GstObject*"/>
+          </parameter>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="amount" transfer-ownership="none">
+            <type name="uint64" c:type="guint64"/>
+          </parameter>
+          <parameter name="rate" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="flush" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="intermediate" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="duration" transfer-ownership="none">
+            <type name="uint64" c:type="guint64"/>
+          </parameter>
+          <parameter name="eos" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_clock_provide"
+                   c:identifier="gst_message_new_clock_provide"
+                   doc="Create a clock provide message. This message is posted whenever an
+element is ready to provide a clock or lost its ability to provide
+a clock (maybe because it paused or became EOS).
+This message is mainly used internally to manage the clock
+selection.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="Message" c:type="GstMessage*"/>
+        </return-value>
+        <parameters>
+          <parameter name="src" transfer-ownership="none">
+            <type name="Object" c:type="GstObject*"/>
+          </parameter>
+          <parameter name="clock" transfer-ownership="none">
+            <type name="Clock" c:type="GstClock*"/>
+          </parameter>
+          <parameter name="ready" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_clock_lost"
+                   c:identifier="gst_message_new_clock_lost"
+                   doc="Create a clock lost message. This message is posted whenever the
+clock is not valid anymore.
+If this message is posted by the pipeline, the pipeline will
+select a new clock again when it goes to PLAYING. It might therefore
+be needed to set the pipeline to PAUSED and PLAYING again.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="Message" c:type="GstMessage*"/>
+        </return-value>
+        <parameters>
+          <parameter name="src" transfer-ownership="none">
+            <type name="Object" c:type="GstObject*"/>
+          </parameter>
+          <parameter name="clock" transfer-ownership="none">
+            <type name="Clock" c:type="GstClock*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_new_clock"
+                   c:identifier="gst_message_new_new_clock"
+                   doc="Create a new clock message. This message is posted whenever the
+pipeline selectes a new clock for the pipeline.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="Message" c:type="GstMessage*"/>
+        </return-value>
+        <parameters>
+          <parameter name="src" transfer-ownership="none">
+            <type name="Object" c:type="GstObject*"/>
+          </parameter>
+          <parameter name="clock" transfer-ownership="none">
+            <type name="Clock" c:type="GstClock*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_application"
+                   c:identifier="gst_message_new_application"
+                   doc="the structure.
+Create a new application-typed message. GStreamer will never create these
+messages; they are a gift from us to you. Enjoy.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="Message" c:type="GstMessage*"/>
+        </return-value>
+        <parameters>
+          <parameter name="src" transfer-ownership="none">
+            <type name="Object" c:type="GstObject*"/>
+          </parameter>
+          <parameter name="structure" transfer-ownership="none">
+            <type name="Structure" c:type="GstStructure*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_element"
+                   c:identifier="gst_message_new_element"
+                   doc="the structure.
+Create a new element-specific message. This is meant as a generic way of
+allowing one-way communication from an element to an application, for example
+&quot;the firewire cable was unplugged&quot;. The format of the message should be
+documented in the element&apos;s documentation. The structure field can be NULL.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="Message" c:type="GstMessage*"/>
+        </return-value>
+        <parameters>
+          <parameter name="src" transfer-ownership="none">
+            <type name="Object" c:type="GstObject*"/>
+          </parameter>
+          <parameter name="structure" transfer-ownership="none">
+            <type name="Structure" c:type="GstStructure*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_segment_start"
+                   c:identifier="gst_message_new_segment_start"
+                   doc="Create a new segment message. This message is posted by elements that
+start playback of a segment as a result of a segment seek. This message
+is not received by the application but is used for maintenance reasons in
+container elements.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="Message" c:type="GstMessage*"/>
+        </return-value>
+        <parameters>
+          <parameter name="src" transfer-ownership="none">
+            <type name="Object" c:type="GstObject*"/>
+          </parameter>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="position" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_segment_done"
+                   c:identifier="gst_message_new_segment_done"
+                   doc="Create a new segment done message. This message is posted by elements that
+finish playback of a segment as a result of a segment seek. This message
+is received by the application after all elements that posted a segment_start
+have posted the segment_done.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="Message" c:type="GstMessage*"/>
+        </return-value>
+        <parameters>
+          <parameter name="src" transfer-ownership="none">
+            <type name="Object" c:type="GstObject*"/>
+          </parameter>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="position" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_duration"
+                   c:identifier="gst_message_new_duration"
+                   doc="Create a new duration message. This message is posted by elements that
+know the duration of a stream in a specific format. This message
+is received by bins and is used to calculate the total duration of a
+pipeline. Elements may post a duration message with a duration of
+GST_CLOCK_TIME_NONE to indicate that the duration has changed and the
+cached duration should be discarded. The new duration can then be
+retrieved via a query.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="Message" c:type="GstMessage*"/>
+        </return-value>
+        <parameters>
+          <parameter name="src" transfer-ownership="none">
+            <type name="Object" c:type="GstObject*"/>
+          </parameter>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="duration" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_latency"
+                   c:identifier="gst_message_new_latency"
+                   doc="This message can be posted by elements when their latency requirements have
+changed.
+MT safe."
+                   version="0.10.12">
+        <return-value transfer-ownership="full">
+          <type name="Message" c:type="GstMessage*"/>
+        </return-value>
+        <parameters>
+          <parameter name="src" transfer-ownership="none">
+            <type name="Object" c:type="GstObject*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_async_start"
+                   c:identifier="gst_message_new_async_start"
+                   doc="This message is posted by elements when they start an ASYNC state change.
+PLAYING.
+MT safe."
+                   version="0.10.13">
+        <return-value transfer-ownership="full">
+          <type name="Message" c:type="GstMessage*"/>
+        </return-value>
+        <parameters>
+          <parameter name="src" transfer-ownership="none">
+            <type name="Object" c:type="GstObject*"/>
+          </parameter>
+          <parameter name="new_base_time" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_async_done"
+                   c:identifier="gst_message_new_async_done"
+                   doc="The message is posted when elements completed an ASYNC state change.
+MT safe."
+                   version="0.10.13">
+        <return-value transfer-ownership="full">
+          <type name="Message" c:type="GstMessage*"/>
+        </return-value>
+        <parameters>
+          <parameter name="src" transfer-ownership="none">
+            <type name="Object" c:type="GstObject*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_structure_change"
+                   c:identifier="gst_message_new_structure_change"
+                   doc="Create a new structure change message. This message is posted when the
+structure of a pipeline is in the process of being changed, for example
+when pads are linked or unlinked.
+MT safe."
+                   version="0.10.22.">
+        <return-value transfer-ownership="full">
+          <type name="Message" c:type="GstMessage*"/>
+        </return-value>
+        <parameters>
+          <parameter name="src" transfer-ownership="none">
+            <type name="Object" c:type="GstObject*"/>
+          </parameter>
+          <parameter name="type" transfer-ownership="none">
+            <type name="StructureChangeType" c:type="GstStructureChangeType"/>
+          </parameter>
+          <parameter name="owner" transfer-ownership="none">
+            <type name="Element" c:type="GstElement*"/>
+          </parameter>
+          <parameter name="busy" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_stream_status"
+                   c:identifier="gst_message_new_stream_status"
+                   doc="Create a new stream status message. This message is posted when a streaming
+thread is created/destroyed or when the state changed.
+MT safe."
+                   version="0.10.24.">
+        <return-value transfer-ownership="full">
+          <type name="Message" c:type="GstMessage*"/>
+        </return-value>
+        <parameters>
+          <parameter name="src" transfer-ownership="none">
+            <type name="Object" c:type="GstObject*"/>
+          </parameter>
+          <parameter name="type" transfer-ownership="none">
+            <type name="StreamStatusType" c:type="GstStreamStatusType"/>
+          </parameter>
+          <parameter name="owner" transfer-ownership="none">
+            <type name="Element" c:type="GstElement*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_request_state"
+                   c:identifier="gst_message_new_request_state"
+                   doc="This message can be posted by elements when they want to have their state
+changed. A typical use case would be an audio server that wants to pause the
+pipeline because a higher priority stream is being played.
+MT safe."
+                   version="0.10.23">
+        <return-value transfer-ownership="full">
+          <type name="Message" c:type="GstMessage*"/>
+        </return-value>
+        <parameters>
+          <parameter name="src" transfer-ownership="none">
+            <type name="Object" c:type="GstObject*"/>
+          </parameter>
+          <parameter name="state" transfer-ownership="none">
+            <type name="State" c:type="GstState"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_step_start"
+                   c:identifier="gst_message_new_step_start"
+                   doc="This message is posted by elements when they accept or activate a new step
+event for @amount in @format.
+queued it for execution in the streaming threads.
+is now ready to start executing the step in the streaming thread. After this
+message is emited, the application can queue a new step operation in the
+element.
+MT safe."
+                   version="0.10.24">
+        <return-value transfer-ownership="full">
+          <type name="Message" c:type="GstMessage*"/>
+        </return-value>
+        <parameters>
+          <parameter name="src" transfer-ownership="none">
+            <type name="Object" c:type="GstObject*"/>
+          </parameter>
+          <parameter name="active" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="amount" transfer-ownership="none">
+            <type name="uint64" c:type="guint64"/>
+          </parameter>
+          <parameter name="rate" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="flush" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="intermediate" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_qos"
+                   c:identifier="gst_message_new_qos"
+                   doc="A QOS message is posted on the bus whenever an element decides to drop a
+buffer because of QoS reasons or whenever it changes its processing strategy
+because of QoS reasons (quality adjustments such as processing at lower
+accuracy).
+This message can be posted by an element that performs synchronisation against the
+clock (live) or it could be dropped by an element that performs QoS because of QOS
+events received from a downstream element (!live).
+respective running-time, stream-time, timestamp and duration of the (dropped)
+buffer that generated the QoS event. Values can be left to
+GST_CLOCK_TIME_NONE when unknown.
+MT safe."
+                   version="0.10.29">
+        <return-value transfer-ownership="full">
+          <type name="Message" c:type="GstMessage*"/>
+        </return-value>
+        <parameters>
+          <parameter name="src" transfer-ownership="none">
+            <type name="Object" c:type="GstObject*"/>
+          </parameter>
+          <parameter name="live" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="running_time" transfer-ownership="none">
+            <type name="uint64" c:type="guint64"/>
+          </parameter>
+          <parameter name="stream_time" transfer-ownership="none">
+            <type name="uint64" c:type="guint64"/>
+          </parameter>
+          <parameter name="timestamp" transfer-ownership="none">
+            <type name="uint64" c:type="guint64"/>
+          </parameter>
+          <parameter name="duration" transfer-ownership="none">
+            <type name="uint64" c:type="guint64"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_custom"
+                   c:identifier="gst_message_new_custom"
+                   doc="the structure.
+Create a new custom-typed message. This can be used for anything not
+handled by other message-specific functions to pass a message to the
+app. The structure field can be NULL.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="Message" c:type="GstMessage*"/>
+        </return-value>
+        <parameters>
+          <parameter name="type" transfer-ownership="none">
+            <type name="MessageType" c:type="GstMessageType"/>
+          </parameter>
+          <parameter name="src" transfer-ownership="none">
+            <type name="Object" c:type="GstObject*"/>
+          </parameter>
+          <parameter name="structure" transfer-ownership="none">
+            <type name="Structure" c:type="GstStructure*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="get_seqnum"
+              c:identifier="gst_message_get_seqnum"
+              doc="Retrieve the sequence number of a message.
+Messages have ever-incrementing sequence numbers, which may also be set
+explicitly via gst_message_set_seqnum(). Sequence numbers are typically used
+to indicate that a message corresponds to some other set of messages or
+events, for example a SEGMENT_DONE message corresponding to a SEEK event. It
+is considered good practice to make this correspondence when possible, though
+it is not required.
+Note that events and messages share the same sequence number incrementor;
+two events or messages will never not have the same sequence number unless
+that correspondence was made explicitly.
+MT safe."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="uint32" c:type="guint32"/>
+        </return-value>
+      </method>
+      <method name="set_seqnum"
+              c:identifier="gst_message_set_seqnum"
+              doc="Set the sequence number of a message.
+This function might be called by the creator of a message to indicate that
+the message relates to other messages or events. See gst_message_get_seqnum()
+for more information.
+MT safe."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="seqnum" transfer-ownership="none">
+            <type name="uint32" c:type="guint32"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_error"
+              c:identifier="gst_message_parse_error"
+              doc="Extracts the GError and debug string from the GstMessage. The values returned
+in the output arguments are copies; the caller must free them when done.
+Typical usage of this function might be:
+|[
+...
+switch (GST_MESSAGE_TYPE (msg)) {
+GError *err = NULL;
+gchar *dbg_info = NULL;
+gst_message_parse_error (msg, &amp;amp;err, &amp;amp;dbg_info);
+GST_OBJECT_NAME (msg-&gt;src), err-&gt;message);
+g_error_free (err);
+g_free (dbg_info);
+break;
+}
+...
+}
+...
+]|
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="gerror" transfer-ownership="none">
+            <type name="GLib.Error" c:type="GError**"/>
+          </parameter>
+          <parameter name="debug" transfer-ownership="none">
+            <array c:type="gchar**">
+              <type name="utf8"/>
+            </array>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_warning"
+              c:identifier="gst_message_parse_warning"
+              doc="Extracts the GError and debug string from the GstMessage. The values returned
+in the output arguments are copies; the caller must free them when done.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="gerror" transfer-ownership="none">
+            <type name="GLib.Error" c:type="GError**"/>
+          </parameter>
+          <parameter name="debug" transfer-ownership="none">
+            <array c:type="gchar**">
+              <type name="utf8"/>
+            </array>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_info"
+              c:identifier="gst_message_parse_info"
+              doc="Extracts the GError and debug string from the GstMessage. The values returned
+in the output arguments are copies; the caller must free them when done.
+MT safe."
+              version="0.10.12">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="gerror" transfer-ownership="none">
+            <type name="GLib.Error" c:type="GError**"/>
+          </parameter>
+          <parameter name="debug" transfer-ownership="none">
+            <array c:type="gchar**">
+              <type name="utf8"/>
+            </array>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_tag"
+              c:identifier="gst_message_parse_tag"
+              doc="Extracts the tag list from the GstMessage. The tag list returned in the
+output argument is a copy; the caller must free it when done.
+Typical usage of this function might be:
+|[
+...
+switch (GST_MESSAGE_TYPE (msg)) {
+GstTagList *tags = NULL;
+gst_message_parse_tag (msg, &amp;amp;tags);
+g_print (&quot;Got tags from element %s\n&quot;, GST_OBJECT_NAME (msg-&gt;src));
+handle_tags (tags);
+gst_tag_list_free (tags);
+break;
+}
+...
+}
+...
+]|
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag_list" transfer-ownership="none">
+            <type name="TagList" c:type="GstTagList**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_tag_full"
+              c:identifier="gst_message_parse_tag_full"
+              doc="Extracts the tag list from the GstMessage. The tag list returned in the
+output argument is a copy; the caller must free it when done.
+MT safe."
+              version="0.10.24">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="pad" transfer-ownership="none">
+            <type name="Pad" c:type="GstPad**"/>
+          </parameter>
+          <parameter name="tag_list" transfer-ownership="none">
+            <type name="TagList" c:type="GstTagList**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_buffering"
+              c:identifier="gst_message_parse_buffering"
+              doc="Extracts the buffering percent from the GstMessage. see also
+gst_message_new_buffering().
+MT safe."
+              version="0.10.11">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="percent" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_buffering_stats"
+              c:identifier="gst_message_set_buffering_stats"
+              doc="Configures the buffering stats values in @message."
+              version="0.10.20">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="mode" transfer-ownership="none">
+            <type name="BufferingMode" c:type="GstBufferingMode"/>
+          </parameter>
+          <parameter name="avg_in" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="avg_out" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="buffering_left" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_buffering_stats"
+              c:identifier="gst_message_parse_buffering_stats"
+              doc="Extracts the buffering stats values from @message."
+              version="0.10.20">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="mode" transfer-ownership="none">
+            <type name="BufferingMode" c:type="GstBufferingMode*"/>
+          </parameter>
+          <parameter name="avg_in" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+          <parameter name="avg_out" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+          <parameter name="buffering_left"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="int64" c:type="gint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_state_changed"
+              c:identifier="gst_message_parse_state_changed"
+              doc="Extracts the old and new states from the GstMessage.
+Typical usage of this function might be:
+|[
+...
+switch (GST_MESSAGE_TYPE (msg)) {
+GstState old_state, new_state;
+gst_message_parse_state_changed (msg, &amp;amp;old_state, &amp;amp;new_state, NULL);
+g_print (&quot;Element %s changed state from %s to %s.\n&quot;,
+GST_OBJECT_NAME (msg-&gt;src),
+gst_element_state_get_name (old_state),
+gst_element_state_get_name (new_state));
+break;
+}
+...
+}
+...
+]|
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="oldstate" transfer-ownership="none">
+            <type name="State" c:type="GstState*"/>
+          </parameter>
+          <parameter name="newstate"
+                     transfer-ownership="none"
+                     doc="state, or NULL">
+            <type name="State" c:type="GstState*"/>
+          </parameter>
+          <parameter name="pending"
+                     transfer-ownership="none"
+                     doc="state, or NULL">
+            <type name="State" c:type="GstState*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_step_done"
+              c:identifier="gst_message_parse_step_done"
+              doc="Extract the values the step_done message.
+MT safe."
+              version="0.10.24">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat*"/>
+          </parameter>
+          <parameter name="amount" direction="out" transfer-ownership="full">
+            <type name="uint64" c:type="guint64*"/>
+          </parameter>
+          <parameter name="rate" direction="out" transfer-ownership="full">
+            <type name="double" c:type="gdouble*"/>
+          </parameter>
+          <parameter name="flush" direction="out" transfer-ownership="full">
+            <type name="boolean" c:type="gboolean*"/>
+          </parameter>
+          <parameter name="intermediate"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="boolean" c:type="gboolean*"/>
+          </parameter>
+          <parameter name="duration" direction="out" transfer-ownership="full">
+            <type name="uint64" c:type="guint64*"/>
+          </parameter>
+          <parameter name="eos" direction="out" transfer-ownership="full">
+            <type name="boolean" c:type="gboolean*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_clock_provide"
+              c:identifier="gst_message_parse_clock_provide"
+              doc="Extracts the clock and ready flag from the GstMessage.
+The clock object returned remains valid until the message is freed.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="clock" transfer-ownership="none">
+            <type name="Clock" c:type="GstClock**"/>
+          </parameter>
+          <parameter name="ready" direction="out" transfer-ownership="full">
+            <type name="boolean" c:type="gboolean*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_clock_lost"
+              c:identifier="gst_message_parse_clock_lost"
+              doc="Extracts the lost clock from the GstMessage.
+The clock object returned remains valid until the message is freed.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="clock" transfer-ownership="none">
+            <type name="Clock" c:type="GstClock**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_new_clock"
+              c:identifier="gst_message_parse_new_clock"
+              doc="Extracts the new clock from the GstMessage.
+The clock object returned remains valid until the message is freed.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="clock" transfer-ownership="none">
+            <type name="Clock" c:type="GstClock**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_segment_start"
+              c:identifier="gst_message_parse_segment_start"
+              doc="Extracts the position and format from the segment start message.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat*"/>
+          </parameter>
+          <parameter name="position" direction="out" transfer-ownership="full">
+            <type name="int64" c:type="gint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_segment_done"
+              c:identifier="gst_message_parse_segment_done"
+              doc="Extracts the position and format from the segment start message.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat*"/>
+          </parameter>
+          <parameter name="position" direction="out" transfer-ownership="full">
+            <type name="int64" c:type="gint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_duration"
+              c:identifier="gst_message_parse_duration"
+              doc="Extracts the duration and format from the duration message. The duration
+might be GST_CLOCK_TIME_NONE, which indicates that the duration has
+changed. Applications should always use a query to retrieve the duration
+of a pipeline.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat*"/>
+          </parameter>
+          <parameter name="duration" direction="out" transfer-ownership="full">
+            <type name="int64" c:type="gint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_async_start"
+              c:identifier="gst_message_parse_async_start"
+              doc="Extract the new_base_time from the async_start message.
+MT safe."
+              version="0.10.13">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="new_base_time"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="boolean" c:type="gboolean*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_structure_change"
+              c:identifier="gst_message_parse_structure_change"
+              doc="completed
+Extracts the change type and completion status from the GstMessage.
+MT safe."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="type" transfer-ownership="none">
+            <type name="StructureChangeType" c:type="GstStructureChangeType*"/>
+          </parameter>
+          <parameter name="owner" transfer-ownership="none">
+            <type name="Element" c:type="GstElement**"/>
+          </parameter>
+          <parameter name="busy" direction="out" transfer-ownership="full">
+            <type name="boolean" c:type="gboolean*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_stream_status"
+              c:identifier="gst_message_parse_stream_status"
+              doc="Extracts the stream status type and owner the GstMessage. The returned
+owner remains valid for as long as the reference to @message is valid and
+should thus not be unreffed.
+MT safe."
+              version="0.10.24.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="type" transfer-ownership="none">
+            <type name="StreamStatusType" c:type="GstStreamStatusType*"/>
+          </parameter>
+          <parameter name="owner" transfer-ownership="none">
+            <type name="Element" c:type="GstElement**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_stream_status_object"
+              c:identifier="gst_message_set_stream_status_object"
+              doc="Configures the object handling the streaming thread. This is usually a
+GstTask object but other objects might be added in the future."
+              version="0.10.24">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_stream_status_object"
+              c:identifier="gst_message_get_stream_status_object"
+              doc="Extracts the object managing the streaming thread from @message.
+This object is usually of type GstTask but other types can be added in the
+future. The object remains valid as long as @message is valid."
+              version="0.10.24">
+        <return-value transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </return-value>
+      </method>
+      <method name="parse_request_state"
+              c:identifier="gst_message_parse_request_state"
+              doc="Extract the requested state from the request_state message.
+MT safe."
+              version="0.10.23">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="state" transfer-ownership="none">
+            <type name="State" c:type="GstState*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_step_start"
+              c:identifier="gst_message_parse_step_start"
+              doc="Extract the values from step_start message.
+MT safe."
+              version="0.10.24">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="active" direction="out" transfer-ownership="full">
+            <type name="boolean" c:type="gboolean*"/>
+          </parameter>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat*"/>
+          </parameter>
+          <parameter name="amount" direction="out" transfer-ownership="full">
+            <type name="uint64" c:type="guint64*"/>
+          </parameter>
+          <parameter name="rate" direction="out" transfer-ownership="full">
+            <type name="double" c:type="gdouble*"/>
+          </parameter>
+          <parameter name="flush" direction="out" transfer-ownership="full">
+            <type name="boolean" c:type="gboolean*"/>
+          </parameter>
+          <parameter name="intermediate"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="boolean" c:type="gboolean*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_qos_values"
+              c:identifier="gst_message_set_qos_values"
+              doc="to get optimal quality.
+quality level of the element. The default maximum quality is 1000000.
+Set the QoS values that have been calculated/analysed from the QoS data
+MT safe."
+              version="0.10.29">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="jitter" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+          <parameter name="proportion" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="quality" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_qos_stats"
+              c:identifier="gst_message_set_qos_stats"
+              doc="filters will use GST_FORMAT_BUFFERS (frames). Audio sinks and audio filters
+will likely use GST_FORMAT_DEFAULT (samples).
+change to READY or a flushing operation.
+or a flushing operation.
+Set the QoS stats representing the history of the current continuous pipeline
+playback period.
+When @format is @GST_FORMAT_UNDEFINED both @dropped and @processed are
+invalid. Values of -1 for either @processed or @dropped mean unknown values.
+MT safe."
+              version="0.10.29">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="processed" transfer-ownership="none">
+            <type name="uint64" c:type="guint64"/>
+          </parameter>
+          <parameter name="dropped" transfer-ownership="none">
+            <type name="uint64" c:type="guint64"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_qos"
+              c:identifier="gst_message_parse_qos"
+              doc="Extract the timestamps and live status from the QoS message.
+The returned values give the running_time, stream_time, timestamp and
+duration of the dropped buffer. Values of GST_CLOCK_TIME_NONE mean unknown
+values.
+MT safe."
+              version="0.10.29">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="live" direction="out" transfer-ownership="full">
+            <type name="boolean" c:type="gboolean*"/>
+          </parameter>
+          <parameter name="running_time"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="uint64" c:type="guint64*"/>
+          </parameter>
+          <parameter name="stream_time"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="uint64" c:type="guint64*"/>
+          </parameter>
+          <parameter name="timestamp"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="uint64" c:type="guint64*"/>
+          </parameter>
+          <parameter name="duration" direction="out" transfer-ownership="full">
+            <type name="uint64" c:type="guint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_qos_values"
+              c:identifier="gst_message_parse_qos_values"
+              doc="to get optimal quality.
+quality level of the element. The default maximum quality is 1000000.
+Extract the QoS values that have been calculated/analysed from the QoS data
+MT safe."
+              version="0.10.29">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="jitter" direction="out" transfer-ownership="full">
+            <type name="int64" c:type="gint64*"/>
+          </parameter>
+          <parameter name="proportion"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="double" c:type="gdouble*"/>
+          </parameter>
+          <parameter name="quality" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_qos_stats"
+              c:identifier="gst_message_parse_qos_stats"
+              doc="filters will use GST_FORMAT_BUFFERS (frames). Audio sinks and audio filters
+will likely use GST_FORMAT_DEFAULT (samples).
+change to READY or a flushing operation.
+or a flushing operation.
+Extract the QoS stats representing the history of the current continuous
+pipeline playback period.
+When @format is @GST_FORMAT_UNDEFINED both @dropped and @processed are
+invalid. Values of -1 for either @processed or @dropped mean unknown values.
+MT safe."
+              version="0.10.29">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat*"/>
+          </parameter>
+          <parameter name="processed"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="uint64" c:type="guint64*"/>
+          </parameter>
+          <parameter name="dropped" direction="out" transfer-ownership="full">
+            <type name="uint64" c:type="guint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_structure"
+              c:identifier="gst_message_get_structure"
+              doc="Access the structure of the message.
+owned by the message, which means that you should not free it and
+that the pointer becomes invalid when you free the message.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="Structure" c:type="GstStructure*"/>
+        </return-value>
+      </method>
+    </record>
+    <record name="MessageClass" c:type="GstMessageClass">
+      <field name="mini_object_class" writable="1">
+        <type name="MiniObjectClass" c:type="GstMiniObjectClass"/>
+      </field>
+      <field name="_gst_reserved" writable="1">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <bitfield name="MessageType"
+              doc="only receive this message in the PLAYING state and every time it sets a
+pipeline to PLAYING that is in the EOS state. The application can perform a
+flushing seek in the pipeline, which will undo the EOS state again.
+message it should stop playback of the pipeline and not assume that more
+data will be played.
+receives a buffering message in the PLAYING state for a non-live pipeline it
+must PAUSE the pipeline until the buffering completes, when the percentage
+field in the message is 100%. For live pipelines, no action must be
+performed and the buffering percentage can be used to inform the user about
+the progress.
+This message is deprecated.
+a clock. This message is used internally and
+never forwarded to the application.
+unusable. The pipeline will select a new clock on
+the next PLAYING state change. The application
+should set the pipeline to PAUSED and back to
+PLAYING when this message is received.
+message is used internally and never forwarded to the application.
+stops, errors, etc..
+via an application-specific element.
+documentation
+message is used internally and never forwarded to the application.
+message is forwarded to the application after all elements that posted
+can get the new duration with a duration query.
+change. This message is not forwarded to the application but is used
+change. The application will only receive this message from the toplevel
+change state. This message is a suggestion to the application which can
+The different message types that are available."
+              c:type="GstMessageType">
+      <member name="unknown" value="0" c:identifier="GST_MESSAGE_UNKNOWN"/>
+      <member name="eos" value="1" c:identifier="GST_MESSAGE_EOS"/>
+      <member name="error" value="2" c:identifier="GST_MESSAGE_ERROR"/>
+      <member name="warning" value="4" c:identifier="GST_MESSAGE_WARNING"/>
+      <member name="info" value="8" c:identifier="GST_MESSAGE_INFO"/>
+      <member name="tag" value="16" c:identifier="GST_MESSAGE_TAG"/>
+      <member name="buffering"
+              value="32"
+              c:identifier="GST_MESSAGE_BUFFERING"/>
+      <member name="state_changed"
+              value="64"
+              c:identifier="GST_MESSAGE_STATE_CHANGED"/>
+      <member name="state_dirty"
+              value="128"
+              c:identifier="GST_MESSAGE_STATE_DIRTY"/>
+      <member name="step_done"
+              value="256"
+              c:identifier="GST_MESSAGE_STEP_DONE"/>
+      <member name="clock_provide"
+              value="512"
+              c:identifier="GST_MESSAGE_CLOCK_PROVIDE"/>
+      <member name="clock_lost"
+              value="1024"
+              c:identifier="GST_MESSAGE_CLOCK_LOST"/>
+      <member name="new_clock"
+              value="2048"
+              c:identifier="GST_MESSAGE_NEW_CLOCK"/>
+      <member name="structure_change"
+              value="4096"
+              c:identifier="GST_MESSAGE_STRUCTURE_CHANGE"/>
+      <member name="stream_status"
+              value="8192"
+              c:identifier="GST_MESSAGE_STREAM_STATUS"/>
+      <member name="application"
+              value="16384"
+              c:identifier="GST_MESSAGE_APPLICATION"/>
+      <member name="element" value="32768" c:identifier="GST_MESSAGE_ELEMENT"/>
+      <member name="segment_start"
+              value="65536"
+              c:identifier="GST_MESSAGE_SEGMENT_START"/>
+      <member name="segment_done"
+              value="131072"
+              c:identifier="GST_MESSAGE_SEGMENT_DONE"/>
+      <member name="duration"
+              value="262144"
+              c:identifier="GST_MESSAGE_DURATION"/>
+      <member name="latency"
+              value="524288"
+              c:identifier="GST_MESSAGE_LATENCY"/>
+      <member name="async_start"
+              value="1048576"
+              c:identifier="GST_MESSAGE_ASYNC_START"/>
+      <member name="async_done"
+              value="2097152"
+              c:identifier="GST_MESSAGE_ASYNC_DONE"/>
+      <member name="request_state"
+              value="4194304"
+              c:identifier="GST_MESSAGE_REQUEST_STATE"/>
+      <member name="step_start"
+              value="8388608"
+              c:identifier="GST_MESSAGE_STEP_START"/>
+      <member name="qos" value="16777216" c:identifier="GST_MESSAGE_QOS"/>
+      <member name="any" value="-1" c:identifier="GST_MESSAGE_ANY"/>
+    </bitfield>
+    <record name="MiniObject"
+            c:type="GstMiniObject"
+            doc="Base class for refcounted lightweight objects.">
+      <field name="instance" writable="1">
+        <type name="GObject.TypeInstance" c:type="GTypeInstance"/>
+      </field>
+      <field name="refcount" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="flags" writable="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="_gst_reserved" writable="1">
+        <type name="any" c:type="gpointer"/>
+      </field>
+      <constructor name="new"
+                   c:identifier="gst_mini_object_new"
+                   doc="Creates a new mini-object of the desired type.
+MT safe">
+        <return-value transfer-ownership="full">
+          <type name="MiniObject" c:type="GstMiniObject*"/>
+        </return-value>
+        <parameters>
+          <parameter name="type" transfer-ownership="none">
+            <type name="GType" c:type="GType"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="copy"
+              c:identifier="gst_mini_object_copy"
+              doc="Creates a copy of the mini-object.
+MT safe">
+        <return-value transfer-ownership="full">
+          <type name="MiniObject" c:type="GstMiniObject*"/>
+        </return-value>
+      </method>
+      <method name="is_writable"
+              c:identifier="gst_mini_object_is_writable"
+              doc="Checks if a mini-object is writable.  A mini-object is writable
+if the reference count is one and the #GST_MINI_OBJECT_FLAG_READONLY
+flag is not set.  Modification of a mini-object should only be
+done after verifying that it is writable.
+MT safe">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="make_writable"
+              c:identifier="gst_mini_object_make_writable"
+              doc="Checks if a mini-object is writable.  If not, a writable copy is made and
+returned.  This gives away the reference to the original mini object,
+and returns a reference to the new object.
+MT safe">
+        <return-value transfer-ownership="full" doc="that is writable.">
+          <type name="MiniObject" c:type="GstMiniObject*"/>
+        </return-value>
+      </method>
+      <method name="ref"
+              c:identifier="gst_mini_object_ref"
+              doc="Increase the reference count of the mini-object.
+Note that the refcount affects the writeability
+of @mini-object, see gst_mini_object_is_writable(). It is
+important to note that keeping additional references to
+GstMiniObject instances can potentially increase the number
+of memcpy operations in a pipeline, especially if the miniobject
+is a #GstBuffer.">
+        <return-value transfer-ownership="full">
+          <type name="MiniObject" c:type="GstMiniObject*"/>
+        </return-value>
+      </method>
+      <method name="unref"
+              c:identifier="gst_mini_object_unref"
+              doc="Decreases the reference count of the mini-object, possibly freeing
+the mini-object.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="replace"
+              c:identifier="gst_mini_object_replace"
+              doc="Modifies a pointer to point to a new mini-object.  The modification
+is done atomically, and the reference counts are updated correctly.
+Either @newdata and the value pointed to by @olddata may be NULL.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="newdata" transfer-ownership="none">
+            <type name="MiniObject" c:type="GstMiniObject*"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <record name="MiniObjectClass" c:type="GstMiniObjectClass">
+      <field name="type_class" writable="1">
+        <type name="GObject.TypeClass" c:type="GTypeClass"/>
+      </field>
+      <field name="copy" writable="1">
+        <type name="MiniObjectCopyFunction"
+              c:type="GstMiniObjectCopyFunction"/>
+      </field>
+      <field name="finalize" writable="1">
+        <type name="MiniObjectFinalizeFunction"
+              c:type="GstMiniObjectFinalizeFunction"/>
+      </field>
+      <field name="_gst_reserved" writable="1">
+        <type name="any" c:type="gpointer"/>
+      </field>
+    </record>
+    <callback name="MiniObjectCopyFunction"
+              c:type="GstMiniObjectCopyFunction"
+              doc="Virtual function prototype for methods to create copies of instances.">
+      <return-value transfer-ownership="full">
+        <type name="MiniObject" c:type="GstMiniObject*"/>
+      </return-value>
+      <parameters>
+        <parameter name="obj" transfer-ownership="none">
+          <type name="MiniObject" c:type="GstMiniObject*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="MiniObjectFinalizeFunction"
+              c:type="GstMiniObjectFinalizeFunction"
+              doc="Virtual function prototype for methods to free ressources used by
+mini-objects. Subclasses of the mini object are allowed to revive the
+passed object by doing a gst_mini_object_ref(). If the object is not
+revived after the finalize function, the memory associated with the
+object is freed.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="obj" transfer-ownership="none">
+          <type name="MiniObject" c:type="GstMiniObject*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <bitfield name="MiniObjectFlags"
+              doc="Flags for the padtemplate"
+              c:type="GstMiniObjectFlags">
+      <member name="readonly"
+              value="1"
+              c:identifier="GST_MINI_OBJECT_FLAG_READONLY"/>
+      <member name="last" value="16" c:identifier="GST_MINI_OBJECT_FLAG_LAST"/>
+    </bitfield>
+    <constant name="NSECOND" value="0">
+      <type name="int"/>
+    </constant>
+    <class name="Object"
+           c:type="GstObject"
+           doc="GStreamer base object class."
+           parent="GObject.Object"
+           abstract="1"
+           glib:type-name="GstObject"
+           glib:get-type="gst_object_get_type"
+           glib:type-struct="ObjectClass">
+      <function name="default_deep_notify"
+                c:identifier="gst_object_default_deep_notify"
+                doc="NULL to show all changes.
+A default deep_notify signal callback for an object. The user data
+should contain a pointer to an array of strings that should be excluded
+from the notify. The default handler will print the new value of the property
+using g_print.
+MT safe. This function grabs and releases @object&apos;s LOCK for getting its
+path string.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="GObject.Object" c:type="GObject*"/>
+          </parameter>
+          <parameter name="orig" transfer-ownership="none">
+            <type name="Object" c:type="GstObject*"/>
+          </parameter>
+          <parameter name="pspec" transfer-ownership="none">
+            <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
+          </parameter>
+          <parameter name="excluded_props" transfer-ownership="none">
+            <array c:type="gchar**">
+              <type name="utf8"/>
+            </array>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="ref"
+                c:identifier="gst_object_ref"
+                doc="Increments the reference count on @object. This function
+does not take the lock on @object because it relies on
+atomic refcounting.
+This object returns the input parameter to ease writing
+constructs like :
+result = gst_object_ref (object-&gt;parent);">
+        <return-value transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="unref"
+                c:identifier="gst_object_unref"
+                doc="Decrements the reference count on @object.  If reference count hits
+zero, destroy @object. This function does not take the lock
+on @object as it relies on atomic refcounting.
+The unref method should never be called with the LOCK held since
+this might deadlock the dispose function.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="ref_sink"
+                c:identifier="gst_object_ref_sink"
+                doc="Increase the reference count of @object, and possibly remove the floating
+reference, if @object has a floating reference.
+In other words, if the object is floating, then this call &quot;assumes ownership&quot;
+of the floating reference, converting it to a normal reference by clearing
+the floating flag while leaving the reference count unchanged. If the object
+is not floating, then this call adds a new normal reference increasing the
+reference count by one.
+MT safe. This function grabs and releases @object lock."
+                version="0.10.24">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="sink"
+                c:identifier="gst_object_sink"
+                doc="If @object was floating, the #GST_OBJECT_FLOATING flag is removed
+and @object is unreffed. When @object was not floating,
+this function does nothing.
+Any newly created object has a refcount of 1 and is floating.
+This function should be used when creating a new object to
+symbolically &apos;take ownership&apos; of @object. This done by first doing a
+gst_object_ref() to keep a reference to @object and then gst_object_sink()
+to remove and unref any floating references to @object.
+Use gst_object_set_parent() to have this done for you.
+MT safe. This function grabs and releases @object lock.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="check_uniqueness"
+                c:identifier="gst_object_check_uniqueness"
+                doc="Checks to see if there is any object named @name in @list. This function
+does not do any locking of any kind. You might want to protect the
+provided list with the lock of the owner of the list. This function
+will lock each #GstObject in the list to compare the name, so be
+carefull when passing a list with a locked object.
+FALSE if it does.
+MT safe. Grabs and releases the LOCK of each object in the list.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="list" transfer-ownership="none">
+            <type name="GLib.List" c:type="GList*"/>
+          </parameter>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <virtual-method name="save_thyself" invoker="save_thyself">
+        <return-value transfer-ownership="full">
+          <type name="libxml2.NodePtr" c:type="xmlNodePtr"/>
+        </return-value>
+        <parameters>
+          <parameter name="parent" transfer-ownership="none">
+            <type name="libxml2.NodePtr" c:type="xmlNodePtr"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="restore_thyself" invoker="restore_thyself">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="self" transfer-ownership="none">
+            <type name="libxml2.NodePtr" c:type="xmlNodePtr"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="set_name"
+              c:identifier="gst_object_set_name"
+              doc="Sets the name of @object, or gives @object a guaranteed unique
+name (if @name is NULL).
+This function makes a copy of the provided name, so the caller
+retains ownership of the name it sent.
+a parent cannot be renamed, this function returns FALSE in those
+cases.
+MT safe.  This function grabs and releases @object&apos;s LOCK.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_name"
+              c:identifier="gst_object_get_name"
+              doc="Returns a copy of the name of @object.
+Caller should g_free() the return value after usage.
+For a nameless object, this returns NULL, which you can safely g_free()
+as well.
+MT safe. This function grabs and releases @object&apos;s LOCK.">
+        <return-value transfer-ownership="full" doc="after usage.">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="set_name_prefix"
+              c:identifier="gst_object_set_name_prefix"
+              doc="Sets the name prefix of @object to @name_prefix.
+This function makes a copy of the provided name prefix, so the caller
+retains ownership of the name prefix it sent.
+MT safe.  This function grabs and releases @object&apos;s LOCK.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="name_prefix" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_name_prefix"
+              c:identifier="gst_object_get_name_prefix"
+              doc="Returns a copy of the name prefix of @object.
+Caller should g_free() the return value after usage.
+For a prefixless object, this returns NULL, which you can safely g_free()
+as well.
+MT safe. This function grabs and releases @object&apos;s LOCK.">
+        <return-value transfer-ownership="full" doc="after usage.">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="set_parent"
+              c:identifier="gst_object_set_parent"
+              doc="Sets the parent of @object to @parent. The object&apos;s reference count will
+be incremented, and any floating reference will be removed (see gst_object_sink()).
+This function causes the parent-set signal to be emitted when the parent
+was successfully set.
+already had a parent or @object and @parent are the same.
+MT safe. Grabs and releases @object&apos;s LOCK.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="parent" transfer-ownership="none">
+            <type name="Object" c:type="GstObject*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_parent"
+              c:identifier="gst_object_get_parent"
+              doc="Returns the parent of @object. This function increases the refcount
+of the parent object so you should gst_object_unref() it after usage.
+parent. unref after usage.
+MT safe. Grabs and releases @object&apos;s LOCK.">
+        <return-value transfer-ownership="full">
+          <type name="Object" c:type="GstObject*"/>
+        </return-value>
+      </method>
+      <method name="unparent"
+              c:identifier="gst_object_unparent"
+              doc="Clear the parent of @object, removing the associated reference.
+This function decreases the refcount of @object.
+MT safe. Grabs and releases @object&apos;s lock.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="has_ancestor"
+              c:identifier="gst_object_has_ancestor"
+              doc="Check if @object has an ancestor @ancestor somewhere up in
+the hierarchy.
+MT safe. Grabs and releases @object&apos;s locks.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="ancestor" transfer-ownership="none">
+            <type name="Object" c:type="GstObject*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="replace"
+              c:identifier="gst_object_replace"
+              doc="Unrefs the #GstObject pointed to by @oldobj, refs @newobj and
+puts @newobj in *@oldobj. Be carefull when calling this
+function, it does not take any locks. You might want to lock
+the object owning @oldobj pointer before calling this
+function.
+Make sure not to LOCK @oldobj because it might be unreffed
+which could cause a deadlock when it is disposed.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="newobj" transfer-ownership="none">
+            <type name="Object" c:type="GstObject*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_path_string"
+              c:identifier="gst_object_get_path_string"
+              doc="Generates a string describing the path of @object in
+the object hierarchy. Only useful (or used) for debugging.
+g_free() the string after usage.
+MT safe. Grabs and releases the #GstObject&apos;s LOCK for all objects
+in the hierarchy.">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="save_thyself"
+              c:identifier="gst_object_save_thyself"
+              doc="Saves @object into the parent XML node.">
+        <return-value transfer-ownership="full">
+          <type name="libxml2.NodePtr" c:type="xmlNodePtr"/>
+        </return-value>
+        <parameters>
+          <parameter name="parent" transfer-ownership="none">
+            <type name="libxml2.NodePtr" c:type="xmlNodePtr"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="restore_thyself"
+              c:identifier="gst_object_restore_thyself"
+              doc="Restores @object with the data from the parent XML node.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="self" transfer-ownership="none">
+            <type name="libxml2.NodePtr" c:type="xmlNodePtr"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="default_error"
+              c:identifier="gst_object_default_error"
+              doc="A default error function.
+The default handler will simply print the error string using g_print.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="error" transfer-ownership="none">
+            <type name="GLib.Error" c:type="GError*"/>
+          </parameter>
+          <parameter name="debug" transfer-ownership="full">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="name" writable="1" construct="1">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <field name="object">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="refcount">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="lock">
+        <type name="GLib.Mutex" c:type="GMutex*"/>
+      </field>
+      <field name="name">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="name_prefix">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="parent">
+        <type name="Object" c:type="GstObject*"/>
+      </field>
+      <field name="flags">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+      <field name="_gst_reserved">
+        <type name="any" c:type="gpointer"/>
+      </field>
+      <glib:signal name="deep-notify"
+                   doc="The deep notify signal is used to be notified of property changes. It is
+typically attached to the toplevel bin to receive notifications from all
+the elements contained in that bin.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="prop_object" transfer-ownership="none">
+            <type name="Object" c:type="GstObject"/>
+          </parameter>
+          <parameter name="prop" transfer-ownership="none">
+            <type name="GObject.ParamSpec" c:type="GParam"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="object-saved"
+                   doc="Trigered whenever a new object is saved to XML. You can connect to this
+signal to insert custom XML tags into the core XML.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="xml_node" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="parent-set"
+                   doc="Emitted when the parent of an object is set.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="parent" transfer-ownership="none">
+            <type name="Object" c:type="GstObject"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="parent-unset"
+                   doc="Emitted when the parent of an object is unset.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="parent" transfer-ownership="none">
+            <type name="Object" c:type="GstObject"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <record name="ObjectClass"
+            c:type="GstObjectClass"
+            glib:is-gtype-struct-for="Object"
+            doc="GStreamer base object class.">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="path_string_separator">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="signal_object">
+        <type name="GObject.Object" c:type="GObject*"/>
+      </field>
+      <field name="lock">
+        <type name="GLib.StaticRecMutex" c:type="GStaticRecMutex*"/>
+      </field>
+      <field name="parent_set">
+        <callback name="parent_set" c:type="parent_set">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="object" transfer-ownership="none">
+              <type name="Object" c:type="GstObject*"/>
+            </parameter>
+            <parameter name="parent" transfer-ownership="none">
+              <type name="Object" c:type="GstObject*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="parent_unset">
+        <callback name="parent_unset" c:type="parent_unset">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="object" transfer-ownership="none">
+              <type name="Object" c:type="GstObject*"/>
+            </parameter>
+            <parameter name="parent" transfer-ownership="none">
+              <type name="Object" c:type="GstObject*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="object_saved">
+        <callback name="object_saved" c:type="object_saved">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="object" transfer-ownership="none">
+              <type name="Object" c:type="GstObject*"/>
+            </parameter>
+            <parameter name="parent" transfer-ownership="none">
+              <type name="libxml2.NodePtr" c:type="xmlNodePtr"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="deep_notify">
+        <callback name="deep_notify" c:type="deep_notify">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="object" transfer-ownership="none">
+              <type name="Object" c:type="GstObject*"/>
+            </parameter>
+            <parameter name="orig" transfer-ownership="none">
+              <type name="Object" c:type="GstObject*"/>
+            </parameter>
+            <parameter name="pspec" transfer-ownership="none">
+              <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="save_thyself">
+        <callback name="save_thyself" c:type="save_thyself">
+          <return-value transfer-ownership="full">
+            <type name="libxml2.NodePtr" c:type="xmlNodePtr"/>
+          </return-value>
+          <parameters>
+            <parameter name="object" transfer-ownership="none">
+              <type name="Object" c:type="GstObject*"/>
+            </parameter>
+            <parameter name="parent" transfer-ownership="none">
+              <type name="libxml2.NodePtr" c:type="xmlNodePtr"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="restore_thyself">
+        <callback name="restore_thyself" c:type="restore_thyself">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="object" transfer-ownership="none">
+              <type name="Object" c:type="GstObject*"/>
+            </parameter>
+            <parameter name="self" transfer-ownership="none">
+              <type name="libxml2.NodePtr" c:type="xmlNodePtr"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <bitfield name="ObjectFlags"
+              doc="not assigned to a bin)
+The standard flags that an gstobject may have."
+              c:type="GstObjectFlags">
+      <member name="disposing" value="1" c:identifier="GST_OBJECT_DISPOSING"/>
+      <member name="floating" value="2" c:identifier="GST_OBJECT_FLOATING"/>
+      <member name="flag_last" value="16" c:identifier="GST_OBJECT_FLAG_LAST"/>
+    </bitfield>
+    <constant name="PARAM_CONTROLLABLE" value="2">
+      <type name="int"/>
+    </constant>
+    <constant name="PARAM_MUTABLE_PAUSED" value="8">
+      <type name="int"/>
+    </constant>
+    <constant name="PARAM_MUTABLE_PLAYING" value="16">
+      <type name="int"/>
+    </constant>
+    <constant name="PARAM_MUTABLE_READY" value="4">
+      <type name="int"/>
+    </constant>
+    <constant name="PARAM_USER_SHIFT" value="256">
+      <type name="int"/>
+    </constant>
+    <class name="Pad"
+           c:type="GstPad"
+           doc="the pad.
+the data used in streaming.
+The #GstPad structure. Use the functions to update the variables."
+           parent="Object"
+           glib:type-name="GstPad"
+           glib:get-type="gst_pad_get_type"
+           glib:type-struct="PadClass">
+      <constructor name="new"
+                   c:identifier="gst_pad_new"
+                   doc="Creates a new pad with the given name in the given direction.
+If name is NULL, a guaranteed unique name (across all pads)
+will be assigned.
+This function makes a copy of the name so you can safely free the name.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="Pad" c:type="GstPad*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="direction" transfer-ownership="none">
+            <type name="PadDirection" c:type="GstPadDirection"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_from_template"
+                   c:identifier="gst_pad_new_from_template"
+                   doc="Creates a new pad with the given name from the given template.
+If name is NULL, a guaranteed unique name (across all pads)
+will be assigned.
+This function makes a copy of the name so you can safely free the name.">
+        <return-value transfer-ownership="full">
+          <type name="Pad" c:type="GstPad*"/>
+        </return-value>
+        <parameters>
+          <parameter name="templ" transfer-ownership="none">
+            <type name="PadTemplate" c:type="GstPadTemplate*"/>
+          </parameter>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_from_static_template"
+                   c:identifier="gst_pad_new_from_static_template"
+                   doc="Creates a new pad with the given name from the given static template.
+If name is NULL, a guaranteed unique name (across all pads)
+will be assigned.
+This function makes a copy of the name so you can safely free the name.">
+        <return-value transfer-ownership="full">
+          <type name="Pad" c:type="GstPad*"/>
+        </return-value>
+        <parameters>
+          <parameter name="templ" transfer-ownership="none">
+            <type name="StaticPadTemplate" c:type="GstStaticPadTemplate*"/>
+          </parameter>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <function name="load_and_link"
+                c:identifier="gst_pad_load_and_link"
+                doc="Reads the pad definition from the XML node and links the given pad
+in the element to a pad of an element up in the hierarchy.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="self" transfer-ownership="none">
+            <type name="libxml2.NodePtr" c:type="xmlNodePtr"/>
+          </parameter>
+          <parameter name="parent" transfer-ownership="none">
+            <type name="Object" c:type="GstObject*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <method name="get_direction"
+              c:identifier="gst_pad_get_direction"
+              doc="Gets the direction of the pad. The direction of the pad is
+decided at construction time so this function does not take
+the LOCK.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="PadDirection" c:type="GstPadDirection"/>
+        </return-value>
+      </method>
+      <method name="set_active"
+              c:identifier="gst_pad_set_active"
+              doc="Activates or deactivates the given pad.
+Normally called from within core state change functions.
+If @active, makes sure the pad is active. If it is already active, either in
+push or pull mode, just return. Otherwise dispatches to the pad&apos;s activate
+function to perform the actual activation.
+If not @active, checks the pad&apos;s current mode and calls
+gst_pad_activate_push() or gst_pad_activate_pull(), as appropriate, with a
+FALSE argument.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="active" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="is_active"
+              c:identifier="gst_pad_is_active"
+              doc="Query if a pad is active
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="activate_pull"
+              c:identifier="gst_pad_activate_pull"
+              doc="Activates or deactivates the given pad in pull mode via dispatching to the
+pad&apos;s activatepullfunc. For use from within pad activation functions only.
+When called on sink pads, will first proxy the call to the peer pad, which
+is expected to activate its internally linked pads from within its
+activate_pull function.
+If you don&apos;t know what this is, you probably don&apos;t want to call it.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="active" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="activate_push"
+              c:identifier="gst_pad_activate_push"
+              doc="Activates or deactivates the given pad in push mode via dispatching to the
+pad&apos;s activatepushfunc. For use from within pad activation functions only.
+If you don&apos;t know what this is, you probably don&apos;t want to call it.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="active" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_blocked"
+              c:identifier="gst_pad_set_blocked"
+              doc="Blocks or unblocks the dataflow on a pad. This function is
+a shortcut for gst_pad_set_blocked_async() with a NULL
+callback.
+wrong parameters were passed or the pad was already in the requested state.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="blocked" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_blocked_async"
+              c:identifier="gst_pad_set_blocked_async"
+              doc="operation succeeds
+Blocks or unblocks the dataflow on a pad. The provided callback
+is called when the operation succeeds; this happens right before the next
+attempt at pushing a buffer on the pad.
+This can take a while as the pad can only become blocked when real dataflow
+is happening.
+When the pipeline is stalled, for example in PAUSED, this can
+take an indeterminate amount of time.
+You can pass NULL as the callback to make this call block. Be careful with
+this blocking call as it might not return for reasons stated above.
+wrong parameters were passed or the pad was already in the requested state.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="blocked" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="3">
+            <type name="PadBlockCallback" c:type="GstPadBlockCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_blocked_async_full"
+              c:identifier="gst_pad_set_blocked_async_full"
+              doc="operation succeeds
+Blocks or unblocks the dataflow on a pad. The provided callback
+is called when the operation succeeds; this happens right before the next
+attempt at pushing a buffer on the pad.
+This can take a while as the pad can only become blocked when real dataflow
+is happening.
+When the pipeline is stalled, for example in PAUSED, this can
+take an indeterminate amount of time.
+You can pass NULL as the callback to make this call block. Be careful with
+this blocking call as it might not return for reasons stated above.
+wrong parameters were passed or the pad was already in the requested state.
+MT safe."
+              version="0.10.23">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="blocked" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="notified"
+                     closure="3"
+                     destroy="4">
+            <type name="PadBlockCallback" c:type="GstPadBlockCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+          <parameter name="destroy_data"
+                     transfer-ownership="none"
+                     scope="call">
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="is_blocked"
+              c:identifier="gst_pad_is_blocked"
+              doc="Checks if the pad is blocked or not. This function returns the
+last requested state of the pad. It is not certain that the pad
+is actually blocking at this point (see gst_pad_is_blocking()).
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="is_blocking"
+              c:identifier="gst_pad_is_blocking"
+              doc="Checks if the pad is blocking or not. This is a guaranteed state
+of whether the pad is actually blocking on a #GstBuffer or a #GstEvent.
+MT safe."
+              version="0.10.11">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_element_private"
+              c:identifier="gst_pad_set_element_private"
+              doc="Set the given private data gpointer on the pad.
+This function can only be used by the element that owns the pad.
+No locking is performed in this function.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="priv" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_element_private"
+              c:identifier="gst_pad_get_element_private"
+              doc="Gets the private data of a pad.
+No locking is performed in this function.">
+        <return-value transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </return-value>
+      </method>
+      <method name="get_pad_template"
+              c:identifier="gst_pad_get_pad_template"
+              doc="Gets the template for @pad.
+if this pad has no template.">
+        <return-value transfer-ownership="full">
+          <type name="PadTemplate" c:type="GstPadTemplate*"/>
+        </return-value>
+      </method>
+      <method name="set_bufferalloc_function"
+              c:identifier="gst_pad_set_bufferalloc_function"
+              doc="Sets the given bufferalloc function for the pad. Note that the
+bufferalloc function can only be set on sinkpads.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="bufalloc" transfer-ownership="none" scope="call">
+            <type name="PadBufferAllocFunction"
+                  c:type="GstPadBufferAllocFunction"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="alloc_buffer"
+              c:identifier="gst_pad_alloc_buffer"
+              doc="Allocates a new, empty buffer optimized to push to pad @pad.  This
+function only works if @pad is a source pad and has a peer.
+A new, empty #GstBuffer will be put in the @buf argument.
+You need to check the caps of the buffer after performing this
+function and renegotiate to the format if needed. If the caps changed, it is
+possible that the buffer returned in @buf is not of the right size for the
+new format, @buf needs to be unreffed and reallocated if this is the case.
+result code other than #GST_FLOW_OK is an error and @buf should
+not be used.
+An error can occur if the pad is not connected or when the downstream
+peer elements cannot provide an acceptable buffer.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="FlowReturn" c:type="GstFlowReturn"/>
+        </return-value>
+        <parameters>
+          <parameter name="offset" transfer-ownership="none">
+            <type name="uint64" c:type="guint64"/>
+          </parameter>
+          <parameter name="size" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="caps" transfer-ownership="none">
+            <type name="Caps" c:type="GstCaps*"/>
+          </parameter>
+          <parameter name="buf" transfer-ownership="none">
+            <type name="Buffer" c:type="GstBuffer**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="alloc_buffer_and_set_caps"
+              c:identifier="gst_pad_alloc_buffer_and_set_caps"
+              doc="In addition to the function gst_pad_alloc_buffer(), this function
+automatically calls gst_pad_set_caps() when the caps of the
+newly allocated buffer are different from the @pad caps.
+After a renegotiation, the size of the new buffer returned in @buf could
+be of the wrong size for the new format and must be unreffed an reallocated
+in that case.
+result code other than #GST_FLOW_OK is an error and @buf should
+not be used.
+An error can occur if the pad is not connected or when the downstream
+peer elements cannot provide an acceptable buffer.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="FlowReturn" c:type="GstFlowReturn"/>
+        </return-value>
+        <parameters>
+          <parameter name="offset" transfer-ownership="none">
+            <type name="uint64" c:type="guint64"/>
+          </parameter>
+          <parameter name="size" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="caps" transfer-ownership="none">
+            <type name="Caps" c:type="GstCaps*"/>
+          </parameter>
+          <parameter name="buf" transfer-ownership="none">
+            <type name="Buffer" c:type="GstBuffer**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_activate_function"
+              c:identifier="gst_pad_set_activate_function"
+              doc="Sets the given activate function for @pad. The activate function will
+dispatch to gst_pad_activate_push() or gst_pad_activate_pull() to perform
+the actual activation. Only makes sense to set on sink pads.
+Call this function if your sink pad can start a pull-based task.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="activate" transfer-ownership="none" scope="call">
+            <type name="PadActivateFunction" c:type="GstPadActivateFunction"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_activatepull_function"
+              c:identifier="gst_pad_set_activatepull_function"
+              doc="Sets the given activate_pull function for the pad. An activate_pull function
+prepares the element and any upstream connections for pulling. See XXX
+part-activation.txt for details.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="activatepull"
+                     transfer-ownership="none"
+                     scope="call">
+            <type name="PadActivateModeFunction"
+                  c:type="GstPadActivateModeFunction"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_activatepush_function"
+              c:identifier="gst_pad_set_activatepush_function"
+              doc="Sets the given activate_push function for the pad. An activate_push function
+prepares the element for pushing. See XXX part-activation.txt for details.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="activatepush"
+                     transfer-ownership="none"
+                     scope="call">
+            <type name="PadActivateModeFunction"
+                  c:type="GstPadActivateModeFunction"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_chain_function"
+              c:identifier="gst_pad_set_chain_function"
+              doc="Sets the given chain function for the pad. The chain function is called to
+process a #GstBuffer input buffer. see #GstPadChainFunction for more details.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="chain" transfer-ownership="none" scope="call">
+            <type name="PadChainFunction" c:type="GstPadChainFunction"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_chain_list_function"
+              c:identifier="gst_pad_set_chain_list_function"
+              doc="Sets the given chain list function for the pad. The chainlist function is
+called to process a #GstBufferList input buffer list. See
+#GstPadChainListFunction for more details."
+              version="0.10.24">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="chainlist" transfer-ownership="none" scope="call">
+            <type name="PadChainListFunction"
+                  c:type="GstPadChainListFunction"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_getrange_function"
+              c:identifier="gst_pad_set_getrange_function"
+              doc="Sets the given getrange function for the pad. The getrange function is
+called to produce a new #GstBuffer to start the processing pipeline. see
+#GstPadGetRangeFunction for a description of the getrange function.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="get" transfer-ownership="none" scope="call">
+            <type name="PadGetRangeFunction" c:type="GstPadGetRangeFunction"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_checkgetrange_function"
+              c:identifier="gst_pad_set_checkgetrange_function"
+              doc="Sets the given checkgetrange function for the pad. Implement this function
+on a pad if you dynamically support getrange based scheduling on the pad.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="check" transfer-ownership="none" scope="call">
+            <type name="PadCheckGetRangeFunction"
+                  c:type="GstPadCheckGetRangeFunction"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_event_function"
+              c:identifier="gst_pad_set_event_function"
+              doc="Sets the given event handler for the pad.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="none" scope="call">
+            <type name="PadEventFunction" c:type="GstPadEventFunction"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_link_function"
+              c:identifier="gst_pad_set_link_function"
+              doc="Sets the given link function for the pad. It will be called when
+the pad is linked with another pad.
+The return value #GST_PAD_LINK_OK should be used when the connection can be
+made.
+The return value #GST_PAD_LINK_REFUSED should be used when the connection
+cannot be made for some reason.
+If @link is installed on a source pad, it should call the #GstPadLinkFunction
+of the peer sink pad, if present.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="link" transfer-ownership="none" scope="call">
+            <type name="PadLinkFunction" c:type="GstPadLinkFunction"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_unlink_function"
+              c:identifier="gst_pad_set_unlink_function"
+              doc="Sets the given unlink function for the pad. It will be called
+when the pad is unlinked.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="unlink" transfer-ownership="none" scope="call">
+            <type name="PadUnlinkFunction" c:type="GstPadUnlinkFunction"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="can_link"
+              c:identifier="gst_pad_can_link"
+              doc="Checks if the source pad and the sink pad are compatible so they can be
+linked.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="sinkpad" transfer-ownership="none">
+            <type name="Pad" c:type="GstPad*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="link"
+              c:identifier="gst_pad_link"
+              doc="Links the source pad and the sink pad.
+what went wrong.
+MT Safe.">
+        <return-value transfer-ownership="full">
+          <type name="PadLinkReturn" c:type="GstPadLinkReturn"/>
+        </return-value>
+        <parameters>
+          <parameter name="sinkpad" transfer-ownership="none">
+            <type name="Pad" c:type="GstPad*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="unlink"
+              c:identifier="gst_pad_unlink"
+              doc="Unlinks the source pad from the sink pad. Will emit the #GstPad::unlinked
+signal on both pads.
+the pads were not linked together.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="sinkpad" transfer-ownership="none">
+            <type name="Pad" c:type="GstPad*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="is_linked"
+              c:identifier="gst_pad_is_linked"
+              doc="Checks if a @pad is linked to another pad or not.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_peer"
+              c:identifier="gst_pad_get_peer"
+              doc="Gets the peer of @pad. This function refs the peer pad so
+you need to unref it after use.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="Pad" c:type="GstPad*"/>
+        </return-value>
+      </method>
+      <method name="set_getcaps_function"
+              c:identifier="gst_pad_set_getcaps_function"
+              doc="Sets the given getcaps function for the pad. @getcaps should return the
+allowable caps for a pad in the context of the element&apos;s state, its link to
+other elements, and the devices or files it has opened. These caps must be a
+subset of the pad template caps. In the NULL state with no links, @getcaps
+should ideally return the same caps as the pad template. In rare
+circumstances, an object property can affect the caps returned by @getcaps,
+but this is discouraged.
+You do not need to call this function if @pad&apos;s allowed caps are always the
+same as the pad template caps. This can only be true if the padtemplate
+has fixed simple caps.
+For most filters, the caps returned by @getcaps is directly affected by the
+allowed caps on other pads. For demuxers and decoders, the caps returned by
+the srcpad&apos;s getcaps function is directly related to the stream data. Again,
+helps with autoplugging.
+Note that the return value from @getcaps is owned by the caller, so the
+caller should unref the caps after usage.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="getcaps" transfer-ownership="none" scope="call">
+            <type name="PadGetCapsFunction" c:type="GstPadGetCapsFunction"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_acceptcaps_function"
+              c:identifier="gst_pad_set_acceptcaps_function"
+              doc="Sets the given acceptcaps function for the pad.  The acceptcaps function
+will be called to check if the pad can accept the given caps. Setting the
+acceptcaps function to NULL restores the default behaviour of allowing
+any caps that matches the caps from gst_pad_get_caps.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="acceptcaps" transfer-ownership="none" scope="call">
+            <type name="PadAcceptCapsFunction"
+                  c:type="GstPadAcceptCapsFunction"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_fixatecaps_function"
+              c:identifier="gst_pad_set_fixatecaps_function"
+              doc="Sets the given fixatecaps function for the pad.  The fixatecaps function
+will be called whenever the default values for a GstCaps needs to be
+filled in.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="fixatecaps" transfer-ownership="none" scope="call">
+            <type name="PadFixateCapsFunction"
+                  c:type="GstPadFixateCapsFunction"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_setcaps_function"
+              c:identifier="gst_pad_set_setcaps_function"
+              doc="Sets the given setcaps function for the pad.  The setcaps function
+will be called whenever a buffer with a new media type is pushed or
+pulled from the pad. The pad/element needs to update its internal
+structures to process the new media type. If this new type is not
+acceptable, the setcaps function should return FALSE.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="setcaps" transfer-ownership="none" scope="call">
+            <type name="PadSetCapsFunction" c:type="GstPadSetCapsFunction"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_pad_template_caps"
+              c:identifier="gst_pad_get_pad_template_caps"
+              doc="Gets the capabilities for @pad&apos;s template.
+reference on the caps, make a copy (see gst_caps_copy ()).">
+        <return-value transfer-ownership="none">
+          <type name="Caps" c:type="GstCaps*"/>
+        </return-value>
+      </method>
+      <method name="get_caps_reffed"
+              c:identifier="gst_pad_get_caps_reffed"
+              doc="Gets the capabilities this pad can produce or consume. Preferred function if
+one only wants to read or intersect the caps."
+              version="0.10.26">
+        <return-value transfer-ownership="full">
+          <type name="Caps" c:type="GstCaps*"/>
+        </return-value>
+      </method>
+      <method name="get_caps"
+              c:identifier="gst_pad_get_caps"
+              doc="Gets the capabilities this pad can produce or consume.
+Note that this method doesn&apos;t necessarily return the caps set by
+gst_pad_set_caps() - use GST_PAD_CAPS() for that instead.
+gst_pad_get_caps returns all possible caps a pad can operate with, using
+the pad&apos;s get_caps function;
+this returns the pad template caps if not explicitly set.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="Caps" c:type="GstCaps*"/>
+        </return-value>
+      </method>
+      <method name="fixate_caps"
+              c:identifier="gst_pad_fixate_caps"
+              doc="Fixate a caps on the given pad. Modifies the caps in place, so you should
+make sure that the caps are actually writable (see gst_caps_make_writable()).">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="caps" transfer-ownership="none">
+            <type name="Caps" c:type="GstCaps*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="accept_caps"
+              c:identifier="gst_pad_accept_caps"
+              doc="Check if the given pad accepts the caps.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="caps" transfer-ownership="none">
+            <type name="Caps" c:type="GstCaps*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_caps"
+              c:identifier="gst_pad_set_caps"
+              doc="Sets the capabilities of this pad. The caps must be fixed. Any previous
+caps on the pad will be unreffed. This function refs the caps so you should
+unref if as soon as you don&apos;t need it anymore.
+It is possible to set NULL caps, which will make the pad unnegotiated
+again.
+or bad parameters were provided to this function.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="caps" transfer-ownership="none">
+            <type name="Caps" c:type="GstCaps*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="peer_get_caps_reffed"
+              c:identifier="gst_pad_peer_get_caps_reffed"
+              doc="Gets the capabilities of the peer connected to this pad. Preferred function
+if one only wants to read or intersect the caps."
+              version="0.10.26">
+        <return-value transfer-ownership="full">
+          <type name="Caps" c:type="GstCaps*"/>
+        </return-value>
+      </method>
+      <method name="peer_get_caps"
+              c:identifier="gst_pad_peer_get_caps"
+              doc="Gets the capabilities of the peer connected to this pad. Similar to
+gst_pad_get_caps().
+gst_caps_unref() to get rid of it. This function returns %NULL if there is
+no peer pad.">
+        <return-value transfer-ownership="full">
+          <type name="Caps" c:type="GstCaps*"/>
+        </return-value>
+      </method>
+      <method name="peer_accept_caps"
+              c:identifier="gst_pad_peer_accept_caps"
+              doc="Check if the peer of @pad accepts @caps. If @pad has no peer, this function
+returns TRUE.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="caps" transfer-ownership="none">
+            <type name="Caps" c:type="GstCaps*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_allowed_caps"
+              c:identifier="gst_pad_get_allowed_caps"
+              doc="Gets the capabilities of the allowed media types that can flow through
+The allowed capabilities is calculated as the intersection of the results of
+calling gst_pad_get_caps() on @pad and its peer. The caller owns a reference
+on the resulting caps.
+longer need it. This function returns NULL when @pad has no peer.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="Caps" c:type="GstCaps*"/>
+        </return-value>
+      </method>
+      <method name="get_negotiated_caps"
+              c:identifier="gst_pad_get_negotiated_caps"
+              doc="Gets the capabilities of the media type that currently flows through @pad
+and its peer.
+This function can be used on both src and sinkpads. Note that srcpads are
+always negotiated before sinkpads so it is possible that the negotiated caps
+on the srcpad do not match the negotiated caps of the peer.
+you no longer need it. This function returns NULL when the @pad has no
+peer or is not negotiated yet.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="Caps" c:type="GstCaps*"/>
+        </return-value>
+      </method>
+      <method name="push"
+              c:identifier="gst_pad_push"
+              doc="Pushes a buffer to the peer of @pad.
+This function will call an installed pad block before triggering any
+installed pad probes.
+If the caps on @buffer are different from the currently configured caps on
+gst_pad_set_setcaps_function()). In case of failure to renegotiate the new
+format, this function returns #GST_FLOW_NOT_NEGOTIATED.
+The function proceeds calling gst_pad_chain() on the peer pad and returns
+the value from that function. If @pad has no peer, #GST_FLOW_NOT_LINKED will
+be returned.
+In all cases, success or failure, the caller loses its reference to @buffer
+after calling this function.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="FlowReturn" c:type="GstFlowReturn"/>
+        </return-value>
+        <parameters>
+          <parameter name="buffer" transfer-ownership="none">
+            <type name="Buffer" c:type="GstBuffer*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="push_list"
+              c:identifier="gst_pad_push_list"
+              doc="Pushes a buffer list to the peer of @pad.
+This function will call an installed pad block before triggering any
+installed pad probes.
+If the caps on the first buffer in the first group of @list are different
+from the currently configured caps on @pad, this function will call any
+installed setcaps function on @pad (see gst_pad_set_setcaps_function()). In
+case of failure to renegotiate the new format, this function returns
+#GST_FLOW_NOT_NEGOTIATED.
+If there are any probes installed on @pad every group of the buffer list
+will be merged into a normal #GstBuffer and pushed via gst_pad_push and the
+buffer list will be unreffed.
+The function proceeds calling the chain function on the peer pad and returns
+the value from that function. If @pad has no peer, #GST_FLOW_NOT_LINKED will
+be returned. If the peer pad does not have any installed chainlist function
+every group buffer of the list will be merged into a normal #GstBuffer and
+chained via gst_pad_chain().
+In all cases, success or failure, the caller loses its reference to @list
+after calling this function.
+MT safe."
+              version="0.10.24">
+        <return-value transfer-ownership="full">
+          <type name="FlowReturn" c:type="GstFlowReturn"/>
+        </return-value>
+        <parameters>
+          <parameter name="list" transfer-ownership="none">
+            <type name="BufferList" c:type="GstBufferList*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="check_pull_range"
+              c:identifier="gst_pad_check_pull_range"
+              doc="Checks if a gst_pad_pull_range() can be performed on the peer
+source pad. This function is used by plugins that want to check
+if they can use random access on the peer source pad.
+The peer sourcepad can implement a custom #GstPadCheckGetRangeFunction
+if it needs to perform some logic to determine if pull_range is
+possible.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="pull_range"
+              c:identifier="gst_pad_pull_range"
+              doc="Pulls a @buffer from the peer pad.
+This function will first trigger the pad block signal if it was
+installed.
+When @pad is not linked #GST_FLOW_NOT_LINKED is returned else this
+function returns the result of gst_pad_get_range() on the peer pad.
+See gst_pad_get_range() for a list of return values and for the
+semantics of the arguments of this function.
+configured on @pad. Renegotiation within a running pull-mode pipeline is not
+supported.
+When this function returns #GST_FLOW_OK, @buffer will contain a valid
+#GstBuffer that should be freed with gst_buffer_unref() after usage.
+#GST_FLOW_OK is returned.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="FlowReturn" c:type="GstFlowReturn"/>
+        </return-value>
+        <parameters>
+          <parameter name="offset" transfer-ownership="none">
+            <type name="uint64" c:type="guint64"/>
+          </parameter>
+          <parameter name="size" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="buffer" transfer-ownership="none">
+            <type name="Buffer" c:type="GstBuffer**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="push_event"
+              c:identifier="gst_pad_push_event"
+              doc="Sends the event to the peer of the given pad. This function is
+mainly used by elements to send events to their peer
+elements.
+This function takes owership of the provided event so you should
+gst_event_ref() it if you want to reuse the event after this call.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="none">
+            <type name="Event" c:type="GstEvent*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="event_default"
+              c:identifier="gst_pad_event_default"
+              doc="Invokes the default event handler for the given pad. End-of-stream and
+discontinuity events are handled specially, and then the event is sent to all
+pads internally linked to @pad. Note that if there are many possible sink
+pads that are internally linked to @pad, only one will be sent an event.
+Multi-sinkpad elements should implement custom event handlers.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="none">
+            <type name="Event" c:type="GstEvent*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="chain"
+              c:identifier="gst_pad_chain"
+              doc="Chain a buffer to @pad.
+The function returns #GST_FLOW_WRONG_STATE if the pad was flushing.
+If the caps on @buffer are different from the current caps on @pad, this
+function will call any setcaps function (see gst_pad_set_setcaps_function())
+installed on @pad. If the new caps are not acceptable for @pad, this
+function returns #GST_FLOW_NOT_NEGOTIATED.
+The function proceeds calling the chain function installed on @pad (see
+gst_pad_set_chain_function()) and the return value of that function is
+returned to the caller. #GST_FLOW_NOT_SUPPORTED is returned if @pad has no
+chain function.
+In all cases, success or failure, the caller loses its reference to @buffer
+after calling this function.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="FlowReturn" c:type="GstFlowReturn"/>
+        </return-value>
+        <parameters>
+          <parameter name="buffer" transfer-ownership="none">
+            <type name="Buffer" c:type="GstBuffer*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="chain_list"
+              c:identifier="gst_pad_chain_list"
+              doc="Chain a bufferlist to @pad.
+The function returns #GST_FLOW_WRONG_STATE if the pad was flushing.
+If the caps on the first buffer of @list are different from the current
+caps on @pad, this function will call any setcaps function
+(see gst_pad_set_setcaps_function()) installed on @pad. If the new caps
+are not acceptable for @pad, this function returns #GST_FLOW_NOT_NEGOTIATED.
+The function proceeds calling the chainlist function installed on @pad (see
+gst_pad_set_chain_list_function()) and the return value of that function is
+returned to the caller. #GST_FLOW_NOT_SUPPORTED is returned if @pad has no
+chainlist function.
+In all cases, success or failure, the caller loses its reference to @list
+after calling this function.
+MT safe."
+              version="0.10.24">
+        <return-value transfer-ownership="full">
+          <type name="FlowReturn" c:type="GstFlowReturn"/>
+        </return-value>
+        <parameters>
+          <parameter name="list" transfer-ownership="none">
+            <type name="BufferList" c:type="GstBufferList*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_range"
+              c:identifier="gst_pad_get_range"
+              doc="When @pad is flushing this function returns #GST_FLOW_WRONG_STATE
+immediatly.
+Calls the getrange function of @pad, see #GstPadGetRangeFunction for a
+description of a getrange function. If @pad has no getrange function
+installed (see gst_pad_set_getrange_function()) this function returns
+#GST_FLOW_NOT_SUPPORTED.
+This is a lowlevel function. Usualy gst_pad_pull_range() is used.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="FlowReturn" c:type="GstFlowReturn"/>
+        </return-value>
+        <parameters>
+          <parameter name="offset" transfer-ownership="none">
+            <type name="uint64" c:type="guint64"/>
+          </parameter>
+          <parameter name="size" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="buffer" transfer-ownership="none">
+            <type name="Buffer" c:type="GstBuffer**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="send_event"
+              c:identifier="gst_pad_send_event"
+              doc="Sends the event to the pad. This function can be used
+by applications to send events in the pipeline.
+If @pad is a source pad, @event should be an upstream event. If @pad is a
+sink pad, @event should be a downstream event. For example, you would not
+send a #GST_EVENT_EOS on a src pad; EOS events only propagate downstream.
+Furthermore, some downstream events have to be serialized with data flow,
+like EOS, while some can travel out-of-band, like #GST_EVENT_FLUSH_START. If
+the event needs to be serialized with data flow, this function will take the
+pad&apos;s stream lock while calling its event function.
+To find out whether an event type is upstream, downstream, or downstream and
+serialized, see #GstEventTypeFlags, gst_event_type_get_flags(),
+#GST_EVENT_IS_UPSTREAM, #GST_EVENT_IS_DOWNSTREAM, and
+#GST_EVENT_IS_SERIALIZED. Note that in practice that an application or
+plugin doesn&apos;t need to bother itself with this information; the core handles
+all necessary locks and checks.
+This function takes owership of the provided event so you should
+gst_event_ref() it if you want to reuse the event after this call.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="none">
+            <type name="Event" c:type="GstEvent*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="start_task"
+              c:identifier="gst_pad_start_task"
+              doc="Starts a task that repeatedly calls @func with @data. This function
+is mostly used in pad activation functions to start the dataflow.
+The #GST_PAD_STREAM_LOCK of @pad will automatically be acquired
+before @func is called.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="2">
+            <type name="TaskFunction" c:type="GstTaskFunction"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="pause_task"
+              c:identifier="gst_pad_pause_task"
+              doc="Pause the task of @pad. This function will also wait until the
+function executed by the task is finished if this function is not
+called from the task function.
+has no task.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="stop_task"
+              c:identifier="gst_pad_stop_task"
+              doc="Stop the task of @pad. This function will also make sure that the
+function executed by the task will effectively stop if not called
+from the GstTaskFunction.
+This function will deadlock if called from the GstTaskFunction of
+the task. Use gst_task_pause() instead.
+Regardless of whether the pad has a task, the stream lock is acquired and
+released so as to ensure that streaming through this pad has finished.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_internal_link_function"
+              c:identifier="gst_pad_set_internal_link_function"
+              doc="Sets the given internal link function for the pad."
+              deprecated="Use the thread-safe gst_pad_set_iterate_internal_links_function()">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="intlink" transfer-ownership="none" scope="call">
+            <type name="PadIntLinkFunction" c:type="GstPadIntLinkFunction"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_internal_links"
+              c:identifier="gst_pad_get_internal_links"
+              doc="Gets a list of pads to which the given pad is linked to
+inside of the parent element.
+The caller must free this list after use.
+Not MT safe.
+could become invalid by the time the application accesses them. It&apos;s also
+possible that the list changes while handling the pads, which the caller of
+this function is unable to know. Use the thread-safe
+gst_pad_iterate_internal_links() instead."
+              deprecated="This function does not ref the pads in the list so that they">
+        <return-value transfer-ownership="full">
+          <type name="GLib.List" c:type="GList*"/>
+        </return-value>
+      </method>
+      <method name="get_internal_links_default"
+              c:identifier="gst_pad_get_internal_links_default"
+              doc="Gets a list of pads to which the given pad is linked to
+inside of the parent element.
+This is the default handler, and thus returns a list of all of the
+pads inside the parent element with opposite direction.
+The caller must free this list after use with g_list_free().
+Not MT safe.
+could become invalid by the time the application accesses them. It&apos;s also
+possible that the list changes while handling the pads, which the caller of
+this function is unable to know. Use the thread-safe
+gst_pad_iterate_internal_links_default() instead."
+              deprecated="This function does not ref the pads in the list so that they">
+        <return-value transfer-ownership="full">
+          <type name="GLib.List" c:type="GList*"/>
+        </return-value>
+      </method>
+      <method name="set_iterate_internal_links_function"
+              c:identifier="gst_pad_set_iterate_internal_links_function"
+              doc="Sets the given internal link iterator function for the pad."
+              version="0.10.21">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="iterintlink" transfer-ownership="none" scope="call">
+            <type name="PadIterIntLinkFunction"
+                  c:type="GstPadIterIntLinkFunction"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="iterate_internal_links"
+              c:identifier="gst_pad_iterate_internal_links"
+              doc="Gets an iterator for the pads to which the given pad is linked to inside
+of the parent element.
+Each #GstPad element yielded by the iterator will have its refcount increased,
+so unref after use.
+iterator function configured. Use gst_iterator_free() after usage."
+              version="0.10.21">
+        <return-value transfer-ownership="full">
+          <type name="Iterator" c:type="GstIterator*"/>
+        </return-value>
+      </method>
+      <method name="iterate_internal_links_default"
+              c:identifier="gst_pad_iterate_internal_links_default"
+              doc="Iterate the list of pads to which the given pad is linked to inside of
+the parent element.
+This is the default handler, and thus returns an iterator of all of the
+pads inside the parent element with opposite direction.
+The caller must free this iterator after use with gst_iterator_free().
+returned pad with gst_object_unref()."
+              version="0.10.21">
+        <return-value transfer-ownership="full">
+          <type name="Iterator" c:type="GstIterator*"/>
+        </return-value>
+      </method>
+      <method name="set_query_type_function"
+              c:identifier="gst_pad_set_query_type_function"
+              doc="Set the given query type function for the pad.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="type_func" transfer-ownership="none" scope="call">
+            <type name="PadQueryTypeFunction"
+                  c:type="GstPadQueryTypeFunction"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_query_types"
+              c:identifier="gst_pad_get_query_types"
+              doc="Get an array of supported queries that can be performed
+on this pad.">
+        <return-value transfer-ownership="none">
+          <type name="QueryType" c:type="GstQueryType*"/>
+        </return-value>
+      </method>
+      <method name="get_query_types_default"
+              c:identifier="gst_pad_get_query_types_default"
+              doc="Invoke the default dispatcher for the query types on
+the pad.
+internally-linked pads has a query types function.">
+        <return-value transfer-ownership="none">
+          <type name="QueryType" c:type="GstQueryType*"/>
+        </return-value>
+      </method>
+      <method name="query"
+              c:identifier="gst_pad_query"
+              doc="Dispatches a query to a pad. The query should have been allocated by the
+caller via one of the type-specific allocation functions in gstquery.h. The
+element is responsible for filling the query with an appropriate response,
+which should then be parsed with a type-specific query parsing function.
+Again, the caller is responsible for both the allocation and deallocation of
+the query structure.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="query" transfer-ownership="none">
+            <type name="Query" c:type="GstQuery*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="peer_query"
+              c:identifier="gst_pad_peer_query"
+              doc="Performs gst_pad_query() on the peer of @pad.
+The caller is responsible for both the allocation and deallocation of
+the query structure.
+if @pad has no peer."
+              version="0.10.15">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="query" transfer-ownership="none">
+            <type name="Query" c:type="GstQuery*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_query_function"
+              c:identifier="gst_pad_set_query_function"
+              doc="Set the given query function for the pad.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="query" transfer-ownership="none" scope="call">
+            <type name="PadQueryFunction" c:type="GstPadQueryFunction"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="query_default"
+              c:identifier="gst_pad_query_default"
+              doc="Invokes the default query handler for the given pad.
+The query is sent to all pads internally linked to @pad. Note that
+if there are many possible sink pads that are internally linked to
+Multi-sinkpad elements should implement custom query handlers.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="query" transfer-ownership="none">
+            <type name="Query" c:type="GstQuery*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="dispatcher"
+              c:identifier="gst_pad_dispatcher"
+              doc="Invokes the given dispatcher function on each respective peer of
+all pads that are internally linked to the given pad.
+The GstPadDispatcherFunction should return TRUE when no further pads
+need to be processed.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="dispatch"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="2">
+            <type name="PadDispatcherFunction"
+                  c:type="GstPadDispatcherFunction"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="use_fixed_caps"
+              c:identifier="gst_pad_use_fixed_caps"
+              doc="A helper function you can use that sets the
+pad. This way the function will always return the negotiated caps
+or in case the pad is not negotiated, the padtemplate caps.
+Use this function on a pad that, once gst_pad_set_caps() has been called
+on it, cannot be renegotiated to something else.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_fixed_caps_func"
+              c:identifier="gst_pad_get_fixed_caps_func"
+              doc="A helper function you can use as a GetCaps function that
+will return the currently negotiated caps or the padtemplate
+when NULL.">
+        <return-value transfer-ownership="full">
+          <type name="Caps" c:type="GstCaps*"/>
+        </return-value>
+      </method>
+      <method name="proxy_getcaps"
+              c:identifier="gst_pad_proxy_getcaps"
+              doc="Calls gst_pad_get_allowed_caps() for every other pad belonging to the
+same element as @pad, and returns the intersection of the results.
+This function is useful as a default getcaps function for an element
+that can handle any stream format, but requires all its pads to have
+the same caps.  Two such elements are tee and adder.">
+        <return-value transfer-ownership="full">
+          <type name="Caps" c:type="GstCaps*"/>
+        </return-value>
+      </method>
+      <method name="proxy_setcaps" c:identifier="gst_pad_proxy_setcaps">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="caps" transfer-ownership="none">
+            <type name="Caps" c:type="GstCaps*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_parent_element"
+              c:identifier="gst_pad_get_parent_element"
+              doc="Gets the parent of @pad, cast to a #GstElement. If a @pad has no parent or
+its parent is not an element, return NULL.
+unref when you&apos;re finished with it.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="Element" c:type="GstElement*"/>
+        </return-value>
+      </method>
+      <method name="query_position"
+              c:identifier="gst_pad_query_position"
+              doc="On return contains the #GstFormat used.
+Queries a pad for the stream position.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="format"
+                     direction="inout"
+                     transfer-ownership="full"
+                     doc="a pointer to the #GstFormat asked for.">
+            <type name="Format" c:type="GstFormat*"/>
+          </parameter>
+          <parameter name="cur"
+                     direction="out"
+                     transfer-ownership="full"
+                     doc="A location in which to store the current position, or NULL.">
+            <type name="int64" c:type="gint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="query_duration"
+              c:identifier="gst_pad_query_duration"
+              doc="On return contains the #GstFormat used.
+Queries a pad for the total stream duration.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat*"/>
+          </parameter>
+          <parameter name="duration" direction="out" transfer-ownership="full">
+            <type name="int64" c:type="gint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="query_convert"
+              c:identifier="gst_pad_query_convert"
+              doc="Queries a pad to convert @src_val in @src_format to @dest_format.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="src_format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="src_val" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+          <parameter name="dest_format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat*"/>
+          </parameter>
+          <parameter name="dest_val" direction="out" transfer-ownership="full">
+            <type name="int64" c:type="gint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="query_peer_position"
+              c:identifier="gst_pad_query_peer_position"
+              doc="Must be a sink pad.
+On return contains the #GstFormat used.
+Queries the peer of a given sink pad for the stream position.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat*"/>
+          </parameter>
+          <parameter name="cur" direction="out" transfer-ownership="full">
+            <type name="int64" c:type="gint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="query_peer_duration"
+              c:identifier="gst_pad_query_peer_duration"
+              doc="Must be a sink pad.
+On return contains the #GstFormat used.
+Queries the peer pad of a given sink pad for the total stream duration.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat*"/>
+          </parameter>
+          <parameter name="duration" direction="out" transfer-ownership="full">
+            <type name="int64" c:type="gint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="query_peer_convert"
+              c:identifier="gst_pad_query_peer_convert"
+              doc="Must be a sink pad.
+Queries the peer pad of a given sink pad to convert @src_val in @src_format
+to @dest_format.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="src_format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="src_val" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+          <parameter name="dest_format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat*"/>
+          </parameter>
+          <parameter name="dest_val" direction="out" transfer-ownership="full">
+            <type name="int64" c:type="gint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_data_probe"
+              c:identifier="gst_pad_add_data_probe"
+              doc="Adds a &quot;data probe&quot; to a pad. This function will be called whenever data
+passes through a pad. In this case data means both events and buffers. The
+probe will be called with the data as an argument, meaning @handler should
+have the same callback signature as the #GstPad::have-data signal.
+Note that the data will have a reference count greater than 1, so it will
+be immutable -- you must not change it.
+For source pads, the probe will be called after the blocking function, if any
+(see gst_pad_set_blocked_async()), but before looking up the peer to chain
+to. For sink pads, the probe function will be called before configuring the
+sink with new caps, if any, and before calling the pad&apos;s chain function.
+Your data probe should return TRUE to let the data continue to flow, or FALSE
+to drop it. Dropping data is rarely useful, but occasionally comes in handy
+with events.
+Although probes are implemented internally by connecting @handler to the
+have-data signal on the pad, if you want to remove a probe it is insufficient
+to only call g_signal_handler_disconnect on the returned handler id. To
+remove a probe, use the appropriate function, such as
+gst_pad_remove_data_probe().">
+        <return-value transfer-ownership="none">
+          <type name="ulong" c:type="gulong"/>
+        </return-value>
+        <parameters>
+          <parameter name="handler"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="2">
+            <type name="GObject.Callback" c:type="GCallback"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_data_probe_full"
+              c:identifier="gst_pad_add_data_probe_full"
+              doc="Adds a &quot;data probe&quot; to a pad. This function will be called whenever data
+passes through a pad. In this case data means both events and buffers. The
+probe will be called with the data as an argument, meaning @handler should
+have the same callback signature as the #GstPad::have-data signal.
+Note that the data will have a reference count greater than 1, so it will
+be immutable -- you must not change it.
+For source pads, the probe will be called after the blocking function, if any
+(see gst_pad_set_blocked_async()), but before looking up the peer to chain
+to. For sink pads, the probe function will be called before configuring the
+sink with new caps, if any, and before calling the pad&apos;s chain function.
+Your data probe should return TRUE to let the data continue to flow, or FALSE
+to drop it. Dropping data is rarely useful, but occasionally comes in handy
+with events.
+Although probes are implemented internally by connecting @handler to the
+have-data signal on the pad, if you want to remove a probe it is insufficient
+to only call g_signal_handler_disconnect on the returned handler id. To
+remove a probe, use the appropriate function, such as
+gst_pad_remove_data_probe().
+The @notify function is called when the probe is disconnected and usually
+used to free @data."
+              version="0.10.20">
+        <return-value transfer-ownership="none">
+          <type name="ulong" c:type="gulong"/>
+        </return-value>
+        <parameters>
+          <parameter name="handler"
+                     transfer-ownership="none"
+                     scope="notified"
+                     closure="2"
+                     destroy="3">
+            <type name="GObject.Callback" c:type="GCallback"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+          <parameter name="notify" transfer-ownership="none" scope="call">
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_data_probe"
+              c:identifier="gst_pad_remove_data_probe"
+              doc="Removes a data probe from @pad.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="handler_id" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_event_probe"
+              c:identifier="gst_pad_add_event_probe"
+              doc="Adds a probe that will be called for all events passing through a pad. See
+gst_pad_add_data_probe() for more information.">
+        <return-value transfer-ownership="none">
+          <type name="ulong" c:type="gulong"/>
+        </return-value>
+        <parameters>
+          <parameter name="handler"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="2">
+            <type name="GObject.Callback" c:type="GCallback"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_event_probe_full"
+              c:identifier="gst_pad_add_event_probe_full"
+              doc="Adds a probe that will be called for all events passing through a pad. See
+gst_pad_add_data_probe() for more information.
+The @notify function is called when the probe is disconnected and usually
+used to free @data."
+              version="0.10.20">
+        <return-value transfer-ownership="none">
+          <type name="ulong" c:type="gulong"/>
+        </return-value>
+        <parameters>
+          <parameter name="handler"
+                     transfer-ownership="none"
+                     scope="notified"
+                     closure="2"
+                     destroy="3">
+            <type name="GObject.Callback" c:type="GCallback"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+          <parameter name="notify" transfer-ownership="none" scope="call">
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_event_probe"
+              c:identifier="gst_pad_remove_event_probe"
+              doc="Removes an event probe from @pad.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="handler_id" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_buffer_probe"
+              c:identifier="gst_pad_add_buffer_probe"
+              doc="Adds a probe that will be called for all buffers passing through a pad. See
+gst_pad_add_data_probe() for more information.">
+        <return-value transfer-ownership="none">
+          <type name="ulong" c:type="gulong"/>
+        </return-value>
+        <parameters>
+          <parameter name="handler"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="2">
+            <type name="GObject.Callback" c:type="GCallback"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_buffer_probe_full"
+              c:identifier="gst_pad_add_buffer_probe_full"
+              doc="Adds a probe that will be called for all buffers passing through a pad. See
+gst_pad_add_data_probe() for more information.
+The @notify function is called when the probe is disconnected and usually
+used to free @data."
+              version="0.10.20">
+        <return-value transfer-ownership="none">
+          <type name="ulong" c:type="gulong"/>
+        </return-value>
+        <parameters>
+          <parameter name="handler"
+                     transfer-ownership="none"
+                     scope="notified"
+                     closure="2"
+                     destroy="3">
+            <type name="GObject.Callback" c:type="GCallback"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+          <parameter name="notify" transfer-ownership="none" scope="call">
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_buffer_probe"
+              c:identifier="gst_pad_remove_buffer_probe"
+              doc="Removes a buffer probe from @pad.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="handler_id" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="caps">
+        <type name="Caps" c:type="GstCaps"/>
+      </property>
+      <property name="direction" writable="1" construct-only="1">
+        <type name="PadDirection" c:type="GstPadDirection"/>
+      </property>
+      <property name="template" writable="1">
+        <type name="PadTemplate" c:type="GstPadTemplate"/>
+      </property>
+      <field name="object">
+        <type name="Object" c:type="GstObject"/>
+      </field>
+      <field name="element_private">
+        <type name="any" c:type="gpointer"/>
+      </field>
+      <field name="padtemplate">
+        <type name="PadTemplate" c:type="GstPadTemplate*"/>
+      </field>
+      <field name="direction">
+        <type name="PadDirection" c:type="GstPadDirection"/>
+      </field>
+      <field name="stream_rec_lock">
+        <type name="GLib.StaticRecMutex" c:type="GStaticRecMutex*"/>
+      </field>
+      <field name="task">
+        <type name="Task" c:type="GstTask*"/>
+      </field>
+      <field name="preroll_lock">
+        <type name="GLib.Mutex" c:type="GMutex*"/>
+      </field>
+      <field name="preroll_cond">
+        <type name="GLib.Cond" c:type="GCond*"/>
+      </field>
+      <field name="block_cond">
+        <type name="GLib.Cond" c:type="GCond*"/>
+      </field>
+      <field name="block_callback">
+        <type name="PadBlockCallback" c:type="GstPadBlockCallback"/>
+      </field>
+      <field name="block_data">
+        <type name="any" c:type="gpointer"/>
+      </field>
+      <field name="caps">
+        <type name="Caps" c:type="GstCaps*"/>
+      </field>
+      <field name="getcapsfunc">
+        <type name="PadGetCapsFunction" c:type="GstPadGetCapsFunction"/>
+      </field>
+      <field name="setcapsfunc">
+        <type name="PadSetCapsFunction" c:type="GstPadSetCapsFunction"/>
+      </field>
+      <field name="acceptcapsfunc">
+        <type name="PadAcceptCapsFunction" c:type="GstPadAcceptCapsFunction"/>
+      </field>
+      <field name="fixatecapsfunc">
+        <type name="PadFixateCapsFunction" c:type="GstPadFixateCapsFunction"/>
+      </field>
+      <field name="activatefunc">
+        <type name="PadActivateFunction" c:type="GstPadActivateFunction"/>
+      </field>
+      <field name="activatepushfunc">
+        <type name="PadActivateModeFunction"
+              c:type="GstPadActivateModeFunction"/>
+      </field>
+      <field name="activatepullfunc">
+        <type name="PadActivateModeFunction"
+              c:type="GstPadActivateModeFunction"/>
+      </field>
+      <field name="linkfunc">
+        <type name="PadLinkFunction" c:type="GstPadLinkFunction"/>
+      </field>
+      <field name="unlinkfunc">
+        <type name="PadUnlinkFunction" c:type="GstPadUnlinkFunction"/>
+      </field>
+      <field name="peer">
+        <type name="Pad" c:type="GstPad*"/>
+      </field>
+      <field name="sched_private">
+        <type name="any" c:type="gpointer"/>
+      </field>
+      <field name="chainfunc">
+        <type name="PadChainFunction" c:type="GstPadChainFunction"/>
+      </field>
+      <field name="checkgetrangefunc">
+        <type name="PadCheckGetRangeFunction"
+              c:type="GstPadCheckGetRangeFunction"/>
+      </field>
+      <field name="getrangefunc">
+        <type name="PadGetRangeFunction" c:type="GstPadGetRangeFunction"/>
+      </field>
+      <field name="eventfunc">
+        <type name="PadEventFunction" c:type="GstPadEventFunction"/>
+      </field>
+      <field name="mode">
+        <type name="ActivateMode" c:type="GstActivateMode"/>
+      </field>
+      <field name="querytypefunc">
+        <type name="PadQueryTypeFunction" c:type="GstPadQueryTypeFunction"/>
+      </field>
+      <field name="queryfunc">
+        <type name="PadQueryFunction" c:type="GstPadQueryFunction"/>
+      </field>
+      <field name="intlinkfunc">
+        <type name="PadIntLinkFunction" c:type="GstPadIntLinkFunction"/>
+      </field>
+      <field name="bufferallocfunc">
+        <type name="PadBufferAllocFunction"
+              c:type="GstPadBufferAllocFunction"/>
+      </field>
+      <field name="do_buffer_signals">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="do_event_signals">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="iterintlinkfunc">
+        <type name="PadIterIntLinkFunction"
+              c:type="GstPadIterIntLinkFunction"/>
+      </field>
+      <field name="block_destroy_data">
+        <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+      </field>
+      <union name="abidata" c:type="abidata">
+        <record name="ABI" c:type="ABI">
+          <field name="block_callback_called" writable="1">
+            <type name="boolean" c:type="gboolean"/>
+          </field>
+          <field name="priv" writable="1">
+            <type name="PadPrivate" c:type="GstPadPrivate*"/>
+          </field>
+        </record>
+        <field name="_gst_reserved" writable="1">
+          <array zero-terminated="0" c:type="gpointer" fixed-size="2">
+            <type name="any"/>
+          </array>
+        </field>
+      </union>
+      <glib:signal name="have-data"
+                   doc="Signals that new data is available on the pad. This signal is used
+internally for implementing pad probes.
+See gst_pad_add_*_probe functions.">
+        <return-value transfer-ownership="full">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="mini_obj" transfer-ownership="none">
+            <type name="MiniObject" c:type="GstMiniObject"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="linked"
+                   doc="Signals that a pad has been linked to the peer pad.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="peer" transfer-ownership="none">
+            <type name="Pad" c:type="GstPad"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="request-link"
+                   doc="Signals that a pad connection has been requested.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="unlinked"
+                   doc="Signals that a pad has been unlinked from the peer pad.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="peer" transfer-ownership="none">
+            <type name="Pad" c:type="GstPad"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <callback name="PadAcceptCapsFunction"
+              c:type="GstPadAcceptCapsFunction"
+              doc="Check if @pad can accept @caps. By default this function will see if @caps
+intersect with the result from gst_pad_get_caps() by can be overridden to
+perform extra checks.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="pad" transfer-ownership="none">
+          <type name="Pad" c:type="GstPad*"/>
+        </parameter>
+        <parameter name="caps" transfer-ownership="none">
+          <type name="Caps" c:type="GstCaps*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="PadActivateFunction"
+              c:type="GstPadActivateFunction"
+              doc="This function is called when the pad is activated during the element
+READY to PAUSED state change. By default this function will call the
+activate function that puts the pad in push mode but elements can
+override this function to activate the pad in pull mode if they wish.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="pad" transfer-ownership="none">
+          <type name="Pad" c:type="GstPad*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="PadActivateModeFunction"
+              c:type="GstPadActivateModeFunction"
+              doc="The prototype of the push and pull activate functions.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="pad" transfer-ownership="none">
+          <type name="Pad" c:type="GstPad*"/>
+        </parameter>
+        <parameter name="active" transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="PadBlockCallback"
+              c:type="GstPadBlockCallback"
+              doc="Callback used by gst_pad_set_blocked_async(). Gets called when the blocking
+operation succeeds.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="pad" transfer-ownership="none">
+          <type name="Pad" c:type="GstPad*"/>
+        </parameter>
+        <parameter name="blocked" transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="2">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="PadBufferAllocFunction"
+              c:type="GstPadBufferAllocFunction"
+              doc="Ask the sinkpad @pad to allocate a buffer with @offset, @size and @caps.
+The result will be stored in @buf.
+The purpose of this function is to allocate a buffer that is optimal to
+be processed by @pad. The function is mostly overridden by elements that can
+provide a hardware buffer in order to avoid additional memcpy operations.
+The function can return a buffer that has caps different from the requested
+new caps.
+If a format change was requested, the returned buffer will be one to hold
+the data of said new caps, so its size might be different from the requested
+When this function returns anything else than #GST_FLOW_OK, the buffer allocation
+failed and @buf does not contain valid data. If the function returns #GST_FLOW_OK and
+the @buf is NULL, a #GstBuffer will be created with @caps, @offset and @size.
+By default this function returns a new buffer of @size and with @caps containing
+purely malloced data. The buffer should be freed with gst_buffer_unref()
+after usage.
+value means @buf does not hold a valid buffer.">
+      <return-value transfer-ownership="full">
+        <type name="FlowReturn" c:type="GstFlowReturn"/>
+      </return-value>
+      <parameters>
+        <parameter name="pad" transfer-ownership="none">
+          <type name="Pad" c:type="GstPad*"/>
+        </parameter>
+        <parameter name="offset" transfer-ownership="none">
+          <type name="uint64" c:type="guint64"/>
+        </parameter>
+        <parameter name="size" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="caps" transfer-ownership="none">
+          <type name="Caps" c:type="GstCaps*"/>
+        </parameter>
+        <parameter name="buf" transfer-ownership="none">
+          <type name="Buffer" c:type="GstBuffer**"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="PadChainFunction"
+              c:type="GstPadChainFunction"
+              doc="A function that will be called on sinkpads when chaining buffers.
+The function typically processes the data contained in the buffer and
+either consumes the data or passes it on to the internally linked pad(s).
+The implementer of this function receives a refcount to @buffer and should
+gst_buffer_unref() when the buffer is no longer needed.
+When a chain function detects an error in the data stream, it must post an
+error on the bus and return an appropriate #GstFlowReturn value.">
+      <return-value transfer-ownership="full">
+        <type name="FlowReturn" c:type="GstFlowReturn"/>
+      </return-value>
+      <parameters>
+        <parameter name="pad" transfer-ownership="none">
+          <type name="Pad" c:type="GstPad*"/>
+        </parameter>
+        <parameter name="buffer" transfer-ownership="none">
+          <type name="Buffer" c:type="GstBuffer*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="PadChainListFunction"
+              c:type="GstPadChainListFunction"
+              doc="A function that will be called on sinkpads when chaining buffer lists.
+The function typically processes the data contained in the buffer list and
+either consumes the data or passes it on to the internally linked pad(s).
+The implementer of this function receives a refcount to @list and
+should gst_buffer_list_unref() when the list is no longer needed.
+When a chainlist function detects an error in the data stream, it must
+post an error on the bus and return an appropriate #GstFlowReturn value.">
+      <return-value transfer-ownership="full">
+        <type name="FlowReturn" c:type="GstFlowReturn"/>
+      </return-value>
+      <parameters>
+        <parameter name="pad" transfer-ownership="none">
+          <type name="Pad" c:type="GstPad*"/>
+        </parameter>
+        <parameter name="list" transfer-ownership="none">
+          <type name="BufferList" c:type="GstBufferList*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="PadCheckGetRangeFunction"
+              c:type="GstPadCheckGetRangeFunction"
+              doc="Check if @pad can be activated in pull mode.
+This function will be deprecated after 0.10; use the seeking query to check
+if a pad can support random access.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="pad" transfer-ownership="none">
+          <type name="Pad" c:type="GstPad*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <record name="PadClass"
+            c:type="GstPadClass"
+            glib:is-gtype-struct-for="Pad">
+      <field name="parent_class">
+        <type name="ObjectClass" c:type="GstObjectClass"/>
+      </field>
+      <field name="linked">
+        <callback name="linked" c:type="linked">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="pad" transfer-ownership="none">
+              <type name="Pad" c:type="GstPad*"/>
+            </parameter>
+            <parameter name="peer" transfer-ownership="none">
+              <type name="Pad" c:type="GstPad*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="unlinked">
+        <callback name="unlinked" c:type="unlinked">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="pad" transfer-ownership="none">
+              <type name="Pad" c:type="GstPad*"/>
+            </parameter>
+            <parameter name="peer" transfer-ownership="none">
+              <type name="Pad" c:type="GstPad*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="request_link">
+        <callback name="request_link" c:type="request_link">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="pad" transfer-ownership="none">
+              <type name="Pad" c:type="GstPad*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="have_data">
+        <callback name="have_data" c:type="have_data">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="pad" transfer-ownership="none">
+              <type name="Pad" c:type="GstPad*"/>
+            </parameter>
+            <parameter name="data" transfer-ownership="none">
+              <type name="MiniObject" c:type="GstMiniObject*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <enumeration name="PadDirection"
+                 doc="The direction of a pad."
+                 c:type="GstPadDirection">
+      <member name="unknown" value="0" c:identifier="GST_PAD_UNKNOWN"/>
+      <member name="src" value="1" c:identifier="GST_PAD_SRC"/>
+      <member name="sink" value="2" c:identifier="GST_PAD_SINK"/>
+    </enumeration>
+    <callback name="PadDispatcherFunction"
+              c:type="GstPadDispatcherFunction"
+              doc="A dispatcher function is called for all internally linked pads, see
+gst_pad_dispatcher().">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="pad" transfer-ownership="none">
+          <type name="Pad" c:type="GstPad*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="PadEventFunction"
+              c:type="GstPadEventFunction"
+              doc="Function signature to handle an event for the pad.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="pad" transfer-ownership="none">
+          <type name="Pad" c:type="GstPad*"/>
+        </parameter>
+        <parameter name="event" transfer-ownership="none">
+          <type name="Event" c:type="GstEvent*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="PadFixateCapsFunction"
+              c:type="GstPadFixateCapsFunction"
+              doc="Given possibly unfixed caps @caps, let @pad use its default prefered
+format to make a fixed caps. @caps should be writable. By default this
+function will pick the first value of any ranges or lists in the caps but
+elements can override this function to perform other behaviour.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="pad" transfer-ownership="none">
+          <type name="Pad" c:type="GstPad*"/>
+        </parameter>
+        <parameter name="caps" transfer-ownership="none">
+          <type name="Caps" c:type="GstCaps*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <bitfield name="PadFlags" doc="Pad state flags" c:type="GstPadFlags">
+      <member name="blocked" value="16" c:identifier="GST_PAD_BLOCKED"/>
+      <member name="flushing" value="32" c:identifier="GST_PAD_FLUSHING"/>
+      <member name="in_getcaps" value="64" c:identifier="GST_PAD_IN_GETCAPS"/>
+      <member name="in_setcaps" value="128" c:identifier="GST_PAD_IN_SETCAPS"/>
+      <member name="blocking" value="256" c:identifier="GST_PAD_BLOCKING"/>
+      <member name="flag_last" value="4096" c:identifier="GST_PAD_FLAG_LAST"/>
+    </bitfield>
+    <callback name="PadGetCapsFunction"
+              c:type="GstPadGetCapsFunction"
+              doc="Returns a copy of the capabilities of the specified pad. By default this
+function will return the pad template capabilities, but can optionally
+be overridden by elements.">
+      <return-value transfer-ownership="full">
+        <type name="Caps" c:type="GstCaps*"/>
+      </return-value>
+      <parameters>
+        <parameter name="pad" transfer-ownership="none">
+          <type name="Pad" c:type="GstPad*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="PadGetRangeFunction"
+              c:type="GstPadGetRangeFunction"
+              doc="This function will be called on source pads when a peer element
+request a buffer at the specified @offset and @length. If this function
+returns #GST_FLOW_OK, the result buffer will be stored in @buffer. The
+contents of @buffer is invalid for any other return value.
+This function is installed on a source pad with
+gst_pad_set_getrange_function() and can only be called on source pads after
+they are successfully activated with gst_pad_activate_pull().
+between 0 and the length in bytes of the data available on @pad. The
+length (duration in bytes) can be retrieved with a #GST_QUERY_DURATION or with a
+#GST_QUERY_SEEKING.
+Any @offset larger or equal than the length will make the function return
+#GST_FLOW_UNEXPECTED, which corresponds to EOS. In this case @buffer does not
+contain a valid buffer.
+The buffer size of @buffer might be smaller than @length when @offset is near
+the end of the stream.
+It is allowed to call this function with a 0 @length and valid @offset, in
+which case @buffer will contain a 0-sized buffer and the function returns
+#GST_FLOW_OK.
+When this function is called with a -1 @offset, the sequentially next buffer
+of length @length in the stream is returned.
+When this function is called with a -1 @length, a buffer with a default
+optimal length is returned in @buffer. The length might depend on the value
+of @offset.">
+      <return-value transfer-ownership="full">
+        <type name="FlowReturn" c:type="GstFlowReturn"/>
+      </return-value>
+      <parameters>
+        <parameter name="pad" transfer-ownership="none">
+          <type name="Pad" c:type="GstPad*"/>
+        </parameter>
+        <parameter name="offset" transfer-ownership="none">
+          <type name="uint64" c:type="guint64"/>
+        </parameter>
+        <parameter name="length" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="buffer" transfer-ownership="none">
+          <type name="Buffer" c:type="GstBuffer**"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="PadIntLinkFunction"
+              c:type="GstPadIntLinkFunction"
+              doc="The signature of the internal pad link function.
+the inside of the parent element.
+The caller must call g_list_free() on it after use."
+              deprecated="use the threadsafe #GstPadIterIntLinkFunction instead.">
+      <return-value transfer-ownership="full">
+        <type name="GLib.List" c:type="GList*"/>
+      </return-value>
+      <parameters>
+        <parameter name="pad" transfer-ownership="none">
+          <type name="Pad" c:type="GstPad*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="PadIterIntLinkFunction"
+              c:type="GstPadIterIntLinkFunction"
+              doc="The signature of the internal pad link iterator function.
+linked to the given pad on the inside of the parent element.
+the caller must call gst_iterator_free() after usage.
+Since 0.10.21">
+      <return-value transfer-ownership="full">
+        <type name="Iterator" c:type="GstIterator*"/>
+      </return-value>
+      <parameters>
+        <parameter name="pad" transfer-ownership="none">
+          <type name="Pad" c:type="GstPad*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="PadLinkFunction" c:type="GstPadLinkFunction">
+      <return-value transfer-ownership="full">
+        <type name="PadLinkReturn" c:type="GstPadLinkReturn"/>
+      </return-value>
+      <parameters>
+        <parameter name="pad" transfer-ownership="none">
+          <type name="Pad" c:type="GstPad*"/>
+        </parameter>
+        <parameter name="peer" transfer-ownership="none">
+          <type name="Pad" c:type="GstPad*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <enumeration name="PadLinkReturn"
+                 doc="Result values from gst_pad_link and friends."
+                 c:type="GstPadLinkReturn">
+      <member name="ok" value="0" c:identifier="GST_PAD_LINK_OK"/>
+      <member name="wrong_hierarchy"
+              value="-1"
+              c:identifier="GST_PAD_LINK_WRONG_HIERARCHY"/>
+      <member name="was_linked"
+              value="-2"
+              c:identifier="GST_PAD_LINK_WAS_LINKED"/>
+      <member name="wrong_direction"
+              value="-3"
+              c:identifier="GST_PAD_LINK_WRONG_DIRECTION"/>
+      <member name="noformat" value="-4" c:identifier="GST_PAD_LINK_NOFORMAT"/>
+      <member name="nosched" value="-5" c:identifier="GST_PAD_LINK_NOSCHED"/>
+      <member name="refused" value="-6" c:identifier="GST_PAD_LINK_REFUSED"/>
+    </enumeration>
+    <enumeration name="PadPresence"
+                 doc="gst_element_get_request_pad().
+Indicates when this pad will become available."
+                 c:type="GstPadPresence">
+      <member name="always" value="0" c:identifier="GST_PAD_ALWAYS"/>
+      <member name="sometimes" value="1" c:identifier="GST_PAD_SOMETIMES"/>
+      <member name="request" value="2" c:identifier="GST_PAD_REQUEST"/>
+    </enumeration>
+    <record name="PadPrivate" c:type="GstPadPrivate">
+    </record>
+    <callback name="PadQueryFunction"
+              c:type="GstPadQueryFunction"
+              doc="The signature of the query function.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="pad" transfer-ownership="none">
+          <type name="Pad" c:type="GstPad*"/>
+        </parameter>
+        <parameter name="query" transfer-ownership="none">
+          <type name="Query" c:type="GstQuery*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="PadQueryTypeFunction"
+              c:type="GstPadQueryTypeFunction"
+              doc="The signature of the query types function.">
+      <return-value transfer-ownership="none">
+        <type name="QueryType" c:type="GstQueryType*"/>
+      </return-value>
+      <parameters>
+        <parameter name="pad" transfer-ownership="none">
+          <type name="Pad" c:type="GstPad*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="PadSetCapsFunction"
+              c:type="GstPadSetCapsFunction"
+              doc="Set @caps on @pad. By default this function updates the caps of the
+pad but the function can be overriden by elements to perform extra
+actions or verifications.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="pad" transfer-ownership="none">
+          <type name="Pad" c:type="GstPad*"/>
+        </parameter>
+        <parameter name="caps" transfer-ownership="none">
+          <type name="Caps" c:type="GstCaps*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <class name="PadTemplate"
+           c:type="GstPadTemplate"
+           doc="The padtemplate object."
+           parent="Object"
+           glib:type-name="GstPadTemplate"
+           glib:get-type="gst_pad_template_get_type"
+           glib:type-struct="PadTemplateClass">
+      <constructor name="new"
+                   c:identifier="gst_pad_template_new"
+                   doc="Creates a new pad template with a name according to the given template
+and with the given arguments. This functions takes ownership of the provided
+caps, so be sure to not use them afterwards.">
+        <return-value transfer-ownership="full">
+          <type name="PadTemplate" c:type="GstPadTemplate*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name_template" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="direction" transfer-ownership="none">
+            <type name="PadDirection" c:type="GstPadDirection"/>
+          </parameter>
+          <parameter name="presence" transfer-ownership="none">
+            <type name="PadPresence" c:type="GstPadPresence"/>
+          </parameter>
+          <parameter name="caps" transfer-ownership="none">
+            <type name="Caps" c:type="GstCaps*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="get_caps"
+              c:identifier="gst_pad_template_get_caps"
+              doc="Gets the capabilities of the pad template.
+the caps, take a ref (see gst_caps_ref ()).">
+        <return-value transfer-ownership="full">
+          <type name="Caps" c:type="GstCaps*"/>
+        </return-value>
+      </method>
+      <method name="pad_created"
+              c:identifier="gst_pad_template_pad_created"
+              doc="Emit the pad-created signal for this template when created by this pad.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="pad" transfer-ownership="none">
+            <type name="Pad" c:type="GstPad*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="caps" writable="1" construct-only="1">
+        <type name="Caps" c:type="GstCaps"/>
+      </property>
+      <property name="direction" writable="1" construct-only="1">
+        <type name="PadDirection" c:type="GstPadDirection"/>
+      </property>
+      <property name="name-template" writable="1" construct-only="1">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <property name="presence" writable="1" construct-only="1">
+        <type name="PadPresence" c:type="GstPadPresence"/>
+      </property>
+      <field name="object">
+        <type name="Object" c:type="GstObject"/>
+      </field>
+      <field name="name_template">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="direction">
+        <type name="PadDirection" c:type="GstPadDirection"/>
+      </field>
+      <field name="presence">
+        <type name="PadPresence" c:type="GstPadPresence"/>
+      </field>
+      <field name="caps">
+        <type name="Caps" c:type="GstCaps*"/>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+      <glib:signal name="pad-created"
+                   doc="This signal is fired when an element creates a pad from this template.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="pad" transfer-ownership="none">
+            <type name="Pad" c:type="GstPad"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <record name="PadTemplateClass"
+            c:type="GstPadTemplateClass"
+            glib:is-gtype-struct-for="PadTemplate">
+      <field name="parent_class">
+        <type name="ObjectClass" c:type="GstObjectClass"/>
+      </field>
+      <field name="pad_created">
+        <callback name="pad_created" c:type="pad_created">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="templ" transfer-ownership="none">
+              <type name="PadTemplate" c:type="GstPadTemplate*"/>
+            </parameter>
+            <parameter name="pad" transfer-ownership="none">
+              <type name="Pad" c:type="GstPad*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <bitfield name="PadTemplateFlags"
+              doc="Flags for the padtemplate"
+              c:type="GstPadTemplateFlags">
+      <member name="fixed" value="16" c:identifier="GST_PAD_TEMPLATE_FIXED"/>
+      <member name="flag_last"
+              value="256"
+              c:identifier="GST_PAD_TEMPLATE_FLAG_LAST"/>
+    </bitfield>
+    <callback name="PadUnlinkFunction" c:type="GstPadUnlinkFunction">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="pad" transfer-ownership="none">
+          <type name="Pad" c:type="GstPad*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <record name="ParamSpecFraction"
+            c:type="GstParamSpecFraction"
+            doc="A GParamSpec derived structure that contains the meta data for fractional
+properties.">
+      <field name="parent_instance" writable="1">
+        <type name="GObject.ParamSpec" c:type="GParamSpec"/>
+      </field>
+      <field name="min_num" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="min_den" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="max_num" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="max_den" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="def_num" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="def_den" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+    </record>
+    <record name="ParamSpecMiniObject"
+            c:type="GstParamSpecMiniObject"
+            doc="A %GParamSpec derived structure that contains the meta data
+for %GstMiniObject properties.">
+      <field name="parent_instance" writable="1">
+        <type name="GObject.ParamSpec" c:type="GParamSpec"/>
+      </field>
+    </record>
+    <record name="ParseContext"
+            c:type="GstParseContext"
+            doc="Opaque structure."
+            version="0.10.20">
+      <constructor name="new"
+                   c:identifier="gst_parse_context_new"
+                   doc="Allocates a parse context for use with gst_parse_launch_full() or
+gst_parse_launchv_full().
+when no longer needed."
+                   version="0.10.20">
+        <return-value transfer-ownership="full">
+          <type name="ParseContext" c:type="GstParseContext*"/>
+        </return-value>
+      </constructor>
+      <method name="get_missing_elements"
+              c:identifier="gst_parse_context_get_missing_elements"
+              doc="Retrieve missing elements from a previous run of gst_parse_launch_full()
+or gst_parse_launchv_full(). Will only return results if an error code
+of %GST_PARSE_ERROR_NO_SUCH_ELEMENT was returned.
+missing elements. Free with g_strfreev() when no longer needed."
+              version="0.10.20">
+        <return-value transfer-ownership="full">
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </return-value>
+      </method>
+      <method name="free"
+              c:identifier="gst_parse_context_free"
+              doc="Frees a parse context previously allocated with gst_parse_context_new()."
+              version="0.10.20">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+    </record>
+    <enumeration name="ParseError"
+                 doc="The different parsing errors that can occur."
+                 c:type="GstParseError"
+                 glib:error-quark="gst_parse_error_quark">
+      <member name="syntax" value="0" c:identifier="GST_PARSE_ERROR_SYNTAX"/>
+      <member name="no_such_element"
+              value="1"
+              c:identifier="GST_PARSE_ERROR_NO_SUCH_ELEMENT"/>
+      <member name="no_such_property"
+              value="2"
+              c:identifier="GST_PARSE_ERROR_NO_SUCH_PROPERTY"/>
+      <member name="link" value="3" c:identifier="GST_PARSE_ERROR_LINK"/>
+      <member name="could_not_set_property"
+              value="4"
+              c:identifier="GST_PARSE_ERROR_COULD_NOT_SET_PROPERTY"/>
+      <member name="empty_bin"
+              value="5"
+              c:identifier="GST_PARSE_ERROR_EMPTY_BIN"/>
+      <member name="empty" value="6" c:identifier="GST_PARSE_ERROR_EMPTY"/>
+    </enumeration>
+    <bitfield name="ParseFlags"
+              doc="(default behaviour is to return partially constructed bins or elements
+in some cases)
+Parsing options."
+              version="0.10.20"
+              c:type="GstParseFlags">
+      <member name="none" value="0" c:identifier="GST_PARSE_FLAG_NONE"/>
+      <member name="fatal_errors"
+              value="1"
+              c:identifier="GST_PARSE_FLAG_FATAL_ERRORS"/>
+    </bitfield>
+    <class name="Pipeline"
+           c:type="GstPipeline"
+           doc="GST_PIPELINE_FLAG_FIXED_CLOCK is set.
+property would be the running_time, the total time spent in the
+PLAYING state without being flushed. (deprecated, use the start_time
+on GstElement).
+when setting elements to PLAYING.
+The #GstPipeline structure."
+           parent="Bin"
+           glib:type-name="GstPipeline"
+           glib:get-type="gst_pipeline_get_type"
+           glib:type-struct="PipelineClass">
+      <implements name="ChildProxy"/>
+      <constructor name="new"
+                   c:identifier="gst_pipeline_new"
+                   doc="Create a new pipeline with the given name.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="Pipeline" c:type="GstElement*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="get_bus"
+              c:identifier="gst_pipeline_get_bus"
+              doc="Gets the #GstBus of @pipeline. The bus allows applications to receive
+#GstMessage packets.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="Bus" c:type="GstBus*"/>
+        </return-value>
+      </method>
+      <method name="set_new_stream_time"
+              c:identifier="gst_pipeline_set_new_stream_time"
+              doc="Set the new start time of @pipeline to @time. The start time is used to
+set the base time on the elements (see gst_element_set_base_time())
+in the PAUSED-&gt;PLAYING state transition.
+Setting @time to #GST_CLOCK_TIME_NONE will disable the pipeline&apos;s management
+of element base time. The application will then be responsible for
+performing base time distribution. This is sometimes useful if you want to
+synchronize capture from multiple pipelines, and you can also ensure that the
+pipelines have the same clock.
+MT safe.
+gst_element_set_start_time()."
+              deprecated="This function has the wrong name and is equivalent to">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="time" transfer-ownership="none">
+            <type name="ClockTime" c:type="GstClockTime"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_last_stream_time"
+              c:identifier="gst_pipeline_get_last_stream_time"
+              doc="Gets the last running time of @pipeline. If the pipeline is PLAYING,
+the returned time is the running time used to configure the element&apos;s
+base time in the PAUSED-&gt;PLAYING state. If the pipeline is PAUSED, the
+returned time is the running time when the pipeline was paused.
+This function returns #GST_CLOCK_TIME_NONE if the pipeline was
+configured to not handle the management of the element&apos;s base time
+(see gst_pipeline_set_new_stream_time()).
+MT safe.
+gst_element_get_start_time()."
+              deprecated="This function has the wrong name and is equivalent to">
+        <return-value transfer-ownership="full">
+          <type name="ClockTime" c:type="GstClockTime"/>
+        </return-value>
+      </method>
+      <method name="use_clock"
+              c:identifier="gst_pipeline_use_clock"
+              doc="Force @pipeline to use the given @clock. The pipeline will
+always use the given clock even if new clock providers are added
+to this pipeline.
+If @clock is NULL all clocking will be disabled which will make
+the pipeline run as fast as possible.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="clock" transfer-ownership="none">
+            <type name="Clock" c:type="GstClock*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_clock"
+              c:identifier="gst_pipeline_set_clock"
+              doc="Set the clock for @pipeline. The clock will be distributed
+to all the elements managed by the pipeline.
+some element did not accept the clock.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="clock" transfer-ownership="none">
+            <type name="Clock" c:type="GstClock*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_clock"
+              c:identifier="gst_pipeline_get_clock"
+              doc="Gets the current clock used by @pipeline.">
+        <return-value transfer-ownership="full">
+          <type name="Clock" c:type="GstClock*"/>
+        </return-value>
+      </method>
+      <method name="auto_clock"
+              c:identifier="gst_pipeline_auto_clock"
+              doc="Let @pipeline select a clock automatically. This is the default
+behaviour.
+Use this function if you previous forced a fixed clock with
+gst_pipeline_use_clock() and want to restore the default
+pipeline clock selection algorithm.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="set_delay"
+              c:identifier="gst_pipeline_set_delay"
+              doc="Set the expected delay needed for all elements to perform the
+PAUSED to PLAYING state change. @delay will be added to the
+base time of the elements so that they wait an additional @delay
+amount of time before starting to process buffers and cannot be
+#GST_CLOCK_TIME_NONE.
+This option is used for tuning purposes and should normally not be
+used.
+MT safe."
+              version="0.10.5">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="delay" transfer-ownership="none">
+            <type name="ClockTime" c:type="GstClockTime"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_delay"
+              c:identifier="gst_pipeline_get_delay"
+              doc="Get the configured delay (see gst_pipeline_set_delay()).
+MT safe."
+              version="0.10.5">
+        <return-value transfer-ownership="full">
+          <type name="ClockTime" c:type="GstClockTime"/>
+        </return-value>
+      </method>
+      <method name="set_auto_flush_bus"
+              c:identifier="gst_pipeline_set_auto_flush_bus"
+              doc="the pipeline goes from READY to NULL state
+Usually, when a pipeline goes from READY to NULL state, it automatically
+flushes all pending messages on the bus, which is done for refcounting
+purposes, to break circular references.
+This means that applications that update state using (async) bus messages
+(e.g. do certain things when a pipeline goes from PAUSED to READY) might
+not get to see messages when the pipeline is shut down, because they might
+be flushed before they can be dispatched in the main thread. This behaviour
+can be disabled using this function.
+It is important that all messages on the bus are handled when the
+automatic flushing is disabled else memory leaks will be introduced.
+MT safe."
+              version="0.10.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="auto_flush" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_auto_flush_bus"
+              c:identifier="gst_pipeline_get_auto_flush_bus"
+              doc="Check if @pipeline will automatically flush messages when going to
+the NULL state.
+going from READY to NULL state or not.
+MT safe."
+              version="0.10.4">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <property name="auto-flush-bus"
+                version="0.10.4"
+                writable="1"
+                doc="Whether or not to automatically flush all messages on the
+pipeline&apos;s bus when going from READY to NULL state. Please see
+gst_pipeline_set_auto_flush_bus() for more information on this option.">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="delay" writable="1">
+        <type name="uint64" c:type="guint64"/>
+      </property>
+      <field name="bin">
+        <type name="Bin" c:type="GstBin"/>
+      </field>
+      <field name="fixed_clock">
+        <type name="Clock" c:type="GstClock*"/>
+      </field>
+      <field name="stream_time">
+        <type name="ClockTime" c:type="GstClockTime"/>
+      </field>
+      <field name="delay">
+        <type name="ClockTime" c:type="GstClockTime"/>
+      </field>
+      <field name="priv">
+        <type name="PipelinePrivate" c:type="GstPipelinePrivate*"/>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="3">
+          <type name="any"/>
+        </array>
+      </field>
+    </class>
+    <record name="PipelineClass"
+            c:type="GstPipelineClass"
+            glib:is-gtype-struct-for="Pipeline">
+      <field name="parent_class">
+        <type name="BinClass" c:type="GstBinClass"/>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <bitfield name="PipelineFlags"
+              doc="Pipeline flags"
+              c:type="GstPipelineFlags">
+      <member name="fixed_clock"
+              value="33554432"
+              c:identifier="GST_PIPELINE_FLAG_FIXED_CLOCK"/>
+      <member name="last"
+              value="536870912"
+              c:identifier="GST_PIPELINE_FLAG_LAST"/>
+    </bitfield>
+    <record name="PipelinePrivate" c:type="GstPipelinePrivate">
+    </record>
+    <class name="Plugin"
+           c:type="GstPlugin"
+           doc="The plugin object"
+           parent="Object"
+           glib:type-name="GstPlugin"
+           glib:get-type="gst_plugin_get_type"
+           glib:type-struct="PluginClass">
+      <function name="register_static"
+                c:identifier="gst_plugin_register_static"
+                doc="plugin was compiled for, you can just use GST_VERSION_MAJOR here
+plugin was compiled for, you can just use GST_VERSION_MINOR here
+library-specific namespace prefix in order to avoid name conflicts in
+case a similar plugin with the same name ever gets added to GStreamer)
+(see #GstPluginDesc above) or the plugin will not be registered.
+Registers a static plugin, ie. a plugin which is private to an application
+or library and contained within the application or library (as opposed to
+being shipped as a separate module file).
+You must make sure that GStreamer has been initialised (with gst_init() or
+via gst_init_get_option_group()) before calling this function."
+                version="0.10.16">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="major_version" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="minor_version" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="description" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="init_func" transfer-ownership="none" scope="call">
+            <type name="PluginInitFunc" c:type="GstPluginInitFunc"/>
+          </parameter>
+          <parameter name="version" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="license" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="source" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="package" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="origin" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="register_static_full"
+                c:identifier="gst_plugin_register_static_full"
+                doc="plugin was compiled for, you can just use GST_VERSION_MAJOR here
+plugin was compiled for, you can just use GST_VERSION_MINOR here
+library-specific namespace prefix in order to avoid name conflicts in
+case a similar plugin with the same name ever gets added to GStreamer)
+(see #GstPluginDesc above) or the plugin will not be registered.
+Registers a static plugin, ie. a plugin which is private to an application
+or library and contained within the application or library (as opposed to
+being shipped as a separate module file) with a #GstPluginInitFullFunc
+which allows user data to be passed to the callback function (useful
+for bindings).
+You must make sure that GStreamer has been initialised (with gst_init() or
+via gst_init_get_option_group()) before calling this function."
+                version="0.10.24">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="major_version" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="minor_version" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="description" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="init_full_func"
+                     transfer-ownership="none"
+                     scope="call">
+            <type name="PluginInitFullFunc" c:type="GstPluginInitFullFunc"/>
+          </parameter>
+          <parameter name="version" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="license" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="source" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="package" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="origin" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="load_file"
+                c:identifier="gst_plugin_load_file"
+                doc="Loads the given plugin and refs it.  Caller needs to unref after use.
+newly-loaded GstPlugin, or NULL if an error occurred."
+                throws="1">
+        <return-value transfer-ownership="full">
+          <type name="Plugin" c:type="GstPlugin*"/>
+        </return-value>
+        <parameters>
+          <parameter name="filename" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="load_by_name"
+                c:identifier="gst_plugin_load_by_name"
+                doc="Load the named plugin. Refs the plugin.">
+        <return-value transfer-ownership="full">
+          <type name="Plugin" c:type="GstPlugin*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="list_free"
+                c:identifier="gst_plugin_list_free"
+                doc="Unrefs each member of @list, then frees the list.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="list" transfer-ownership="none">
+            <type name="GLib.List" c:type="GList*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <method name="get_name"
+              c:identifier="gst_plugin_get_name"
+              doc="Get the short name of the plugin">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_description"
+              c:identifier="gst_plugin_get_description"
+              doc="Get the long descriptive name of the plugin">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_filename"
+              c:identifier="gst_plugin_get_filename"
+              doc="get the filename of the plugin">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_version"
+              c:identifier="gst_plugin_get_version"
+              doc="get the version of the plugin">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_license"
+              c:identifier="gst_plugin_get_license"
+              doc="get the license of the plugin">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_source"
+              c:identifier="gst_plugin_get_source"
+              doc="get the source module the plugin belongs to.">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_package"
+              c:identifier="gst_plugin_get_package"
+              doc="get the package the plugin belongs to.">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_origin"
+              c:identifier="gst_plugin_get_origin"
+              doc="get the URL where the plugin comes from">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_cache_data"
+              c:identifier="gst_plugin_get_cache_data"
+              doc="Gets the plugin specific data cache. If it is %NULL there is no cached data
+stored. This is the case when the registry is getting rebuilt."
+              version="0.10.24">
+        <return-value transfer-ownership="none">
+          <type name="Structure" c:type="GstStructure*"/>
+        </return-value>
+      </method>
+      <method name="set_cache_data"
+              c:identifier="gst_plugin_set_cache_data"
+              doc="Adds plugin specific data to cache. Passes the ownership of the structure to
+the @plugin.
+The cache is flushed every time the registry is rebuilt."
+              version="0.10.24">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="cache_data" transfer-ownership="none">
+            <type name="Structure" c:type="GstStructure*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_module"
+              c:identifier="gst_plugin_get_module"
+              doc="Gets the #GModule of the plugin. If the plugin isn&apos;t loaded yet, NULL is
+returned.
+loaded yet.">
+        <return-value transfer-ownership="full">
+          <type name="GModule.Module" c:type="GModule*"/>
+        </return-value>
+      </method>
+      <method name="is_loaded"
+              c:identifier="gst_plugin_is_loaded"
+              doc="queries if the plugin is loaded into memory">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="name_filter"
+              c:identifier="gst_plugin_name_filter"
+              doc="A standard filter that returns TRUE when the plugin is of the
+given name.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="load"
+              c:identifier="gst_plugin_load"
+              doc="Loads @plugin. Note that the *return value* is the loaded plugin; @plugin is
+untouched. The normal use pattern of this function goes like this:
+&lt;programlisting&gt;
+GstPlugin *loaded_plugin;
+loaded_plugin = gst_plugin_load (plugin);
+// presumably, we&apos;re no longer interested in the potentially-unloaded plugin
+gst_object_unref (plugin);
+plugin = loaded_plugin;
+&lt;/programlisting&gt;">
+        <return-value transfer-ownership="full">
+          <type name="Plugin" c:type="GstPlugin*"/>
+        </return-value>
+      </method>
+      <method name="add_dependency"
+              c:identifier="gst_plugin_add_dependency"
+              doc="feature set of the plugin (e.g. an environment variable containing
+paths where to look for additional modules/plugins of a library),
+or NULL. Environment variable names may be followed by a path component
+which will be added to the content of the environment variable, e.g.
+&quot;HOME/.mystuff/plugins&quot;.
+may be.
+depending on @flags) to be used in combination with the paths from
+Make GStreamer aware of external dependencies which affect the feature
+set of this plugin (ie. the elements or typefinders associated with it).
+GStreamer will re-inspect plugins with external dependencies whenever any
+of the external dependencies change. This is useful for plugins which wrap
+other plugin systems, e.g. a plugin which wraps a plugin-based visualisation
+library and makes visualisations available as GStreamer elements, or a
+codec loader which exposes elements and/or caps dependent on what external
+codec libraries are currently installed."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="env_vars" transfer-ownership="none">
+            <array c:type="gchar**">
+              <type name="utf8"/>
+            </array>
+          </parameter>
+          <parameter name="paths" transfer-ownership="none">
+            <array c:type="gchar**">
+              <type name="utf8"/>
+            </array>
+          </parameter>
+          <parameter name="names" transfer-ownership="none">
+            <array c:type="gchar**">
+              <type name="utf8"/>
+            </array>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="PluginDependencyFlags"
+                  c:type="GstPluginDependencyFlags"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_dependency_simple"
+              c:identifier="gst_plugin_add_dependency_simple"
+              doc="or NULL. Environment variable names may be followed by a path component
+which will be added to the content of the environment variable, e.g.
+&quot;HOME/.mystuff/plugins:MYSTUFF_PLUGINS_PATH&quot;
+or NULL
+Make GStreamer aware of external dependencies which affect the feature
+set of this plugin (ie. the elements or typefinders associated with it).
+GStreamer will re-inspect plugins with external dependencies whenever any
+of the external dependencies change. This is useful for plugins which wrap
+other plugin systems, e.g. a plugin which wraps a plugin-based visualisation
+library and makes visualisations available as GStreamer elements, or a
+codec loader which exposes elements and/or caps dependent on what external
+codec libraries are currently installed.
+Convenience wrapper function for gst_plugin_add_dependency() which
+takes simple strings as arguments instead of string arrays, with multiple
+arguments separated by predefined delimiters (see above)."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="env_vars" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="paths" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="names" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="PluginDependencyFlags"
+                  c:type="GstPluginDependencyFlags"/>
+          </parameter>
+        </parameters>
+      </method>
+      <field name="object">
+        <type name="Object" c:type="GstObject"/>
+      </field>
+      <field name="desc">
+        <type name="PluginDesc" c:type="GstPluginDesc"/>
+      </field>
+      <field name="orig_desc">
+        <type name="PluginDesc" c:type="GstPluginDesc*"/>
+      </field>
+      <field name="flags">
+        <type name="uint" c:type="unsigned"/>
+      </field>
+      <field name="filename">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="basename">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="module">
+        <type name="GModule.Module" c:type="GModule*"/>
+      </field>
+      <field name="file_size">
+        <type name="size_t" c:type="off_t"/>
+      </field>
+      <field name="file_mtime">
+        <type name="time_t" c:type="time_t"/>
+      </field>
+      <field name="registered">
+        <type name="boolean" c:type="gboolean"/>
+      </field>
+      <field name="priv">
+        <type name="PluginPrivate" c:type="GstPluginPrivate*"/>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="3">
+          <type name="any"/>
+        </array>
+      </field>
+    </class>
+    <record name="PluginClass"
+            c:type="GstPluginClass"
+            glib:is-gtype-struct-for="Plugin">
+      <field name="object_class">
+        <type name="ObjectClass" c:type="GstObjectClass"/>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <bitfield name="PluginDependencyFlags"
+              doc="argument only if none of the environment variables is set
+filename argument as filter suffix and check all matching files in
+the directory
+Flags used in connection with gst_plugin_add_dependency()."
+              version="0.10.22"
+              c:type="GstPluginDependencyFlags">
+      <member name="none"
+              value="0"
+              c:identifier="GST_PLUGIN_DEPENDENCY_FLAG_NONE"/>
+      <member name="recurse"
+              value="1"
+              c:identifier="GST_PLUGIN_DEPENDENCY_FLAG_RECURSE"/>
+      <member name="paths_are_default_only"
+              value="2"
+              c:identifier="GST_PLUGIN_DEPENDENCY_FLAG_PATHS_ARE_DEFAULT_ONLY"/>
+      <member name="file_name_is_suffix"
+              value="4"
+              c:identifier="GST_PLUGIN_DEPENDENCY_FLAG_FILE_NAME_IS_SUFFIX"/>
+    </bitfield>
+    <record name="PluginDesc"
+            c:type="GstPluginDesc"
+            doc="A plugin should export a variable of this type called plugin_desc. The plugin
+loader will use the data provided there to initialize the plugin.
+BSD, MIT/X11, Proprietary, unknown.">
+      <field name="major_version" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="minor_version" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="name" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="description" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="plugin_init" writable="1">
+        <type name="PluginInitFunc" c:type="GstPluginInitFunc"/>
+      </field>
+      <field name="version" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="license" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="source" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="package" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="origin" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="_gst_reserved" writable="1">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <enumeration name="PluginError"
+                 doc="The plugin loading errors"
+                 c:type="GstPluginError"
+                 glib:error-quark="gst_plugin_error_quark">
+      <member name="module" value="0" c:identifier="GST_PLUGIN_ERROR_MODULE"/>
+      <member name="dependencies"
+              value="1"
+              c:identifier="GST_PLUGIN_ERROR_DEPENDENCIES"/>
+      <member name="name_mismatch"
+              value="2"
+              c:identifier="GST_PLUGIN_ERROR_NAME_MISMATCH"/>
+    </enumeration>
+    <class name="PluginFeature"
+           c:type="GstPluginFeature"
+           doc="Opaque #GstPluginFeature structure."
+           parent="Object"
+           abstract="1"
+           glib:type-name="GstPluginFeature"
+           glib:get-type="gst_plugin_feature_get_type"
+           glib:type-struct="PluginFeatureClass">
+      <function name="list_free"
+                c:identifier="gst_plugin_feature_list_free"
+                doc="Unrefs each member of @list, then frees the list.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="list" transfer-ownership="none">
+            <type name="GLib.List" c:type="GList*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="list_copy"
+                c:identifier="gst_plugin_feature_list_copy"
+                doc="Copies the list of features. Caller should call @gst_plugin_feature_list_free
+when done with the list."
+                version="0.10.26">
+        <return-value transfer-ownership="full">
+          <type name="GLib.List" c:type="GList*"/>
+        </return-value>
+        <parameters>
+          <parameter name="list" transfer-ownership="none">
+            <type name="GLib.List" c:type="GList*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <method name="load"
+              c:identifier="gst_plugin_feature_load"
+              doc="Loads the plugin containing @feature if it&apos;s not already loaded. @feature is
+unaffected; use the return value instead.
+Normally this function is used like this:
+|[
+GstPluginFeature *loaded_feature;
+loaded_feature = gst_plugin_feature_load (feature);
+// presumably, we&apos;re no longer interested in the potentially-unloaded feature
+gst_object_unref (feature);
+feature = loaded_feature;
+]|">
+        <return-value transfer-ownership="full">
+          <type name="PluginFeature" c:type="GstPluginFeature*"/>
+        </return-value>
+      </method>
+      <method name="type_name_filter"
+              c:identifier="gst_plugin_feature_type_name_filter"
+              doc="Compares type and name of plugin feature. Can be used with gst_filter_run().">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <type name="TypeNameData" c:type="GstTypeNameData*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_rank"
+              c:identifier="gst_plugin_feature_set_rank"
+              doc="Specifies a rank for a plugin feature, so that autoplugging uses
+the most appropriate feature.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="rank" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_name"
+              c:identifier="gst_plugin_feature_set_name"
+              doc="Sets the name of a plugin feature. The name uniquely identifies a feature
+within all features of the same type. Renaming a plugin feature is not
+allowed. A copy is made of the name so you should free the supplied @name
+after calling this function.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_rank"
+              c:identifier="gst_plugin_feature_get_rank"
+              doc="Gets the rank of a plugin feature.">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="get_name"
+              c:identifier="gst_plugin_feature_get_name"
+              doc="Gets the name of a plugin feature.">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="check_version"
+              c:identifier="gst_plugin_feature_check_version"
+              doc="Checks whether the given plugin feature is at least
+the required version
+the required version, otherwise #FALSE.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="min_major" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="min_minor" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="min_micro" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <field name="object">
+        <type name="Object" c:type="GstObject"/>
+      </field>
+      <field name="loaded">
+        <type name="boolean" c:type="gboolean"/>
+      </field>
+      <field name="name">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="rank">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="plugin_name">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </class>
+    <record name="PluginFeatureClass"
+            c:type="GstPluginFeatureClass"
+            glib:is-gtype-struct-for="PluginFeature">
+      <field name="parent_class">
+        <type name="ObjectClass" c:type="GstObjectClass"/>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <callback name="PluginFeatureFilter"
+              c:type="GstPluginFeatureFilter"
+              doc="gst_registry_feature_filter()
+A function that can be used with e.g. gst_registry_feature_filter()
+to get a list of pluginfeature that match certain criteria.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="feature" transfer-ownership="none">
+          <type name="PluginFeature" c:type="GstPluginFeature*"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="1">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="PluginFilter"
+              c:type="GstPluginFilter"
+              doc="A function that can be used with e.g. gst_registry_plugin_filter()
+to get a list of plugins that match certain criteria.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="plugin" transfer-ownership="none">
+          <type name="Plugin" c:type="GstPlugin*"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="1">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <bitfield name="PluginFlags"
+              doc="The plugin loading state"
+              c:type="GstPluginFlags">
+      <member name="cached" value="1" c:identifier="GST_PLUGIN_FLAG_CACHED"/>
+      <member name="blacklisted"
+              value="2"
+              c:identifier="GST_PLUGIN_FLAG_BLACKLISTED"/>
+    </bitfield>
+    <callback name="PluginInitFullFunc"
+              c:type="GstPluginInitFullFunc"
+              doc="A plugin should provide a pointer to a function of either #GstPluginInitFunc
+or this type in the plugin_desc struct.
+The function will be called by the loader at startup. One would then
+register each #GstPluginFeature. This version allows
+user data to be passed to init function (useful for bindings)."
+              version="0.10.24">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="plugin" transfer-ownership="none">
+          <type name="Plugin" c:type="GstPlugin*"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="1">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="PluginInitFunc"
+              c:type="GstPluginInitFunc"
+              doc="A plugin should provide a pointer to a function of this type in the
+plugin_desc struct.
+This function will be called by the loader at startup. One would then
+register each #GstPluginFeature.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="plugin" transfer-ownership="none">
+          <type name="Plugin" c:type="GstPlugin*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <record name="PluginPrivate" c:type="GstPluginPrivate">
+    </record>
+    <record name="Poll"
+            c:type="GstPoll"
+            doc="A set of file/network descriptors.">
+      <constructor name="new"
+                   c:identifier="gst_poll_new"
+                   doc="Create a new file descriptor set. If @controllable, it
+is possible to restart or flush a call to gst_poll_wait() with
+gst_poll_restart() and gst_poll_set_flushing() respectively.
+gst_poll_free()."
+                   version="0.10.18">
+        <return-value transfer-ownership="full">
+          <type name="Poll" c:type="GstPoll*"/>
+        </return-value>
+        <parameters>
+          <parameter name="controllable" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_timer"
+                   c:identifier="gst_poll_new_timer"
+                   doc="Create a new poll object that can be used for scheduling cancellable
+timeouts.
+A timeout is performed with gst_poll_wait(). Multiple timeouts can be
+performed from different threads.
+gst_poll_free()."
+                   version="0.10.23">
+        <return-value transfer-ownership="full">
+          <type name="Poll" c:type="GstPoll*"/>
+        </return-value>
+      </constructor>
+      <method name="free"
+              c:identifier="gst_poll_free"
+              doc="Free a file descriptor set."
+              version="0.10.18">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="add_fd"
+              c:identifier="gst_poll_add_fd"
+              doc="Add a file descriptor to the file descriptor set."
+              version="0.10.18">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="fd" transfer-ownership="none">
+            <type name="PollFD" c:type="GstPollFD*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_fd"
+              c:identifier="gst_poll_remove_fd"
+              doc="Remove a file descriptor from the file descriptor set."
+              version="0.10.18">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="fd" transfer-ownership="none">
+            <type name="PollFD" c:type="GstPollFD*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="fd_ctl_write"
+              c:identifier="gst_poll_fd_ctl_write"
+              doc="Control whether the descriptor @fd in @set will be monitored for
+writability."
+              version="0.10.18">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="fd" transfer-ownership="none">
+            <type name="PollFD" c:type="GstPollFD*"/>
+          </parameter>
+          <parameter name="active" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="fd_ctl_read"
+              c:identifier="gst_poll_fd_ctl_read"
+              doc="Control whether the descriptor @fd in @set will be monitored for
+readability."
+              version="0.10.18">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="fd" transfer-ownership="none">
+            <type name="PollFD" c:type="GstPollFD*"/>
+          </parameter>
+          <parameter name="active" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="fd_ignored"
+              c:identifier="gst_poll_fd_ignored"
+              doc="Mark @fd as ignored so that the next call to gst_poll_wait() will yield
+the same result for @fd as last time. This function must be called if no
+operation (read/write/recv/send/etc.) will be performed on @fd before
+the next call to gst_poll_wait().
+The reason why this is needed is because the underlying implementation
+might not allow querying the fd more than once between calls to one of
+the re-enabling operations."
+              version="0.10.18">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="fd" transfer-ownership="none">
+            <type name="PollFD" c:type="GstPollFD*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="fd_has_closed"
+              c:identifier="gst_poll_fd_has_closed"
+              doc="Check if @fd in @set has closed the connection."
+              version="0.10.18">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="fd" transfer-ownership="none">
+            <type name="PollFD" c:type="GstPollFD*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="fd_has_error"
+              c:identifier="gst_poll_fd_has_error"
+              doc="Check if @fd in @set has an error."
+              version="0.10.18">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="fd" transfer-ownership="none">
+            <type name="PollFD" c:type="GstPollFD*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="fd_can_read"
+              c:identifier="gst_poll_fd_can_read"
+              doc="Check if @fd in @set has data to be read."
+              version="0.10.18">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="fd" transfer-ownership="none">
+            <type name="PollFD" c:type="GstPollFD*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="fd_can_write"
+              c:identifier="gst_poll_fd_can_write"
+              doc="Check if @fd in @set can be used for writing."
+              version="0.10.18">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="fd" transfer-ownership="none">
+            <type name="PollFD" c:type="GstPollFD*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="wait"
+              c:identifier="gst_poll_wait"
+              doc="Wait for activity on the file descriptors in @set. This function waits up to
+the specified @timeout.  A timeout of #GST_CLOCK_TIME_NONE waits forever.
+For #GstPoll objects created with gst_poll_new(), this function can only be
+called from a single thread at a time.  If called from multiple threads,
+-1 will be returned with errno set to EPERM.
+This is not true for timer #GstPoll objects created with
+gst_poll_new_timer(), where it is allowed to have multiple threads waiting
+simultaneously.
+activity was detected after @timeout. If an error occurs, -1 is returned
+and errno is set."
+              version="0.10.18">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="timeout" transfer-ownership="none">
+            <type name="ClockTime" c:type="GstClockTime"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_controllable"
+              c:identifier="gst_poll_set_controllable"
+              doc="When @controllable is %TRUE, this function ensures that future calls to
+gst_poll_wait() will be affected by gst_poll_restart() and
+gst_poll_set_flushing()."
+              version="0.10.18">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="controllable" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="restart"
+              c:identifier="gst_poll_restart"
+              doc="Restart any gst_poll_wait() that is in progress. This function is typically
+used after adding or removing descriptors to @set.
+If @set is not controllable, then this call will have no effect."
+              version="0.10.18">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="set_flushing"
+              c:identifier="gst_poll_set_flushing"
+              doc="When @flushing is %TRUE, this function ensures that current and future calls
+to gst_poll_wait() will return -1, with errno set to EBUSY.
+Unsetting the flushing state will restore normal operation of @set."
+              version="0.10.18">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="flushing" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="write_control"
+              c:identifier="gst_poll_write_control"
+              doc="Write a byte to the control socket of the controllable @set.
+This function is mostly useful for timer #GstPoll objects created with
+gst_poll_new_timer().
+It will make any current and future gst_poll_wait() function return with
+1, meaning the control socket is set. After an equal amount of calls to
+gst_poll_read_control() have been performed, calls to gst_poll_wait() will
+block again until their timeout expired.
+byte could not be written."
+              version="0.10.23">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="read_control"
+              c:identifier="gst_poll_read_control"
+              doc="Read a byte from the control socket of the controllable @set.
+This function is mostly useful for timer #GstPoll objects created with
+gst_poll_new_timer().
+was no byte to read."
+              version="0.10.23">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+    </record>
+    <record name="PollFD" c:type="GstPollFD" doc="A file descriptor object.">
+      <field name="fd" writable="1">
+        <type name="int" c:type="int"/>
+      </field>
+      <field name="idx" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <method name="init"
+              c:identifier="gst_poll_fd_init"
+              doc="Initializes @fd. Alternatively you can initialize it with
+#GST_POLL_FD_INIT."
+              version="0.10.18">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+    </record>
+    <interface name="Preset"
+               c:type="GstPreset"
+               doc="Opaque #GstPreset data structure."
+               glib:type-name="GstPreset"
+               glib:get-type="gst_preset_get_type"
+               glib:type-struct="PresetInterface">
+      <virtual-method name="get_preset_names" invoker="get_preset_names">
+        <return-value transfer-ownership="full">
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_property_names" invoker="get_property_names">
+        <return-value transfer-ownership="full">
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="load_preset" invoker="load_preset">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="save_preset" invoker="save_preset">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="rename_preset" invoker="rename_preset">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="old_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="new_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="delete_preset" invoker="delete_preset">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="set_meta" invoker="set_meta">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="tag" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_meta" invoker="get_meta">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="tag" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <array c:type="gchar**">
+              <type name="utf8"/>
+            </array>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="get_preset_names"
+              c:identifier="gst_preset_get_preset_names"
+              doc="Get a copy of preset names as a NULL terminated string array."
+              version="0.10.20">
+        <return-value transfer-ownership="full" doc="after usage.">
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </return-value>
+      </method>
+      <method name="get_property_names"
+              c:identifier="gst_preset_get_property_names"
+              doc="Get a the names of the GObject properties that can be used for presets."
+              version="0.10.20">
+        <return-value transfer-ownership="full" doc="after use.">
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </return-value>
+      </method>
+      <method name="load_preset"
+              c:identifier="gst_preset_load_preset"
+              doc="Load the given preset."
+              version="0.10.20">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="save_preset"
+              c:identifier="gst_preset_save_preset"
+              doc="Save the current object settings as a preset under the given name. If there
+is already a preset by this @name it will be overwritten."
+              version="0.10.20">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="rename_preset"
+              c:identifier="gst_preset_rename_preset"
+              doc="Renames a preset. If there is already a preset by the @new_name it will be
+overwritten."
+              version="0.10.20">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="old_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="new_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="delete_preset"
+              c:identifier="gst_preset_delete_preset"
+              doc="Delete the given preset."
+              version="0.10.20">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_meta"
+              c:identifier="gst_preset_set_meta"
+              doc="Sets a new @value for an existing meta data item or adds a new item. Meta
+data @tag names can be something like e.g. &quot;comment&quot;. Supplying %NULL for the"
+              version="0.10.20">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="tag" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_meta"
+              c:identifier="gst_preset_get_meta"
+              doc="Gets the @value for an existing meta data @tag. Meta data @tag names can be
+something like e.g. &quot;comment&quot;. Returned values need to be released when done.
+or no value for the given @tag"
+              version="0.10.20">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="tag" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <array c:type="gchar**">
+              <type name="utf8"/>
+            </array>
+          </parameter>
+        </parameters>
+      </method>
+    </interface>
+    <record name="PresetInterface"
+            c:type="GstPresetInterface"
+            glib:is-gtype-struct-for="Preset"
+            doc="#GstPreset interface.">
+      <field name="parent">
+        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+      </field>
+      <field name="get_preset_names">
+        <callback name="get_preset_names" c:type="get_preset_names">
+          <return-value transfer-ownership="full">
+            <array c:type="gchar**">
+              <type name="utf8"/>
+            </array>
+          </return-value>
+          <parameters>
+            <parameter name="preset" transfer-ownership="none">
+              <type name="Preset" c:type="GstPreset*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_property_names">
+        <callback name="get_property_names" c:type="get_property_names">
+          <return-value transfer-ownership="full">
+            <array c:type="gchar**">
+              <type name="utf8"/>
+            </array>
+          </return-value>
+          <parameters>
+            <parameter name="preset" transfer-ownership="none">
+              <type name="Preset" c:type="GstPreset*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="load_preset">
+        <callback name="load_preset" c:type="load_preset">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="preset" transfer-ownership="none">
+              <type name="Preset" c:type="GstPreset*"/>
+            </parameter>
+            <parameter name="name" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="save_preset">
+        <callback name="save_preset" c:type="save_preset">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="preset" transfer-ownership="none">
+              <type name="Preset" c:type="GstPreset*"/>
+            </parameter>
+            <parameter name="name" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="rename_preset">
+        <callback name="rename_preset" c:type="rename_preset">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="preset" transfer-ownership="none">
+              <type name="Preset" c:type="GstPreset*"/>
+            </parameter>
+            <parameter name="old_name" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+            <parameter name="new_name" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="delete_preset">
+        <callback name="delete_preset" c:type="delete_preset">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="preset" transfer-ownership="none">
+              <type name="Preset" c:type="GstPreset*"/>
+            </parameter>
+            <parameter name="name" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_meta">
+        <callback name="set_meta" c:type="set_meta">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="preset" transfer-ownership="none">
+              <type name="Preset" c:type="GstPreset*"/>
+            </parameter>
+            <parameter name="name" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+            <parameter name="tag" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+            <parameter name="value" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_meta">
+        <callback name="get_meta" c:type="get_meta">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="preset" transfer-ownership="none">
+              <type name="Preset" c:type="GstPreset*"/>
+            </parameter>
+            <parameter name="name" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+            <parameter name="tag" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+            <parameter name="value" transfer-ownership="none">
+              <array c:type="gchar**">
+                <type name="utf8"/>
+              </array>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <class name="ProxyPad"
+           c:type="GstProxyPad"
+           parent="Pad"
+           glib:type-name="GstProxyPad"
+           glib:get-type="gst_proxy_pad_get_type"
+           glib:type-struct="ProxyPadClass">
+      <field name="pad">
+        <type name="Pad" c:type="GstPad"/>
+      </field>
+      <field name="priv">
+        <type name="ProxyPadPrivate" c:type="GstProxyPadPrivate*"/>
+      </field>
+    </class>
+    <record name="ProxyPadClass"
+            c:type="GstProxyPadClass"
+            glib:is-gtype-struct-for="ProxyPad">
+      <field name="parent_class">
+        <type name="PadClass" c:type="GstPadClass"/>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="1">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <record name="ProxyPadPrivate" c:type="GstProxyPadPrivate">
+    </record>
+    <record name="Query" c:type="GstQuery" doc="The #GstQuery structure.">
+      <field name="mini_object" writable="1">
+        <type name="MiniObject" c:type="GstMiniObject"/>
+      </field>
+      <field name="type" writable="1">
+        <type name="QueryType" c:type="GstQueryType"/>
+      </field>
+      <field name="structure" writable="1">
+        <type name="Structure" c:type="GstStructure*"/>
+      </field>
+      <field name="_gst_reserved" writable="1">
+        <type name="any" c:type="gpointer"/>
+      </field>
+      <constructor name="new_position"
+                   c:identifier="gst_query_new_position"
+                   doc="Constructs a new query stream position query object. Use gst_query_unref()
+when done with it. A position query is used to query the current position
+of playback in the streams, in some format.">
+        <return-value transfer-ownership="full">
+          <type name="Query" c:type="GstQuery*"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_duration"
+                   c:identifier="gst_query_new_duration"
+                   doc="Constructs a new stream duration query object to query in the given format.
+Use gst_query_unref() when done with it. A duration query will give the
+total length of the stream.">
+        <return-value transfer-ownership="full">
+          <type name="Query" c:type="GstQuery*"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_latency"
+                   c:identifier="gst_query_new_latency"
+                   doc="Constructs a new latency query object.
+Use gst_query_unref() when done with it. A latency query is usually performed
+by sinks to compensate for additional latency introduced by elements in the
+pipeline."
+                   version="0.10.12">
+        <return-value transfer-ownership="full">
+          <type name="Query" c:type="GstQuery*"/>
+        </return-value>
+      </constructor>
+      <constructor name="new_convert"
+                   c:identifier="gst_query_new_convert"
+                   doc="Constructs a new convert query object. Use gst_query_unref()
+when done with it. A convert query is used to ask for a conversion between
+one format and another.">
+        <return-value transfer-ownership="full">
+          <type name="Query" c:type="GstQuery*"/>
+        </return-value>
+        <parameters>
+          <parameter name="src_format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+          <parameter name="dest_format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_segment"
+                   c:identifier="gst_query_new_segment"
+                   doc="Constructs a new segment query object. Use gst_query_unref()
+when done with it. A segment query is used to discover information about the
+currently configured segment for playback.">
+        <return-value transfer-ownership="full">
+          <type name="Query" c:type="GstQuery*"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_application"
+                   c:identifier="gst_query_new_application"
+                   doc="Constructs a new custom application query object. Use gst_query_unref()
+when done with it.">
+        <return-value transfer-ownership="full">
+          <type name="Query" c:type="GstQuery*"/>
+        </return-value>
+        <parameters>
+          <parameter name="type" transfer-ownership="none">
+            <type name="QueryType" c:type="GstQueryType"/>
+          </parameter>
+          <parameter name="structure" transfer-ownership="none">
+            <type name="Structure" c:type="GstStructure*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_seeking"
+                   c:identifier="gst_query_new_seeking"
+                   doc="Constructs a new query object for querying seeking properties of
+the stream.">
+        <return-value transfer-ownership="full">
+          <type name="Query" c:type="GstQuery*"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_formats"
+                   c:identifier="gst_query_new_formats"
+                   doc="Constructs a new query object for querying formats of
+the stream."
+                   version="0.10.4">
+        <return-value transfer-ownership="full">
+          <type name="Query" c:type="GstQuery*"/>
+        </return-value>
+      </constructor>
+      <constructor name="new_buffering" c:identifier="gst_query_new_buffering">
+        <return-value transfer-ownership="full">
+          <type name="Query" c:type="GstQuery*"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_uri"
+                   c:identifier="gst_query_new_uri"
+                   doc="Constructs a new query URI query object. Use gst_query_unref()
+when done with it. An URI query is used to query the current URI
+that is used by the source or sink."
+                   version="0.10.22">
+        <return-value transfer-ownership="full">
+          <type name="Query" c:type="GstQuery*"/>
+        </return-value>
+      </constructor>
+      <method name="set_position"
+              c:identifier="gst_query_set_position"
+              doc="Answer a position query by setting the requested value in the given format.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="cur" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_position"
+              c:identifier="gst_query_parse_position"
+              doc="Parse a position query, writing the format into @format, and the position
+into @cur, if the respective parameters are non-NULL.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat*"/>
+          </parameter>
+          <parameter name="cur" direction="out" transfer-ownership="full">
+            <type name="int64" c:type="gint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_duration"
+              c:identifier="gst_query_set_duration"
+              doc="Answer a duration query by setting the requested value in the given format.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="duration" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_duration"
+              c:identifier="gst_query_parse_duration"
+              doc="Parse a duration query answer. Write the format of the duration into @format,
+and the value into @duration, if the respective variables are non-NULL.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat*"/>
+          </parameter>
+          <parameter name="duration" direction="out" transfer-ownership="full">
+            <type name="int64" c:type="gint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_latency"
+              c:identifier="gst_query_set_latency"
+              doc="Answer a latency query by setting the requested values in the given format."
+              version="0.10.12">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="live" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="min_latency" transfer-ownership="none">
+            <type name="ClockTime" c:type="GstClockTime"/>
+          </parameter>
+          <parameter name="max_latency" transfer-ownership="none">
+            <type name="ClockTime" c:type="GstClockTime"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_latency"
+              c:identifier="gst_query_parse_latency"
+              doc="Parse a latency query answer."
+              version="0.10.12">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="live" direction="out" transfer-ownership="full">
+            <type name="boolean" c:type="gboolean*"/>
+          </parameter>
+          <parameter name="min_latency" transfer-ownership="none">
+            <type name="ClockTime" c:type="GstClockTime*"/>
+          </parameter>
+          <parameter name="max_latency" transfer-ownership="none">
+            <type name="ClockTime" c:type="GstClockTime*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_convert"
+              c:identifier="gst_query_set_convert"
+              doc="Answer a convert query by setting the requested values.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="src_format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="src_value" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+          <parameter name="dest_format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="dest_value" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_convert"
+              c:identifier="gst_query_parse_convert"
+              doc="Parse a convert query answer. Any of @src_format, @src_value, @dest_format,
+and @dest_value may be NULL, in which case that value is omitted.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="src_format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat*"/>
+          </parameter>
+          <parameter name="src_value"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="int64" c:type="gint64*"/>
+          </parameter>
+          <parameter name="dest_format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat*"/>
+          </parameter>
+          <parameter name="dest_value"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="int64" c:type="gint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_segment"
+              c:identifier="gst_query_set_segment"
+              doc="Answer a segment query by setting the requested values. The normal
+playback segment of a pipeline is 0 to duration at the default rate of
+1.0. If a seek was performed on the pipeline to play a different
+segment, this query will return the range specified in the last seek.
+playback range start and stop values expressed in @format.
+The values are always between 0 and the duration of the media and
+negative rates, playback will actually happen from @stop_value to">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="rate" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="start_value" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+          <parameter name="stop_value" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_segment"
+              c:identifier="gst_query_parse_segment"
+              doc="Parse a segment query answer. Any of @rate, @format, @start_value, and
+See gst_query_set_segment() for an explanation of the function arguments.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="rate" direction="out" transfer-ownership="full">
+            <type name="double" c:type="gdouble*"/>
+          </parameter>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat*"/>
+          </parameter>
+          <parameter name="start_value"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="int64" c:type="gint64*"/>
+          </parameter>
+          <parameter name="stop_value"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="int64" c:type="gint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_structure"
+              c:identifier="gst_query_get_structure"
+              doc="Get the structure of a query.
+by the query and will therefore be freed when the query is unreffed.">
+        <return-value transfer-ownership="full">
+          <type name="Structure" c:type="GstStructure*"/>
+        </return-value>
+      </method>
+      <method name="set_seeking"
+              c:identifier="gst_query_set_seeking"
+              doc="Set the seeking query result fields in @query.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="seekable" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="segment_start" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+          <parameter name="segment_end" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_seeking"
+              c:identifier="gst_query_parse_seeking"
+              doc="Parse a seeking query, writing the format into @format, and
+other results into the passed parameters, if the respective parameters
+are non-NULL">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat*"/>
+          </parameter>
+          <parameter name="seekable" direction="out" transfer-ownership="full">
+            <type name="boolean" c:type="gboolean*"/>
+          </parameter>
+          <parameter name="segment_start"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="int64" c:type="gint64*"/>
+          </parameter>
+          <parameter name="segment_end"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="int64" c:type="gint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_formats"
+              c:identifier="gst_query_set_formats"
+              doc="Set the formats query result fields in @query. The number of formats passed
+must be equal to @n_formats.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="n_formats" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_formatsv"
+              c:identifier="gst_query_set_formatsv"
+              doc="Set the formats query result fields in @query. The number of formats passed
+in the @formats array must be equal to @n_formats."
+              version="0.10.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="n_formats" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="formats" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_formats_length"
+              c:identifier="gst_query_parse_formats_length"
+              doc="Parse the number of formats in the formats @query."
+              version="0.10.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="n_formats"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="uint" c:type="guint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_formats_nth"
+              c:identifier="gst_query_parse_formats_nth"
+              doc="Parse the format query and retrieve the @nth format from it into
+set to GST_FORMAT_UNDEFINED."
+              version="0.10.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="nth" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_buffering_percent"
+              c:identifier="gst_query_set_buffering_percent">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="busy" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="percent" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_buffering_percent"
+              c:identifier="gst_query_parse_buffering_percent">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="busy" direction="out" transfer-ownership="full">
+            <type name="boolean" c:type="gboolean*"/>
+          </parameter>
+          <parameter name="percent" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_buffering_stats"
+              c:identifier="gst_query_set_buffering_stats"
+              doc="Configures the buffering stats values in @query."
+              version="0.10.20">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="mode" transfer-ownership="none">
+            <type name="BufferingMode" c:type="GstBufferingMode"/>
+          </parameter>
+          <parameter name="avg_in" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="avg_out" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="buffering_left" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_buffering_stats"
+              c:identifier="gst_query_parse_buffering_stats"
+              doc="Extracts the buffering stats values from @query."
+              version="0.10.20">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="mode" transfer-ownership="none">
+            <type name="BufferingMode" c:type="GstBufferingMode*"/>
+          </parameter>
+          <parameter name="avg_in" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+          <parameter name="avg_out" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+          <parameter name="buffering_left"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="int64" c:type="gint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_buffering_range"
+              c:identifier="gst_query_set_buffering_range"
+              doc="Set the available query result fields in @query."
+              version="0.10.20">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="start" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+          <parameter name="stop" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+          <parameter name="estimated_total" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_buffering_range"
+              c:identifier="gst_query_parse_buffering_range"
+              doc="Parse an available query, writing the format into @format, and
+other results into the passed parameters, if the respective parameters
+are non-NULL"
+              version="0.10.20">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat*"/>
+          </parameter>
+          <parameter name="start" direction="out" transfer-ownership="full">
+            <type name="int64" c:type="gint64*"/>
+          </parameter>
+          <parameter name="stop" direction="out" transfer-ownership="full">
+            <type name="int64" c:type="gint64*"/>
+          </parameter>
+          <parameter name="estimated_total"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="int64" c:type="gint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_uri"
+              c:identifier="gst_query_parse_uri"
+              doc="Parse an URI query, writing the URI into @uri as a newly
+allocated string, if the respective parameters are non-NULL.
+Free the string with g_free() after usage."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="uri" transfer-ownership="none">
+            <array c:type="gchar**">
+              <type name="utf8"/>
+            </array>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_uri"
+              c:identifier="gst_query_set_uri"
+              doc="Answer a URI query by setting the requested URI."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="uri" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <record name="QueryClass" c:type="GstQueryClass">
+      <field name="mini_object_class" writable="1">
+        <type name="MiniObjectClass" c:type="GstMiniObjectClass"/>
+      </field>
+      <field name="_gst_reserved" writable="1">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <enumeration name="QueryType"
+                 doc="0.10.20.
+0.10.22.
+Standard predefined Query types"
+                 c:type="GstQueryType">
+      <member name="none" value="0" c:identifier="GST_QUERY_NONE"/>
+      <member name="position" value="1" c:identifier="GST_QUERY_POSITION"/>
+      <member name="duration" value="2" c:identifier="GST_QUERY_DURATION"/>
+      <member name="latency" value="3" c:identifier="GST_QUERY_LATENCY"/>
+      <member name="jitter" value="4" c:identifier="GST_QUERY_JITTER"/>
+      <member name="rate" value="5" c:identifier="GST_QUERY_RATE"/>
+      <member name="seeking" value="6" c:identifier="GST_QUERY_SEEKING"/>
+      <member name="segment" value="7" c:identifier="GST_QUERY_SEGMENT"/>
+      <member name="convert" value="8" c:identifier="GST_QUERY_CONVERT"/>
+      <member name="formats" value="9" c:identifier="GST_QUERY_FORMATS"/>
+      <member name="buffering" value="10" c:identifier="GST_QUERY_BUFFERING"/>
+      <member name="custom" value="11" c:identifier="GST_QUERY_CUSTOM"/>
+      <member name="uri" value="12" c:identifier="GST_QUERY_URI"/>
+    </enumeration>
+    <record name="QueryTypeDefinition"
+            c:type="GstQueryTypeDefinition"
+            doc="A Query Type definition">
+      <field name="value" writable="1">
+        <type name="QueryType" c:type="GstQueryType"/>
+      </field>
+      <field name="nick" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="description" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="quark" writable="1">
+        <type name="GLib.Quark" c:type="GQuark"/>
+      </field>
+    </record>
+    <enumeration name="Rank"
+                 doc="Element priority ranks. Defines the order in which the autoplugger (or
+similar rank-picking mechanisms, such as e.g. gst_element_make_from_uri())
+will choose this element over an alternative one with the same function.
+These constants serve as a rough guidance for defining the rank of a
+#GstPluginFeature. Any value is valid, including values bigger than"
+                 c:type="GstRank">
+      <member name="none" value="0" c:identifier="GST_RANK_NONE"/>
+      <member name="marginal" value="64" c:identifier="GST_RANK_MARGINAL"/>
+      <member name="secondary" value="128" c:identifier="GST_RANK_SECONDARY"/>
+      <member name="primary" value="256" c:identifier="GST_RANK_PRIMARY"/>
+    </enumeration>
+    <class name="Registry"
+           c:type="GstRegistry"
+           doc="Opaque #GstRegistry structure."
+           parent="Object"
+           glib:type-name="GstRegistry"
+           glib:get-type="gst_registry_get_type"
+           glib:type-struct="RegistryClass">
+      <function name="get_default"
+                c:identifier="gst_registry_get_default"
+                doc="Retrieves the default registry. The caller does not own a reference on the
+registry, as it is alive as long as GStreamer is initialized.">
+        <return-value transfer-ownership="full">
+          <type name="Registry" c:type="GstRegistry*"/>
+        </return-value>
+      </function>
+      <function name="fork_is_enabled"
+                c:identifier="gst_registry_fork_is_enabled"
+                doc="By default GStreamer will perform scanning and rebuilding of the
+registry file using a helper child process.
+Applications might want to disable this behaviour with the
+gst_registry_fork_set_enabled() function, in which case new plugins
+are scanned (and loaded) into the application process.
+rebuilding the registry."
+                version="0.10.10">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </function>
+      <function name="fork_set_enabled"
+                c:identifier="gst_registry_fork_set_enabled"
+                doc="Applications might want to disable/enable spawning of a child helper process
+when rebuilding the registry. See gst_registry_fork_is_enabled() for more
+information."
+                version="0.10.10">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="enabled" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </function>
+      <method name="scan_path"
+              c:identifier="gst_registry_scan_path"
+              doc="Scan the given path for plugins to add to the registry. The syntax of the
+path is specific to the registry.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="path" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_path"
+              c:identifier="gst_registry_add_path"
+              doc="Add the given path to the registry. The syntax of the
+path is specific to the registry. If the path has already been
+added, do nothing.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="path" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_path_list"
+              c:identifier="gst_registry_get_path_list"
+              doc="Get the list of paths for the given registry.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="GLib.List" c:type="GList*"/>
+        </return-value>
+      </method>
+      <method name="add_plugin"
+              c:identifier="gst_registry_add_plugin"
+              doc="Add the plugin to the registry. The plugin-added signal will be emitted.
+This function will sink @plugin.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="plugin" transfer-ownership="none">
+            <type name="Plugin" c:type="GstPlugin*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_plugin"
+              c:identifier="gst_registry_remove_plugin"
+              doc="Remove the plugin from the registry.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="plugin" transfer-ownership="none">
+            <type name="Plugin" c:type="GstPlugin*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_feature"
+              c:identifier="gst_registry_add_feature"
+              doc="Add the feature to the registry. The feature-added signal will be emitted.
+This function sinks @feature.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="feature" transfer-ownership="none">
+            <type name="PluginFeature" c:type="GstPluginFeature*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_feature"
+              c:identifier="gst_registry_remove_feature"
+              doc="Remove the feature from the registry.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="feature" transfer-ownership="none">
+            <type name="PluginFeature" c:type="GstPluginFeature*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_plugin_list"
+              c:identifier="gst_registry_get_plugin_list"
+              doc="Get a copy of all plugins registered in the given registry. The refcount
+of each element in the list in incremented.
+MT safe.">
+        <return-value transfer-ownership="full" doc="after usage.">
+          <type name="GLib.List" c:type="GList*"/>
+        </return-value>
+      </method>
+      <method name="plugin_filter"
+              c:identifier="gst_registry_plugin_filter"
+              doc="Runs a filter against all plugins in the registry and returns a #GList with
+the results. If the first flag is set, only the first match is
+returned (as a list with a single object).
+Every plugin is reffed; use gst_plugin_list_free() after use, which
+will unref again.
+MT safe.">
+        <return-value transfer-ownership="full" doc="after usage.">
+          <type name="GLib.List" c:type="GList*"/>
+        </return-value>
+        <parameters>
+          <parameter name="filter" transfer-ownership="none" scope="call">
+            <type name="PluginFilter" c:type="GstPluginFilter"/>
+          </parameter>
+          <parameter name="first" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="feature_filter"
+              c:identifier="gst_registry_feature_filter"
+              doc="Runs a filter against all features of the plugins in the registry
+and returns a GList with the results.
+If the first flag is set, only the first match is
+returned (as a list with a single object).
+after usage.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="GLib.List" c:type="GList*"/>
+        </return-value>
+        <parameters>
+          <parameter name="filter" transfer-ownership="none" scope="call">
+            <type name="PluginFeatureFilter" c:type="GstPluginFeatureFilter"/>
+          </parameter>
+          <parameter name="first" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_feature_list"
+              c:identifier="gst_registry_get_feature_list"
+              doc="Retrieves a #GList of #GstPluginFeature of @type.
+gst_plugin_feature_list_free() after usage.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="GLib.List" c:type="GList*"/>
+        </return-value>
+        <parameters>
+          <parameter name="type" transfer-ownership="none">
+            <type name="GType" c:type="GType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_feature_list_by_plugin"
+              c:identifier="gst_registry_get_feature_list_by_plugin"
+              doc="Retrieves a #GList of features of the plugin with name @name.
+after usage.">
+        <return-value transfer-ownership="full">
+          <type name="GLib.List" c:type="GList*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_feature_list_cookie"
+              c:identifier="gst_registry_get_feature_list_cookie"
+              doc="Returns the registrys feature list cookie. This changes
+every time a feature is added or removed from the registry."
+              version="0.10.26">
+        <return-value transfer-ownership="none">
+          <type name="uint32" c:type="guint32"/>
+        </return-value>
+      </method>
+      <method name="find_plugin"
+              c:identifier="gst_registry_find_plugin"
+              doc="Find the plugin with the given name in the registry.
+The plugin will be reffed; caller is responsible for unreffing.
+gst_object_unref() after usage.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="Plugin" c:type="GstPlugin*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="find_feature"
+              c:identifier="gst_registry_find_feature"
+              doc="Find the pluginfeature with the given name and type in the registry.
+if the plugin was not found. gst_object_unref() after usage.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="PluginFeature" c:type="GstPluginFeature*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="type" transfer-ownership="none">
+            <type name="GType" c:type="GType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="lookup"
+              c:identifier="gst_registry_lookup"
+              doc="Look up a plugin in the given registry with the given filename.
+If found, plugin is reffed.
+after usage.">
+        <return-value transfer-ownership="full">
+          <type name="Plugin" c:type="GstPlugin*"/>
+        </return-value>
+        <parameters>
+          <parameter name="filename" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="lookup_feature"
+              c:identifier="gst_registry_lookup_feature"
+              doc="Find a #GstPluginFeature with @name in @registry.
+gst_object_unref() after usage.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="PluginFeature" c:type="GstPluginFeature*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="xml_read_cache" c:identifier="gst_registry_xml_read_cache">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="location" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="xml_write_cache"
+              c:identifier="gst_registry_xml_write_cache">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="location" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <field name="object">
+        <type name="Object" c:type="GstObject"/>
+      </field>
+      <field name="plugins">
+        <type name="GLib.List" c:type="GList*"/>
+      </field>
+      <field name="features">
+        <type name="GLib.List" c:type="GList*"/>
+      </field>
+      <field name="paths">
+        <type name="GLib.List" c:type="GList*"/>
+      </field>
+      <field name="cache_file">
+        <type name="int" c:type="int"/>
+      </field>
+      <field name="feature_hash">
+        <type name="GLib.HashTable" c:type="GHashTable*"/>
+      </field>
+      <field name="basename_hash">
+        <type name="GLib.HashTable" c:type="GHashTable*"/>
+      </field>
+      <field name="priv">
+        <type name="RegistryPrivate" c:type="GstRegistryPrivate*"/>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="1">
+          <type name="any"/>
+        </array>
+      </field>
+      <glib:signal name="feature-added"
+                   doc="Signals that a feature has been added to the registry (possibly
+replacing a previously-added one by the same name)">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="feature" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="plugin-added"
+                   doc="Signals that a plugin has been added to the registry (possibly
+replacing a previously-added one by the same name)">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="plugin" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <record name="RegistryClass"
+            c:type="GstRegistryClass"
+            glib:is-gtype-struct-for="Registry">
+      <field name="parent_class">
+        <type name="ObjectClass" c:type="GstObjectClass"/>
+      </field>
+      <field name="plugin_added">
+        <callback name="plugin_added" c:type="plugin_added">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="registry" transfer-ownership="none">
+              <type name="Registry" c:type="GstRegistry*"/>
+            </parameter>
+            <parameter name="plugin" transfer-ownership="none">
+              <type name="Plugin" c:type="GstPlugin*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="feature_added">
+        <callback name="feature_added" c:type="feature_added">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="registry" transfer-ownership="none">
+              <type name="Registry" c:type="GstRegistry*"/>
+            </parameter>
+            <parameter name="feature" transfer-ownership="none">
+              <type name="PluginFeature" c:type="GstPluginFeature*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <record name="RegistryPrivate" c:type="GstRegistryPrivate">
+    </record>
+    <enumeration name="ResourceError"
+                 doc="category.  Make sure you add a custom message to the error call.
+deciding where to go while developing code.
+both reading and writing, or either (but unspecified which).
+Resource errors are for any resource used by an element:
+memory, files, network connections, process space, ...
+They&apos;re typically used by source and sink elements."
+                 c:type="GstResourceError"
+                 glib:error-quark="gst_resource_error_quark">
+      <member name="failed"
+              value="1"
+              c:identifier="GST_RESOURCE_ERROR_FAILED"/>
+      <member name="too_lazy"
+              value="2"
+              c:identifier="GST_RESOURCE_ERROR_TOO_LAZY"/>
+      <member name="not_found"
+              value="3"
+              c:identifier="GST_RESOURCE_ERROR_NOT_FOUND"/>
+      <member name="busy" value="4" c:identifier="GST_RESOURCE_ERROR_BUSY"/>
+      <member name="open_read"
+              value="5"
+              c:identifier="GST_RESOURCE_ERROR_OPEN_READ"/>
+      <member name="open_write"
+              value="6"
+              c:identifier="GST_RESOURCE_ERROR_OPEN_WRITE"/>
+      <member name="open_read_write"
+              value="7"
+              c:identifier="GST_RESOURCE_ERROR_OPEN_READ_WRITE"/>
+      <member name="close" value="8" c:identifier="GST_RESOURCE_ERROR_CLOSE"/>
+      <member name="read" value="9" c:identifier="GST_RESOURCE_ERROR_READ"/>
+      <member name="write" value="10" c:identifier="GST_RESOURCE_ERROR_WRITE"/>
+      <member name="seek" value="11" c:identifier="GST_RESOURCE_ERROR_SEEK"/>
+      <member name="sync" value="12" c:identifier="GST_RESOURCE_ERROR_SYNC"/>
+      <member name="settings"
+              value="13"
+              c:identifier="GST_RESOURCE_ERROR_SETTINGS"/>
+      <member name="no_space_left"
+              value="14"
+              c:identifier="GST_RESOURCE_ERROR_NO_SPACE_LEFT"/>
+      <member name="num_errors"
+              value="15"
+              c:identifier="GST_RESOURCE_ERROR_NUM_ERRORS"/>
+    </enumeration>
+    <constant name="SECOND" value="0">
+      <type name="int"/>
+    </constant>
+    <enumeration name="SearchMode"
+                 doc="The different search modes."
+                 version="0.10.23"
+                 c:type="GstSearchMode">
+      <member name="exact" value="0" c:identifier="GST_SEARCH_MODE_EXACT"/>
+      <member name="before" value="1" c:identifier="GST_SEARCH_MODE_BEFORE"/>
+      <member name="after" value="2" c:identifier="GST_SEARCH_MODE_AFTER"/>
+    </enumeration>
+    <bitfield name="SeekFlags"
+              doc="be considerably slower for some formats.
+faster but less accurate.
+elements to skip frames instead of generating all
+frames. Since 0.10.22.
+Flags to be used with gst_element_seek() or gst_event_new_seek(). All flags
+can be used together.
+A non flushing seek might take some time to perform as the currently
+playing data in the pipeline will not be cleared.
+An accurate seek might be slower for formats that don&apos;t have any indexes
+or timestamp markers in the stream. Specifying this flag might require a
+complete scan of the file in those cases.
+no EOS will be emmited by the element that performed the seek, but a
+#GST_MESSAGE_SEGMENT_DONE message will be posted on the bus by the element.
+When this message is posted, it is possible to send a new seek event to
+continue playback. With this seek method it is possible to perform seemless
+looping or simple linear editing.
+When doing fast forward (rate &gt; 1.0) or fast reverse (rate &lt; -1.0) trickmode
+playback, the @GST_SEEK_FLAG_SKIP flag can be used to instruct decoders
+and demuxers to adjust the playback rate by skipping frames. This can improve
+performance and decrease CPU usage because not all frames need to be decoded."
+              c:type="GstSeekFlags">
+      <member name="none" value="0" c:identifier="GST_SEEK_FLAG_NONE"/>
+      <member name="flush" value="1" c:identifier="GST_SEEK_FLAG_FLUSH"/>
+      <member name="accurate" value="2" c:identifier="GST_SEEK_FLAG_ACCURATE"/>
+      <member name="key_unit" value="4" c:identifier="GST_SEEK_FLAG_KEY_UNIT"/>
+      <member name="segment" value="8" c:identifier="GST_SEEK_FLAG_SEGMENT"/>
+      <member name="skip" value="16" c:identifier="GST_SEEK_FLAG_SKIP"/>
+    </bitfield>
+    <enumeration name="SeekType"
+                 doc="can&apos;t be used to seek relative to the current playback position - do a
+position query, calculate the desired position and then do an absolute
+position seek instead if that&apos;s what you want to do.
+The different types of seek events. When constructing a seek event with
+gst_event_new_seek(), a format, a seek method and optional flags are to
+be provided. The seek event is then inserted into the graph with
+gst_pad_send_event() or gst_element_send_event()."
+                 c:type="GstSeekType">
+      <member name="none" value="0" c:identifier="GST_SEEK_TYPE_NONE"/>
+      <member name="cur" value="1" c:identifier="GST_SEEK_TYPE_CUR"/>
+      <member name="set" value="2" c:identifier="GST_SEEK_TYPE_SET"/>
+      <member name="end" value="3" c:identifier="GST_SEEK_TYPE_END"/>
+    </enumeration>
+    <record name="Segment"
+            c:type="GstSegment"
+            doc="A helper structure that holds the configured region of
+interest in a media file."
+            glib:type-name="GstSegment"
+            glib:get-type="gst_segment_get_type">
+      <field name="rate" writable="1">
+        <type name="double" c:type="gdouble"/>
+      </field>
+      <field name="abs_rate" writable="1">
+        <type name="double" c:type="gdouble"/>
+      </field>
+      <field name="format" writable="1">
+        <type name="Format" c:type="GstFormat"/>
+      </field>
+      <field name="flags" writable="1">
+        <type name="SeekFlags" c:type="GstSeekFlags"/>
+      </field>
+      <field name="start" writable="1">
+        <type name="int64" c:type="gint64"/>
+      </field>
+      <field name="stop" writable="1">
+        <type name="int64" c:type="gint64"/>
+      </field>
+      <field name="time" writable="1">
+        <type name="int64" c:type="gint64"/>
+      </field>
+      <field name="accum" writable="1">
+        <type name="int64" c:type="gint64"/>
+      </field>
+      <field name="last_stop" writable="1">
+        <type name="int64" c:type="gint64"/>
+      </field>
+      <field name="duration" writable="1">
+        <type name="int64" c:type="gint64"/>
+      </field>
+      <field name="applied_rate" writable="1">
+        <type name="double" c:type="gdouble"/>
+      </field>
+      <field name="_gst_reserved" writable="1">
+        <array zero-terminated="0" c:type="guint8" fixed-size="0">
+          <type name="uint8"/>
+        </array>
+      </field>
+      <constructor name="new"
+                   c:identifier="gst_segment_new"
+                   doc="Allocate a new #GstSegment structure and initialize it using
+gst_segment_init().">
+        <return-value transfer-ownership="full">
+          <type name="Segment" c:type="GstSegment*"/>
+        </return-value>
+      </constructor>
+      <method name="copy"
+              c:identifier="gst_segment_copy"
+              doc="Create a copy of given @segment."
+              version="0.10.20">
+        <return-value transfer-ownership="full">
+          <type name="Segment" c:type="GstSegment*"/>
+        </return-value>
+      </method>
+      <method name="free"
+              c:identifier="gst_segment_free"
+              doc="Free the allocated segment @segment.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="init"
+              c:identifier="gst_segment_init"
+              doc="The start/last_stop positions are set to 0 and the stop/duration
+fields are set to -1 (unknown). The default rate of 1.0 and no
+flags are set.
+Initialize @segment to its default values.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_duration"
+              c:identifier="gst_segment_set_duration"
+              doc="Set the duration of the segment to @duration. This function is mainly
+used by elements that perform seeking and know the total duration of the
+segment.
+This field should be set to allow seeking requests relative to the
+duration.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="duration" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_last_stop"
+              c:identifier="gst_segment_set_last_stop"
+              doc="Set the last observed stop position in the segment to @position.
+This field should be set to allow seeking requests relative to the
+current playing position.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="position" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_seek"
+              c:identifier="gst_segment_set_seek"
+              doc="Update the segment structure with the field values of a seek event (see
+gst_event_new_seek()).
+After calling this method, the segment field last_stop and time will
+contain the requested new position in the segment. The new requested
+position in the segment depends on @rate and @start_type and @stop_type.
+For positive @rate, the new position in the segment is the new @segment
+start field when it was updated with a @start_type different from
+#GST_SEEK_TYPE_NONE. If no update was performed on @segment start position
+(#GST_SEEK_TYPE_NONE), @start is ignored and @segment last_stop is
+unmodified.
+For negative @rate, the new position in the segment is the new @segment
+stop field when it was updated with a @stop_type different from
+#GST_SEEK_TYPE_NONE. If no stop was previously configured in the segment, the
+duration of the segment will be used to update the stop position.
+If no update was performed on @segment stop position (#GST_SEEK_TYPE_NONE),
+The applied rate of the segment will be set to 1.0 by default.
+If the caller can apply a rate change, it should update @segment
+rate and applied_rate after calling this function.
+last_stop field. This field can be FALSE if, for example, only the @rate
+has been changed but not the playback position.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="rate" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="SeekFlags" c:type="GstSeekFlags"/>
+          </parameter>
+          <parameter name="start_type" transfer-ownership="none">
+            <type name="SeekType" c:type="GstSeekType"/>
+          </parameter>
+          <parameter name="start" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+          <parameter name="stop_type" transfer-ownership="none">
+            <type name="SeekType" c:type="GstSeekType"/>
+          </parameter>
+          <parameter name="stop" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+          <parameter name="update" direction="out" transfer-ownership="full">
+            <type name="boolean" c:type="gboolean*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_newsegment"
+              c:identifier="gst_segment_set_newsegment"
+              doc="Update the segment structure with the field values of a new segment event and
+with a default applied_rate of 1.0."
+              version="0.10.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="update" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="rate" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="start" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+          <parameter name="stop" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+          <parameter name="time" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_newsegment_full"
+              c:identifier="gst_segment_set_newsegment_full"
+              doc="Update the segment structure with the field values of a new segment event.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="update" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="rate" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="applied_rate" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="start" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+          <parameter name="stop" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+          <parameter name="time" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="to_stream_time"
+              c:identifier="gst_segment_to_stream_time"
+              doc="Translate @position to stream time using the currently configured
+segment. The @position value must be between @segment start and
+stop value.
+This function is typically used by elements that need to operate on
+the stream time of the buffers it receives, such as effect plugins.
+In those use cases, @position is typically the buffer timestamp or
+clock time that one wants to convert to the stream time.
+The stream time is always between 0 and the total duration of the
+media stream.
+was given.">
+        <return-value transfer-ownership="none">
+          <type name="int64" c:type="gint64"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="position" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="to_running_time"
+              c:identifier="gst_segment_to_running_time"
+              doc="Translate @position to the total running time using the currently configured
+and previously accumulated segments. Position is a value between @segment
+start and stop time.
+This function is typically used by elements that need to synchronize to the
+global clock in a pipeline. The runnning time is a constantly increasing value
+starting from 0. When gst_segment_init() is called, this value will reset to
+0.
+This function returns -1 if the position is outside of @segment start and stop.
+was given.">
+        <return-value transfer-ownership="none">
+          <type name="int64" c:type="gint64"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="position" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="to_position"
+              c:identifier="gst_segment_to_position"
+              doc="Convert @running_time into a position in the segment so that
+gst_segment_to_running_time() with that position returns @running_time.
+-1 when @running_time is -1 or when it is not inside @segment."
+              version="0.10.24">
+        <return-value transfer-ownership="none">
+          <type name="int64" c:type="gint64"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="running_time" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="clip"
+              c:identifier="gst_segment_clip"
+              doc="Clip the given @start and @stop values to the segment boundaries given
+in @segment. @start and @stop are compared and clipped to @segment
+start and stop values.
+If the function returns FALSE, @start and @stop are known to fall
+outside of @segment and @clip_start and @clip_stop are not updated.
+When the function returns TRUE, @clip_start and @clip_stop will be
+updated. If @clip_start or @clip_stop are different from @start or @stop
+respectively, the region fell partially in the segment.
+Note that when @stop is -1, @clip_stop will be set to the end of the
+segment. Depending on the use case, this may or may not be what you want.
+completely in @segment, FALSE if the values are completely outside
+of the segment.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="start" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+          <parameter name="stop" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+          <parameter name="clip_start"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="int64" c:type="gint64*"/>
+          </parameter>
+          <parameter name="clip_stop"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="int64" c:type="gint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_running_time"
+              c:identifier="gst_segment_set_running_time"
+              doc="Adjust the start/stop and accum values of @segment such that the next valid
+buffer will be one with @running_time.
+returned, @running_time is -1 or not in @segment."
+              version="0.10.24">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="running_time" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <enumeration name="State"
+                 doc="process data. Sink elements however only accept one
+buffer and then block.
+the data is flowing.
+The possible states an element can be in. States can be changed using
+gst_element_set_state() and checked using gst_element_get_state()."
+                 c:type="GstState">
+      <member name="void_pending"
+              value="0"
+              c:identifier="GST_STATE_VOID_PENDING"/>
+      <member name="null" value="1" c:identifier="GST_STATE_NULL"/>
+      <member name="ready" value="2" c:identifier="GST_STATE_READY"/>
+      <member name="paused" value="3" c:identifier="GST_STATE_PAUSED"/>
+      <member name="playing" value="4" c:identifier="GST_STATE_PLAYING"/>
+    </enumeration>
+    <bitfield name="StateChange"
+              doc="&lt;itemizedlist&gt;
+&lt;listitem&gt;&lt;para&gt;
+The element must check if the resources it needs are available. Device
+sinks and -sources typically try to probe the device to constrain their
+caps.
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;
+The element opens the device (in case feature need to be probed).
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;/itemizedlist&gt;
+&lt;itemizedlist&gt;
+&lt;listitem&gt;&lt;para&gt;
+The element pads are activated in order to receive data in PAUSED.
+Streaming threads are started.
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;
+Some elements might need to return ASYNC and complete the state change
+when they have enough information. It is a requirement for sinks to
+return ASYNC and complete the state change when they receive the first
+buffer or EOS event (preroll). Sinks also block the dataflow when in
+PAUSED.
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;
+A pipeline resets the running_time to 0.
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;
+Live sources return NO_PREROLL and don&apos;t generate data.
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;/itemizedlist&gt;
+&lt;itemizedlist&gt;
+&lt;listitem&gt;&lt;para&gt;
+Most elements ignore this state change.
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;
+The pipeline selects a clock and distributes this to all the children
+before setting them to PLAYING. This means that it is only alowed to
+synchronize on the clock in the PLAYING state.
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;
+The pipeline uses the clock and the running_time to calculate the
+base_time. The base_time is distributed to all children when performing
+the state change.
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;
+Sink elements stop blocking on the preroll buffer or event and start
+rendering the data.
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;
+Sinks can post the EOS message in the PLAYING state. It is not allowed to
+post EOS when not in the PLAYING state.
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;
+While streaming in PAUSED or PLAYING elements can create and remove
+sometimes pads.
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;
+Live sources start generating data and return SUCCESS.
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;/itemizedlist&gt;
+&lt;itemizedlist&gt;
+&lt;listitem&gt;&lt;para&gt;
+Most elements ignore this state change.
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;
+The pipeline calculates the running_time based on the last selected clock
+and the base_time. It stores this information to continue playback when
+going back to the PLAYING state.
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;
+Sinks unblock any clock wait calls.
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;
+When a sink does not have a pending buffer to play, it returns ASYNC from
+this state change and completes the state change when it receives a new
+buffer or an EOS event.
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;
+Any queued EOS messages are removed since they will be reposted when going
+back to the PLAYING state. The EOS messages are queued in GstBins.
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;
+Live sources stop generating data and return NO_PREROLL.
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;/itemizedlist&gt;
+&lt;itemizedlist&gt;
+&lt;listitem&gt;&lt;para&gt;
+Sinks unblock any waits in the preroll.
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;
+Elements unblock any waits on devices
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;
+Chain or get_range functions return WRONG_STATE.
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;
+The element pads are deactivated so that streaming becomes impossible and
+all streaming threads are stopped.
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;
+The sink forgets all negotiated formats
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;
+Elements remove all sometimes pads
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;/itemizedlist&gt;
+&lt;itemizedlist&gt;
+&lt;listitem&gt;&lt;para&gt;
+Elements close devices
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;
+Elements reset any internal state.
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;/itemizedlist&gt;
+These are the different state changes an element goes through.
+%GST_STATE_NULL &amp;rArr; %GST_STATE_PLAYING is called an upwards state change
+and %GST_STATE_PLAYING &amp;rArr; %GST_STATE_NULL a downwards state change."
+              c:type="GstStateChange">
+      <member name="null_to_ready"
+              value="10"
+              c:identifier="GST_STATE_CHANGE_NULL_TO_READY"/>
+      <member name="ready_to_paused"
+              value="19"
+              c:identifier="GST_STATE_CHANGE_READY_TO_PAUSED"/>
+      <member name="paused_to_playing"
+              value="28"
+              c:identifier="GST_STATE_CHANGE_PAUSED_TO_PLAYING"/>
+      <member name="playing_to_paused"
+              value="35"
+              c:identifier="GST_STATE_CHANGE_PLAYING_TO_PAUSED"/>
+      <member name="paused_to_ready"
+              value="26"
+              c:identifier="GST_STATE_CHANGE_PAUSED_TO_READY"/>
+      <member name="ready_to_null"
+              value="17"
+              c:identifier="GST_STATE_CHANGE_READY_TO_NULL"/>
+    </bitfield>
+    <enumeration name="StateChangeReturn"
+                 doc="cannot produce data in %GST_STATE_PAUSED.
+This typically happens with live sources.
+The possible return values from a state change function. Only"
+                 c:type="GstStateChangeReturn">
+      <member name="failure"
+              value="0"
+              c:identifier="GST_STATE_CHANGE_FAILURE"/>
+      <member name="success"
+              value="1"
+              c:identifier="GST_STATE_CHANGE_SUCCESS"/>
+      <member name="async" value="2" c:identifier="GST_STATE_CHANGE_ASYNC"/>
+      <member name="no_preroll"
+              value="3"
+              c:identifier="GST_STATE_CHANGE_NO_PREROLL"/>
+    </enumeration>
+    <record name="StaticCaps"
+            c:type="GstStaticCaps"
+            doc="Datastructure to initialize #GstCaps from a string description usually
+used in conjunction with GST_STATIC_CAPS() and gst_static_caps_get() to
+instantiate a #GstCaps.">
+      <field name="caps" writable="1">
+        <type name="Caps" c:type="GstCaps"/>
+      </field>
+      <field name="string" writable="1">
+        <type name="utf8" c:type="char*"/>
+      </field>
+      <field name="_gst_reserved" writable="1">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+      <method name="get"
+              c:identifier="gst_static_caps_get"
+              doc="Converts a #GstStaticCaps to a #GstCaps.
+core holds an additional ref to the returned caps,
+use gst_caps_make_writable() on the returned caps to modify it.">
+        <return-value transfer-ownership="full">
+          <type name="Caps" c:type="GstCaps*"/>
+        </return-value>
+      </method>
+    </record>
+    <record name="StaticPadTemplate" c:type="GstStaticPadTemplate">
+      <field name="name_template" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="direction" writable="1">
+        <type name="PadDirection" c:type="GstPadDirection"/>
+      </field>
+      <field name="presence" writable="1">
+        <type name="PadPresence" c:type="GstPadPresence"/>
+      </field>
+      <field name="static_caps" writable="1">
+        <type name="StaticCaps" c:type="GstStaticCaps"/>
+      </field>
+      <method name="get"
+              c:identifier="gst_static_pad_template_get"
+              doc="Converts a #GstStaticPadTemplate into a #GstPadTemplate.">
+        <return-value transfer-ownership="full">
+          <type name="PadTemplate" c:type="GstPadTemplate*"/>
+        </return-value>
+      </method>
+      <method name="get_caps"
+              c:identifier="gst_static_pad_template_get_caps"
+              doc="Gets the capabilities of the static pad template.
+Unref after usage. Since the core holds an additional
+ref to the returned caps, use gst_caps_make_writable()
+on the returned caps to modify it.">
+        <return-value transfer-ownership="full">
+          <type name="Caps" c:type="GstCaps*"/>
+        </return-value>
+      </method>
+    </record>
+    <enumeration name="StreamError"
+                 doc="category.  Make sure you add a custom message to the error call.
+deciding where to go while developing code.
+this functionality yet.
+stream&apos;s type.
+of stream.
+stream&apos;s type.
+(for example, wrong caps).
+Stream errors are for anything related to the stream being processed:
+format errors, media type errors, ...
+They&apos;re typically used by decoders, demuxers, converters, ..."
+                 c:type="GstStreamError"
+                 glib:error-quark="gst_stream_error_quark">
+      <member name="failed" value="1" c:identifier="GST_STREAM_ERROR_FAILED"/>
+      <member name="too_lazy"
+              value="2"
+              c:identifier="GST_STREAM_ERROR_TOO_LAZY"/>
+      <member name="not_implemented"
+              value="3"
+              c:identifier="GST_STREAM_ERROR_NOT_IMPLEMENTED"/>
+      <member name="type_not_found"
+              value="4"
+              c:identifier="GST_STREAM_ERROR_TYPE_NOT_FOUND"/>
+      <member name="wrong_type"
+              value="5"
+              c:identifier="GST_STREAM_ERROR_WRONG_TYPE"/>
+      <member name="codec_not_found"
+              value="6"
+              c:identifier="GST_STREAM_ERROR_CODEC_NOT_FOUND"/>
+      <member name="decode" value="7" c:identifier="GST_STREAM_ERROR_DECODE"/>
+      <member name="encode" value="8" c:identifier="GST_STREAM_ERROR_ENCODE"/>
+      <member name="demux" value="9" c:identifier="GST_STREAM_ERROR_DEMUX"/>
+      <member name="mux" value="10" c:identifier="GST_STREAM_ERROR_MUX"/>
+      <member name="format" value="11" c:identifier="GST_STREAM_ERROR_FORMAT"/>
+      <member name="decrypt"
+              value="12"
+              c:identifier="GST_STREAM_ERROR_DECRYPT"/>
+      <member name="decrypt_nokey"
+              value="13"
+              c:identifier="GST_STREAM_ERROR_DECRYPT_NOKEY"/>
+      <member name="num_errors"
+              value="14"
+              c:identifier="GST_STREAM_ERROR_NUM_ERRORS"/>
+    </enumeration>
+    <enumeration name="StreamStatusType"
+                 doc="The type of a %GST_MESSAGE_STREAM_STATUS. The stream status messages inform the
+application of new streaming threads and their status."
+                 version="0.10.24"
+                 c:type="GstStreamStatusType">
+      <member name="create"
+              value="0"
+              c:identifier="GST_STREAM_STATUS_TYPE_CREATE"/>
+      <member name="enter"
+              value="1"
+              c:identifier="GST_STREAM_STATUS_TYPE_ENTER"/>
+      <member name="leave"
+              value="2"
+              c:identifier="GST_STREAM_STATUS_TYPE_LEAVE"/>
+      <member name="destroy"
+              value="3"
+              c:identifier="GST_STREAM_STATUS_TYPE_DESTROY"/>
+      <member name="start"
+              value="8"
+              c:identifier="GST_STREAM_STATUS_TYPE_START"/>
+      <member name="pause"
+              value="9"
+              c:identifier="GST_STREAM_STATUS_TYPE_PAUSE"/>
+      <member name="stop"
+              value="10"
+              c:identifier="GST_STREAM_STATUS_TYPE_STOP"/>
+    </enumeration>
+    <record name="Structure"
+            c:type="GstStructure"
+            doc="The GstStructure object. Most fields are private."
+            glib:type-name="GstStructure"
+            glib:get-type="gst_structure_get_type">
+      <field name="type" writable="1">
+        <type name="GType" c:type="GType"/>
+      </field>
+      <field name="name" writable="1">
+        <type name="GLib.Quark" c:type="GQuark"/>
+      </field>
+      <field name="parent_refcount" writable="1">
+        <type name="any" c:type="gint*"/>
+      </field>
+      <field name="fields" writable="1">
+        <type name="GLib.Array" c:type="GArray*"/>
+      </field>
+      <field name="_gst_reserved" writable="1">
+        <type name="any" c:type="gpointer"/>
+      </field>
+      <constructor name="new"
+                   c:identifier="gst_structure_new"
+                   doc="Creates a new #GstStructure with the given name.  Parses the
+list of variable arguments and sets fields to the values listed.
+Variable arguments should be passed as field name, field type,
+and value.  Last variable argument should be NULL.">
+        <return-value transfer-ownership="full">
+          <type name="Structure" c:type="GstStructure*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="firstfield" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="copy"
+              c:identifier="gst_structure_copy"
+              doc="Duplicates a #GstStructure and all its fields and values.">
+        <return-value transfer-ownership="full">
+          <type name="Structure" c:type="GstStructure*"/>
+        </return-value>
+      </method>
+      <method name="set_parent_refcount"
+              c:identifier="gst_structure_set_parent_refcount"
+              doc="Sets the parent_refcount field of #GstStructure. This field is used to
+determine whether a structure is mutable or not. This function should only be
+called by code implementing parent objects of #GstStructure, as described in
+the MT Refcounting section of the design documents.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="refcount" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="free"
+              c:identifier="gst_structure_free"
+              doc="Frees a #GstStructure and all its fields and values. The structure must not
+have a parent when this function is called.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_name"
+              c:identifier="gst_structure_get_name"
+              doc="Get the name of @structure as a string.">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_name_id"
+              c:identifier="gst_structure_get_name_id"
+              doc="Get the name of @structure as a GQuark.">
+        <return-value transfer-ownership="full">
+          <type name="GLib.Quark" c:type="GQuark"/>
+        </return-value>
+      </method>
+      <method name="has_name"
+              c:identifier="gst_structure_has_name"
+              doc="Checks if the structure has the given name">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_name"
+              c:identifier="gst_structure_set_name"
+              doc="Sets the name of the structure to the given @name.  The string
+provided is copied before being used. It must not be empty, start with a
+letter and can be followed by letters, numbers and any of &quot;/-_.:&quot;.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="id_set_value"
+              c:identifier="gst_structure_id_set_value"
+              doc="Sets the field with the given GQuark @field to @value.  If the field
+does not exist, it is created.  If the field exists, the previous
+value is replaced and freed.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="field" transfer-ownership="none">
+            <type name="GLib.Quark" c:type="GQuark"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_value"
+              c:identifier="gst_structure_set_value"
+              doc="Sets the field with the given name @field to @value.  If the field
+does not exist, it is created.  If the field exists, the previous
+value is replaced and freed.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="fieldname" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set"
+              c:identifier="gst_structure_set"
+              doc="Parses the variable arguments and sets fields accordingly.
+Variable arguments should be in the form field name, field type
+(as a GType), value(s).  The last variable argument should be NULL.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="fieldname" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="id_set"
+              c:identifier="gst_structure_id_set"
+              doc="Identical to gst_structure_set, except that field names are
+passed using the GQuark for the field name. This allows more efficient
+setting of the structure if the caller already knows the associated
+quark values.
+The last variable argument must be NULL."
+              version="0.10.10">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="fieldname" transfer-ownership="none">
+            <type name="GLib.Quark" c:type="GQuark"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get"
+              c:identifier="gst_structure_get"
+              doc="Parses the variable arguments and reads fields from @structure accordingly.
+Variable arguments should be in the form field name, field type
+(as a GType), pointer(s) to a variable(s) to hold the return value(s).
+The last variable argument should be NULL.
+For refcounted (mini)objects you will acquire your own reference which
+you must release with a suitable _unref() when no longer needed. For
+strings and boxed types you will acquire a copy which you will need to
+release with either g_free() or the suiteable function for the boxed type.
+because the field requested did not exist, or was of a type other
+than the type specified), otherwise TRUE."
+              version="0.10.24">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="first_fieldname" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="id_get"
+              c:identifier="gst_structure_id_get"
+              doc="Parses the variable arguments and reads fields from @structure accordingly.
+Variable arguments should be in the form field id quark, field type
+(as a GType), pointer(s) to a variable(s) to hold the return value(s).
+The last variable argument should be NULL (technically it should be a
+0 quark, but we require NULL so compilers that support it can check for
+the NULL terminator and warn if it&apos;s not there).
+This function is just like gst_structure_get() only that it is slightly
+more efficient since it saves the string-to-quark lookup in the global
+quark hashtable.
+For refcounted (mini)objects you will acquire your own reference which
+you must release with a suitable _unref() when no longer needed. For
+strings and boxed types you will acquire a copy which you will need to
+release with either g_free() or the suiteable function for the boxed type.
+because the field requested did not exist, or was of a type other
+than the type specified), otherwise TRUE."
+              version="0.10.24">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="first_field_id" transfer-ownership="none">
+            <type name="GLib.Quark" c:type="GQuark"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="id_get_value"
+              c:identifier="gst_structure_id_get_value"
+              doc="Get the value of the field with GQuark @field.
+identifier.">
+        <return-value transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </return-value>
+        <parameters>
+          <parameter name="field" transfer-ownership="none">
+            <type name="GLib.Quark" c:type="GQuark"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_value"
+              c:identifier="gst_structure_get_value"
+              doc="Get the value of the field with name @fieldname.">
+        <return-value transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </return-value>
+        <parameters>
+          <parameter name="fieldname" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_field"
+              c:identifier="gst_structure_remove_field"
+              doc="Removes the field with the given name.  If the field with the given
+name does not exist, the structure is unchanged.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="fieldname" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_fields"
+              c:identifier="gst_structure_remove_fields"
+              doc="Removes the fields with the given names. If a field does not exist, the
+argument is ignored.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="fieldname" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_all_fields"
+              c:identifier="gst_structure_remove_all_fields"
+              doc="Removes all fields in a GstStructure.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_field_type"
+              c:identifier="gst_structure_get_field_type"
+              doc="Finds the field with the given name, and returns the type of the
+value it contains.  If the field is not found, G_TYPE_INVALID is
+returned.">
+        <return-value transfer-ownership="none">
+          <type name="GType" c:type="GType"/>
+        </return-value>
+        <parameters>
+          <parameter name="fieldname" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="foreach"
+              c:identifier="gst_structure_foreach"
+              doc="Calls the provided function once for each field in the #GstStructure. The
+function must not modify the fields. Also see gst_structure_map_in_place().
+FALSE otherwise.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="2">
+            <type name="StructureForeachFunc"
+                  c:type="GstStructureForeachFunc"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="map_in_place"
+              c:identifier="gst_structure_map_in_place"
+              doc="Calls the provided function once for each field in the #GstStructure. In
+contrast to gst_structure_foreach(), the function may modify but not delete the
+fields. The structure must be mutable.
+FALSE otherwise.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="2">
+            <type name="StructureMapFunc" c:type="GstStructureMapFunc"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="n_fields"
+              c:identifier="gst_structure_n_fields"
+              doc="Get the number of fields in the structure.">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="nth_field_name"
+              c:identifier="gst_structure_nth_field_name"
+              doc="Get the name of the given field number, counting from 0 onwards.">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="index" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="id_has_field"
+              c:identifier="gst_structure_id_has_field"
+              doc="Check if @structure contains a field named @field."
+              version="0.10.26">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="field" transfer-ownership="none">
+            <type name="GLib.Quark" c:type="GQuark"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="id_has_field_typed"
+              c:identifier="gst_structure_id_has_field_typed"
+              doc="Check if @structure contains a field named @field and with GType @type."
+              version="0.10.26">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="field" transfer-ownership="none">
+            <type name="GLib.Quark" c:type="GQuark"/>
+          </parameter>
+          <parameter name="type" transfer-ownership="none">
+            <type name="GType" c:type="GType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="has_field"
+              c:identifier="gst_structure_has_field"
+              doc="Check if @structure contains a field named @fieldname.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="fieldname" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="has_field_typed"
+              c:identifier="gst_structure_has_field_typed"
+              doc="Check if @structure contains a field named @fieldname and with GType @type.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="fieldname" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="type" transfer-ownership="none">
+            <type name="GType" c:type="GType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_boolean"
+              c:identifier="gst_structure_get_boolean"
+              doc="Sets the boolean pointed to by @value corresponding to the value of the
+given field.  Caller is responsible for making sure the field exists
+and has the correct type.
+with @fieldname or the existing field did not contain a boolean, this
+function returns FALSE.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="fieldname" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" direction="out" transfer-ownership="full">
+            <type name="boolean" c:type="gboolean*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_int"
+              c:identifier="gst_structure_get_int"
+              doc="Sets the int pointed to by @value corresponding to the value of the
+given field.  Caller is responsible for making sure the field exists
+and has the correct type.
+with @fieldname or the existing field did not contain an int, this function
+returns %FALSE.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="fieldname" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_uint"
+              c:identifier="gst_structure_get_uint"
+              doc="Sets the uint pointed to by @value corresponding to the value of the
+given field.  Caller is responsible for making sure the field exists
+and has the correct type.
+with @fieldname or the existing field did not contain a uint, this function
+returns %FALSE."
+              version="0.10.15">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="fieldname" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" direction="out" transfer-ownership="full">
+            <type name="uint" c:type="guint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_fourcc"
+              c:identifier="gst_structure_get_fourcc"
+              doc="Sets the Fourcc pointed to by @value corresponding to the value of the
+given field.  Caller is responsible for making sure the field exists
+and has the correct type.
+with @fieldname or the existing field did not contain a fourcc, this function
+returns FALSE.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="fieldname" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" direction="out" transfer-ownership="full">
+            <type name="uint32" c:type="guint32*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_double"
+              c:identifier="gst_structure_get_double"
+              doc="Sets the double pointed to by @value corresponding to the value of the
+given field.  Caller is responsible for making sure the field exists
+and has the correct type.
+with @fieldname or the existing field did not contain a double, this
+function returns FALSE.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="fieldname" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" direction="out" transfer-ownership="full">
+            <type name="double" c:type="gdouble*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_date"
+              c:identifier="gst_structure_get_date"
+              doc="Sets the date pointed to by @value corresponding to the date of the
+given field.  Caller is responsible for making sure the field exists
+and has the correct type.
+On success @value will point to a newly-allocated copy of the date which
+inconsistent with e.g. gst_structure_get_string() which doesn&apos;t return a
+copy of the string).
+with @fieldname or the existing field did not contain a data, this function
+returns FALSE.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="fieldname" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="GLib.Date" c:type="GDate**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_clock_time"
+              c:identifier="gst_structure_get_clock_time"
+              doc="Sets the clock time pointed to by @value corresponding to the clock time
+of the given field.  Caller is responsible for making sure the field exists
+and has the correct type.
+with @fieldname or the existing field did not contain a #GstClockTime, this
+function returns FALSE.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="fieldname" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="ClockTime" c:type="GstClockTime*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_string"
+              c:identifier="gst_structure_get_string"
+              doc="Finds the field corresponding to @fieldname, and returns the string
+contained in the field&apos;s value.  Caller is responsible for making
+sure the field exists and has the correct type.
+The string should not be modified, and remains valid until the next
+call to a gst_structure_*() function with the given structure.
+or did not contain a string.">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="fieldname" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_enum"
+              c:identifier="gst_structure_get_enum"
+              doc="Sets the int pointed to by @value corresponding to the value of the
+given field.  Caller is responsible for making sure the field exists,
+has the correct type and that the enumtype is correct.
+with @fieldname or the existing field did not contain an enum of the given
+type, this function returns FALSE.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="fieldname" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="enumtype" transfer-ownership="none">
+            <type name="GType" c:type="GType"/>
+          </parameter>
+          <parameter name="value" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_fraction"
+              c:identifier="gst_structure_get_fraction"
+              doc="Sets the integers pointed to by @value_numerator and @value_denominator
+corresponding to the value of the given field.  Caller is responsible
+for making sure the field exists and has the correct type.
+with @fieldname or the existing field did not contain a GstFraction, this
+function returns FALSE.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="fieldname" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value_numerator"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+          <parameter name="value_denominator"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="to_string"
+              c:identifier="gst_structure_to_string"
+              doc="Converts @structure to a human-readable string representation.
+For debugging purposes its easier to do something like this:
+|[
+GST_LOG (&quot;structure is %&quot; GST_PTR_FORMAT, structure);
+]|
+This prints the structure in human readble form.
+usage.">
+        <return-value transfer-ownership="full" doc="after">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="fixate_field_nearest_int"
+              c:identifier="gst_structure_fixate_field_nearest_int"
+              doc="Fixates a #GstStructure by changing the given field to the nearest
+integer to @target that is a subset of the existing field.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="field_name" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="target" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="fixate_field_nearest_double"
+              c:identifier="gst_structure_fixate_field_nearest_double"
+              doc="Fixates a #GstStructure by changing the given field to the nearest
+double to @target that is a subset of the existing field.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="field_name" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="target" transfer-ownership="none">
+            <type name="double" c:type="double"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="fixate_field_boolean"
+              c:identifier="gst_structure_fixate_field_boolean"
+              doc="Fixates a #GstStructure by changing the given @field_name field to the given">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="field_name" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="target" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="fixate_field_nearest_fraction"
+              c:identifier="gst_structure_fixate_field_nearest_fraction"
+              doc="Fixates a #GstStructure by changing the given field to the nearest
+fraction to @target_numerator/@target_denominator that is a subset
+of the existing field.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="field_name" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="target_numerator" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="target_denominator" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <enumeration name="StructureChangeType"
+                 doc="The type of a %GST_MESSAGE_STRUCTURE_CHANGE."
+                 version="0.10.22"
+                 c:type="GstStructureChangeType">
+      <member name="link"
+              value="0"
+              c:identifier="GST_STRUCTURE_CHANGE_TYPE_PAD_LINK"/>
+      <member name="unlink"
+              value="1"
+              c:identifier="GST_STRUCTURE_CHANGE_TYPE_PAD_UNLINK"/>
+    </enumeration>
+    <callback name="StructureForeachFunc"
+              c:type="GstStructureForeachFunc"
+              doc="A function that will be called in gst_structure_foreach(). The function may
+not modify @value.
+the foreach operation should stop with FALSE.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="field_id" transfer-ownership="none">
+          <type name="GLib.Quark" c:type="GQuark"/>
+        </parameter>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="2">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="StructureMapFunc"
+              c:type="GstStructureMapFunc"
+              doc="A function that will be called in gst_structure_map_in_place(). The function
+may modify @value.
+the map operation should stop with FALSE.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="field_id" transfer-ownership="none">
+          <type name="GLib.Quark" c:type="GQuark"/>
+        </parameter>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="2">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <class name="SystemClock"
+           c:type="GstSystemClock"
+           doc="The default implementation of a #GstClock that uses the system time."
+           parent="Clock"
+           glib:type-name="GstSystemClock"
+           glib:get-type="gst_system_clock_get_type"
+           glib:type-struct="SystemClockClass">
+      <function name="obtain"
+                c:identifier="gst_system_clock_obtain"
+                doc="Get a handle to the default system clock. The refcount of the
+clock will be increased so you need to unref the clock after
+usage.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="Clock" c:type="GstClock*"/>
+        </return-value>
+      </function>
+      <property name="clock-type" writable="1">
+        <type name="ClockType" c:type="GstClockType"/>
+      </property>
+      <field name="clock">
+        <type name="Clock" c:type="GstClock"/>
+      </field>
+      <field name="thread">
+        <type name="GLib.Thread" c:type="GThread*"/>
+      </field>
+      <field name="stopping">
+        <type name="boolean" c:type="gboolean"/>
+      </field>
+      <field name="priv">
+        <type name="SystemClockPrivate" c:type="GstSystemClockPrivate*"/>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="3">
+          <type name="any"/>
+        </array>
+      </field>
+    </class>
+    <record name="SystemClockClass"
+            c:type="GstSystemClockClass"
+            glib:is-gtype-struct-for="SystemClock">
+      <field name="parent_class">
+        <type name="ClockClass" c:type="GstClockClass"/>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <record name="SystemClockPrivate" c:type="GstSystemClockPrivate">
+    </record>
+    <constant name="TAG_ALBUM" value="album">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_ALBUM_ARTIST" value="album-artist">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_ALBUM_ARTIST_SORTNAME" value="album-artist-sortname">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_ALBUM_GAIN" value="replaygain-album-gain">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_ALBUM_PEAK" value="replaygain-album-peak">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_ALBUM_SORTNAME" value="album-sortname">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_ALBUM_VOLUME_COUNT" value="album-disc-count">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_ALBUM_VOLUME_NUMBER" value="album-disc-number">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_ARTIST" value="artist">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_ARTIST_SORTNAME" value="musicbrainz-sortname">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_ATTACHMENT" value="attachment">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_AUDIO_CODEC" value="audio-codec">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_BEATS_PER_MINUTE" value="beats-per-minute">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_BITRATE" value="bitrate">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_CODEC" value="codec">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_COMMENT" value="comment">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_COMPOSER" value="composer">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_COMPOSER_SORTNAME" value="composer-sortname">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_CONTACT" value="contact">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_CONTAINER_FORMAT" value="container-format">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_COPYRIGHT" value="copyright">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_COPYRIGHT_URI" value="copyright-uri">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_DATE" value="date">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_DESCRIPTION" value="description">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_DURATION" value="duration">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_ENCODER" value="encoder">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_ENCODER_VERSION" value="encoder-version">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_EXTENDED_COMMENT" value="extended-comment">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_GENRE" value="genre">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_GEO_LOCATION_CITY" value="geo-location-city">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_GEO_LOCATION_COUNTRY" value="geo-location-country">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_GEO_LOCATION_ELEVATION" value="geo-location-elevation">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_GEO_LOCATION_LATITUDE" value="geo-location-latitude">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_GEO_LOCATION_LONGITUDE" value="geo-location-longitude">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_GEO_LOCATION_NAME" value="geo-location-name">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_GEO_LOCATION_SUBLOCATION"
+              value="geo-location-sublocation">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_GROUPING" value="grouping">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_HOMEPAGE" value="homepage">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_IMAGE" value="image">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_ISRC" value="isrc">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_KEYWORDS" value="keywords">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_LANGUAGE_CODE" value="language-code">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_LICENSE" value="license">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_LICENSE_URI" value="license-uri">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_LOCATION" value="location">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_LYRICS" value="lyrics">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_MAXIMUM_BITRATE" value="maximum-bitrate">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_MINIMUM_BITRATE" value="minimum-bitrate">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_NOMINAL_BITRATE" value="nominal-bitrate">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_ORGANIZATION" value="organization">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_PERFORMER" value="performer">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_PREVIEW_IMAGE" value="preview-image">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_REFERENCE_LEVEL" value="replaygain-reference-level">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_SERIAL" value="serial">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_SHOW_EPISODE_NUMBER" value="show-episode-number">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_SHOW_NAME" value="show-name">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_SHOW_SEASON_NUMBER" value="show-season-number">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_SHOW_SORTNAME" value="show-sortname">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_SUBTITLE_CODEC" value="subtitle-codec">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_TITLE" value="title">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_TITLE_SORTNAME" value="title-sortname">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_TRACK_COUNT" value="track-count">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_TRACK_GAIN" value="replaygain-track-gain">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_TRACK_NUMBER" value="track-number">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_TRACK_PEAK" value="replaygain-track-peak">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_USER_RATING" value="user-rating">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_VERSION" value="version">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_VIDEO_CODEC" value="video-codec">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TIME_FORMAT" value="u:%02u:%02u.%09u">
+      <type name="utf8"/>
+    </constant>
+    <enumeration name="TagFlag"
+                 doc="Extra tag flags used when registering tags."
+                 c:type="GstTagFlag">
+      <member name="undefined"
+              value="0"
+              c:identifier="GST_TAG_FLAG_UNDEFINED"/>
+      <member name="meta" value="1" c:identifier="GST_TAG_FLAG_META"/>
+      <member name="encoded" value="2" c:identifier="GST_TAG_FLAG_ENCODED"/>
+      <member name="decoded" value="3" c:identifier="GST_TAG_FLAG_DECODED"/>
+      <member name="count" value="4" c:identifier="GST_TAG_FLAG_COUNT"/>
+    </enumeration>
+    <callback name="TagForeachFunc"
+              c:type="GstTagForeachFunc"
+              doc="A function that will be called in gst_tag_list_foreach(). The function may
+not modify the tag list.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="list" transfer-ownership="none">
+          <type name="TagList" c:type="GstTagList*"/>
+        </parameter>
+        <parameter name="tag" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="2">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <record name="TagList"
+            c:type="GstTagList"
+            doc="Opaque #GstTagList data structure."
+            glib:type-name="GstTagList"
+            glib:get-type="gst_tag_list_get_type">
+      <constructor name="new"
+                   c:identifier="gst_tag_list_new"
+                   doc="Creates a new empty GstTagList.">
+        <return-value transfer-ownership="full">
+          <type name="TagList" c:type="GstTagList*"/>
+        </return-value>
+      </constructor>
+      <constructor name="new_full"
+                   c:identifier="gst_tag_list_new_full"
+                   doc="Creates a new taglist and appends the values for the given tags. It expects
+tag-value pairs like gst_tag_list_add(), and a NULL terminator after the
+last pair. The type of the values is implicit and is documented in the API
+reference, but can also be queried at runtime with gst_tag_get_type(). It
+is an error to pass a value of a type not matching the tag type into this
+function. The tag list will make copies of any arguments passed
+(e.g. strings, buffers).
+needed."
+                   version="0.10.24">
+        <return-value transfer-ownership="full" doc="when no longer">
+          <type name="TagList" c:type="GstTagList*"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="copy"
+              c:identifier="gst_tag_list_copy"
+              doc="Copies a given #GstTagList.">
+        <return-value transfer-ownership="full">
+          <type name="TagList" c:type="GstTagList*"/>
+        </return-value>
+      </method>
+      <method name="is_empty"
+              c:identifier="gst_tag_list_is_empty"
+              doc="Checks if the given taglist is empty."
+              version="0.10.11">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="insert"
+              c:identifier="gst_tag_list_insert"
+              doc="Inserts the tags of the @from list into the first list using the given mode.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="from" transfer-ownership="none">
+            <type name="TagList" c:type="GstTagList*"/>
+          </parameter>
+          <parameter name="mode" transfer-ownership="none">
+            <type name="TagMergeMode" c:type="GstTagMergeMode"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="merge"
+              c:identifier="gst_tag_list_merge"
+              doc="Merges the two given lists into a new list. If one of the lists is NULL, a
+copy of the other is returned. If both lists are NULL, NULL is returned.">
+        <return-value transfer-ownership="full">
+          <type name="TagList" c:type="GstTagList*"/>
+        </return-value>
+        <parameters>
+          <parameter name="list2" transfer-ownership="none">
+            <type name="TagList" c:type="GstTagList*"/>
+          </parameter>
+          <parameter name="mode" transfer-ownership="none">
+            <type name="TagMergeMode" c:type="GstTagMergeMode"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="free"
+              c:identifier="gst_tag_list_free"
+              doc="Frees the given list and all associated values.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_tag_size"
+              c:identifier="gst_tag_list_get_tag_size"
+              doc="Checks how many value are stored in this tag list for the given tag.">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add"
+              c:identifier="gst_tag_list_add"
+              doc="Sets the values for the given tags using the specified mode.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="mode" transfer-ownership="none">
+            <type name="TagMergeMode" c:type="GstTagMergeMode"/>
+          </parameter>
+          <parameter name="tag" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_values"
+              c:identifier="gst_tag_list_add_values"
+              doc="Sets the GValues for the given tags using the specified mode.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="mode" transfer-ownership="none">
+            <type name="TagMergeMode" c:type="GstTagMergeMode"/>
+          </parameter>
+          <parameter name="tag" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_value"
+              c:identifier="gst_tag_list_add_value"
+              doc="Sets the GValue for a given tag using the specified mode."
+              version="0.10.24">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="mode" transfer-ownership="none">
+            <type name="TagMergeMode" c:type="GstTagMergeMode"/>
+          </parameter>
+          <parameter name="tag" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_tag"
+              c:identifier="gst_tag_list_remove_tag"
+              doc="Removes the given tag from the taglist.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="foreach"
+              c:identifier="gst_tag_list_foreach"
+              doc="Calls the given function for each tag inside the tag list. Note that if there
+is no tag, the function won&apos;t be called at all.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="2">
+            <type name="TagForeachFunc" c:type="GstTagForeachFunc"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_value_index"
+              c:identifier="gst_tag_list_get_value_index"
+              doc="Gets the value that is at the given index for the given tag in the given
+list.
+available or the tag doesn&apos;t have as many entries">
+        <return-value transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="index" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_char"
+              c:identifier="gst_tag_list_get_char"
+              doc="Copies the contents for the given tag into the value, merging multiple values
+into one if multiple values are associated with the tag.
+given list.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="full">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_char_index"
+              c:identifier="gst_tag_list_get_char_index"
+              doc="Gets the value that is at the given index for the given tag in the given
+list.
+given list.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="index" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="full">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_uchar"
+              c:identifier="gst_tag_list_get_uchar"
+              doc="Copies the contents for the given tag into the value, merging multiple values
+into one if multiple values are associated with the tag.
+given list.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <array c:type="guchar*">
+              <type name="uint8"/>
+            </array>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_uchar_index"
+              c:identifier="gst_tag_list_get_uchar_index"
+              doc="Gets the value that is at the given index for the given tag in the given
+list.
+given list.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="index" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <array c:type="guchar*">
+              <type name="uint8"/>
+            </array>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_boolean"
+              c:identifier="gst_tag_list_get_boolean"
+              doc="Copies the contents for the given tag into the value, merging multiple values
+into one if multiple values are associated with the tag.
+given list.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" direction="out" transfer-ownership="full">
+            <type name="boolean" c:type="gboolean*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_boolean_index"
+              c:identifier="gst_tag_list_get_boolean_index"
+              doc="Gets the value that is at the given index for the given tag in the given
+list.
+given list.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="index" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="value" direction="out" transfer-ownership="full">
+            <type name="boolean" c:type="gboolean*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_int"
+              c:identifier="gst_tag_list_get_int"
+              doc="Copies the contents for the given tag into the value, merging multiple values
+into one if multiple values are associated with the tag.
+given list.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_int_index"
+              c:identifier="gst_tag_list_get_int_index"
+              doc="Gets the value that is at the given index for the given tag in the given
+list.
+given list.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="index" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="value" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_uint"
+              c:identifier="gst_tag_list_get_uint"
+              doc="Copies the contents for the given tag into the value, merging multiple values
+into one if multiple values are associated with the tag.
+given list.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" direction="out" transfer-ownership="full">
+            <type name="uint" c:type="guint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_uint_index"
+              c:identifier="gst_tag_list_get_uint_index"
+              doc="Gets the value that is at the given index for the given tag in the given
+list.
+given list.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="index" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="value" direction="out" transfer-ownership="full">
+            <type name="uint" c:type="guint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_long"
+              c:identifier="gst_tag_list_get_long"
+              doc="Copies the contents for the given tag into the value, merging multiple values
+into one if multiple values are associated with the tag.
+given list.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" direction="out" transfer-ownership="full">
+            <type name="long" c:type="glong*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_long_index"
+              c:identifier="gst_tag_list_get_long_index"
+              doc="Gets the value that is at the given index for the given tag in the given
+list.
+given list.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="index" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="value" direction="out" transfer-ownership="full">
+            <type name="long" c:type="glong*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_ulong"
+              c:identifier="gst_tag_list_get_ulong"
+              doc="Copies the contents for the given tag into the value, merging multiple values
+into one if multiple values are associated with the tag.
+given list.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" direction="out" transfer-ownership="full">
+            <type name="ulong" c:type="gulong*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_ulong_index"
+              c:identifier="gst_tag_list_get_ulong_index"
+              doc="Gets the value that is at the given index for the given tag in the given
+list.
+given list.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="index" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="value" direction="out" transfer-ownership="full">
+            <type name="ulong" c:type="gulong*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_int64"
+              c:identifier="gst_tag_list_get_int64"
+              doc="Copies the contents for the given tag into the value, merging multiple values
+into one if multiple values are associated with the tag.
+given list.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" direction="out" transfer-ownership="full">
+            <type name="int64" c:type="gint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_int64_index"
+              c:identifier="gst_tag_list_get_int64_index"
+              doc="Gets the value that is at the given index for the given tag in the given
+list.
+given list.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="index" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="value" direction="out" transfer-ownership="full">
+            <type name="int64" c:type="gint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_uint64"
+              c:identifier="gst_tag_list_get_uint64"
+              doc="Copies the contents for the given tag into the value, merging multiple values
+into one if multiple values are associated with the tag.
+given list.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" direction="out" transfer-ownership="full">
+            <type name="uint64" c:type="guint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_uint64_index"
+              c:identifier="gst_tag_list_get_uint64_index"
+              doc="Gets the value that is at the given index for the given tag in the given
+list.
+given list.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="index" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="value" direction="out" transfer-ownership="full">
+            <type name="uint64" c:type="guint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_float"
+              c:identifier="gst_tag_list_get_float"
+              doc="Copies the contents for the given tag into the value, merging multiple values
+into one if multiple values are associated with the tag.
+given list.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" direction="out" transfer-ownership="full">
+            <type name="float" c:type="gfloat*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_float_index"
+              c:identifier="gst_tag_list_get_float_index"
+              doc="Gets the value that is at the given index for the given tag in the given
+list.
+given list.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="index" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="value" direction="out" transfer-ownership="full">
+            <type name="float" c:type="gfloat*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_double"
+              c:identifier="gst_tag_list_get_double"
+              doc="Copies the contents for the given tag into the value, merging multiple values
+into one if multiple values are associated with the tag.
+given list.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" direction="out" transfer-ownership="full">
+            <type name="double" c:type="gdouble*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_double_index"
+              c:identifier="gst_tag_list_get_double_index"
+              doc="Gets the value that is at the given index for the given tag in the given
+list.
+given list.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="index" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="value" direction="out" transfer-ownership="full">
+            <type name="double" c:type="gdouble*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_string"
+              c:identifier="gst_tag_list_get_string"
+              doc="Copies the contents for the given tag into the value, possibly merging
+multiple values into one if multiple values are associated with the tag.
+Use gst_tag_list_get_string_index (list, tag, 0, value) if you want
+to retrieve the first string associated with this tag unmodified.
+The resulting string in @value will be in UTF-8 encoding and should be
+freed by the caller using g_free when no longer needed. Since 0.10.24 the
+returned string is also guaranteed to be non-NULL and non-empty.
+given list.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <array c:type="gchar**">
+              <type name="utf8"/>
+            </array>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_string_index"
+              c:identifier="gst_tag_list_get_string_index"
+              doc="Gets the value that is at the given index for the given tag in the given
+list.
+The resulting string in @value will be in UTF-8 encoding and should be
+freed by the caller using g_free when no longer needed. Since 0.10.24 the
+returned string is also guaranteed to be non-NULL and non-empty.
+given list.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="index" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <array c:type="gchar**">
+              <type name="utf8"/>
+            </array>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_pointer"
+              c:identifier="gst_tag_list_get_pointer"
+              doc="Copies the contents for the given tag into the value, merging multiple values
+into one if multiple values are associated with the tag.
+given list.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="any" c:type="gpointer*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_pointer_index"
+              c:identifier="gst_tag_list_get_pointer_index"
+              doc="Gets the value that is at the given index for the given tag in the given
+list.
+given list.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="index" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="any" c:type="gpointer*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_date"
+              c:identifier="gst_tag_list_get_date"
+              doc="Copies the first date for the given tag in the taglist into the variable
+pointed to by @value. Free the date with g_date_free() when it is no longer
+needed.
+given list or if it was #NULL.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="GLib.Date" c:type="GDate**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_date_index"
+              c:identifier="gst_tag_list_get_date_index"
+              doc="Gets the date that is at the given index for the given tag in the given
+list and copies it into the variable pointed to by @value. Free the date
+with g_date_free() when it is no longer needed.
+given list or if it was #NULL.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="index" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="GLib.Date" c:type="GDate**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_buffer"
+              c:identifier="gst_tag_list_get_buffer"
+              doc="Copies the first buffer for the given tag in the taglist into the variable
+pointed to by @value. Free the buffer with gst_buffer_unref() when it is
+no longer needed.
+given list or if it was #NULL."
+              version="0.10.23">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="Buffer" c:type="GstBuffer**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_buffer_index"
+              c:identifier="gst_tag_list_get_buffer_index"
+              doc="Gets the buffer that is at the given index for the given tag in the given
+list and copies it into the variable pointed to by @value. Free the buffer
+with gst_buffer_unref() when it is no longer needed.
+given list or if it was #NULL."
+              version="0.10.23">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="index" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="Buffer" c:type="GstBuffer**"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <callback name="TagMergeFunc"
+              c:type="GstTagMergeFunc"
+              doc="A function for merging multiple values of a tag used when registering
+tags.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="dest" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="src" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <enumeration name="TagMergeMode"
+                 doc="The different tag merging modes are basically replace, overwrite and append,
+already in the element and (B) the ones that are supplied to the element (
+e.g. via gst_tag_setter_merge_tags() / gst_tag_setter_add_tags() or a
+%GST_EVENT_TAG), how are these tags merged?
+In the table below this is shown for the cases that a tag exists in the list
+(A) or does not exists (!A) and combinations thereof.
+&lt;table frame=&quot;all&quot; colsep=&quot;1&quot; rowsep=&quot;1&quot;&gt;
+&lt;title&gt;merge mode&lt;/title&gt;
+&lt;tgroup cols=&apos;5&apos; align=&apos;left&apos;&gt;
+&lt;thead&gt;
+&lt;row&gt;
+&lt;entry&gt;merge mode&lt;/entry&gt;
+&lt;entry&gt;A + B&lt;/entry&gt;
+&lt;entry&gt;A + !B&lt;/entry&gt;
+&lt;entry&gt;!A + B&lt;/entry&gt;
+&lt;entry&gt;!A + !B&lt;/entry&gt;
+&lt;/row&gt;
+&lt;/thead&gt;
+&lt;tbody&gt;
+&lt;row&gt;
+&lt;entry&gt;REPLACE_ALL&lt;/entry&gt;
+&lt;entry&gt;B&lt;/entry&gt;
+&lt;entry&gt;-&lt;/entry&gt;
+&lt;entry&gt;B&lt;/entry&gt;
+&lt;entry&gt;-&lt;/entry&gt;
+&lt;/row&gt;
+&lt;row&gt;
+&lt;entry&gt;REPLACE&lt;/entry&gt;
+&lt;entry&gt;B&lt;/entry&gt;
+&lt;entry&gt;A&lt;/entry&gt;
+&lt;entry&gt;B&lt;/entry&gt;
+&lt;entry&gt;-&lt;/entry&gt;
+&lt;/row&gt;
+&lt;row&gt;
+&lt;entry&gt;APPEND&lt;/entry&gt;
+&lt;entry&gt;A, B&lt;/entry&gt;
+&lt;entry&gt;A&lt;/entry&gt;
+&lt;entry&gt;B&lt;/entry&gt;
+&lt;entry&gt;-&lt;/entry&gt;
+&lt;/row&gt;
+&lt;row&gt;
+&lt;entry&gt;PREPEND&lt;/entry&gt;
+&lt;entry&gt;B, A&lt;/entry&gt;
+&lt;entry&gt;A&lt;/entry&gt;
+&lt;entry&gt;B&lt;/entry&gt;
+&lt;entry&gt;-&lt;/entry&gt;
+&lt;/row&gt;
+&lt;row&gt;
+&lt;entry&gt;KEEP&lt;/entry&gt;
+&lt;entry&gt;A&lt;/entry&gt;
+&lt;entry&gt;A&lt;/entry&gt;
+&lt;entry&gt;B&lt;/entry&gt;
+&lt;entry&gt;-&lt;/entry&gt;
+&lt;/row&gt;
+&lt;row&gt;
+&lt;entry&gt;KEEP_ALL&lt;/entry&gt;
+&lt;entry&gt;A&lt;/entry&gt;
+&lt;entry&gt;A&lt;/entry&gt;
+&lt;entry&gt;-&lt;/entry&gt;
+&lt;entry&gt;-&lt;/entry&gt;
+&lt;/row&gt;
+&lt;/tbody&gt;
+&lt;/tgroup&gt;
+&lt;/table&gt;"
+                 c:type="GstTagMergeMode">
+      <member name="undefined"
+              value="0"
+              c:identifier="GST_TAG_MERGE_UNDEFINED"/>
+      <member name="replace_all"
+              value="1"
+              c:identifier="GST_TAG_MERGE_REPLACE_ALL"/>
+      <member name="replace" value="2" c:identifier="GST_TAG_MERGE_REPLACE"/>
+      <member name="append" value="3" c:identifier="GST_TAG_MERGE_APPEND"/>
+      <member name="prepend" value="4" c:identifier="GST_TAG_MERGE_PREPEND"/>
+      <member name="keep" value="5" c:identifier="GST_TAG_MERGE_KEEP"/>
+      <member name="keep_all" value="6" c:identifier="GST_TAG_MERGE_KEEP_ALL"/>
+      <member name="count" value="7" c:identifier="GST_TAG_MERGE_COUNT"/>
+    </enumeration>
+    <interface name="TagSetter"
+               c:type="GstTagSetter"
+               doc="Opaque #GstTagSetter data structure."
+               glib:type-name="GstTagSetter"
+               glib:get-type="gst_tag_setter_get_type">
+      <prerequisite name="Element"/>
+      <method name="reset_tags"
+              c:identifier="gst_tag_setter_reset_tags"
+              doc="Reset the internal taglist. Elements should call this from within the
+state-change handler."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="merge_tags"
+              c:identifier="gst_tag_setter_merge_tags"
+              doc="Merges the given list into the setter&apos;s list using the given mode.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="list" transfer-ownership="none">
+            <type name="TagList" c:type="GstTagList*"/>
+          </parameter>
+          <parameter name="mode" transfer-ownership="none">
+            <type name="TagMergeMode" c:type="GstTagMergeMode"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_tags"
+              c:identifier="gst_tag_setter_add_tags"
+              doc="Adds the given tag / value pairs on the setter using the given merge mode.
+The list must be terminated with NULL.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="mode" transfer-ownership="none">
+            <type name="TagMergeMode" c:type="GstTagMergeMode"/>
+          </parameter>
+          <parameter name="tag" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_tag_values"
+              c:identifier="gst_tag_setter_add_tag_values"
+              doc="Adds the given tag / GValue pairs on the setter using the given merge mode.
+The list must be terminated with NULL.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="mode" transfer-ownership="none">
+            <type name="TagMergeMode" c:type="GstTagMergeMode"/>
+          </parameter>
+          <parameter name="tag" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_tag_value"
+              c:identifier="gst_tag_setter_add_tag_value"
+              doc="Adds the given tag / GValue pair on the setter using the given merge mode."
+              version="0.10.24">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="mode" transfer-ownership="none">
+            <type name="TagMergeMode" c:type="GstTagMergeMode"/>
+          </parameter>
+          <parameter name="tag" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_tag_list"
+              c:identifier="gst_tag_setter_get_tag_list"
+              doc="Returns the current list of tags the setter uses.  The list should not be
+modified or freed.
+or NULL if none is used.">
+        <return-value transfer-ownership="none">
+          <type name="TagList" c:type="GstTagList*"/>
+        </return-value>
+      </method>
+      <method name="set_tag_merge_mode"
+              c:identifier="gst_tag_setter_set_tag_merge_mode"
+              doc="Sets the given merge mode that is used for adding tags from events to tags
+specified by this interface. The default is #GST_TAG_MERGE_KEEP, which keeps
+the tags set with this interface and discards tags from events.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="mode" transfer-ownership="none">
+            <type name="TagMergeMode" c:type="GstTagMergeMode"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_tag_merge_mode"
+              c:identifier="gst_tag_setter_get_tag_merge_mode"
+              doc="Queries the mode by which tags inside the setter are overwritten by tags
+from events">
+        <return-value transfer-ownership="full">
+          <type name="TagMergeMode" c:type="GstTagMergeMode"/>
+        </return-value>
+      </method>
+    </interface>
+    <record name="TagSetterIFace"
+            c:type="GstTagSetterIFace"
+            doc="#GstTagSetterIFace interface.">
+      <field name="g_iface" writable="1">
+        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+      </field>
+    </record>
+    <class name="Task"
+           c:type="GstTask"
+           doc="The #GstTask object."
+           parent="Object"
+           glib:type-name="GstTask"
+           glib:get-type="gst_task_get_type"
+           glib:type-struct="TaskClass">
+      <function name="cleanup_all"
+                c:identifier="gst_task_cleanup_all"
+                doc="Wait for all tasks to be stopped. This is mainly used internally
+to ensure proper cleanup of internal data structures in test suites.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </function>
+      <function name="create"
+                c:identifier="gst_task_create"
+                doc="Create a new Task that will repeatedly call the provided @func
+with @data as a parameter. Typically the task will run in
+a new thread.
+The function cannot be changed after the task has been created. You
+must create a new #GstTask to change the function.
+This function will not yet create and start a thread. Use gst_task_start() or
+gst_task_pause() to create and start the GThread.
+Before the task can be used, a #GStaticRecMutex must be configured using the
+gst_task_set_lock() function. This lock will always be acquired while
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="Task" c:type="GstTask*"/>
+        </return-value>
+        <parameters>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="1">
+            <type name="TaskFunction" c:type="GstTaskFunction"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </function>
+      <method name="set_lock"
+              c:identifier="gst_task_set_lock"
+              doc="Set the mutex used by the task. The mutex will be acquired before
+calling the #GstTaskFunction.
+This function has to be called before calling gst_task_pause() or
+gst_task_start().
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="mutex" transfer-ownership="none">
+            <type name="GLib.StaticRecMutex" c:type="GStaticRecMutex*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_priority"
+              c:identifier="gst_task_set_priority"
+              doc="Changes the priority of @task to @priority.
+MT safe."
+              version="0.10.24">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="priority" transfer-ownership="none">
+            <type name="GLib.ThreadPriority" c:type="GThreadPriority"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_pool"
+              c:identifier="gst_task_get_pool"
+              doc="Get the #GstTaskPool that this task will use for its streaming
+threads.
+MT safe.
+after usage."
+              version="0.10.24">
+        <return-value transfer-ownership="full">
+          <type name="TaskPool" c:type="GstTaskPool*"/>
+        </return-value>
+      </method>
+      <method name="set_pool"
+              c:identifier="gst_task_set_pool"
+              doc="Set @pool as the new GstTaskPool for @task. Any new streaming threads that
+will be created by @task will now use @pool.
+MT safe."
+              version="0.10.24">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="pool" transfer-ownership="none">
+            <type name="TaskPool" c:type="GstTaskPool*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_thread_callbacks"
+              c:identifier="gst_task_set_thread_callbacks"
+              doc="Set callbacks which will be executed when a new thread is needed, the thread
+function is entered and left and when the thread is joined.
+By default a thread for @task will be created from a default thread pool.
+Objects can use custom GThreads or can perform additional configuration of
+the threads (such as changing the thread priority) by installing callbacks.
+MT safe."
+              version="0.10.24">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="callbacks" transfer-ownership="none">
+            <type name="TaskThreadCallbacks" c:type="GstTaskThreadCallbacks*"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+          <parameter name="notify" transfer-ownership="none" scope="call">
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_state"
+              c:identifier="gst_task_get_state"
+              doc="Get the current state of the task.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="TaskState" c:type="GstTaskState"/>
+        </return-value>
+      </method>
+      <method name="set_state"
+              c:identifier="gst_task_set_state"
+              doc="Sets the state of @task to @state.
+The @task must have a lock associated with it using
+gst_task_set_lock() when going to GST_TASK_STARTED or GST_TASK_PAUSED or
+this function will return %FALSE.
+MT safe."
+              version="0.10.24">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="state" transfer-ownership="none">
+            <type name="TaskState" c:type="GstTaskState"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="start"
+              c:identifier="gst_task_start"
+              doc="Starts @task. The @task must have a lock associated with it using
+gst_task_set_lock() or this function will return %FALSE.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="stop"
+              c:identifier="gst_task_stop"
+              doc="Stops @task. This method merely schedules the task to stop and
+will not wait for the task to have completely stopped. Use
+gst_task_join() to stop and wait for completion.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="pause"
+              c:identifier="gst_task_pause"
+              doc="Pauses @task. This method can also be called on a task in the
+stopped state, in which case a thread will be started and will remain
+in the paused state. This function does not wait for the task to complete
+the paused state.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="join"
+              c:identifier="gst_task_join"
+              doc="Joins @task. After this call, it is safe to unref the task
+and clean up the lock set with gst_task_set_lock().
+The task will automatically be stopped with this call.
+This function cannot be called from within a task function as this
+would cause a deadlock. The function will detect this and print a
+g_warning.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <field name="object">
+        <type name="Object" c:type="GstObject"/>
+      </field>
+      <field name="state">
+        <type name="TaskState" c:type="GstTaskState"/>
+      </field>
+      <field name="cond">
+        <type name="GLib.Cond" c:type="GCond*"/>
+      </field>
+      <field name="lock">
+        <type name="GLib.StaticRecMutex" c:type="GStaticRecMutex*"/>
+      </field>
+      <field name="func">
+        <type name="TaskFunction" c:type="GstTaskFunction"/>
+      </field>
+      <field name="data">
+        <type name="any" c:type="gpointer"/>
+      </field>
+      <field name="running">
+        <type name="boolean" c:type="gboolean"/>
+      </field>
+      <union name="abidata" c:type="abidata">
+        <record name="ABI" c:type="ABI">
+          <field name="thread" writable="1">
+            <type name="GLib.Thread" c:type="GThread*"/>
+          </field>
+        </record>
+        <field name="_gst_reserved" writable="1">
+          <array zero-terminated="0" c:type="gpointer" fixed-size="3">
+            <type name="any"/>
+          </array>
+        </field>
+      </union>
+      <field name="priv">
+        <type name="TaskPrivate" c:type="GstTaskPrivate*"/>
+      </field>
+    </class>
+    <record name="TaskClass"
+            c:type="GstTaskClass"
+            glib:is-gtype-struct-for="Task">
+      <field name="parent_class">
+        <type name="ObjectClass" c:type="GstObjectClass"/>
+      </field>
+      <field name="pool">
+        <type name="TaskPool" c:type="GstTaskPool*"/>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <callback name="TaskFunction"
+              c:type="GstTaskFunction"
+              doc="A function that will repeatedly be called in the thread created by
+a #GstTask.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="void*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <class name="TaskPool"
+           c:type="GstTaskPool"
+           doc="The #GstTaskPool object."
+           parent="Object"
+           glib:type-name="GstTaskPool"
+           glib:get-type="gst_task_pool_get_type"
+           glib:type-struct="TaskPoolClass">
+      <constructor name="new"
+                   c:identifier="gst_task_pool_new"
+                   doc="Create a new default task pool. The default task pool will use a regular
+GThreadPool for threads."
+                   version="0.10.24">
+        <return-value transfer-ownership="full" doc="after usage.">
+          <type name="TaskPool" c:type="GstTaskPool*"/>
+        </return-value>
+      </constructor>
+      <virtual-method name="prepare" invoker="prepare" throws="1">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="cleanup" invoker="cleanup">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="push" invoker="push" throws="1">
+        <return-value transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </return-value>
+        <parameters>
+          <parameter name="func" transfer-ownership="none">
+            <type name="TaskPoolFunction" c:type="GstTaskPoolFunction"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none" closure="2">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="join" invoker="join">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="id" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="prepare"
+              c:identifier="gst_task_pool_prepare"
+              doc="Prepare the taskpool for accepting gst_task_pool_push() operations.
+MT safe."
+              version="0.10.24"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="push"
+              c:identifier="gst_task_pool_push"
+              doc="Start the execution of a new thread from @pool.
+function. This pointer can be NULL, you must check @error to detect
+errors."
+              version="0.10.24"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </return-value>
+        <parameters>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="2">
+            <type name="TaskPoolFunction" c:type="GstTaskPoolFunction"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="join"
+              c:identifier="gst_task_pool_join"
+              doc="Join a task and/or return it to the pool. @id is the id obtained from
+gst_task_pool_push()."
+              version="0.10.24">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="id" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="cleanup"
+              c:identifier="gst_task_pool_cleanup"
+              doc="Wait for all tasks to be stopped. This is mainly used internally
+to ensure proper cleanup of internal data structures in test suites.
+MT safe."
+              version="0.10.24">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <field name="object">
+        <type name="Object" c:type="GstObject"/>
+      </field>
+      <field name="pool">
+        <type name="GLib.ThreadPool" c:type="GThreadPool*"/>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </class>
+    <record name="TaskPoolClass"
+            c:type="GstTaskPoolClass"
+            glib:is-gtype-struct-for="TaskPool"
+            doc="The #GstTaskPoolClass object.">
+      <field name="parent_class">
+        <type name="ObjectClass" c:type="GstObjectClass"/>
+      </field>
+      <field name="prepare">
+        <callback name="prepare" c:type="prepare" throws="1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="pool" transfer-ownership="none">
+              <type name="TaskPool" c:type="GstTaskPool*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="cleanup">
+        <callback name="cleanup" c:type="cleanup">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="pool" transfer-ownership="none">
+              <type name="TaskPool" c:type="GstTaskPool*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="push">
+        <callback name="push" c:type="push" throws="1">
+          <return-value transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </return-value>
+          <parameters>
+            <parameter name="pool" transfer-ownership="none">
+              <type name="TaskPool" c:type="GstTaskPool*"/>
+            </parameter>
+            <parameter name="func" transfer-ownership="none">
+              <type name="TaskPoolFunction" c:type="GstTaskPoolFunction"/>
+            </parameter>
+            <parameter name="user_data" transfer-ownership="none" closure="2">
+              <type name="any" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="join">
+        <callback name="join" c:type="join">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="pool" transfer-ownership="none">
+              <type name="TaskPool" c:type="GstTaskPool*"/>
+            </parameter>
+            <parameter name="id" transfer-ownership="none">
+              <type name="any" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <callback name="TaskPoolFunction"
+              c:type="GstTaskPoolFunction"
+              doc="Task function, see gst_task_pool_push()."
+              version="0.10.24">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="void*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <record name="TaskPrivate" c:type="GstTaskPrivate">
+    </record>
+    <enumeration name="TaskState"
+                 doc="The different states a task can be in"
+                 c:type="GstTaskState">
+      <member name="started" value="0" c:identifier="GST_TASK_STARTED"/>
+      <member name="stopped" value="1" c:identifier="GST_TASK_STOPPED"/>
+      <member name="paused" value="2" c:identifier="GST_TASK_PAUSED"/>
+    </enumeration>
+    <record name="TaskThreadCallbacks"
+            c:type="GstTaskThreadCallbacks"
+            doc="thread enters its function.
+to leave its function
+Custom GstTask thread callback functions that can be installed."
+            version="0.10.24">
+      <field name="enter_thread">
+        <type name="any" c:type="pointer"/>
+      </field>
+      <field name="leave_thread">
+        <type name="any" c:type="pointer"/>
+      </field>
+      <field name="_gst_reserved" writable="1">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <record name="Trace" c:type="GstTrace" doc="Opaque #GstTrace structure.">
+      <field name="filename" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="fd" writable="1">
+        <type name="int" c:type="int"/>
+      </field>
+      <field name="buf" writable="1">
+        <type name="TraceEntry" c:type="GstTraceEntry*"/>
+      </field>
+      <field name="bufsize" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="bufoffset" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <constructor name="new"
+                   c:identifier="gst_trace_new"
+                   doc="Create a ringbuffer of @size in the file with @filename to
+store trace results in.">
+        <return-value transfer-ownership="full">
+          <type name="Trace" c:type="GstTrace*"/>
+        </return-value>
+        <parameters>
+          <parameter name="filename" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="size" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="destroy"
+              c:identifier="gst_trace_destroy"
+              doc="Flush an close the previously allocated @trace.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="flush"
+              c:identifier="gst_trace_flush"
+              doc="Flush any pending trace entries in @trace to the trace file.
+flushed.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="text_flush"
+              c:identifier="gst_trace_text_flush"
+              doc="Flush any pending trace entries in @trace to the trace file,
+formatted as a text line with timestamp and sequence numbers.
+flushed.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="set_default"
+              c:identifier="gst_trace_set_default"
+              doc="Set the default #GstTrace to @trace.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+    </record>
+    <record name="TraceEntry" c:type="GstTraceEntry">
+      <field name="timestamp" writable="1">
+        <type name="int64" c:type="gint64"/>
+      </field>
+      <field name="sequence" writable="1">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+      <field name="data" writable="1">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+      <field name="message" writable="1">
+        <array zero-terminated="0" c:type="gchar" fixed-size="112">
+          <type name="int8"/>
+        </array>
+      </field>
+    </record>
+    <record name="TypeFind"
+            c:type="GstTypeFind"
+            doc="Object that stores typefind callbacks. To use with #GstTypeFindFactory.">
+      <field name="peek">
+        <type name="any" c:type="pointer"/>
+      </field>
+      <field name="suggest">
+        <type name="any" c:type="pointer"/>
+      </field>
+      <field name="data" writable="1">
+        <type name="any" c:type="gpointer"/>
+      </field>
+      <field name="get_length">
+        <type name="any" c:type="pointer"/>
+      </field>
+      <field name="_gst_reserved" writable="1">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+      <method name="peek"
+              c:identifier="gst_type_find_peek"
+              doc="Returns the @size bytes of the stream to identify beginning at offset. If
+offset is a positive number, the offset is relative to the beginning of the
+stream, if offset is a negative number the offset is relative to the end of
+the stream. The returned memory is valid until the typefinding function
+returns and must not be freed.">
+        <return-value transfer-ownership="full">
+          <array c:type="guint8*">
+            <type name="uint8"/>
+          </array>
+        </return-value>
+        <parameters>
+          <parameter name="offset" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+          <parameter name="size" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="suggest"
+              c:identifier="gst_type_find_suggest"
+              doc="If a #GstTypeFindFunction calls this function it suggests the caps with the
+given probability. A #GstTypeFindFunction may supply different suggestions
+in one call.
+It is up to the caller of the #GstTypeFindFunction to interpret these values.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="probability" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="caps" transfer-ownership="none">
+            <type name="Caps" c:type="GstCaps*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="suggest_simple"
+              c:identifier="gst_type_find_suggest_simple"
+              doc="arguments passed to gst_structure_new() (ie. triplets of field name,
+field GType and field value)
+If a #GstTypeFindFunction calls this function it suggests the caps with the
+given probability. A #GstTypeFindFunction may supply different suggestions
+in one call. It is up to the caller of the #GstTypeFindFunction to interpret
+these values.
+This function is similar to gst_type_find_suggest(), only that instead of
+passing a #GstCaps argument you can create the caps on the fly in the same
+way as you can with gst_caps_new_simple().
+Make sure you terminate the list of arguments with a NULL argument and that
+the values passed have the correct type (in terms of width in bytes when
+passed to the vararg function - this applies particularly to gdouble and
+guint64 arguments)."
+              version="0.10.20">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="probability" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="media_type" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="fieldname" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_length"
+              c:identifier="gst_type_find_get_length"
+              doc="Get the length of the data stream.">
+        <return-value transfer-ownership="none">
+          <type name="uint64" c:type="guint64"/>
+        </return-value>
+      </method>
+    </record>
+    <class name="TypeFindFactory"
+           c:type="GstTypeFindFactory"
+           doc="Object that stores information about a typefind function."
+           parent="PluginFeature"
+           glib:type-name="GstTypeFindFactory"
+           glib:get-type="gst_type_find_factory_get_type"
+           glib:type-struct="TypeFindFactoryClass">
+      <function name="get_list"
+                c:identifier="gst_type_find_factory_get_list"
+                doc="Gets the list of all registered typefind factories. You must free the
+list using gst_plugin_feature_list_free.
+The returned factories are sorted by highest rank first, and then by
+factory name. (behaviour change since 0.10.26)">
+        <return-value transfer-ownership="full">
+          <type name="GLib.List" c:type="GList*"/>
+        </return-value>
+      </function>
+      <method name="get_extensions"
+              c:identifier="gst_type_find_factory_get_extensions"
+              doc="Gets the extensions associated with a #GstTypeFindFactory. The returned
+array should not be changed. If you need to change stuff in it, you should
+copy it using g_strdupv().  This function may return NULL to indicate
+a 0-length list.">
+        <return-value transfer-ownership="full">
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </return-value>
+      </method>
+      <method name="get_caps"
+              c:identifier="gst_type_find_factory_get_caps"
+              doc="Gets the #GstCaps associated with a typefind factory.">
+        <return-value transfer-ownership="full">
+          <type name="Caps" c:type="GstCaps*"/>
+        </return-value>
+      </method>
+      <method name="call_function"
+              c:identifier="gst_type_find_factory_call_function"
+              doc="members must be set.
+Calls the #GstTypeFindFunction associated with this factory.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="find" transfer-ownership="none">
+            <type name="TypeFind" c:type="GstTypeFind*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <field name="feature">
+        <type name="PluginFeature" c:type="GstPluginFeature"/>
+      </field>
+      <field name="function">
+        <type name="TypeFindFunction" c:type="GstTypeFindFunction"/>
+      </field>
+      <field name="extensions">
+        <type name="utf8" c:type="gchar**"/>
+      </field>
+      <field name="caps">
+        <type name="Caps" c:type="GstCaps*"/>
+      </field>
+      <field name="user_data">
+        <type name="any" c:type="gpointer"/>
+      </field>
+      <field name="user_data_notify">
+        <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </class>
+    <record name="TypeFindFactoryClass"
+            c:type="GstTypeFindFactoryClass"
+            glib:is-gtype-struct-for="TypeFindFactory">
+      <field name="parent">
+        <type name="PluginFeatureClass" c:type="GstPluginFeatureClass"/>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <callback name="TypeFindFunction"
+              c:type="GstTypeFindFunction"
+              doc="A function that will be called by typefinding.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="find" transfer-ownership="none">
+          <type name="TypeFind" c:type="GstTypeFind*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <enumeration name="TypeFindProbability"
+                 doc="The probability of the typefind function. Higher values have more certainty
+in doing a reliable typefind."
+                 c:type="GstTypeFindProbability">
+      <member name="minimum" value="1" c:identifier="GST_TYPE_FIND_MINIMUM"/>
+      <member name="possible"
+              value="50"
+              c:identifier="GST_TYPE_FIND_POSSIBLE"/>
+      <member name="likely" value="80" c:identifier="GST_TYPE_FIND_LIKELY"/>
+      <member name="nearly_certain"
+              value="99"
+              c:identifier="GST_TYPE_FIND_NEARLY_CERTAIN"/>
+      <member name="maximum" value="100" c:identifier="GST_TYPE_FIND_MAXIMUM"/>
+    </enumeration>
+    <record name="TypeNameData"
+            c:type="GstTypeNameData"
+            doc="Structure used for filtering based on @name and @type.">
+      <field name="name" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="type" writable="1">
+        <type name="GType" c:type="GType"/>
+      </field>
+    </record>
+    <interface name="URIHandler"
+               c:type="GstURIHandler"
+               doc="Opaque #GstURIHandler structure."
+               glib:type-name="GstURIHandler"
+               glib:get-type="gst_uri_handler_get_type"
+               glib:type-struct="URIHandlerInterface">
+      <virtual-method name="get_uri" invoker="get_uri">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="set_uri" invoker="set_uri">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="uri" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="get_uri_type"
+              c:identifier="gst_uri_handler_get_uri_type"
+              doc="Gets the type of the given URI handler
+Returns #GST_URI_UNKNOWN if the @handler isn&apos;t implemented correctly.">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="get_protocols"
+              c:identifier="gst_uri_handler_get_protocols"
+              doc="Gets the list of protocols supported by @handler. This list may not be
+modified.
+Returns NULL if the @handler isn&apos;t implemented properly, or the @handler
+doesn&apos;t support any protocols.">
+        <return-value transfer-ownership="full">
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </return-value>
+      </method>
+      <method name="get_uri"
+              c:identifier="gst_uri_handler_get_uri"
+              doc="Gets the currently handled URI.
+Returns NULL if there are no URI currently handled. The returned
+string must not be modified or freed.">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="set_uri"
+              c:identifier="gst_uri_handler_set_uri"
+              doc="Tries to set the URI of the given handler.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="uri" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="new_uri"
+              c:identifier="gst_uri_handler_new_uri"
+              doc="Emits the new-uri signal for a given handler, when that handler has a new URI.
+This function should only be called by URI handlers themselves.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="uri" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <glib:signal name="new-uri"
+                   doc="The URI of the given @handler has changed.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="uri" transfer-ownership="none">
+            <type name="utf8" c:type="gchararray"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </interface>
+    <record name="URIHandlerInterface"
+            c:type="GstURIHandlerInterface"
+            glib:is-gtype-struct-for="URIHandler"
+            doc="This is for use by bindings that need to pass context when creating a URI
+Handler. If implemented, get_protocols will be used in preference to
+Any #GstElement using this interface should implement these methods.">
+      <field name="parent">
+        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+      </field>
+      <field name="new_uri">
+        <callback name="new_uri" c:type="new_uri">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="handler" transfer-ownership="none">
+              <type name="URIHandler" c:type="GstURIHandler*"/>
+            </parameter>
+            <parameter name="uri" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_type">
+        <callback name="get_type" c:type="get_type">
+          <return-value transfer-ownership="full">
+            <type name="URIType" c:type="GstURIType"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="get_protocols">
+        <callback name="get_protocols" c:type="get_protocols">
+          <return-value transfer-ownership="full">
+            <array c:type="gchar**">
+              <type name="utf8"/>
+            </array>
+          </return-value>
+        </callback>
+      </field>
+      <field name="get_uri">
+        <callback name="get_uri" c:type="get_uri">
+          <return-value transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </return-value>
+          <parameters>
+            <parameter name="handler" transfer-ownership="none">
+              <type name="URIHandler" c:type="GstURIHandler*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_uri">
+        <callback name="set_uri" c:type="set_uri">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="handler" transfer-ownership="none">
+              <type name="URIHandler" c:type="GstURIHandler*"/>
+            </parameter>
+            <parameter name="uri" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_type_full">
+        <callback name="get_type_full" c:type="get_type_full">
+          <return-value transfer-ownership="full">
+            <type name="URIType" c:type="GstURIType"/>
+          </return-value>
+          <parameters>
+            <parameter name="type" transfer-ownership="none">
+              <type name="GType" c:type="GType"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_protocols_full">
+        <callback name="get_protocols_full" c:type="get_protocols_full">
+          <return-value transfer-ownership="full">
+            <array c:type="gchar**">
+              <type name="utf8"/>
+            </array>
+          </return-value>
+          <parameters>
+            <parameter name="type" transfer-ownership="none">
+              <type name="GType" c:type="GType"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="2">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <enumeration name="URIType"
+                 doc="The different types of URI direction."
+                 c:type="GstURIType">
+      <member name="unknown" value="0" c:identifier="GST_URI_UNKNOWN"/>
+      <member name="sink" value="1" c:identifier="GST_URI_SINK"/>
+      <member name="src" value="2" c:identifier="GST_URI_SRC"/>
+    </enumeration>
+    <constant name="USECOND" value="0">
+      <type name="int"/>
+    </constant>
+    <constant name="VALUE_EQUAL" value="0">
+      <type name="int"/>
+    </constant>
+    <constant name="VALUE_GREATER_THAN" value="1">
+      <type name="int"/>
+    </constant>
+    <constant name="VALUE_LESS_THAN" value="-1">
+      <type name="int"/>
+    </constant>
+    <constant name="VALUE_UNORDERED" value="2">
+      <type name="int"/>
+    </constant>
+    <callback name="ValueCompareFunc"
+              c:type="GstValueCompareFunc"
+              doc="Used together with gst_value_compare() to compare #GValue items.
+or GST_VALUE_UNORDERED">
+      <return-value transfer-ownership="none">
+        <type name="int" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="value1" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="value2" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="ValueDeserializeFunc"
+              c:type="GstValueDeserializeFunc"
+              doc="Used by gst_value_deserialize() to parse a non-binary form into the #GValue.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="dest" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="s" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="ValueIntersectFunc"
+              c:type="GstValueIntersectFunc"
+              doc="Used by gst_value_intersect() to perform intersection for a specific #GValue
+type. If the intersection is non-empty, the result is
+placed in @dest and TRUE is returned.  If the intersection is
+empty, @dest is unmodified and FALSE is returned.
+Register a new implementation with gst_value_register_intersect_func().">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="dest" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="value1" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="value2" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="ValueSerializeFunc"
+              c:type="GstValueSerializeFunc"
+              doc="Used by gst_value_serialize() to obtain a non-binary form of the #GValue.">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="value1" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="ValueSubtractFunc"
+              c:type="GstValueSubtractFunc"
+              doc="Used by gst_value_subtract() to perform subtraction for a specific #GValue
+type. Register a new implementation with gst_value_register_subtract_func().">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="dest" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="minuend" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="subtrahend" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <record name="ValueTable"
+            c:type="GstValueTable"
+            doc="VTable for the #GValue @type.">
+      <field name="type" writable="1">
+        <type name="GType" c:type="GType"/>
+      </field>
+      <field name="compare" writable="1">
+        <type name="ValueCompareFunc" c:type="GstValueCompareFunc"/>
+      </field>
+      <field name="serialize" writable="1">
+        <type name="ValueSerializeFunc" c:type="GstValueSerializeFunc"/>
+      </field>
+      <field name="deserialize" writable="1">
+        <type name="ValueDeserializeFunc" c:type="GstValueDeserializeFunc"/>
+      </field>
+      <field name="_gst_reserved" writable="1">
+        <array zero-terminated="0" c:type="void*" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <callback name="ValueUnionFunc"
+              c:type="GstValueUnionFunc"
+              doc="Used by gst_value_union() to perform unification for a specific #GValue
+type. Register a new implementation with gst_value_register_union_func().">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="dest" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="value1" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="value2" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <class name="XML"
+           c:type="GstXML"
+           doc="XML parser object"
+           parent="Object"
+           glib:type-name="GstXML"
+           glib:get-type="gst_xml_get_type"
+           glib:type-struct="XMLClass">
+      <constructor name="new"
+                   c:identifier="gst_xml_new"
+                   doc="Create a new GstXML parser object.">
+        <return-value transfer-ownership="full">
+          <type name="XML" c:type="GstXML*"/>
+        </return-value>
+      </constructor>
+      <function name="write"
+                c:identifier="gst_xml_write"
+                doc="Converts the given element into an XML presentation.">
+        <return-value transfer-ownership="full">
+          <type name="libxml2.DocPtr" c:type="xmlDocPtr"/>
+        </return-value>
+        <parameters>
+          <parameter name="element" transfer-ownership="none">
+            <type name="Element" c:type="GstElement*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="make_element"
+                c:identifier="gst_xml_make_element"
+                doc="Load the element from the XML description">
+        <return-value transfer-ownership="full">
+          <type name="Element" c:type="GstElement*"/>
+        </return-value>
+        <parameters>
+          <parameter name="cur" transfer-ownership="none">
+            <type name="libxml2.NodePtr" c:type="xmlNodePtr"/>
+          </parameter>
+          <parameter name="parent" transfer-ownership="none">
+            <type name="Object" c:type="GstObject*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <virtual-method name="object_saved">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="Object" c:type="GstObject*"/>
+          </parameter>
+          <parameter name="self" transfer-ownership="none">
+            <type name="libxml2.NodePtr" c:type="xmlNodePtr"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="parse_doc"
+              c:identifier="gst_xml_parse_doc"
+              doc="Fills the GstXML object with the elements from the
+xmlDocPtr.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="doc" transfer-ownership="none">
+            <type name="libxml2.DocPtr" c:type="xmlDocPtr"/>
+          </parameter>
+          <parameter name="root" transfer-ownership="none">
+            <array c:type="guchar*">
+              <type name="uint8"/>
+            </array>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_file"
+              c:identifier="gst_xml_parse_file"
+              doc="Fills the GstXML object with the corresponding elements from
+the XML file fname. Optionally it will only build the element from
+the element node root (if it is not NULL). This feature is useful
+if you only want to build a specific element from an XML file
+but not the pipeline it is embedded in.
+Pass &quot;-&quot; as fname to read from stdin. You can also pass a URI
+of any format that libxml supports, including http.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="fname" transfer-ownership="none">
+            <array c:type="guchar*">
+              <type name="uint8"/>
+            </array>
+          </parameter>
+          <parameter name="root" transfer-ownership="none">
+            <array c:type="guchar*">
+              <type name="uint8"/>
+            </array>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_memory"
+              c:identifier="gst_xml_parse_memory"
+              doc="Fills the GstXML object with the corresponding elements from
+an in memory XML buffer.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="buffer" transfer-ownership="none">
+            <array c:type="guchar*">
+              <type name="uint8"/>
+            </array>
+          </parameter>
+          <parameter name="size" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="root" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_element"
+              c:identifier="gst_xml_get_element"
+              doc="This function is used to get a pointer to the GstElement corresponding
+to name in the pipeline description. You would use this if you have
+to do anything to the element after loading.">
+        <return-value transfer-ownership="full">
+          <type name="Element" c:type="GstElement*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <array c:type="guchar*">
+              <type name="uint8"/>
+            </array>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_topelements"
+              c:identifier="gst_xml_get_topelements"
+              doc="Retrieve a list of toplevel elements.
+of the list and must not free or modify the list. The caller also does not
+own a reference to any of the elements in the list and should obtain its own
+reference using gst_object_ref() if necessary.">
+        <return-value transfer-ownership="full">
+          <type name="GLib.List" c:type="GList*"/>
+        </return-value>
+      </method>
+      <field name="object">
+        <type name="Object" c:type="GstObject"/>
+      </field>
+      <field name="topelements">
+        <type name="GLib.List" c:type="GList*"/>
+      </field>
+      <field name="ns">
+        <type name="libxml2.NsPtr" c:type="xmlNsPtr"/>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+      <glib:signal name="object-loaded"
+                   doc="Signals that a new object has been deserialized.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="Object" c:type="GstObject"/>
+          </parameter>
+          <parameter name="xml_node" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <record name="XMLClass"
+            c:type="GstXMLClass"
+            glib:is-gtype-struct-for="XML">
+      <field name="parent_class">
+        <type name="ObjectClass" c:type="GstObjectClass"/>
+      </field>
+      <field name="object_loaded">
+        <callback name="object_loaded" c:type="object_loaded">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="xml" transfer-ownership="none">
+              <type name="XML" c:type="GstXML*"/>
+            </parameter>
+            <parameter name="object" transfer-ownership="none">
+              <type name="Object" c:type="GstObject*"/>
+            </parameter>
+            <parameter name="self" transfer-ownership="none">
+              <type name="libxml2.NodePtr" c:type="xmlNodePtr"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="object_saved">
+        <callback name="object_saved" c:type="object_saved">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="xml" transfer-ownership="none">
+              <type name="XML" c:type="GstXML*"/>
+            </parameter>
+            <parameter name="object" transfer-ownership="none">
+              <type name="Object" c:type="GstObject*"/>
+            </parameter>
+            <parameter name="self" transfer-ownership="none">
+              <type name="libxml2.NodePtr" c:type="xmlNodePtr"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <function name="alloc_trace_available"
+              c:identifier="gst_alloc_trace_available"
+              doc="Check if alloc tracing was compiled into the core
+tracing enabled.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+    </function>
+    <function name="alloc_trace_get"
+              c:identifier="gst_alloc_trace_get"
+              doc="Get the named alloc trace object.
+no alloc tracer was registered with that name.">
+      <return-value transfer-ownership="full">
+        <type name="AllocTrace" c:type="GstAllocTrace*"/>
+      </return-value>
+      <parameters>
+        <parameter name="name" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="alloc_trace_list"
+              c:identifier="gst_alloc_trace_list"
+              doc="Get a list of all registered alloc trace objects.">
+      <return-value transfer-ownership="none">
+        <type name="GLib.List" c:type="GList*"/>
+      </return-value>
+    </function>
+    <function name="alloc_trace_live_all"
+              c:identifier="gst_alloc_trace_live_all"
+              doc="Get the total number of live registered alloc trace objects.">
+      <return-value transfer-ownership="none">
+        <type name="int" c:type="int"/>
+      </return-value>
+    </function>
+    <function name="alloc_trace_print_all"
+              c:identifier="gst_alloc_trace_print_all"
+              doc="Print the status of all registered alloc trace objects.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="alloc_trace_print_live"
+              c:identifier="gst_alloc_trace_print_live"
+              doc="Print the status of all registered alloc trace objects, ignoring those
+without live objects.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="alloc_trace_set_flags_all"
+              c:identifier="gst_alloc_trace_set_flags_all"
+              doc="Enable the specified options on all registered alloc trace
+objects.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="flags" transfer-ownership="none">
+          <type name="AllocTraceFlags" c:type="GstAllocTraceFlags"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="atomic_int_set"
+              c:identifier="gst_atomic_int_set"
+              doc="Unconditionally sets the atomic integer to @value."
+              deprecated="Use g_atomic_int_set().">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="atomic_int" direction="out" transfer-ownership="full">
+          <type name="int" c:type="gint*"/>
+        </parameter>
+        <parameter name="value" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_try_new_and_alloc"
+              c:identifier="gst_buffer_try_new_and_alloc"
+              doc="Tries to create a newly allocated buffer with data of the given size. If
+the requested amount of memory can&apos;t be allocated, NULL will be returned.
+The buffer memory is not cleared.
+Note that when @size == 0, the buffer data pointer will be NULL.
+MT safe."
+              version="0.10.13">
+      <return-value transfer-ownership="full">
+        <type name="Buffer" c:type="GstBuffer*"/>
+      </return-value>
+      <parameters>
+        <parameter name="size" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="caps_from_string"
+              c:identifier="gst_caps_from_string"
+              doc="Converts @caps from a string representation.">
+      <return-value transfer-ownership="full">
+        <type name="Caps" c:type="GstCaps*"/>
+      </return-value>
+      <parameters>
+        <parameter name="string" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="caps_load_thyself"
+              c:identifier="gst_caps_load_thyself"
+              doc="Creates a #GstCaps from its XML serialization.">
+      <return-value transfer-ownership="full">
+        <type name="Caps" c:type="GstCaps*"/>
+      </return-value>
+      <parameters>
+        <parameter name="parent" transfer-ownership="none">
+          <type name="libxml2.NodePtr" c:type="xmlNodePtr"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="child_proxy_child_added"
+              c:identifier="gst_child_proxy_child_added"
+              doc="Emits the &quot;child-added&quot; signal.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="object" transfer-ownership="none">
+          <type name="Object" c:type="GstObject*"/>
+        </parameter>
+        <parameter name="child" transfer-ownership="none">
+          <type name="Object" c:type="GstObject*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="child_proxy_child_removed"
+              c:identifier="gst_child_proxy_child_removed"
+              doc="Emits the &quot;child-removed&quot; signal.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="object" transfer-ownership="none">
+          <type name="Object" c:type="GstObject*"/>
+        </parameter>
+        <parameter name="child" transfer-ownership="none">
+          <type name="Object" c:type="GstObject*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="child_proxy_get"
+              c:identifier="gst_child_proxy_get"
+              doc="Gets properties of the parent object and its children.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="object" transfer-ownership="none">
+          <type name="Object" c:type="GstObject*"/>
+        </parameter>
+        <parameter name="first_property_name" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter transfer-ownership="none">
+          <varargs>
+          </varargs>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="child_proxy_get_property"
+              c:identifier="gst_child_proxy_get_property"
+              doc="Gets a single property using the GstChildProxy mechanism.
+You are responsible for for freeing it by calling g_value_unset()">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="object" transfer-ownership="none">
+          <type name="Object" c:type="GstObject*"/>
+        </parameter>
+        <parameter name="name" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="child_proxy_lookup"
+              c:identifier="gst_child_proxy_lookup"
+              doc="Looks up which object and #GParamSpec would be effected by the given @name.
+case the values for @pspec and @target are not modified. Unref @target after
+usage.
+MT safe.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="object" transfer-ownership="none">
+          <type name="Object" c:type="GstObject*"/>
+        </parameter>
+        <parameter name="name" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="target" transfer-ownership="none">
+          <type name="Object" c:type="GstObject**"/>
+        </parameter>
+        <parameter name="pspec" transfer-ownership="none">
+          <type name="GObject.ParamSpec" c:type="GParamSpec**"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="child_proxy_set"
+              c:identifier="gst_child_proxy_set"
+              doc="Sets properties of the parent object and its children.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="object" transfer-ownership="none">
+          <type name="Object" c:type="GstObject*"/>
+        </parameter>
+        <parameter name="first_property_name" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter transfer-ownership="none">
+          <varargs>
+          </varargs>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="child_proxy_set_property"
+              c:identifier="gst_child_proxy_set_property"
+              doc="Sets a single property using the GstChildProxy mechanism.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="object" transfer-ownership="none">
+          <type name="Object" c:type="GstObject*"/>
+        </parameter>
+        <parameter name="name" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="class_signal_connect"
+              c:identifier="gst_class_signal_connect">
+      <return-value transfer-ownership="none">
+        <type name="uint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="klass" transfer-ownership="none">
+          <type name="ObjectClass" c:type="GstObjectClass*"/>
+        </parameter>
+        <parameter name="name" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="func" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="func_data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="class_signal_emit_by_name"
+              c:identifier="gst_class_signal_emit_by_name"
+              doc="emits the named class signal.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="object" transfer-ownership="none">
+          <type name="Object" c:type="GstObject*"/>
+        </parameter>
+        <parameter name="name" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="self" transfer-ownership="none">
+          <type name="libxml2.NodePtr" c:type="xmlNodePtr"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="debug_add_log_function"
+              c:identifier="gst_debug_add_log_function"
+              doc="Adds the logging function to the list of logging functions.
+Be sure to use G_GNUC_NO_INSTRUMENT on that function, it is needed.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="func"
+                   transfer-ownership="none"
+                   scope="call"
+                   closure="1">
+          <type name="LogFunction" c:type="GstLogFunction"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="debug_construct_term_color"
+              c:identifier="gst_debug_construct_term_color"
+              doc="Constructs a string that can be used for getting the desired color in color
+terminals.
+You need to free the string after use.">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="colorinfo" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="debug_construct_win_color"
+              c:identifier="gst_debug_construct_win_color"
+              doc="Constructs an integer that can be used for getting the desired color in
+windows&apos; terminals (cmd.exe). As there is no mean to underline, we simply
+ignore this attribute.
+This function returns 0 on non-windows machines."
+              version="0.10.23">
+      <return-value transfer-ownership="none">
+        <type name="int" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="colorinfo" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="debug_get_all_categories"
+              c:identifier="gst_debug_get_all_categories"
+              doc="Returns a snapshot of a all categories that are currently in use . This list
+may change anytime.
+The caller has to free the list after use.">
+      <return-value transfer-ownership="full">
+        <type name="GLib.SList" c:type="GSList*"/>
+      </return-value>
+    </function>
+    <function name="debug_get_default_threshold"
+              c:identifier="gst_debug_get_default_threshold"
+              doc="Returns the default threshold that is used for new categories.">
+      <return-value transfer-ownership="full">
+        <type name="DebugLevel" c:type="GstDebugLevel"/>
+      </return-value>
+    </function>
+    <function name="debug_is_active"
+              c:identifier="gst_debug_is_active"
+              doc="Checks if debugging output is activated.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+    </function>
+    <function name="debug_is_colored"
+              c:identifier="gst_debug_is_colored"
+              doc="Checks if the debugging output should be colored.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+    </function>
+    <function name="debug_level_get_name"
+              c:identifier="gst_debug_level_get_name"
+              doc="Get the string representation of a debugging level">
+      <return-value transfer-ownership="none">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="level" transfer-ownership="none">
+          <type name="DebugLevel" c:type="GstDebugLevel"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="debug_log"
+              c:identifier="gst_debug_log"
+              doc="Logs the given message using the currently registered debugging handlers.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="category" transfer-ownership="none">
+          <type name="DebugCategory" c:type="GstDebugCategory*"/>
+        </parameter>
+        <parameter name="level" transfer-ownership="none">
+          <type name="DebugLevel" c:type="GstDebugLevel"/>
+        </parameter>
+        <parameter name="file" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="function" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="line" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="object" transfer-ownership="none">
+          <type name="GObject.Object" c:type="GObject*"/>
+        </parameter>
+        <parameter name="format" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter transfer-ownership="none">
+          <varargs>
+          </varargs>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="debug_log_default"
+              c:identifier="gst_debug_log_default"
+              doc="The default logging handler used by GStreamer. Logging functions get called
+whenever a macro like GST_DEBUG or similar is used. This function outputs the
+message and additional info using the glib error handler.
+You can add other handlers by using gst_debug_add_log_function().
+And you can remove this handler by calling
+gst_debug_remove_log_function(gst_debug_log_default);">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="category" transfer-ownership="none">
+          <type name="DebugCategory" c:type="GstDebugCategory*"/>
+        </parameter>
+        <parameter name="level" transfer-ownership="none">
+          <type name="DebugLevel" c:type="GstDebugLevel"/>
+        </parameter>
+        <parameter name="file" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="function" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="line" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="object" transfer-ownership="none">
+          <type name="GObject.Object" c:type="GObject*"/>
+        </parameter>
+        <parameter name="message" transfer-ownership="none">
+          <type name="DebugMessage" c:type="GstDebugMessage*"/>
+        </parameter>
+        <parameter name="unused" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="debug_print_stack_trace"
+              c:identifier="gst_debug_print_stack_trace"
+              doc="If GST_ENABLE_FUNC_INSTRUMENTATION is defined a stacktrace is available for
+gstreamer code, which can be printed with this function.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="debug_remove_log_function"
+              c:identifier="gst_debug_remove_log_function"
+              doc="Removes all registered instances of the given logging functions.">
+      <return-value transfer-ownership="none">
+        <type name="uint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="func" transfer-ownership="none" scope="call">
+          <type name="LogFunction" c:type="GstLogFunction"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="debug_remove_log_function_by_data"
+              c:identifier="gst_debug_remove_log_function_by_data"
+              doc="Removes all registered instances of log functions with the given user data.">
+      <return-value transfer-ownership="none">
+        <type name="uint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="debug_set_active"
+              c:identifier="gst_debug_set_active"
+              doc="If activated, debugging messages are sent to the debugging
+handlers.
+It makes sense to deactivate it for speed issues.
+&lt;note&gt;&lt;para&gt;This function is not threadsafe. It makes sense to only call it
+during initialization.&lt;/para&gt;&lt;/note&gt;">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="active" transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="debug_set_colored"
+              c:identifier="gst_debug_set_colored"
+              doc="Sets or unsets the use of coloured debugging output.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="colored" transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="debug_set_default_threshold"
+              c:identifier="gst_debug_set_default_threshold"
+              doc="Sets the default threshold to the given level and updates all categories to
+use this threshold.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="level" transfer-ownership="none">
+          <type name="DebugLevel" c:type="GstDebugLevel"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="debug_set_threshold_for_name"
+              c:identifier="gst_debug_set_threshold_for_name"
+              doc="Sets all categories which match the given glob style pattern to the given
+level.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="name" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="level" transfer-ownership="none">
+          <type name="DebugLevel" c:type="GstDebugLevel"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="debug_unset_threshold_for_name"
+              c:identifier="gst_debug_unset_threshold_for_name"
+              doc="Resets all categories with the given name back to the default level.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="name" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="default_registry_check_feature_version"
+              c:identifier="gst_default_registry_check_feature_version"
+              doc="Checks whether a plugin feature by the given name exists in the
+default registry and whether its version is at least the
+version required.
+the same as the required version or newer, and #FALSE otherwise.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="feature_name" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="min_major" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="min_minor" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="min_micro" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="deinit"
+              c:identifier="gst_deinit"
+              doc="Clean up any resources created by GStreamer in gst_init().
+It is normally not needed to call this function in a normal application
+as the resources will automatically be freed when the program terminates.
+This function is therefore mostly used by testsuites and other memory
+profiling tools.
+After this call GStreamer (including this method) should not be used anymore.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="error_get_message"
+              c:identifier="gst_error_get_message"
+              doc="Get a string describing the error message in the current locale.
+current locale.">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="domain" transfer-ownership="none">
+          <type name="GLib.Quark" c:type="GQuark"/>
+        </parameter>
+        <parameter name="code" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="event_type_get_flags"
+              c:identifier="gst_event_type_get_flags"
+              doc="Gets the #GstEventTypeFlags associated with @type.">
+      <return-value transfer-ownership="full">
+        <type name="EventTypeFlags" c:type="GstEventTypeFlags"/>
+      </return-value>
+      <parameters>
+        <parameter name="type" transfer-ownership="none">
+          <type name="EventType" c:type="GstEventType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="event_type_get_name"
+              c:identifier="gst_event_type_get_name"
+              doc="Get a printable name for the given event type. Do not modify or free.">
+      <return-value transfer-ownership="none">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="type" transfer-ownership="none">
+          <type name="EventType" c:type="GstEventType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="event_type_to_quark"
+              c:identifier="gst_event_type_to_quark"
+              doc="Get the unique quark for the given event type.">
+      <return-value transfer-ownership="full">
+        <type name="GLib.Quark" c:type="GQuark"/>
+      </return-value>
+      <parameters>
+        <parameter name="type" transfer-ownership="none">
+          <type name="EventType" c:type="GstEventType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="filter_run"
+              c:identifier="gst_filter_run"
+              doc="Iterates over the elements in @list, calling @func with the
+list item data for each item.  If @func returns TRUE, @data is
+prepended to the list of results returned.  If @first is true,
+the search is halted after the first result is found.
+Since gst_filter_run() knows nothing about the type of @data, no
+reference will be taken (if @data refers to an object) and no copy of
+results.
+(the data contained in the list is a flat copy and does need to be
+unreferenced or freed).">
+      <return-value transfer-ownership="full" doc="when no longer needed">
+        <type name="GLib.List" c:type="GList*"/>
+      </return-value>
+      <parameters>
+        <parameter name="list" transfer-ownership="none">
+          <type name="GLib.List" c:type="GList*"/>
+        </parameter>
+        <parameter name="func" transfer-ownership="none" scope="call">
+          <type name="FilterFunc" c:type="GstFilterFunc"/>
+        </parameter>
+        <parameter name="first" transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="flow_get_name"
+              c:identifier="gst_flow_get_name"
+              doc="Gets a string representing the given flow return.">
+      <return-value transfer-ownership="none">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="ret" transfer-ownership="none">
+          <type name="FlowReturn" c:type="GstFlowReturn"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="flow_to_quark"
+              c:identifier="gst_flow_to_quark"
+              doc="Get the unique quark for the given GstFlowReturn.
+invalid return was specified.">
+      <return-value transfer-ownership="full">
+        <type name="GLib.Quark" c:type="GQuark"/>
+      </return-value>
+      <parameters>
+        <parameter name="ret" transfer-ownership="none">
+          <type name="FlowReturn" c:type="GstFlowReturn"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="format_get_by_nick"
+              c:identifier="gst_format_get_by_nick"
+              doc="Return the format registered with the given nick.
+if the format was not registered.">
+      <return-value transfer-ownership="full">
+        <type name="Format" c:type="GstFormat"/>
+      </return-value>
+      <parameters>
+        <parameter name="nick" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="format_get_details"
+              c:identifier="gst_format_get_details"
+              doc="Get details about the given format.
+MT safe.">
+      <return-value transfer-ownership="none">
+        <type name="FormatDefinition" c:type="GstFormatDefinition*"/>
+      </return-value>
+      <parameters>
+        <parameter name="format" transfer-ownership="none">
+          <type name="Format" c:type="GstFormat"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="format_get_name"
+              c:identifier="gst_format_get_name"
+              doc="Get a printable name for the given format. Do not modify or free.
+the format is unknown.">
+      <return-value transfer-ownership="none">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="format" transfer-ownership="none">
+          <type name="Format" c:type="GstFormat"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="format_iterate_definitions"
+              c:identifier="gst_format_iterate_definitions"
+              doc="Iterate all the registered formats. The format definition is read
+only.">
+      <return-value transfer-ownership="full">
+        <type name="Iterator" c:type="GstIterator*"/>
+      </return-value>
+    </function>
+    <function name="format_register"
+              c:identifier="gst_format_register"
+              doc="Create a new GstFormat based on the nick or return an
+already registered format with that nick.
+with the same nick.
+MT safe.">
+      <return-value transfer-ownership="full">
+        <type name="Format" c:type="GstFormat"/>
+      </return-value>
+      <parameters>
+        <parameter name="nick" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="description" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="format_to_quark"
+              c:identifier="gst_format_to_quark"
+              doc="Get the unique quark for the given format.
+is unknown.">
+      <return-value transfer-ownership="full">
+        <type name="GLib.Quark" c:type="GQuark"/>
+      </return-value>
+      <parameters>
+        <parameter name="format" transfer-ownership="none">
+          <type name="Format" c:type="GstFormat"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="formats_contains"
+              c:identifier="gst_formats_contains"
+              doc="See if the given format is inside the format array.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="formats" transfer-ownership="none">
+          <type name="Format" c:type="GstFormat*"/>
+        </parameter>
+        <parameter name="format" transfer-ownership="none">
+          <type name="Format" c:type="GstFormat"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="implements_interface_cast"
+              c:identifier="gst_implements_interface_cast"
+              doc="cast a given object to an interface type, and check whether this
+interface is supported for this specific instance.">
+      <return-value transfer-ownership="none">
+        <type name="any" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="from"
+                   transfer-ownership="none"
+                   doc="from which to cast to the interface">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="type" transfer-ownership="none">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="implements_interface_check"
+              c:identifier="gst_implements_interface_check"
+              doc="check a given object for an interface implementation, and check
+whether this interface is supported for this specific instance.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="from"
+                   transfer-ownership="none"
+                   doc="from which to check from for the interface">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="type" transfer-ownership="none">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="init"
+              c:identifier="gst_init"
+              doc="Initializes the GStreamer library, setting up internal path lists,
+registering built-in elements, and loading standard plugins.
+Unless the plugin registry is disabled at compile time, the registry will be
+loaded. By default this will also check if the registry cache needs to be
+updated and rescan all plugins if needed. See gst_update_registry() for
+details and section
+&lt;link linkend=&quot;gst-running&quot;&gt;Running GStreamer Applications&lt;/link&gt;
+for how to disable automatic registry updates.
+This function should be called before calling any other GLib functions. If
+this is not an option, your program must initialise the GLib thread system
+using g_thread_init() before any other GLib functions are called.
+&lt;note&gt;&lt;para&gt;
+This function will terminate your program if it was unable to initialize
+GStreamer for some reason.  If you want your program to fall back,
+use gst_init_check() instead.
+&lt;/para&gt;&lt;/note&gt;
+functions in other glib-style libraries, such as gtk_init().  In
+particular, unknown command line options cause this function to
+abort program execution.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="argc"
+                   direction="inout"
+                   transfer-ownership="full"
+                   doc="pointer to application&apos;s argc">
+          <type name="int" c:type="int*"/>
+        </parameter>
+        <parameter name="argv"
+                   direction="inout"
+                   transfer-ownership="full"
+                   allow-none="1"
+                   doc="pointer to application&apos;s argv">
+          <array length="0" c:type="char**">
+            <type name="utf8"/>
+          </array>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="init_check"
+              c:identifier="gst_init_check"
+              doc="Initializes the GStreamer library, setting up internal path lists,
+registering built-in elements, and loading standard plugins.
+This function will return %FALSE if GStreamer could not be initialized
+for some reason.  If you want your program to fail fatally,
+use gst_init() instead.
+This function should be called before calling any other GLib functions. If
+this is not an option, your program must initialise the GLib thread system
+using g_thread_init() before any other GLib functions are called."
+              throws="1">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="argc"
+                   direction="inout"
+                   transfer-ownership="full"
+                   doc="pointer to application&apos;s argc">
+          <type name="int" c:type="int*"/>
+        </parameter>
+        <parameter name="argv"
+                   direction="inout"
+                   transfer-ownership="full"
+                   allow-none="1"
+                   doc="pointer to application&apos;s argv">
+          <array length="0" c:type="char**">
+            <type name="utf8"/>
+          </array>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="init_get_option_group"
+              c:identifier="gst_init_get_option_group"
+              doc="Returns a #GOptionGroup with GStreamer&apos;s argument specifications. The
+group is set up to use standard GOption callbacks, so when using this
+group in combination with GOption parsing methods, all argument parsing
+and initialization is automated.
+This function is useful if you want to integrate GStreamer with other
+libraries that use GOption (see g_option_context_add_group() ).
+If you use this function, you should make sure you initialise the GLib
+threading system as one of the very first things in your program
+(see the example at the beginning of this section).">
+      <return-value transfer-ownership="full">
+        <type name="GLib.OptionGroup" c:type="GOptionGroup*"/>
+      </return-value>
+    </function>
+    <function name="is_tag_list"
+              c:identifier="gst_is_tag_list"
+              doc="Checks if the given pointer is a taglist.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="p" transfer-ownership="none">
+          <type name="any" c:type="gconstpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="message_type_get_name"
+              c:identifier="gst_message_type_get_name"
+              doc="Get a printable name for the given message type. Do not modify or free.">
+      <return-value transfer-ownership="none">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="type" transfer-ownership="none">
+          <type name="MessageType" c:type="GstMessageType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="message_type_to_quark"
+              c:identifier="gst_message_type_to_quark"
+              doc="Get the unique quark for the given message type.">
+      <return-value transfer-ownership="full">
+        <type name="GLib.Quark" c:type="GQuark"/>
+      </return-value>
+      <parameters>
+        <parameter name="type" transfer-ownership="none">
+          <type name="MessageType" c:type="GstMessageType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="param_spec_fraction"
+              c:identifier="gst_param_spec_fraction"
+              doc="This function creates a fraction GParamSpec for use by objects/elements
+that want to expose properties of fraction type. This function is typically
+used in connection with g_object_class_install_property() in a GObjects&apos;s
+instance_init function."
+              version="0.10.14">
+      <return-value transfer-ownership="full">
+        <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
+      </return-value>
+      <parameters>
+        <parameter name="name" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="nick" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="blurb" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="min_num" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="min_denom" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="max_num" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="max_denom" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="default_num" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="default_denom" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="flags" transfer-ownership="none">
+          <type name="GObject.ParamFlags" c:type="GParamFlags"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="param_spec_mini_object"
+              c:identifier="gst_param_spec_mini_object"
+              doc="Creates a new #GParamSpec instance that hold #GstMiniObject references.">
+      <return-value transfer-ownership="full">
+        <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
+      </return-value>
+      <parameters>
+        <parameter name="name" transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+        <parameter name="nick" transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+        <parameter name="blurb" transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+        <parameter name="object_type" transfer-ownership="none">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="flags" transfer-ownership="none">
+          <type name="GObject.ParamFlags" c:type="GParamFlags"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="parse_bin_from_description"
+              c:identifier="gst_parse_bin_from_description"
+              doc="for unlinked source or sink pads within the bin
+This is a convenience wrapper around gst_parse_launch() to create a
+#GstBin from a gst-launch-style pipeline description. See
+gst_parse_launch() and the gst-launch man page for details about the
+syntax. Ghost pads on the bin for unlinked source or sink pads
+within the bin can automatically be created (but only a maximum of
+one ghost pad for each direction will be created; if you expect
+multiple unlinked source pads or multiple unlinked sink pads
+and want them all ghosted, you will have to create the ghost pads
+yourself)."
+              version="0.10.3"
+              throws="1">
+      <return-value transfer-ownership="full">
+        <type name="Element" c:type="GstElement*"/>
+      </return-value>
+      <parameters>
+        <parameter name="bin_description" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="ghost_unlinked_pads" transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="parse_bin_from_description_full"
+              c:identifier="gst_parse_bin_from_description_full"
+              doc="for unlinked source or sink pads within the bin
+This is a convenience wrapper around gst_parse_launch() to create a
+#GstBin from a gst-launch-style pipeline description. See
+gst_parse_launch() and the gst-launch man page for details about the
+syntax. Ghost pads on the bin for unlinked source or sink pads
+within the bin can automatically be created (but only a maximum of
+one ghost pad for each direction will be created; if you expect
+multiple unlinked source pads or multiple unlinked sink pads
+and want them all ghosted, you will have to create the ghost pads
+yourself)."
+              version="0.10.20"
+              throws="1">
+      <return-value transfer-ownership="full">
+        <type name="Element" c:type="GstElement*"/>
+      </return-value>
+      <parameters>
+        <parameter name="bin_description" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="ghost_unlinked_pads" transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </parameter>
+        <parameter name="context" transfer-ownership="none" doc="or %NULL">
+          <type name="ParseContext" c:type="GstParseContext*"/>
+        </parameter>
+        <parameter name="flags" transfer-ownership="none">
+          <type name="ParseFlags" c:type="GstParseFlags"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="parse_launch"
+              c:identifier="gst_parse_launch"
+              doc="Create a new pipeline based on command line syntax.
+Please note that you might get a return value that is not %NULL even though
+the @error is set. In this case there was a recoverable parsing error and you
+can try to play the pipeline.
+element is specified by the @pipeline_description, all elements are put into
+a #GstPipeline, which than is returned."
+              throws="1">
+      <return-value transfer-ownership="full">
+        <type name="Element" c:type="GstElement*"/>
+      </return-value>
+      <parameters>
+        <parameter name="pipeline_description" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="parse_launch_full"
+              c:identifier="gst_parse_launch_full"
+              doc="Create a new pipeline based on command line syntax.
+Please note that you might get a return value that is not %NULL even though
+the @error is set. In this case there was a recoverable parsing error and you
+can try to play the pipeline.
+element is specified by the @pipeline_description, all elements are put into
+a #GstPipeline, which then is returned."
+              version="0.10.20"
+              throws="1">
+      <return-value transfer-ownership="full">
+        <type name="Element" c:type="GstElement*"/>
+      </return-value>
+      <parameters>
+        <parameter name="pipeline_description" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="context" transfer-ownership="none" doc="or %NULL">
+          <type name="ParseContext" c:type="GstParseContext*"/>
+        </parameter>
+        <parameter name="flags" transfer-ownership="none">
+          <type name="ParseFlags" c:type="GstParseFlags"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="parse_launchv"
+              c:identifier="gst_parse_launchv"
+              doc="Create a new element based on command line syntax.
+An error does not mean that the pipeline could not be constructed."
+              throws="1">
+      <return-value transfer-ownership="full">
+        <type name="Element" c:type="GstElement*"/>
+      </return-value>
+      <parameters>
+        <parameter name="argv" transfer-ownership="none">
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="parse_launchv_full"
+              c:identifier="gst_parse_launchv_full"
+              doc="Create a new element based on command line syntax.
+An error does not mean that the pipeline could not be constructed.
+partially-constructed bin or element will be returned and @error will be set
+(unless you passed #GST_PARSE_FLAG_FATAL_ERRORS in @flags, then %NULL will
+always be returned on failure)"
+              version="0.10.20"
+              throws="1">
+      <return-value transfer-ownership="full">
+        <type name="Element" c:type="GstElement*"/>
+      </return-value>
+      <parameters>
+        <parameter name="argv" transfer-ownership="none">
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </parameter>
+        <parameter name="context" transfer-ownership="none" doc="or %NULL">
+          <type name="ParseContext" c:type="GstParseContext*"/>
+        </parameter>
+        <parameter name="flags" transfer-ownership="none">
+          <type name="ParseFlags" c:type="GstParseFlags"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="print_element_args"
+              c:identifier="gst_print_element_args"
+              doc="Print the element argument in a human readable format in the given
+GString.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="buf" transfer-ownership="none">
+          <type name="GLib.String" c:type="GString*"/>
+        </parameter>
+        <parameter name="indent" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="element" transfer-ownership="none">
+          <type name="Element" c:type="GstElement*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="print_pad_caps"
+              c:identifier="gst_print_pad_caps"
+              doc="Write the pad capabilities in a human readable format into
+the given GString.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="buf" transfer-ownership="none">
+          <type name="GLib.String" c:type="GString*"/>
+        </parameter>
+        <parameter name="indent" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="pad" transfer-ownership="none">
+          <type name="Pad" c:type="GstPad*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="query_type_get_by_nick"
+              c:identifier="gst_query_type_get_by_nick"
+              doc="Get the query type registered with @nick.
+if the query was not registered.">
+      <return-value transfer-ownership="full">
+        <type name="QueryType" c:type="GstQueryType"/>
+      </return-value>
+      <parameters>
+        <parameter name="nick" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="query_type_get_details"
+              c:identifier="gst_query_type_get_details"
+              doc="Get details about the given #GstQueryType.">
+      <return-value transfer-ownership="none">
+        <type name="QueryTypeDefinition" c:type="GstQueryTypeDefinition*"/>
+      </return-value>
+      <parameters>
+        <parameter name="type" transfer-ownership="none">
+          <type name="QueryType" c:type="GstQueryType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="query_type_get_name"
+              c:identifier="gst_query_type_get_name"
+              doc="Get a printable name for the given query type. Do not modify or free.">
+      <return-value transfer-ownership="none">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="query" transfer-ownership="none">
+          <type name="QueryType" c:type="GstQueryType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="query_type_iterate_definitions"
+              c:identifier="gst_query_type_iterate_definitions"
+              doc="Get a #GstIterator of all the registered query types. The definitions
+iterated over are read only.">
+      <return-value transfer-ownership="full">
+        <type name="Iterator" c:type="GstIterator*"/>
+      </return-value>
+    </function>
+    <function name="query_type_register"
+              c:identifier="gst_query_type_register"
+              doc="Create a new GstQueryType based on the nick or return an
+already registered query with that nick
+with the same nick.">
+      <return-value transfer-ownership="full">
+        <type name="QueryType" c:type="GstQueryType"/>
+      </return-value>
+      <parameters>
+        <parameter name="nick" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="description" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="query_type_to_quark"
+              c:identifier="gst_query_type_to_quark"
+              doc="Get the unique quark for the given query type.">
+      <return-value transfer-ownership="full">
+        <type name="GLib.Quark" c:type="GQuark"/>
+      </return-value>
+      <parameters>
+        <parameter name="query" transfer-ownership="none">
+          <type name="QueryType" c:type="GstQueryType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="query_types_contains"
+              c:identifier="gst_query_types_contains"
+              doc="See if the given #GstQueryType is inside the @types query types array.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="types" transfer-ownership="none">
+          <type name="QueryType" c:type="GstQueryType*"/>
+        </parameter>
+        <parameter name="type" transfer-ownership="none">
+          <type name="QueryType" c:type="GstQueryType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="segtrap_is_enabled"
+              c:identifier="gst_segtrap_is_enabled"
+              doc="Some functions in the GStreamer core might install a custom SIGSEGV handler
+to better catch and report errors to the application. Currently this feature
+is enabled by default when loading plugins.
+Applications might want to disable this behaviour with the
+gst_segtrap_set_enabled() function. This is typically done if the application
+wants to install its own handler without GStreamer interfering."
+              version="0.10.10">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+    </function>
+    <function name="segtrap_set_enabled"
+              c:identifier="gst_segtrap_set_enabled"
+              doc="Applications might want to disable/enable the SIGSEGV handling of
+the GStreamer core. See gst_segtrap_is_enabled() for more information."
+              version="0.10.10">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="enabled" transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="structure_empty_new"
+              c:identifier="gst_structure_empty_new"
+              doc="Creates a new, empty #GstStructure with the given @name.
+See gst_structure_set_name() for constraints on the @name parameter.">
+      <return-value transfer-ownership="full">
+        <type name="Structure" c:type="GstStructure*"/>
+      </return-value>
+      <parameters>
+        <parameter name="name" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="structure_from_string"
+              c:identifier="gst_structure_from_string"
+              doc="Creates a #GstStructure from a string representation.
+If end is not NULL, a pointer to the place inside the given string
+where parsing ended will be returned.
+be parsed. Free with gst_structure_free() after use.">
+      <return-value transfer-ownership="full">
+        <type name="Structure" c:type="GstStructure*"/>
+      </return-value>
+      <parameters>
+        <parameter name="string" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="end" transfer-ownership="none">
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="structure_id_empty_new"
+              c:identifier="gst_structure_id_empty_new"
+              doc="Creates a new, empty #GstStructure with the given name as a GQuark.">
+      <return-value transfer-ownership="full">
+        <type name="Structure" c:type="GstStructure*"/>
+      </return-value>
+      <parameters>
+        <parameter name="quark" transfer-ownership="none">
+          <type name="GLib.Quark" c:type="GQuark"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="structure_id_new"
+              c:identifier="gst_structure_id_new"
+              doc="Creates a new #GstStructure with the given name as a GQuark, followed by
+fieldname quark, GType, argument(s) &quot;triplets&quot; in the same format as
+gst_structure_id_set(). Basically a convenience wrapper around
+gst_structure_id_empty_new() and gst_structure_id_set().
+The last variable argument must be NULL (or 0)."
+              version="0.10.24">
+      <return-value transfer-ownership="full">
+        <type name="Structure" c:type="GstStructure*"/>
+      </return-value>
+      <parameters>
+        <parameter name="name_quark" transfer-ownership="none">
+          <type name="GLib.Quark" c:type="GQuark"/>
+        </parameter>
+        <parameter name="field_quark" transfer-ownership="none">
+          <type name="GLib.Quark" c:type="GQuark"/>
+        </parameter>
+        <parameter transfer-ownership="none">
+          <varargs>
+          </varargs>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="tag_exists"
+              c:identifier="gst_tag_exists"
+              doc="Checks if the given type is already registered.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="tag" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="tag_get_description"
+              c:identifier="gst_tag_get_description"
+              doc="Returns the human-readable description of this tag, You must not change or
+free this string.">
+      <return-value transfer-ownership="none">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="tag" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="tag_get_flag"
+              c:identifier="gst_tag_get_flag"
+              doc="Gets the flag of @tag.">
+      <return-value transfer-ownership="full">
+        <type name="TagFlag" c:type="GstTagFlag"/>
+      </return-value>
+      <parameters>
+        <parameter name="tag" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="tag_get_nick" c:identifier="gst_tag_get_nick">
+      <return-value transfer-ownership="none">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="tag" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="tag_get_type"
+              c:identifier="gst_tag_get_type"
+              doc="Gets the #GType used for this tag.">
+      <return-value transfer-ownership="none">
+        <type name="GType" c:type="GType"/>
+      </return-value>
+      <parameters>
+        <parameter name="tag" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="tag_is_fixed"
+              c:identifier="gst_tag_is_fixed"
+              doc="Checks if the given tag is fixed. A fixed tag can only contain one value.
+Unfixed tags can contain lists of values.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="tag" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="tag_list_copy_value"
+              c:identifier="gst_tag_list_copy_value"
+              doc="Copies the contents for the given tag into the value,
+merging multiple values into one if multiple values are associated
+with the tag.
+You must g_value_unset() the value after use.
+given list.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="dest" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="list" transfer-ownership="none">
+          <type name="TagList" c:type="GstTagList*"/>
+        </parameter>
+        <parameter name="tag" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="tag_merge_strings_with_comma"
+              c:identifier="gst_tag_merge_strings_with_comma"
+              doc="This is a convenience function for the func argument of gst_tag_register().
+It concatenates all given strings using a comma. The tag must be registered
+as a G_TYPE_STRING or this function will fail.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="dest" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="src" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="tag_merge_use_first"
+              c:identifier="gst_tag_merge_use_first"
+              doc="This is a convenience function for the func argument of gst_tag_register().
+It creates a copy of the first value from the list.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="dest" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="src" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="tag_register"
+              c:identifier="gst_tag_register"
+              doc="Registers a new tag type for the use with GStreamer&apos;s type system. If a type
+with that name is already registered, that one is used.
+The old registration may have used a different type however. So don&apos;t rely
+on your supplied values.
+that there can only be one single value for this tag in a tag list and
+any additional values will silenty be discarded when being added (unless
+#GST_TAG_MERGE_REPLACE, #GST_TAG_MERGE_REPLACE_ALL, or
+#GST_TAG_MERGE_PREPEND is used as merge mode, in which case the new
+value will replace the old one in the list).
+The merge function will be called from gst_tag_list_copy_value() when
+it is required that one or more values for a tag be condensed into
+one single value. This may happen from gst_tag_list_get_string(),
+gst_tag_list_get_int(), gst_tag_list_get_double() etc. What will happen
+exactly in that case depends on how the tag was registered and if a
+merge function was supplied and if so which one.
+gst_tag_merge_strings_with_comma().">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="name" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="flag" transfer-ownership="none">
+          <type name="TagFlag" c:type="GstTagFlag"/>
+        </parameter>
+        <parameter name="type" transfer-ownership="none">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="nick" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="blurb" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="func" transfer-ownership="none" scope="call">
+          <type name="TagMergeFunc" c:type="GstTagMergeFunc"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="trace_read_tsc"
+              c:identifier="gst_trace_read_tsc"
+              doc="Read a platform independent timer value that can be used in
+benchmarks.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="dst" direction="out" transfer-ownership="full">
+          <type name="int64" c:type="gint64*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_find_register"
+              c:identifier="gst_type_find_register"
+              doc="passing NULL only works in GStreamer 0.10.16 and later)
+succeeds
+is unloaded.
+is unloaded.
+Registers a new typefind function to be used for typefinding. After
+registering this function will be available for typefinding.
+This function is typically called during an element&apos;s plugin initialization.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="plugin" transfer-ownership="none">
+          <type name="Plugin" c:type="GstPlugin*"/>
+        </parameter>
+        <parameter name="name" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="rank"
+                   transfer-ownership="none"
+                   doc="of this typefind function">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="func" transfer-ownership="none" scope="call">
+          <type name="TypeFindFunction" c:type="GstTypeFindFunction"/>
+        </parameter>
+        <parameter name="extensions" transfer-ownership="none">
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </parameter>
+        <parameter name="possible_caps" transfer-ownership="none">
+          <type name="Caps" c:type="GstCaps*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="data_notify" transfer-ownership="none" scope="call">
+          <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_register_static_full"
+              c:identifier="gst_type_register_static_full"
+              doc="derive from
+Location of the default vtable inititalization function for interface
+types. (optional)
+Location of the default vtable finalization function for interface types.
+(optional)
+instantiatable types only).
+memory for (0 indicates no caching). Ignored on recent GLib&apos;s.
+for instantiatable types only).
+GValues of this type (usually only useful for fundamental types).
+Helper function which constructs a #GTypeInfo structure and registers a
+GType, but which generates less linker overhead than a static const
+#GTypeInfo structure. For further details of the parameters, please see
+#GTypeInfo in the GLib documentation.
+Registers type_name as the name of a new static type derived from
+parent_type. The value of flags determines the nature (e.g. abstract or
+not) of the type. It works by filling a GTypeInfo struct and calling
+g_type_register_static()."
+              version="0.10.14">
+      <return-value transfer-ownership="none">
+        <type name="GType" c:type="GType"/>
+      </return-value>
+      <parameters>
+        <parameter name="parent_type" transfer-ownership="none">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="type_name" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="class_size" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="base_init" transfer-ownership="none" scope="call">
+          <type name="GObject.BaseInitFunc" c:type="GBaseInitFunc"/>
+        </parameter>
+        <parameter name="base_finalize" transfer-ownership="none" scope="call">
+          <type name="GObject.BaseFinalizeFunc" c:type="GBaseFinalizeFunc"/>
+        </parameter>
+        <parameter name="class_init" transfer-ownership="none" scope="call">
+          <type name="GObject.ClassInitFunc" c:type="GClassInitFunc"/>
+        </parameter>
+        <parameter name="class_finalize"
+                   transfer-ownership="none"
+                   scope="call"
+                   closure="7">
+          <type name="GObject.ClassFinalizeFunc" c:type="GClassFinalizeFunc"/>
+        </parameter>
+        <parameter name="class_data" transfer-ownership="none">
+          <type name="any" c:type="gconstpointer"/>
+        </parameter>
+        <parameter name="instance_size"
+                   transfer-ownership="none"
+                   doc="structure (required for">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="n_preallocs"
+                   transfer-ownership="none"
+                   doc="instances to reserve">
+          <type name="uint16" c:type="guint16"/>
+        </parameter>
+        <parameter name="instance_init" transfer-ownership="none" scope="call">
+          <type name="GObject.InstanceInitFunc" c:type="GInstanceInitFunc"/>
+        </parameter>
+        <parameter name="value_table" transfer-ownership="none">
+          <type name="GObject.TypeValueTable" c:type="GTypeValueTable*"/>
+        </parameter>
+        <parameter name="flags" transfer-ownership="none">
+          <type name="GObject.TypeFlags" c:type="GTypeFlags"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="update_registry"
+              c:identifier="gst_update_registry"
+              doc="Forces GStreamer to re-scan its plugin paths and update the default
+plugin registry.
+Applications will almost never need to call this function, it is only
+useful if the application knows new plugins have been installed (or old
+ones removed) since the start of the application (or, to be precise, the
+first call to gst_init()) and the application wants to make use of any
+newly-installed plugins without restarting the application.
+Applications should assume that the registry update is neither atomic nor
+thread-safe and should therefore not have any dynamic pipelines running
+(including the playbin and decodebin elements) and should also not create
+any elements or access the GStreamer registry while the update is in
+progress.
+Note that this function may block for a significant amount of time.
+imply that there were changes), otherwise %FALSE."
+              version="0.10.12">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+    </function>
+    <function name="uri_construct"
+              c:identifier="gst_uri_construct"
+              doc="Constructs a URI for a given valid protocol and location.
+is not valid, or the given location is NULL.">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="protocol" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="location" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="uri_get_location"
+              c:identifier="gst_uri_get_location"
+              doc="Extracts the location out of a given valid URI, ie. the protocol and &quot;://&quot;
+are stripped from the URI, which means that the location returned includes
+the hostname if one is specified. The returned string must be freed using
+g_free().
+the URI does not contain a location, an empty string is returned.">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="uri" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="uri_get_protocol"
+              c:identifier="gst_uri_get_protocol"
+              doc="Extracts the protocol out of a given valid URI. The returned string must be
+freed using g_free().">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="uri" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="uri_has_protocol"
+              c:identifier="gst_uri_has_protocol"
+              doc="Checks if the protocol of a given valid URI matches @protocol."
+              version="0.10.4">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="uri" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="protocol" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="uri_is_valid"
+              c:identifier="gst_uri_is_valid"
+              doc="Tests if the given string is a valid URI identifier. URIs start with a valid
+scheme followed by &quot;:&quot; and maybe a string identifying the location.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="uri" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="uri_protocol_is_supported"
+              c:identifier="gst_uri_protocol_is_supported"
+              doc="Checks if an element exists that supports the given URI protocol. Note
+that a positive return value does not imply that a subsequent call to
+gst_element_make_from_uri() is guaranteed to work."
+              version="0.10.13">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="type" transfer-ownership="none">
+          <type name="URIType" c:type="GstURIType"/>
+        </parameter>
+        <parameter name="protocol" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="uri_protocol_is_valid"
+              c:identifier="gst_uri_protocol_is_valid"
+              doc="Tests if the given string is a valid protocol identifier. Protocols
+must consist of alphanumeric characters, &apos;+&apos;, &apos;-&apos; and &apos;.&apos; and must
+start with a alphabetic character. See RFC 3986 Section 3.1.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="protocol" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="util_array_binary_search"
+              c:identifier="gst_util_array_binary_search"
+              doc="Searches inside @array for @search_data by using the comparison function
+As @search_data is always passed as second argument to @search_func it&apos;s
+not required that @search_data has the same type as the array elements.
+The complexity of this search function is O(log (num_elements))."
+              version="0.10.23">
+      <return-value transfer-ownership="none">
+        <type name="any" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="array" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="num_elements" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="element_size" transfer-ownership="none">
+          <type name="size_t" c:type="gsize"/>
+        </parameter>
+        <parameter name="search_func" transfer-ownership="none" scope="call">
+          <type name="GLib.CompareDataFunc" c:type="GCompareDataFunc"/>
+        </parameter>
+        <parameter name="mode" transfer-ownership="none">
+          <type name="SearchMode" c:type="GstSearchMode"/>
+        </parameter>
+        <parameter name="search_data" transfer-ownership="none">
+          <type name="any" c:type="gconstpointer"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="util_double_to_fraction"
+              c:identifier="gst_util_double_to_fraction"
+              doc="Transforms a #gdouble to a fraction and simplifies
+the result."
+              version="0.10.26">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="src" transfer-ownership="none">
+          <type name="double" c:type="gdouble"/>
+        </parameter>
+        <parameter name="dest_n" direction="out" transfer-ownership="full">
+          <type name="int" c:type="gint*"/>
+        </parameter>
+        <parameter name="dest_d" direction="out" transfer-ownership="full">
+          <type name="int" c:type="gint*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="util_dump_mem"
+              c:identifier="gst_util_dump_mem"
+              doc="Dumps the memory block into a hex representation. Useful for debugging.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="mem" transfer-ownership="none">
+          <array c:type="guchar*">
+            <type name="uint8"/>
+          </array>
+        </parameter>
+        <parameter name="size" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="util_fraction_add"
+              c:identifier="gst_util_fraction_add"
+              doc="Adds the fractions @a_n/@a_d and @b_n/@b_d and stores
+the result in @res_n and @res_d."
+              version="0.10.26">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="a_n" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="a_d" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="b_n" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="b_d" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="res_n" direction="out" transfer-ownership="full">
+          <type name="int" c:type="gint*"/>
+        </parameter>
+        <parameter name="res_d" direction="out" transfer-ownership="full">
+          <type name="int" c:type="gint*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="util_fraction_multiply"
+              c:identifier="gst_util_fraction_multiply"
+              doc="Multiplies the fractions @a_n/@a_d and @b_n/@b_d and stores
+the result in @res_n and @res_d."
+              version="0.10.26">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="a_n" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="a_d" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="b_n" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="b_d" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="res_n" direction="out" transfer-ownership="full">
+          <type name="int" c:type="gint*"/>
+        </parameter>
+        <parameter name="res_d" direction="out" transfer-ownership="full">
+          <type name="int" c:type="gint*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="util_fraction_to_double"
+              c:identifier="gst_util_fraction_to_double"
+              doc="Transforms a #gdouble to a fraction and simplifies the result."
+              version="0.10.26">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="src_n" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="src_d" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="dest" direction="out" transfer-ownership="full">
+          <type name="double" c:type="gdouble*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="util_gdouble_to_guint64"
+              c:identifier="gst_util_gdouble_to_guint64">
+      <return-value transfer-ownership="none">
+        <type name="uint64" c:type="guint64"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="double" c:type="gdouble"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="util_get_timestamp"
+              c:identifier="gst_util_get_timestamp"
+              doc="Get a timestamp as GstClockTime to be used for interval meassurements.
+The timestamp should not be interpreted in any other way."
+              version="0.10.16">
+      <return-value transfer-ownership="full">
+        <type name="ClockTime" c:type="GstClockTime"/>
+      </return-value>
+    </function>
+    <function name="util_greatest_common_divisor"
+              c:identifier="gst_util_greatest_common_divisor"
+              doc="Calculates the greatest common divisor of @a
+and @b."
+              version="0.10.26">
+      <return-value transfer-ownership="none">
+        <type name="int" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="a" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="b" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="util_guint64_to_gdouble"
+              c:identifier="gst_util_guint64_to_gdouble">
+      <return-value transfer-ownership="none">
+        <type name="double" c:type="gdouble"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="uint64" c:type="guint64"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="util_seqnum_compare"
+              c:identifier="gst_util_seqnum_compare"
+              doc="Compare two sequence numbers, handling wraparound.
+The current implementation just returns (gint32)(@s1 - @s2).
+positive number if @s1 is after @s2."
+              version="0.10.22">
+      <return-value transfer-ownership="none">
+        <type name="int32" c:type="gint32"/>
+      </return-value>
+      <parameters>
+        <parameter name="s1" transfer-ownership="none">
+          <type name="uint32" c:type="guint32"/>
+        </parameter>
+        <parameter name="s2" transfer-ownership="none">
+          <type name="uint32" c:type="guint32"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="util_seqnum_next"
+              c:identifier="gst_util_seqnum_next"
+              doc="Return a constantly incrementing sequence number.
+This function is used internally to GStreamer to be able to determine which
+events and messages are &quot;the same&quot;. For example, elements may set the seqnum
+on a segment-done message to be the same as that of the last seek event, to
+indicate that event and the message correspond to the same segment.
+overflow back to 0 at some point. Use gst_util_seqnum_compare() to make sure
+you handle wraparound correctly."
+              version="0.10.22">
+      <return-value transfer-ownership="none">
+        <type name="uint32" c:type="guint32"/>
+      </return-value>
+    </function>
+    <function name="util_set_object_arg"
+              c:identifier="gst_util_set_object_arg"
+              doc="Convertes the string value to the type of the objects argument and
+sets the argument with it.
+Note that this function silently returns if @object has no property named">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="object" transfer-ownership="none">
+          <type name="GObject.Object" c:type="GObject*"/>
+        </parameter>
+        <parameter name="name" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="value" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="util_set_value_from_string"
+              c:identifier="gst_util_set_value_from_string"
+              doc="Converts the string to the type of the value and
+sets the value with it.
+Note that this function is dangerous as it does not return any indication
+if the conversion worked or not.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="value_str" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="util_uint64_scale"
+              c:identifier="gst_util_uint64_scale"
+              doc="Scale @val by the rational number @num / @denom, avoiding overflows and
+underflows and without loss of precision.
+This function can potentially be very slow if val and num are both
+greater than G_MAXUINT32.
+function returns G_MAXUINT64.  If the result is not exactly
+representable as an integer it is truncated.  See also
+gst_util_uint64_scale_round(), gst_util_uint64_scale_ceil(),
+gst_util_uint64_scale_int(), gst_util_uint64_scale_int_round(),
+gst_util_uint64_scale_int_ceil().">
+      <return-value transfer-ownership="none">
+        <type name="uint64" c:type="guint64"/>
+      </return-value>
+      <parameters>
+        <parameter name="val" transfer-ownership="none">
+          <type name="uint64" c:type="guint64"/>
+        </parameter>
+        <parameter name="num" transfer-ownership="none">
+          <type name="uint64" c:type="guint64"/>
+        </parameter>
+        <parameter name="denom" transfer-ownership="none">
+          <type name="uint64" c:type="guint64"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="util_uint64_scale_ceil"
+              c:identifier="gst_util_uint64_scale_ceil"
+              doc="Scale @val by the rational number @num / @denom, avoiding overflows and
+underflows and without loss of precision.
+This function can potentially be very slow if val and num are both
+greater than G_MAXUINT32.
+function returns G_MAXUINT64.  If the result is not exactly
+representable as an integer, it is rounded up.  See also
+gst_util_uint64_scale(), gst_util_uint64_scale_round(),
+gst_util_uint64_scale_int(), gst_util_uint64_scale_int_round(),
+gst_util_uint64_scale_int_ceil().">
+      <return-value transfer-ownership="none">
+        <type name="uint64" c:type="guint64"/>
+      </return-value>
+      <parameters>
+        <parameter name="val" transfer-ownership="none">
+          <type name="uint64" c:type="guint64"/>
+        </parameter>
+        <parameter name="num" transfer-ownership="none">
+          <type name="uint64" c:type="guint64"/>
+        </parameter>
+        <parameter name="denom" transfer-ownership="none">
+          <type name="uint64" c:type="guint64"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="util_uint64_scale_int"
+              c:identifier="gst_util_uint64_scale_int"
+              doc="Scale @val by the rational number @num / @denom, avoiding overflows and
+underflows and without loss of precision.  @num must be non-negative and
+function returns G_MAXUINT64.  If the result is not exactly
+representable as an integer, it is truncated.  See also
+gst_util_uint64_scale_int_round(), gst_util_uint64_scale_int_ceil(),
+gst_util_uint64_scale(), gst_util_uint64_scale_round(),
+gst_util_uint64_scale_ceil().">
+      <return-value transfer-ownership="none">
+        <type name="uint64" c:type="guint64"/>
+      </return-value>
+      <parameters>
+        <parameter name="val" transfer-ownership="none" doc="to scale.">
+          <type name="uint64" c:type="guint64"/>
+        </parameter>
+        <parameter name="num" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="denom" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="util_uint64_scale_int_ceil"
+              c:identifier="gst_util_uint64_scale_int_ceil"
+              doc="Scale @val by the rational number @num / @denom, avoiding overflows and
+underflows and without loss of precision.  @num must be non-negative and
+function returns G_MAXUINT64.  If the result is not exactly
+representable as an integer, it is rounded up.  See also
+gst_util_uint64_scale_int(), gst_util_uint64_scale_int_round(),
+gst_util_uint64_scale(), gst_util_uint64_scale_round(),
+gst_util_uint64_scale_ceil().">
+      <return-value transfer-ownership="none">
+        <type name="uint64" c:type="guint64"/>
+      </return-value>
+      <parameters>
+        <parameter name="val" transfer-ownership="none" doc="to scale.">
+          <type name="uint64" c:type="guint64"/>
+        </parameter>
+        <parameter name="num" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="denom" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="util_uint64_scale_int_round"
+              c:identifier="gst_util_uint64_scale_int_round"
+              doc="Scale @val by the rational number @num / @denom, avoiding overflows and
+underflows and without loss of precision.  @num must be non-negative and
+function returns G_MAXUINT64.  If the result is not exactly
+representable as an integer, it is rounded to the nearest integer
+(half-way cases are rounded up).  See also gst_util_uint64_scale_int(),
+gst_util_uint64_scale_int_ceil(), gst_util_uint64_scale(),
+gst_util_uint64_scale_round(), gst_util_uint64_scale_ceil().">
+      <return-value transfer-ownership="none">
+        <type name="uint64" c:type="guint64"/>
+      </return-value>
+      <parameters>
+        <parameter name="val" transfer-ownership="none" doc="to scale.">
+          <type name="uint64" c:type="guint64"/>
+        </parameter>
+        <parameter name="num" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="denom" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="util_uint64_scale_round"
+              c:identifier="gst_util_uint64_scale_round"
+              doc="Scale @val by the rational number @num / @denom, avoiding overflows and
+underflows and without loss of precision.
+This function can potentially be very slow if val and num are both
+greater than G_MAXUINT32.
+function returns G_MAXUINT64.  If the result is not exactly
+representable as an integer, it is rounded to the nearest integer
+(half-way cases are rounded up).  See also gst_util_uint64_scale(),
+gst_util_uint64_scale_ceil(), gst_util_uint64_scale_int(),
+gst_util_uint64_scale_int_round(), gst_util_uint64_scale_int_ceil().">
+      <return-value transfer-ownership="none">
+        <type name="uint64" c:type="guint64"/>
+      </return-value>
+      <parameters>
+        <parameter name="val" transfer-ownership="none">
+          <type name="uint64" c:type="guint64"/>
+        </parameter>
+        <parameter name="num" transfer-ownership="none">
+          <type name="uint64" c:type="guint64"/>
+        </parameter>
+        <parameter name="denom" transfer-ownership="none">
+          <type name="uint64" c:type="guint64"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_array_append_value"
+              c:identifier="gst_value_array_append_value"
+              doc="Appends @append_value to the GstValueArray in @value.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="append_value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_array_get_size"
+              c:identifier="gst_value_array_get_size"
+              doc="Gets the number of values contained in @value.">
+      <return-value transfer-ownership="none">
+        <type name="uint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_array_get_value"
+              c:identifier="gst_value_array_get_value"
+              doc="Gets the value that is a member of the array contained in @value and
+has the index @index.">
+      <return-value transfer-ownership="none">
+        <type name="GObject.Value" c:type="GValue*"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="index" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_array_prepend_value"
+              c:identifier="gst_value_array_prepend_value"
+              doc="Prepends @prepend_value to the GstValueArray in @value.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="prepend_value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_can_compare"
+              c:identifier="gst_value_can_compare"
+              doc="Determines if @value1 and @value2 can be compared.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="value1" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="value2" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_can_intersect"
+              c:identifier="gst_value_can_intersect"
+              doc="Determines if intersecting two values will produce a valid result.
+Two values will produce a valid intersection if they have the same
+type, or if there is a method (registered by
+gst_value_register_intersect_func()) to calculate the intersection.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="value1" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="value2" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_can_subtract"
+              c:identifier="gst_value_can_subtract"
+              doc="Checks if it&apos;s possible to subtract @subtrahend from @minuend.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="minuend" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="subtrahend" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_can_union"
+              c:identifier="gst_value_can_union"
+              doc="Determines if @value1 and @value2 can be non-trivially unioned.
+Any two values can be trivially unioned by adding both of them
+to a GstValueList.  However, certain types have the possibility
+to be unioned in a simpler way.  For example, an integer range
+and an integer can be unioned if the integer is a subset of the
+integer range.  If there is the possibility that two values can
+be unioned, this function returns TRUE.
+be unioned.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="value1" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="value2" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_compare"
+              c:identifier="gst_value_compare"
+              doc="Compares @value1 and @value2.  If @value1 and @value2 cannot be
+compared, the function returns GST_VALUE_UNORDERED.  Otherwise,
+if @value1 is greater than @value2, GST_VALUE_GREATER_THAN is returned.
+If @value1 is less than @value2, GST_VALUE_LESS_THAN is returned.
+If the values are equal, GST_VALUE_EQUAL is returned.">
+      <return-value transfer-ownership="none">
+        <type name="int" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="value1" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="value2" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_deserialize"
+              c:identifier="gst_value_deserialize"
+              doc="Tries to deserialize a string into the type specified by the given GValue.
+If the operation succeeds, TRUE is returned, FALSE otherwise.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="dest" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="src" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_dup_mini_object"
+              c:identifier="gst_value_dup_mini_object"
+              doc="Get the contents of a %GST_TYPE_MINI_OBJECT derived #GValue,
+increasing its reference count."
+              version="0.10.20">
+      <return-value transfer-ownership="full">
+        <type name="MiniObject" c:type="GstMiniObject*"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_fraction_multiply"
+              c:identifier="gst_value_fraction_multiply"
+              doc="Multiplies the two #GValue items containing a #GST_TYPE_FRACTION and sets">
+      <return-value transfer-ownership="none" doc="TRUE otherwise.">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="product" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="factor1" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="factor2" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_fraction_subtract"
+              c:identifier="gst_value_fraction_subtract"
+              doc="Subtracts the @subtrahend from the @minuend and sets @dest to the result.">
+      <return-value transfer-ownership="none" doc="TRUE otherwise.">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="dest" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="minuend" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="subtrahend" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_get_caps"
+              c:identifier="gst_value_get_caps"
+              doc="Gets the contents of @value.">
+      <return-value transfer-ownership="none">
+        <type name="Caps" c:type="GstCaps*"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_get_date"
+              c:identifier="gst_value_get_date"
+              doc="Gets the contents of @value.">
+      <return-value transfer-ownership="none">
+        <type name="GLib.Date" c:type="GDate*"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_get_double_range_max"
+              c:identifier="gst_value_get_double_range_max"
+              doc="Gets the maximum of the range specified by @value.">
+      <return-value transfer-ownership="none">
+        <type name="double" c:type="gdouble"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_get_double_range_min"
+              c:identifier="gst_value_get_double_range_min"
+              doc="Gets the minimum of the range specified by @value.">
+      <return-value transfer-ownership="none">
+        <type name="double" c:type="gdouble"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_get_fourcc"
+              c:identifier="gst_value_get_fourcc"
+              doc="Gets the #guint32 fourcc contained in @value.">
+      <return-value transfer-ownership="none">
+        <type name="uint32" c:type="guint32"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_get_fraction_denominator"
+              c:identifier="gst_value_get_fraction_denominator"
+              doc="Gets the denominator of the fraction specified by @value.">
+      <return-value transfer-ownership="none">
+        <type name="int" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_get_fraction_numerator"
+              c:identifier="gst_value_get_fraction_numerator"
+              doc="Gets the numerator of the fraction specified by @value.">
+      <return-value transfer-ownership="none">
+        <type name="int" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_get_fraction_range_max"
+              c:identifier="gst_value_get_fraction_range_max"
+              doc="Gets the maximum of the range specified by @value.">
+      <return-value transfer-ownership="none">
+        <type name="GObject.Value" c:type="GValue*"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_get_fraction_range_min"
+              c:identifier="gst_value_get_fraction_range_min"
+              doc="Gets the minimum of the range specified by @value.">
+      <return-value transfer-ownership="none">
+        <type name="GObject.Value" c:type="GValue*"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_get_int_range_max"
+              c:identifier="gst_value_get_int_range_max"
+              doc="Gets the maximum of the range specified by @value.">
+      <return-value transfer-ownership="none">
+        <type name="int" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_get_int_range_min"
+              c:identifier="gst_value_get_int_range_min"
+              doc="Gets the minimum of the range specified by @value.">
+      <return-value transfer-ownership="none">
+        <type name="int" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_get_mini_object"
+              c:identifier="gst_value_get_mini_object"
+              doc="Get the contents of a %GST_TYPE_MINI_OBJECT derived #GValue.
+Does not increase the refcount of the returned object.">
+      <return-value transfer-ownership="full">
+        <type name="MiniObject" c:type="GstMiniObject*"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_get_structure"
+              c:identifier="gst_value_get_structure"
+              doc="Gets the contents of @value."
+              version="0.10.15">
+      <return-value transfer-ownership="none">
+        <type name="Structure" c:type="GstStructure*"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_init_and_copy"
+              c:identifier="gst_value_init_and_copy"
+              doc="Initialises the target value to be of the same type as source and then copies
+the contents from source to target.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="dest" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="src" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_intersect"
+              c:identifier="gst_value_intersect"
+              doc="intersection value
+Calculates the intersection of two values.  If the values have
+a non-empty intersection, the value representing the intersection
+is placed in @dest.  If the intersection is non-empty, @dest is
+not modified.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="dest" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="value1" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="value2" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_is_fixed"
+              c:identifier="gst_value_is_fixed"
+              doc="Tests if the given GValue, if available in a GstStructure (or any other
+ranges) value.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_list_append_value"
+              c:identifier="gst_value_list_append_value"
+              doc="Appends @append_value to the GstValueList in @value.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="append_value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_list_concat"
+              c:identifier="gst_value_list_concat"
+              doc="Concatenates copies of @value1 and @value2 into a list.  Values that are not
+of type #GST_TYPE_LIST are treated as if they were lists of length 1.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="dest" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="value1" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="value2" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_list_get_size"
+              c:identifier="gst_value_list_get_size"
+              doc="Gets the number of values contained in @value.">
+      <return-value transfer-ownership="none">
+        <type name="uint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_list_get_value"
+              c:identifier="gst_value_list_get_value"
+              doc="Gets the value that is a member of the list contained in @value and
+has the index @index.">
+      <return-value transfer-ownership="none">
+        <type name="GObject.Value" c:type="GValue*"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="index" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_list_prepend_value"
+              c:identifier="gst_value_list_prepend_value"
+              doc="Prepends @prepend_value to the GstValueList in @value.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="prepend_value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_register"
+              c:identifier="gst_value_register"
+              doc="Registers functions to perform calculations on #GValue items of a given
+type. Each type can only be added once.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="table" transfer-ownership="none">
+          <type name="ValueTable" c:type="GstValueTable*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_register_intersect_func"
+              c:identifier="gst_value_register_intersect_func"
+              doc="Registers a function that is called to calculate the intersection
+of the values having the types @type1 and @type2.
+Intersect functions should be registered at startup before any pipelines are
+started, as gst_value_register_intersect_func() is not thread-safe and
+cannot be used at the same time as gst_value_intersect() or
+gst_value_can_intersect().">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="type1" transfer-ownership="none">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="type2" transfer-ownership="none">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="func" transfer-ownership="none" scope="call">
+          <type name="ValueIntersectFunc" c:type="GstValueIntersectFunc"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_register_subtract_func"
+              c:identifier="gst_value_register_subtract_func"
+              doc="Registers @func as a function capable of subtracting the values of
+Subtract functions should be registered at startup before any pipelines are
+started, as gst_value_register_subtract_func() is not thread-safe and
+cannot be used at the same time as gst_value_subtract().">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="minuend_type" transfer-ownership="none">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="subtrahend_type" transfer-ownership="none">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="func" transfer-ownership="none" scope="call">
+          <type name="ValueSubtractFunc" c:type="GstValueSubtractFunc"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_register_union_func"
+              c:identifier="gst_value_register_union_func"
+              doc="Registers a union function that can create a union between #GValue items
+of the type @type1 and @type2.
+Union functions should be registered at startup before any pipelines are
+started, as gst_value_register_union_func() is not thread-safe and cannot
+be used at the same time as gst_value_union() or gst_value_can_union().">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="type1" transfer-ownership="none">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="type2" transfer-ownership="none">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="func" transfer-ownership="none" scope="call">
+          <type name="ValueUnionFunc" c:type="GstValueUnionFunc"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_serialize"
+              c:identifier="gst_value_serialize"
+              doc="tries to transform the given @value into a string representation that allows
+getting back this string later on using gst_value_deserialize().">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_set_caps"
+              c:identifier="gst_value_set_caps"
+              doc="Sets the contents of @value to @caps.  The actual
+#GstCaps structure is copied before it is used.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="caps" transfer-ownership="none">
+          <type name="Caps" c:type="GstCaps*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_set_date"
+              c:identifier="gst_value_set_date"
+              doc="Sets the contents of @value to coorespond to @date.  The actual
+#GDate structure is copied before it is used.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="date" transfer-ownership="none">
+          <type name="GLib.Date" c:type="GDate*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_set_double_range"
+              c:identifier="gst_value_set_double_range"
+              doc="Sets @value to the range specified by @start and @end.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="start" transfer-ownership="none">
+          <type name="double" c:type="gdouble"/>
+        </parameter>
+        <parameter name="end" transfer-ownership="none">
+          <type name="double" c:type="gdouble"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_set_fourcc"
+              c:identifier="gst_value_set_fourcc"
+              doc="Sets @value to @fourcc.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="fourcc" transfer-ownership="none">
+          <type name="uint32" c:type="guint32"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_set_fraction"
+              c:identifier="gst_value_set_fraction"
+              doc="Sets @value to the fraction specified by @numerator over @denominator.
+The fraction gets reduced to the smallest numerator and denominator,
+and if necessary the sign is moved to the numerator.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="numerator" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="denominator" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_set_fraction_range"
+              c:identifier="gst_value_set_fraction_range"
+              doc="Sets @value to the range specified by @start and @end.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="start" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="end" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_set_fraction_range_full"
+              c:identifier="gst_value_set_fraction_range_full"
+              doc="Sets @value to the range specified by @numerator_start/@denominator_start
+and @numerator_end/@denominator_end.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="numerator_start" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="denominator_start" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="numerator_end" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="denominator_end" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_set_int_range"
+              c:identifier="gst_value_set_int_range"
+              doc="Sets @value to the range specified by @start and @end.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="start" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="end" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_set_mini_object"
+              c:identifier="gst_value_set_mini_object"
+              doc="Set the contents of a %GST_TYPE_MINI_OBJECT derived #GValue to
+The caller retains ownership of the reference.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="mini_object" transfer-ownership="none">
+          <type name="MiniObject" c:type="GstMiniObject*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_set_structure"
+              c:identifier="gst_value_set_structure"
+              doc="Sets the contents of @value to @structure.  The actual"
+              version="0.10.15">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="structure" transfer-ownership="none">
+          <type name="Structure" c:type="GstStructure*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_subtract"
+              c:identifier="gst_value_subtract"
+              doc="Subtracts @subtrahend from @minuend and stores the result in @dest.
+Note that this means subtraction as in sets, not as in mathematics.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="dest" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="minuend" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="subtrahend" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_take_mini_object"
+              c:identifier="gst_value_take_mini_object"
+              doc="Set the contents of a %GST_TYPE_MINI_OBJECT derived #GValue to
+Takes over the ownership of the caller&apos;s reference to @mini_object;
+the caller doesn&apos;t have to unref it any more.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="mini_object" transfer-ownership="none">
+          <type name="MiniObject" c:type="GstMiniObject*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_union"
+              c:identifier="gst_value_union"
+              doc="Creates a GValue corresponding to the union of @value1 and @value2.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="dest" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="value1" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="value2" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="version"
+              c:identifier="gst_version"
+              doc="Gets the version number of the GStreamer library.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="major" direction="out" transfer-ownership="full">
+          <type name="uint" c:type="guint*"/>
+        </parameter>
+        <parameter name="minor" direction="out" transfer-ownership="full">
+          <type name="uint" c:type="guint*"/>
+        </parameter>
+        <parameter name="micro" direction="out" transfer-ownership="full">
+          <type name="uint" c:type="guint*"/>
+        </parameter>
+        <parameter name="nano" direction="out" transfer-ownership="full">
+          <type name="uint" c:type="guint*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="version_string"
+              c:identifier="gst_version_string"
+              doc="This function returns a string that is useful for describing this version">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+    </function>
+  </namespace>
+</repository>
diff --git a/extra/gstreamer/app/GstApp-0.10.gir b/extra/gstreamer/app/GstApp-0.10.gir
new file mode 100644 (file)
index 0000000..40ccd7e
--- /dev/null
@@ -0,0 +1,951 @@
+<?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.0"
+            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="GLib" version="2.0"/>
+  <include name="GModule" version="2.0"/>
+  <include name="GObject" version="2.0"/>
+  <include name="Gst" version="0.10"/>
+  <include name="GstBase" version="0.10"/>
+  <include name="libxml2" version="2.0"/>
+  <package name="gstreamer-0.10"/>
+  <package name="gstreamer-base-0.10"/>
+  <c:include name="gst/app/gstappbuffer.h"/>
+  <c:include name="gst/app/gstappsink.h"/>
+  <c:include name="gst/app/gstappsrc.h"/>
+  <namespace name="GstApp"
+             version="0.10"
+             shared-library="libgstapp-0.10.so.0"
+             c:prefix="Gst">
+    <record name="AppBuffer" c:type="GstAppBuffer">
+      <field name="buffer" writable="1">
+        <type name="Gst.Buffer" c:type="GstBuffer"/>
+      </field>
+      <field name="finalize" writable="1">
+        <type name="AppBufferFinalizeFunc" c:type="GstAppBufferFinalizeFunc"/>
+      </field>
+      <field name="priv" writable="1">
+        <type name="any" c:type="void*"/>
+      </field>
+      <constructor name="new" c:identifier="gst_app_buffer_new">
+        <return-value transfer-ownership="full">
+          <type name="AppBuffer" c:type="GstBuffer*"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <type name="any" c:type="void*"/>
+          </parameter>
+          <parameter name="length" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+          <parameter name="finalize" transfer-ownership="none" scope="call">
+            <type name="AppBufferFinalizeFunc"
+                  c:type="GstAppBufferFinalizeFunc"/>
+          </parameter>
+          <parameter name="priv" transfer-ownership="none">
+            <type name="any" c:type="void*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+    </record>
+    <record name="AppBufferClass" c:type="GstAppBufferClass">
+      <field name="buffer_class" writable="1">
+        <type name="Gst.BufferClass" c:type="GstBufferClass"/>
+      </field>
+    </record>
+    <callback name="AppBufferFinalizeFunc" c:type="GstAppBufferFinalizeFunc">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="priv" transfer-ownership="none">
+          <type name="any" c:type="void*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <class name="AppSink"
+           c:type="GstAppSink"
+           parent="GstBase.BaseSink"
+           glib:type-name="GstAppSink"
+           glib:get-type="gst_app_sink_get_type"
+           glib:type-struct="AppSinkClass">
+      <implements name="Gst.URIHandler"/>
+      <method name="set_caps"
+              c:identifier="gst_app_sink_set_caps"
+              doc="Set the capabilities on the appsink element.  This function takes
+a copy of the caps structure. After calling this method, the sink will only
+accept caps that match @caps. If @caps is non-fixed, you must check the caps
+on the buffers to get the actual used caps."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="caps" transfer-ownership="none">
+            <type name="Gst.Caps" c:type="GstCaps*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_caps"
+              c:identifier="gst_app_sink_get_caps"
+              doc="Get the configured caps on @appsink."
+              version="0.10.22">
+        <return-value transfer-ownership="full" doc="after usage.">
+          <type name="Gst.Caps" c:type="GstCaps*"/>
+        </return-value>
+      </method>
+      <method name="is_eos"
+              c:identifier="gst_app_sink_is_eos"
+              doc="Check if @appsink is EOS, which is when no more buffers can be pulled because
+an EOS event was received.
+This function also returns %TRUE when the appsink is not in the PAUSED or
+PLAYING state."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_emit_signals"
+              c:identifier="gst_app_sink_set_emit_signals"
+              doc="Make appsink emit the &quot;new-preroll&quot; and &quot;new-buffer&quot; signals. This option is
+by default disabled because signal emission is expensive and unneeded when
+the application prefers to operate in pull mode."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="emit" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_emit_signals"
+              c:identifier="gst_app_sink_get_emit_signals"
+              doc="Check if appsink will emit the &quot;new-preroll&quot; and &quot;new-buffer&quot; signals.
+signals."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_max_buffers"
+              c:identifier="gst_app_sink_set_max_buffers"
+              doc="Set the maximum amount of buffers that can be queued in @appsink. After this
+amount of buffers are queued in appsink, any more buffers will block upstream
+elements until a buffer is pulled from @appsink."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="max" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_max_buffers"
+              c:identifier="gst_app_sink_get_max_buffers"
+              doc="Get the maximum amount of buffers that can be queued in @appsink."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="set_drop"
+              c:identifier="gst_app_sink_set_drop"
+              doc="Instruct @appsink to drop old buffers when the maximum amount of queued
+buffers is reached."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="drop" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_drop"
+              c:identifier="gst_app_sink_get_drop"
+              doc="Check if @appsink will drop old buffers when the maximum amount of queued
+buffers is reached.
+filled."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="pull_preroll"
+              c:identifier="gst_app_sink_pull_preroll"
+              doc="Get the last preroll buffer in @appsink. This was the buffer that caused the
+appsink to preroll in the PAUSED state. This buffer can be pulled many times
+and remains available to the application even after EOS.
+This function is typically used when dealing with a pipeline in the PAUSED
+state. Calling this function after doing a seek will give the buffer right
+after the seek position.
+Note that the preroll buffer will also be returned as the first buffer
+when calling gst_app_sink_pull_buffer().
+If an EOS event was received before any buffers, this function returns
+%NULL. Use gst_app_sink_is_eos () to check for the EOS condition.
+This function blocks until a preroll buffer or EOS is received or the appsink
+element is set to the READY/NULL state."
+              version="0.10.22">
+        <return-value transfer-ownership="full">
+          <type name="Gst.Buffer" c:type="GstBuffer*"/>
+        </return-value>
+      </method>
+      <method name="pull_buffer"
+              c:identifier="gst_app_sink_pull_buffer"
+              doc="This function blocks until a buffer or EOS becomes available or the appsink
+element is set to the READY/NULL state.
+This function will only return buffers when the appsink is in the PLAYING
+state. All rendered buffers will be put in a queue so that the application
+can pull buffers at its own rate. Note that when the application does not
+pull buffers fast enough, the queued buffers could consume a lot of memory,
+especially when dealing with raw video frames.
+If an EOS event was received before any buffers, this function returns
+%NULL. Use gst_app_sink_is_eos () to check for the EOS condition."
+              version="0.10.22">
+        <return-value transfer-ownership="full">
+          <type name="Gst.Buffer" c:type="GstBuffer*"/>
+        </return-value>
+      </method>
+      <method name="pull_buffer_list"
+              c:identifier="gst_app_sink_pull_buffer_list"
+              doc="This function blocks until a buffer list or EOS becomes available or the
+appsink element is set to the READY/NULL state.
+This function will only return buffer lists when the appsink is in the
+PLAYING state. All rendered buffer lists will be put in a queue so that
+the application can pull buffer lists at its own rate. Note that when
+the application does not pull buffer lists fast enough, the queued buffer
+lists could consume a lot of memory, especially when dealing with raw
+video frames.
+If an EOS event was received before any buffer lists, this function returns
+%NULL. Use gst_app_sink_is_eos () to check for the EOS condition.">
+        <return-value transfer-ownership="full">
+          <type name="Gst.BufferList" c:type="GstBufferList*"/>
+        </return-value>
+      </method>
+      <method name="set_callbacks"
+              c:identifier="gst_app_sink_set_callbacks"
+              doc="Set callbacks which will be executed for each new preroll, new buffer and eos.
+This is an alternative to using the signals, it has lower overhead and is thus
+less expensive, but also less flexible.
+If callbacks are installed, no signals will be emited for performance
+reasons."
+              version="0.10.23">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="callbacks" transfer-ownership="none">
+            <type name="AppSinkCallbacks" c:type="GstAppSinkCallbacks*"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+          <parameter name="notify" transfer-ownership="none" scope="call">
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="caps" writable="1">
+        <type name="Gst.Caps" c:type="GstCaps"/>
+      </property>
+      <property name="drop" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="emit-signals" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="eos">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="max-buffers" writable="1">
+        <type name="uint" c:type="guint"/>
+      </property>
+      <field name="basesink">
+        <type name="GstBase.BaseSink" c:type="GstBaseSink"/>
+      </field>
+      <field name="priv">
+        <type name="AppSinkPrivate" c:type="GstAppSinkPrivate*"/>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+      <glib:signal name="eos"
+                   doc="Signal that the end-of-stream has been reached. This signal is emited from
+the steaming thread.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="new-buffer"
+                   doc="Signal that a new buffer is available.
+This signal is emited from the steaming thread and only when the
+&quot;emit-signals&quot; property is %TRUE.
+The new buffer can be retrieved with the &quot;pull-buffer&quot; action
+signal or gst_app_sink_pull_buffer() either from this signal callback
+or from any other thread.
+Note that this signal is only emited when the &quot;emit-signals&quot; property is
+set to %TRUE, which it is not by default for performance reasons.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="new-buffer-list"
+                   doc="Signal that a new bufferlist is available.
+This signal is emited from the steaming thread and only when the
+&quot;emit-signals&quot; property is %TRUE.
+The new buffer can be retrieved with the &quot;pull-buffer-list&quot; action
+signal or gst_app_sink_pull_buffe_listr() either from this signal callback
+or from any other thread.
+Note that this signal is only emited when the &quot;emit-signals&quot; property is
+set to %TRUE, which it is not by default for performance reasons.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="new-preroll"
+                   doc="Signal that a new preroll buffer is available.
+This signal is emited from the steaming thread and only when the
+&quot;emit-signals&quot; property is %TRUE.
+The new preroll buffer can be retrieved with the &quot;pull-preroll&quot; action
+signal or gst_app_sink_pull_preroll() either from this signal callback
+or from any other thread.
+Note that this signal is only emited when the &quot;emit-signals&quot; property is
+set to %TRUE, which it is not by default for performance reasons.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="pull-buffer"
+                   doc="This function blocks until a buffer or EOS becomes available or the appsink
+element is set to the READY/NULL state.
+This function will only return buffers when the appsink is in the PLAYING
+state. All rendered buffers will be put in a queue so that the application
+can pull buffers at its own rate.
+Note that when the application does not pull buffers fast enough, the
+queued buffers could consume a lot of memory, especially when dealing with
+raw video frames. It&apos;s possible to control the behaviour of the queue with
+the &quot;drop&quot; and &quot;max-buffers&quot; properties.
+If an EOS event was received before any buffers, this function returns
+%NULL. Use gst_app_sink_is_eos () to check for the EOS condition.">
+        <return-value transfer-ownership="full">
+          <type name="Gst.Buffer" c:type="GstBuffer"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="pull-buffer-list"
+                   doc="This function blocks until a buffer list or EOS becomes available or the appsink
+element is set to the READY/NULL state.
+This function will only return bufferlists when the appsink is in the PLAYING
+state. All rendered bufferlists will be put in a queue so that the application
+can pull bufferlists at its own rate.
+Note that when the application does not pull bufferlists fast enough, the
+queued bufferlists could consume a lot of memory, especially when dealing with
+raw video frames. It&apos;s possible to control the behaviour of the queue with
+the &quot;drop&quot; and &quot;max-buffers&quot; properties.
+If an EOS event was received before any buffers, this function returns
+%NULL. Use gst_app_sink_is_eos () to check for the EOS condition.">
+        <return-value transfer-ownership="full">
+          <type name="Gst.BufferList" c:type="GstBufferList"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="pull-preroll"
+                   doc="Get the last preroll buffer in @appsink. This was the buffer that caused the
+appsink to preroll in the PAUSED state. This buffer can be pulled many times
+and remains available to the application even after EOS.
+This function is typically used when dealing with a pipeline in the PAUSED
+state. Calling this function after doing a seek will give the buffer right
+after the seek position.
+Note that the preroll buffer will also be returned as the first buffer
+when calling gst_app_sink_pull_buffer() or the &quot;pull-buffer&quot; action signal.
+If an EOS event was received before any buffers, this function returns
+%NULL. Use gst_app_sink_is_eos () to check for the EOS condition.
+This function blocks until a preroll buffer or EOS is received or the appsink
+element is set to the READY/NULL state.">
+        <return-value transfer-ownership="full">
+          <type name="Gst.Buffer" c:type="GstBuffer"/>
+        </return-value>
+      </glib:signal>
+    </class>
+    <record name="AppSinkCallbacks"
+            c:type="GstAppSinkCallbacks"
+            doc="is called from the steaming thread.
+This callback is called from the steaming thread.
+The new preroll buffer can be retrieved with
+gst_app_sink_pull_preroll() either from this callback
+or from any other thread.
+This callback is called from the steaming thread.
+The new buffer can be retrieved with
+gst_app_sink_pull_buffer() either from this callback
+or from any other thread.
+This callback is called from the steaming thread.
+The new bufferlist can be retrieved with
+gst_app_sink_pull_buffer_list() either from this callback
+or from any other thread.
+A set of callbacks that can be installed on the appsink with
+gst_app_sink_set_callbacks()."
+            version="0.10.23">
+      <field name="eos">
+        <type name="any" c:type="pointer"/>
+      </field>
+      <field name="new_preroll">
+        <type name="any" c:type="pointer"/>
+      </field>
+      <field name="new_buffer">
+        <type name="any" c:type="pointer"/>
+      </field>
+      <field name="new_buffer_list">
+        <type name="any" c:type="pointer"/>
+      </field>
+      <field name="_gst_reserved" writable="1">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="3">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <record name="AppSinkClass"
+            c:type="GstAppSinkClass"
+            glib:is-gtype-struct-for="AppSink">
+      <field name="basesink_class">
+        <type name="GstBase.BaseSinkClass" c:type="GstBaseSinkClass"/>
+      </field>
+      <field name="eos">
+        <callback name="eos" c:type="eos">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="sink" transfer-ownership="none">
+              <type name="AppSink" c:type="GstAppSink*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="new_preroll">
+        <callback name="new_preroll" c:type="new_preroll">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="sink" transfer-ownership="none">
+              <type name="AppSink" c:type="GstAppSink*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="new_buffer">
+        <callback name="new_buffer" c:type="new_buffer">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="sink" transfer-ownership="none">
+              <type name="AppSink" c:type="GstAppSink*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="pull_preroll">
+        <callback name="pull_preroll" c:type="pull_preroll">
+          <return-value transfer-ownership="full">
+            <type name="Gst.Buffer" c:type="GstBuffer*"/>
+          </return-value>
+          <parameters>
+            <parameter name="sink" transfer-ownership="none">
+              <type name="AppSink" c:type="GstAppSink*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="pull_buffer">
+        <callback name="pull_buffer" c:type="pull_buffer">
+          <return-value transfer-ownership="full">
+            <type name="Gst.Buffer" c:type="GstBuffer*"/>
+          </return-value>
+          <parameters>
+            <parameter name="sink" transfer-ownership="none">
+              <type name="AppSink" c:type="GstAppSink*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="new_buffer_list">
+        <callback name="new_buffer_list" c:type="new_buffer_list">
+          <return-value transfer-ownership="full">
+            <type name="Gst.BufferList" c:type="GstBufferList*"/>
+          </return-value>
+          <parameters>
+            <parameter name="sink" transfer-ownership="none">
+              <type name="AppSink" c:type="GstAppSink*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="pull_buffer_list">
+        <callback name="pull_buffer_list" c:type="pull_buffer_list">
+          <return-value transfer-ownership="full">
+            <type name="Gst.BufferList" c:type="GstBufferList*"/>
+          </return-value>
+          <parameters>
+            <parameter name="sink" transfer-ownership="none">
+              <type name="AppSink" c:type="GstAppSink*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="2">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <record name="AppSinkPrivate" c:type="GstAppSinkPrivate">
+    </record>
+    <class name="AppSrc"
+           c:type="GstAppSrc"
+           parent="GstBase.BaseSrc"
+           glib:type-name="GstAppSrc"
+           glib:get-type="gst_app_src_get_type"
+           glib:type-struct="AppSrcClass">
+      <implements name="Gst.URIHandler"/>
+      <method name="set_caps"
+              c:identifier="gst_app_src_set_caps"
+              doc="Set the capabilities on the appsrc element.  This function takes
+a copy of the caps structure. After calling this method, the source will
+only produce caps that match @caps. @caps must be fixed and the caps on the
+buffers must match the caps or left NULL."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="caps" transfer-ownership="none">
+            <type name="Gst.Caps" c:type="GstCaps*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_caps"
+              c:identifier="gst_app_src_get_caps"
+              doc="Get the configured caps on @appsrc."
+              version="0.10.22">
+        <return-value transfer-ownership="full" doc="after usage.">
+          <type name="Gst.Caps" c:type="GstCaps*"/>
+        </return-value>
+      </method>
+      <method name="set_size"
+              c:identifier="gst_app_src_set_size"
+              doc="Set the size of the stream in bytes. A value of -1 means that the size is
+not known."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="size" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_size"
+              c:identifier="gst_app_src_get_size"
+              doc="Get the size of the stream in bytes. A value of -1 means that the size is
+not known."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="int64" c:type="gint64"/>
+        </return-value>
+      </method>
+      <method name="set_stream_type"
+              c:identifier="gst_app_src_set_stream_type"
+              doc="Set the stream type on @appsrc. For seekable streams, the &quot;seek&quot; signal must
+be connected to.
+A stream_type stream"
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="type" transfer-ownership="none">
+            <type name="AppStreamType" c:type="GstAppStreamType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_stream_type"
+              c:identifier="gst_app_src_get_stream_type"
+              doc="Get the stream type. Control the stream type of @appsrc
+with gst_app_src_set_stream_type()."
+              version="0.10.22">
+        <return-value transfer-ownership="full">
+          <type name="AppStreamType" c:type="GstAppStreamType"/>
+        </return-value>
+      </method>
+      <method name="set_max_bytes"
+              c:identifier="gst_app_src_set_max_bytes"
+              doc="Set the maximum amount of bytes that can be queued in @appsrc.
+After the maximum amount of bytes are queued, @appsrc will emit the
+&quot;enough-data&quot; signal."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="max" transfer-ownership="none">
+            <type name="uint64" c:type="guint64"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_max_bytes"
+              c:identifier="gst_app_src_get_max_bytes"
+              doc="Get the maximum amount of bytes that can be queued in @appsrc."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="uint64" c:type="guint64"/>
+        </return-value>
+      </method>
+      <method name="set_latency"
+              c:identifier="gst_app_src_set_latency"
+              doc="Configure the @min and @max latency in @src. If @min is set to -1, the
+default latency calculations for pseudo-live sources will be used."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="min" transfer-ownership="none">
+            <type name="uint64" c:type="guint64"/>
+          </parameter>
+          <parameter name="max" transfer-ownership="none">
+            <type name="uint64" c:type="guint64"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_latency"
+              c:identifier="gst_app_src_get_latency"
+              doc="Retrieve the min and max latencies in @min and @max respectively."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="min" direction="out" transfer-ownership="full">
+            <type name="uint64" c:type="guint64*"/>
+          </parameter>
+          <parameter name="max" direction="out" transfer-ownership="full">
+            <type name="uint64" c:type="guint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_emit_signals"
+              c:identifier="gst_app_src_set_emit_signals"
+              doc="Make appsrc emit the &quot;new-preroll&quot; and &quot;new-buffer&quot; signals. This option is
+by default disabled because signal emission is expensive and unneeded when
+the application prefers to operate in pull mode."
+              version="0.10.23">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="emit" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_emit_signals"
+              c:identifier="gst_app_src_get_emit_signals"
+              doc="Check if appsrc will emit the &quot;new-preroll&quot; and &quot;new-buffer&quot; signals.
+signals."
+              version="0.10.23">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="push_buffer"
+              c:identifier="gst_app_src_push_buffer"
+              doc="Adds a buffer to the queue of buffers that the appsrc element will
+push to its source pad.  This function takes ownership of the buffer.
+When the block property is TRUE, this function can block until free
+space becomes available in the queue.
+#GST_FLOW_WRONG_STATE when @appsrc is not PAUSED or PLAYING.
+#GST_FLOW_UNEXPECTED when EOS occured."
+              version="0.10.22">
+        <return-value transfer-ownership="full">
+          <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+        </return-value>
+        <parameters>
+          <parameter name="buffer" transfer-ownership="none">
+            <type name="Gst.Buffer" c:type="GstBuffer*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="end_of_stream"
+              c:identifier="gst_app_src_end_of_stream"
+              doc="Indicates to the appsrc element that the last buffer queued in the
+element is the last buffer of the stream.
+#GST_FLOW_WRONG_STATE when @appsrc is not PAUSED or PLAYING."
+              version="0.10.22">
+        <return-value transfer-ownership="full">
+          <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+        </return-value>
+      </method>
+      <method name="set_callbacks"
+              c:identifier="gst_app_src_set_callbacks"
+              doc="Set callbacks which will be executed when data is needed, enough data has
+been collected or when a seek should be performed.
+This is an alternative to using the signals, it has lower overhead and is thus
+less expensive, but also less flexible.
+If callbacks are installed, no signals will be emited for performance
+reasons."
+              version="0.10.23">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="callbacks" transfer-ownership="none">
+            <type name="AppSrcCallbacks" c:type="GstAppSrcCallbacks*"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+          <parameter name="notify" transfer-ownership="none" scope="call">
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="block" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="caps" writable="1">
+        <type name="Gst.Caps" c:type="GstCaps"/>
+      </property>
+      <property name="emit-signals" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="format" writable="1">
+        <type name="Gst.Format" c:type="GstFormat"/>
+      </property>
+      <property name="is-live" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="max-bytes" writable="1">
+        <type name="uint64" c:type="guint64"/>
+      </property>
+      <property name="max-latency" writable="1">
+        <type name="int64" c:type="gint64"/>
+      </property>
+      <property name="min-latency" writable="1">
+        <type name="int64" c:type="gint64"/>
+      </property>
+      <property name="min-percent" writable="1">
+        <type name="uint" c:type="guint"/>
+      </property>
+      <property name="size" writable="1">
+        <type name="int64" c:type="gint64"/>
+      </property>
+      <property name="stream-type" writable="1">
+        <type name="AppStreamType" c:type="GstAppStreamType"/>
+      </property>
+      <field name="basesrc">
+        <type name="GstBase.BaseSrc" c:type="GstBaseSrc"/>
+      </field>
+      <field name="priv">
+        <type name="AppSrcPrivate" c:type="GstAppSrcPrivate*"/>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+      <glib:signal name="end-of-stream"
+                   doc="Notify @appsrc that no more buffer are available.">
+        <return-value transfer-ownership="full">
+          <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="enough-data"
+                   doc="Signal that the source has enough data. It is recommended that the
+application stops calling push-buffer until the need-data signal is
+emited again to avoid excessive buffer queueing.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="need-data"
+                   doc="Signal that the source needs more data. In the callback or from another
+thread you should call push-buffer or end-of-stream.
+pushed into @appsrc.
+You can call push-buffer multiple times until the enough-data signal is
+fired.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="length" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="push-buffer"
+                   doc="Adds a buffer to the queue of buffers that the appsrc element will
+push to its source pad. This function does not take ownership of the
+buffer so the buffer needs to be unreffed after calling this function.
+When the block property is TRUE, this function can block until free space
+becomes available in the queue.">
+        <return-value transfer-ownership="full">
+          <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+        </return-value>
+        <parameters>
+          <parameter name="buffer" transfer-ownership="none">
+            <type name="Gst.Buffer" c:type="GstBuffer"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="seek-data"
+                   doc="Seek to the given offset. The next push-buffer should produce buffers from
+the new @offset.
+This callback is only called for seekable stream types.">
+        <return-value transfer-ownership="full">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="offset" transfer-ownership="none">
+            <type name="uint64" c:type="guint64"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <record name="AppSrcCallbacks"
+            c:type="GstAppSrcCallbacks"
+            doc="pushed to appsrc from this thread or another thread. @length is just a hint
+and when it is set to -1, any number of bytes can be pushed into @appsrc.
+application stops calling push-buffer until the need_data callback is
+emited again to avoid excessive buffer queueing.
+The next push-buffer should produce buffers from the new @offset.
+This callback is only called for seekable stream types.
+A set of callbacks that can be installed on the appsrc with
+gst_app_src_set_callbacks()."
+            version="0.10.23">
+      <field name="need_data">
+        <type name="any" c:type="pointer"/>
+      </field>
+      <field name="enough_data">
+        <type name="any" c:type="pointer"/>
+      </field>
+      <field name="seek_data">
+        <type name="any" c:type="pointer"/>
+      </field>
+      <field name="_gst_reserved" writable="1">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <record name="AppSrcClass"
+            c:type="GstAppSrcClass"
+            glib:is-gtype-struct-for="AppSrc">
+      <field name="basesrc_class">
+        <type name="GstBase.BaseSrcClass" c:type="GstBaseSrcClass"/>
+      </field>
+      <field name="need_data">
+        <callback name="need_data" c:type="need_data">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="src" transfer-ownership="none">
+              <type name="AppSrc" c:type="GstAppSrc*"/>
+            </parameter>
+            <parameter name="length" transfer-ownership="none">
+              <type name="uint" c:type="guint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="enough_data">
+        <callback name="enough_data" c:type="enough_data">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="src" transfer-ownership="none">
+              <type name="AppSrc" c:type="GstAppSrc*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="seek_data">
+        <callback name="seek_data" c:type="seek_data">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="src" transfer-ownership="none">
+              <type name="AppSrc" c:type="GstAppSrc*"/>
+            </parameter>
+            <parameter name="offset" transfer-ownership="none">
+              <type name="uint64" c:type="guint64"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="push_buffer">
+        <callback name="push_buffer" c:type="push_buffer">
+          <return-value transfer-ownership="full">
+            <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+          </return-value>
+          <parameters>
+            <parameter name="src" transfer-ownership="none">
+              <type name="AppSrc" c:type="GstAppSrc*"/>
+            </parameter>
+            <parameter name="buffer" transfer-ownership="none">
+              <type name="Gst.Buffer" c:type="GstBuffer*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="end_of_stream">
+        <callback name="end_of_stream" c:type="end_of_stream">
+          <return-value transfer-ownership="full">
+            <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+          </return-value>
+          <parameters>
+            <parameter name="src" transfer-ownership="none">
+              <type name="AppSrc" c:type="GstAppSrc*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <record name="AppSrcPrivate" c:type="GstAppSrcPrivate">
+    </record>
+    <enumeration name="AppStreamType"
+                 doc="live stream.
+be very fast, such as data from a webserver.
+such as in a local file.
+The stream type."
+                 c:type="GstAppStreamType">
+      <member name="stream"
+              value="0"
+              c:identifier="GST_APP_STREAM_TYPE_STREAM"/>
+      <member name="seekable"
+              value="1"
+              c:identifier="GST_APP_STREAM_TYPE_SEEKABLE"/>
+      <member name="random_access"
+              value="2"
+              c:identifier="GST_APP_STREAM_TYPE_RANDOM_ACCESS"/>
+    </enumeration>
+  </namespace>
+</repository>
diff --git a/extra/gstreamer/app/app.factor b/extra/gstreamer/app/app.factor
new file mode 100644 (file)
index 0000000..ae80d54
--- /dev/null
@@ -0,0 +1,5 @@
+! Copyright (C) 2010 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: gstreamer.app.ffi ;
+IN: gstreamer.app
+
diff --git a/extra/gstreamer/app/ffi/ffi.factor b/extra/gstreamer/app/ffi/ffi.factor
new file mode 100644 (file)
index 0000000..b92d568
--- /dev/null
@@ -0,0 +1,17 @@
+! Copyright (C) 2010 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: alien alien.c-types alien.libraries combinators kernel
+system
+gobject-introspection glib.ffi gstreamer.ffi ;
+IN: gstreamer.app.ffi
+
+<<
+"gstreamer.app" {
+    { [ os winnt? ] [ drop ] }
+    { [ os macosx? ] [ drop ] }
+    { [ os unix? ] [ "libgstapp-0.10.so" cdecl add-library ] }
+} cond
+>>
+
+GIR: vocab:gstreamer/app/GstApp-0.10.gir
+
diff --git a/extra/gstreamer/audio/GstAudio-0.10.gir b/extra/gstreamer/audio/GstAudio-0.10.gir
new file mode 100644 (file)
index 0000000..73d9983
--- /dev/null
@@ -0,0 +1,2360 @@
+<?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.0"
+            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="GLib" version="2.0"/>
+  <include name="GModule" version="2.0"/>
+  <include name="GObject" version="2.0"/>
+  <include name="Gst" version="0.10"/>
+  <include name="GstBase" version="0.10"/>
+  <include name="GstInterfaces" version="0.10"/>
+  <include name="libxml2" version="2.0"/>
+  <package name="gstreamer-0.10"/>
+  <package name="gstreamer-base-0.10"/>
+  <package name="gstreamer-interfaces-0.10"/>
+  <c:include name="gst/audio/audio-enumtypes.h"/>
+  <c:include name="gst/audio/audio.h"/>
+  <c:include name="gst/audio/gstaudioclock.h"/>
+  <c:include name="gst/audio/gstaudiofilter.h"/>
+  <c:include name="gst/audio/gstaudiosink.h"/>
+  <c:include name="gst/audio/gstaudiosrc.h"/>
+  <c:include name="gst/audio/gstbaseaudiosink.h"/>
+  <c:include name="gst/audio/gstbaseaudiosrc.h"/>
+  <c:include name="gst/audio/gstringbuffer.h"/>
+  <c:include name="gst/audio/mixerutils.h"/>
+  <c:include name="gst/audio/multichannel.h"/>
+  <namespace name="GstAudio"
+             version="0.10"
+             shared-library="libgstaudio-0.10.so.0"
+             c:prefix="Gst">
+    <enumeration name="AudioChannelPosition"
+                 doc="from a sound card that records 1024 channels; mutually exclusive with
+any other channel position"
+                 glib:type-name="GstAudioChannelPosition"
+                 glib:get-type="gst_audio_channel_position_get_type"
+                 c:type="GstAudioChannelPosition">
+      <member name="invalid"
+              value="-1"
+              c:identifier="GST_AUDIO_CHANNEL_POSITION_INVALID"
+              glib:nick="invalid"/>
+      <member name="front_mono"
+              value="0"
+              c:identifier="GST_AUDIO_CHANNEL_POSITION_FRONT_MONO"
+              glib:nick="front-mono"/>
+      <member name="front_left"
+              value="1"
+              c:identifier="GST_AUDIO_CHANNEL_POSITION_FRONT_LEFT"
+              glib:nick="front-left"/>
+      <member name="front_right"
+              value="2"
+              c:identifier="GST_AUDIO_CHANNEL_POSITION_FRONT_RIGHT"
+              glib:nick="front-right"/>
+      <member name="rear_center"
+              value="3"
+              c:identifier="GST_AUDIO_CHANNEL_POSITION_REAR_CENTER"
+              glib:nick="rear-center"/>
+      <member name="rear_left"
+              value="4"
+              c:identifier="GST_AUDIO_CHANNEL_POSITION_REAR_LEFT"
+              glib:nick="rear-left"/>
+      <member name="rear_right"
+              value="5"
+              c:identifier="GST_AUDIO_CHANNEL_POSITION_REAR_RIGHT"
+              glib:nick="rear-right"/>
+      <member name="lfe"
+              value="6"
+              c:identifier="GST_AUDIO_CHANNEL_POSITION_LFE"
+              glib:nick="lfe"/>
+      <member name="front_center"
+              value="7"
+              c:identifier="GST_AUDIO_CHANNEL_POSITION_FRONT_CENTER"
+              glib:nick="front-center"/>
+      <member name="front_left_of_center"
+              value="8"
+              c:identifier="GST_AUDIO_CHANNEL_POSITION_FRONT_LEFT_OF_CENTER"
+              glib:nick="front-left-of-center"/>
+      <member name="front_right_of_center"
+              value="9"
+              c:identifier="GST_AUDIO_CHANNEL_POSITION_FRONT_RIGHT_OF_CENTER"
+              glib:nick="front-right-of-center"/>
+      <member name="side_left"
+              value="10"
+              c:identifier="GST_AUDIO_CHANNEL_POSITION_SIDE_LEFT"
+              glib:nick="side-left"/>
+      <member name="side_right"
+              value="11"
+              c:identifier="GST_AUDIO_CHANNEL_POSITION_SIDE_RIGHT"
+              glib:nick="side-right"/>
+      <member name="none"
+              value="12"
+              c:identifier="GST_AUDIO_CHANNEL_POSITION_NONE"
+              glib:nick="none"/>
+      <member name="num"
+              value="13"
+              c:identifier="GST_AUDIO_CHANNEL_POSITION_NUM"
+              glib:nick="num"/>
+    </enumeration>
+    <class name="AudioClock"
+           c:type="GstAudioClock"
+           doc="Opaque #GstAudioClock."
+           parent="Gst.SystemClock"
+           glib:type-name="GstAudioClock"
+           glib:get-type="gst_audio_clock_get_type"
+           glib:type-struct="AudioClockClass">
+      <constructor name="new"
+                   c:identifier="gst_audio_clock_new"
+                   doc="Create a new #GstAudioClock instance. Whenever the clock time should be
+calculated it will call @func with @user_data. When @func returns
+#GST_CLOCK_TIME_NONE, the clock will return the last reported time.">
+        <return-value transfer-ownership="full">
+          <type name="AudioClock" c:type="GstClock*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="2">
+            <type name="AudioClockGetTimeFunc"
+                  c:type="GstAudioClockGetTimeFunc"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="reset"
+              c:identifier="gst_audio_clock_reset"
+              doc="Inform @clock that future calls to #GstAudioClockGetTimeFunc will return values
+starting from @time. The clock will update an internal offset to make sure that
+future calls to internal_time will return an increasing result as required by
+the #GstClock object.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="time" transfer-ownership="none">
+            <type name="Gst.ClockTime" c:type="GstClockTime"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_time"
+              c:identifier="gst_audio_clock_get_time"
+              doc="Report the time as returned by the #GstAudioClockGetTimeFunc without applying
+any offsets."
+              version="0.10.23">
+        <return-value transfer-ownership="full">
+          <type name="Gst.ClockTime" c:type="GstClockTime"/>
+        </return-value>
+      </method>
+      <method name="adjust"
+              c:identifier="gst_audio_clock_adjust"
+              doc="Adjust @time with the internal offset of the audio clock."
+              version="0.10.23">
+        <return-value transfer-ownership="full">
+          <type name="Gst.ClockTime" c:type="GstClockTime"/>
+        </return-value>
+        <parameters>
+          <parameter name="time" transfer-ownership="none">
+            <type name="Gst.ClockTime" c:type="GstClockTime"/>
+          </parameter>
+        </parameters>
+      </method>
+      <field name="clock">
+        <type name="Gst.SystemClock" c:type="GstSystemClock"/>
+      </field>
+      <field name="func">
+        <type name="AudioClockGetTimeFunc" c:type="GstAudioClockGetTimeFunc"/>
+      </field>
+      <field name="user_data">
+        <type name="any" c:type="gpointer"/>
+      </field>
+      <field name="last_time">
+        <type name="Gst.ClockTime" c:type="GstClockTime"/>
+      </field>
+      <union name="abidata" c:type="abidata">
+        <record name="ABI" c:type="ABI">
+          <field name="time_offset" writable="1">
+            <type name="Gst.ClockTimeDiff" c:type="GstClockTimeDiff"/>
+          </field>
+        </record>
+        <field name="_gst_reserved" writable="1">
+          <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+            <type name="any"/>
+          </array>
+        </field>
+      </union>
+    </class>
+    <record name="AudioClockClass"
+            c:type="GstAudioClockClass"
+            glib:is-gtype-struct-for="AudioClock">
+      <field name="parent_class">
+        <type name="Gst.SystemClockClass" c:type="GstSystemClockClass"/>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <callback name="AudioClockGetTimeFunc"
+              c:type="GstAudioClockGetTimeFunc"
+              doc="This function will be called whenever the current clock time needs to be
+calculated. If this function returns #GST_CLOCK_TIME_NONE, the last reported
+time will be returned by the clock.
+be used.">
+      <return-value transfer-ownership="full">
+        <type name="Gst.ClockTime" c:type="GstClockTime"/>
+      </return-value>
+      <parameters>
+        <parameter name="clock" transfer-ownership="none">
+          <type name="Gst.Clock" c:type="GstClock*"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="1">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <bitfield name="AudioFieldFlag"
+              doc="Do not use anymore."
+              deprecated="use gst_structure_set() directly"
+              c:type="GstAudioFieldFlag">
+      <member name="rate" value="1" c:identifier="GST_AUDIO_FIELD_RATE"/>
+      <member name="channels"
+              value="2"
+              c:identifier="GST_AUDIO_FIELD_CHANNELS"/>
+      <member name="endianness"
+              value="4"
+              c:identifier="GST_AUDIO_FIELD_ENDIANNESS"/>
+      <member name="width" value="8" c:identifier="GST_AUDIO_FIELD_WIDTH"/>
+      <member name="depth" value="16" c:identifier="GST_AUDIO_FIELD_DEPTH"/>
+      <member name="signed" value="32" c:identifier="GST_AUDIO_FIELD_SIGNED"/>
+    </bitfield>
+    <class name="AudioFilter"
+           c:type="GstAudioFilter"
+           doc="Base class for audio filters with the same format for input and output."
+           version="0.10.12"
+           parent="GstBase.BaseTransform"
+           abstract="1"
+           glib:type-name="GstAudioFilter"
+           glib:get-type="gst_audio_filter_get_type"
+           glib:type-struct="AudioFilterClass">
+      <virtual-method name="setup">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <type name="RingBufferSpec" c:type="GstRingBufferSpec*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <field name="basetransform">
+        <type name="GstBase.BaseTransform" c:type="GstBaseTransform"/>
+      </field>
+      <field name="format">
+        <type name="RingBufferSpec" c:type="GstRingBufferSpec"/>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </class>
+    <record name="AudioFilterClass"
+            c:type="GstAudioFilterClass"
+            glib:is-gtype-struct-for="AudioFilter"
+            doc="In addition to the @setup virtual function, you should also override the
+GstBaseTransform::transform and/or GstBaseTransform::transform_ip virtual
+function."
+            version="0.10.12">
+      <field name="basetransformclass">
+        <type name="GstBase.BaseTransformClass"
+              c:type="GstBaseTransformClass"/>
+      </field>
+      <field name="setup">
+        <callback name="setup" c:type="setup">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="filter" transfer-ownership="none">
+              <type name="AudioFilter" c:type="GstAudioFilter*"/>
+            </parameter>
+            <parameter name="format" transfer-ownership="none">
+              <type name="RingBufferSpec" c:type="GstRingBufferSpec*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+      <method name="add_pad_templates"
+              c:identifier="gst_audio_filter_class_add_pad_templates"
+              doc="Convenience function to add pad templates to this element class, with
+This function is usually used from within a GObject base_init function."
+              version="0.10.12">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="allowed_caps" transfer-ownership="none">
+            <type name="Gst.Caps" c:type="GstCaps*"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <callback name="AudioMixerFilterFunc"
+              c:type="GstAudioMixerFilterFunc"
+              doc="Function that will be called by gst_audio_default_registry_mixer_filter()
+so the caller can decide which mixer elements should be kept and returned.
+When the mixer element is passed to the callback function, it is opened
+and in READY state. If you decide to keep the element, you need to set it
+back to NULL state yourself (unless you want to keep it opened of course).">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="mixer" transfer-ownership="none">
+          <type name="GstInterfaces.Mixer" c:type="GstMixer*"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="1">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <class name="AudioSink"
+           c:type="GstAudioSink"
+           doc="Opaque #GstAudioSink."
+           parent="BaseAudioSink"
+           glib:type-name="GstAudioSink"
+           glib:get-type="gst_audio_sink_get_type"
+           glib:type-struct="AudioSinkClass">
+      <virtual-method name="open">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="prepare">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="spec" transfer-ownership="none">
+            <type name="RingBufferSpec" c:type="GstRingBufferSpec*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="unprepare">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="close">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="write">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+          <parameter name="length" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="delay">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="reset">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <field name="element">
+        <type name="BaseAudioSink" c:type="GstBaseAudioSink"/>
+      </field>
+      <field name="thread">
+        <type name="GLib.Thread" c:type="GThread*"/>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </class>
+    <record name="AudioSinkClass"
+            c:type="GstAudioSinkClass"
+            glib:is-gtype-struct-for="AudioSink"
+            doc="This function is also used to check if the device is available.
+drive the synchronisation.
+samples from the device.
+#GstAudioSink class. Override the vmethods to implement functionality.">
+      <field name="parent_class">
+        <type name="BaseAudioSinkClass" c:type="GstBaseAudioSinkClass"/>
+      </field>
+      <field name="open">
+        <callback name="open" c:type="open">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="sink" transfer-ownership="none">
+              <type name="AudioSink" c:type="GstAudioSink*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="prepare">
+        <callback name="prepare" c:type="prepare">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="sink" transfer-ownership="none">
+              <type name="AudioSink" c:type="GstAudioSink*"/>
+            </parameter>
+            <parameter name="spec" transfer-ownership="none">
+              <type name="RingBufferSpec" c:type="GstRingBufferSpec*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="unprepare">
+        <callback name="unprepare" c:type="unprepare">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="sink" transfer-ownership="none">
+              <type name="AudioSink" c:type="GstAudioSink*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="close">
+        <callback name="close" c:type="close">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="sink" transfer-ownership="none">
+              <type name="AudioSink" c:type="GstAudioSink*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="write">
+        <callback name="write" c:type="write">
+          <return-value transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </return-value>
+          <parameters>
+            <parameter name="sink" transfer-ownership="none">
+              <type name="AudioSink" c:type="GstAudioSink*"/>
+            </parameter>
+            <parameter name="data" transfer-ownership="none">
+              <type name="any" c:type="gpointer"/>
+            </parameter>
+            <parameter name="length" transfer-ownership="none">
+              <type name="uint" c:type="guint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="delay">
+        <callback name="delay" c:type="delay">
+          <return-value transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </return-value>
+          <parameters>
+            <parameter name="sink" transfer-ownership="none">
+              <type name="AudioSink" c:type="GstAudioSink*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="reset">
+        <callback name="reset" c:type="reset">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="sink" transfer-ownership="none">
+              <type name="AudioSink" c:type="GstAudioSink*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <class name="AudioSrc"
+           c:type="GstAudioSrc"
+           doc="Base class for simple audio sources."
+           parent="BaseAudioSrc"
+           glib:type-name="GstAudioSrc"
+           glib:get-type="gst_audio_src_get_type"
+           glib:type-struct="AudioSrcClass">
+      <virtual-method name="open">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="prepare">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="spec" transfer-ownership="none">
+            <type name="RingBufferSpec" c:type="GstRingBufferSpec*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="unprepare">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="close">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="read">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+          <parameter name="length" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="delay">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="reset">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <field name="element">
+        <type name="BaseAudioSrc" c:type="GstBaseAudioSrc"/>
+      </field>
+      <field name="thread">
+        <type name="GLib.Thread" c:type="GThread*"/>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </class>
+    <record name="AudioSrcClass"
+            c:type="GstAudioSrcClass"
+            glib:is-gtype-struct-for="AudioSrc"
+            doc="#GstAudioSrc class. Override the vmethod to implement
+functionality.">
+      <field name="parent_class">
+        <type name="BaseAudioSrcClass" c:type="GstBaseAudioSrcClass"/>
+      </field>
+      <field name="open">
+        <callback name="open" c:type="open">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="src" transfer-ownership="none">
+              <type name="AudioSrc" c:type="GstAudioSrc*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="prepare">
+        <callback name="prepare" c:type="prepare">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="src" transfer-ownership="none">
+              <type name="AudioSrc" c:type="GstAudioSrc*"/>
+            </parameter>
+            <parameter name="spec" transfer-ownership="none">
+              <type name="RingBufferSpec" c:type="GstRingBufferSpec*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="unprepare">
+        <callback name="unprepare" c:type="unprepare">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="src" transfer-ownership="none">
+              <type name="AudioSrc" c:type="GstAudioSrc*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="close">
+        <callback name="close" c:type="close">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="src" transfer-ownership="none">
+              <type name="AudioSrc" c:type="GstAudioSrc*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="read">
+        <callback name="read" c:type="read">
+          <return-value transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </return-value>
+          <parameters>
+            <parameter name="src" transfer-ownership="none">
+              <type name="AudioSrc" c:type="GstAudioSrc*"/>
+            </parameter>
+            <parameter name="data" transfer-ownership="none">
+              <type name="any" c:type="gpointer"/>
+            </parameter>
+            <parameter name="length" transfer-ownership="none">
+              <type name="uint" c:type="guint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="delay">
+        <callback name="delay" c:type="delay">
+          <return-value transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </return-value>
+          <parameters>
+            <parameter name="src" transfer-ownership="none">
+              <type name="AudioSrc" c:type="GstAudioSrc*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="reset">
+        <callback name="reset" c:type="reset">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="src" transfer-ownership="none">
+              <type name="AudioSrc" c:type="GstAudioSrc*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <class name="BaseAudioSink"
+           c:type="GstBaseAudioSink"
+           doc="Opaque #GstBaseAudioSink."
+           parent="GstBase.BaseSink"
+           glib:type-name="GstBaseAudioSink"
+           glib:get-type="gst_base_audio_sink_get_type"
+           glib:type-struct="BaseAudioSinkClass">
+      <virtual-method name="create_ringbuffer" invoker="create_ringbuffer">
+        <return-value transfer-ownership="full">
+          <type name="RingBuffer" c:type="GstRingBuffer*"/>
+        </return-value>
+      </virtual-method>
+      <method name="create_ringbuffer"
+              c:identifier="gst_base_audio_sink_create_ringbuffer"
+              doc="Create and return the #GstRingBuffer for @sink. This function will call the
+::create_ringbuffer vmethod and will set @sink as the parent of the returned
+buffer (see gst_object_set_parent()).">
+        <return-value transfer-ownership="full">
+          <type name="RingBuffer" c:type="GstRingBuffer*"/>
+        </return-value>
+      </method>
+      <method name="set_provide_clock"
+              c:identifier="gst_base_audio_sink_set_provide_clock"
+              doc="Controls whether @sink will provide a clock or not. If @provide is %TRUE,
+gst_element_provide_clock() will return a clock that reflects the datarate
+of @sink. If @provide is %FALSE, gst_element_provide_clock() will return NULL."
+              version="0.10.16">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="provide" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_provide_clock"
+              c:identifier="gst_base_audio_sink_get_provide_clock"
+              doc="Queries whether @sink will provide a clock or not. See also
+gst_base_audio_sink_set_provide_clock."
+              version="0.10.16">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_slave_method"
+              c:identifier="gst_base_audio_sink_set_slave_method"
+              doc="Controls how clock slaving will be performed in @sink."
+              version="0.10.16">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="method" transfer-ownership="none">
+            <type name="BaseAudioSinkSlaveMethod"
+                  c:type="GstBaseAudioSinkSlaveMethod"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_slave_method"
+              c:identifier="gst_base_audio_sink_get_slave_method"
+              doc="Get the current slave method used by @sink."
+              version="0.10.16">
+        <return-value transfer-ownership="full">
+          <type name="BaseAudioSinkSlaveMethod"
+                c:type="GstBaseAudioSinkSlaveMethod"/>
+        </return-value>
+      </method>
+      <property name="buffer-time" writable="1">
+        <type name="int64" c:type="gint64"/>
+      </property>
+      <property name="can-activate-pull" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="drift-tolerance" writable="1">
+        <type name="int64" c:type="gint64"/>
+      </property>
+      <property name="latency-time" writable="1">
+        <type name="int64" c:type="gint64"/>
+      </property>
+      <property name="provide-clock" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="slave-method" writable="1">
+        <type name="BaseAudioSinkSlaveMethod"
+              c:type="GstBaseAudioSinkSlaveMethod"/>
+      </property>
+      <field name="element">
+        <type name="GstBase.BaseSink" c:type="GstBaseSink"/>
+      </field>
+      <field name="ringbuffer">
+        <type name="RingBuffer" c:type="GstRingBuffer*"/>
+      </field>
+      <field name="buffer_time">
+        <type name="uint64" c:type="guint64"/>
+      </field>
+      <field name="latency_time">
+        <type name="uint64" c:type="guint64"/>
+      </field>
+      <field name="next_sample">
+        <type name="uint64" c:type="guint64"/>
+      </field>
+      <field name="provide_clock">
+        <type name="boolean" c:type="gboolean"/>
+      </field>
+      <field name="provided_clock">
+        <type name="Gst.Clock" c:type="GstClock*"/>
+      </field>
+      <field name="priv">
+        <type name="BaseAudioSinkPrivate" c:type="GstBaseAudioSinkPrivate*"/>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="3">
+          <type name="any"/>
+        </array>
+      </field>
+    </class>
+    <record name="BaseAudioSinkClass"
+            c:type="GstBaseAudioSinkClass"
+            glib:is-gtype-struct-for="BaseAudioSink"
+            doc="#GstBaseAudioSink class. Override the vmethod to implement
+functionality.">
+      <field name="parent_class">
+        <type name="GstBase.BaseSinkClass" c:type="GstBaseSinkClass"/>
+      </field>
+      <field name="create_ringbuffer">
+        <callback name="create_ringbuffer" c:type="create_ringbuffer">
+          <return-value transfer-ownership="full">
+            <type name="RingBuffer" c:type="GstRingBuffer*"/>
+          </return-value>
+          <parameters>
+            <parameter name="sink" transfer-ownership="none">
+              <type name="BaseAudioSink" c:type="GstBaseAudioSink*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <record name="BaseAudioSinkPrivate" c:type="GstBaseAudioSinkPrivate">
+    </record>
+    <enumeration name="BaseAudioSinkSlaveMethod"
+                 doc="drifts too much.
+Different possible clock slaving algorithms used when the internal audio
+clock is not selected as the pipeline master clock."
+                 glib:type-name="GstBaseAudioSinkSlaveMethod"
+                 glib:get-type="gst_base_audio_sink_slave_method_get_type"
+                 c:type="GstBaseAudioSinkSlaveMethod">
+      <member name="resample"
+              value="0"
+              c:identifier="GST_BASE_AUDIO_SINK_SLAVE_RESAMPLE"
+              glib:nick="resample"/>
+      <member name="skew"
+              value="1"
+              c:identifier="GST_BASE_AUDIO_SINK_SLAVE_SKEW"
+              glib:nick="skew"/>
+      <member name="none"
+              value="2"
+              c:identifier="GST_BASE_AUDIO_SINK_SLAVE_NONE"
+              glib:nick="none"/>
+    </enumeration>
+    <class name="BaseAudioSrc"
+           c:type="GstBaseAudioSrc"
+           doc="Opaque #GstBaseAudioSrc."
+           parent="GstBase.PushSrc"
+           glib:type-name="GstBaseAudioSrc"
+           glib:get-type="gst_base_audio_src_get_type"
+           glib:type-struct="BaseAudioSrcClass">
+      <virtual-method name="create_ringbuffer" invoker="create_ringbuffer">
+        <return-value transfer-ownership="full">
+          <type name="RingBuffer" c:type="GstRingBuffer*"/>
+        </return-value>
+      </virtual-method>
+      <method name="create_ringbuffer"
+              c:identifier="gst_base_audio_src_create_ringbuffer"
+              doc="Create and return the #GstRingBuffer for @src. This function will call the
+::create_ringbuffer vmethod and will set @src as the parent of the returned
+buffer (see gst_object_set_parent()).">
+        <return-value transfer-ownership="full">
+          <type name="RingBuffer" c:type="GstRingBuffer*"/>
+        </return-value>
+      </method>
+      <method name="set_provide_clock"
+              c:identifier="gst_base_audio_src_set_provide_clock"
+              doc="Controls whether @src will provide a clock or not. If @provide is %TRUE,
+gst_element_provide_clock() will return a clock that reflects the datarate
+of @src. If @provide is %FALSE, gst_element_provide_clock() will return NULL."
+              version="0.10.16">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="provide" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_provide_clock"
+              c:identifier="gst_base_audio_src_get_provide_clock"
+              doc="Queries whether @src will provide a clock or not. See also
+gst_base_audio_src_set_provide_clock."
+              version="0.10.16">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_slave_method"
+              c:identifier="gst_base_audio_src_set_slave_method"
+              doc="Controls how clock slaving will be performed in @src."
+              version="0.10.20">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="method" transfer-ownership="none">
+            <type name="BaseAudioSrcSlaveMethod"
+                  c:type="GstBaseAudioSrcSlaveMethod"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_slave_method"
+              c:identifier="gst_base_audio_src_get_slave_method"
+              doc="Get the current slave method used by @src."
+              version="0.10.20">
+        <return-value transfer-ownership="full">
+          <type name="BaseAudioSrcSlaveMethod"
+                c:type="GstBaseAudioSrcSlaveMethod"/>
+        </return-value>
+      </method>
+      <property name="actual-buffer-time"
+                version="0.10.20"
+                doc="Actual configured size of audio buffer in microseconds.">
+        <type name="int64" c:type="gint64"/>
+      </property>
+      <property name="actual-latency-time"
+                version="0.10.20"
+                doc="Actual configured audio latency in microseconds.">
+        <type name="int64" c:type="gint64"/>
+      </property>
+      <property name="buffer-time" writable="1">
+        <type name="int64" c:type="gint64"/>
+      </property>
+      <property name="latency-time" writable="1">
+        <type name="int64" c:type="gint64"/>
+      </property>
+      <property name="provide-clock" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="slave-method" writable="1">
+        <type name="BaseAudioSrcSlaveMethod"
+              c:type="GstBaseAudioSrcSlaveMethod"/>
+      </property>
+      <field name="element">
+        <type name="GstBase.PushSrc" c:type="GstPushSrc"/>
+      </field>
+      <field name="ringbuffer">
+        <type name="RingBuffer" c:type="GstRingBuffer*"/>
+      </field>
+      <field name="buffer_time">
+        <type name="Gst.ClockTime" c:type="GstClockTime"/>
+      </field>
+      <field name="latency_time">
+        <type name="Gst.ClockTime" c:type="GstClockTime"/>
+      </field>
+      <field name="next_sample">
+        <type name="uint64" c:type="guint64"/>
+      </field>
+      <field name="clock">
+        <type name="Gst.Clock" c:type="GstClock*"/>
+      </field>
+      <field name="priv">
+        <type name="BaseAudioSrcPrivate" c:type="GstBaseAudioSrcPrivate*"/>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="3">
+          <type name="any"/>
+        </array>
+      </field>
+    </class>
+    <record name="BaseAudioSrcClass"
+            c:type="GstBaseAudioSrcClass"
+            glib:is-gtype-struct-for="BaseAudioSrc"
+            doc="#GstBaseAudioSrc class. Override the vmethod to implement
+functionality.">
+      <field name="parent_class">
+        <type name="GstBase.PushSrcClass" c:type="GstPushSrcClass"/>
+      </field>
+      <field name="create_ringbuffer">
+        <callback name="create_ringbuffer" c:type="create_ringbuffer">
+          <return-value transfer-ownership="full">
+            <type name="RingBuffer" c:type="GstRingBuffer*"/>
+          </return-value>
+          <parameters>
+            <parameter name="src" transfer-ownership="none">
+              <type name="BaseAudioSrc" c:type="GstBaseAudioSrc*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <record name="BaseAudioSrcPrivate" c:type="GstBaseAudioSrcPrivate">
+    </record>
+    <enumeration name="BaseAudioSrcSlaveMethod"
+                 doc="clock time.
+drifts too much.
+Different possible clock slaving algorithms when the internal audio clock was
+not selected as the pipeline clock."
+                 glib:type-name="GstBaseAudioSrcSlaveMethod"
+                 glib:get-type="gst_base_audio_src_slave_method_get_type"
+                 c:type="GstBaseAudioSrcSlaveMethod">
+      <member name="resample"
+              value="0"
+              c:identifier="GST_BASE_AUDIO_SRC_SLAVE_RESAMPLE"
+              glib:nick="resample"/>
+      <member name="re_timestamp"
+              value="1"
+              c:identifier="GST_BASE_AUDIO_SRC_SLAVE_RETIMESTAMP"
+              glib:nick="re-timestamp"/>
+      <member name="skew" value="2" c:identifier="GST_BASE_AUDIO_SRC_SLAVE_SKEW" glib:nick="skew"/>
+      <member name="none"
+              value="3"
+              c:identifier="GST_BASE_AUDIO_SRC_SLAVE_NONE"
+              glib:nick="none"/>
+    </enumeration>
+    <enumeration name="BufferFormat"
+                 glib:type-name="GstBufferFormat"
+                 glib:get-type="gst_buffer_format_get_type"
+                 c:type="GstBufferFormat">
+      <member name="unknown"
+              value="0"
+              c:identifier="GST_UNKNOWN"
+              glib:nick="unknown"/>
+      <member name="s8" value="1" c:identifier="GST_S8" glib:nick="s8"/>
+      <member name="u8" value="2" c:identifier="GST_U8" glib:nick="u8"/>
+      <member name="s16_le"
+              value="3"
+              c:identifier="GST_S16_LE"
+              glib:nick="s16-le"/>
+      <member name="s16_be"
+              value="4"
+              c:identifier="GST_S16_BE"
+              glib:nick="s16-be"/>
+      <member name="u16_le"
+              value="5"
+              c:identifier="GST_U16_LE"
+              glib:nick="u16-le"/>
+      <member name="u16_be"
+              value="6"
+              c:identifier="GST_U16_BE"
+              glib:nick="u16-be"/>
+      <member name="s24_le"
+              value="7"
+              c:identifier="GST_S24_LE"
+              glib:nick="s24-le"/>
+      <member name="s24_be"
+              value="8"
+              c:identifier="GST_S24_BE"
+              glib:nick="s24-be"/>
+      <member name="u24_le"
+              value="9"
+              c:identifier="GST_U24_LE"
+              glib:nick="u24-le"/>
+      <member name="u24_be"
+              value="10"
+              c:identifier="GST_U24_BE"
+              glib:nick="u24-be"/>
+      <member name="s32_le"
+              value="11"
+              c:identifier="GST_S32_LE"
+              glib:nick="s32-le"/>
+      <member name="s32_be"
+              value="12"
+              c:identifier="GST_S32_BE"
+              glib:nick="s32-be"/>
+      <member name="u32_le"
+              value="13"
+              c:identifier="GST_U32_LE"
+              glib:nick="u32-le"/>
+      <member name="u32_be"
+              value="14"
+              c:identifier="GST_U32_BE"
+              glib:nick="u32-be"/>
+      <member name="s24_3le"
+              value="15"
+              c:identifier="GST_S24_3LE"
+              glib:nick="s24-3le"/>
+      <member name="s24_3be"
+              value="16"
+              c:identifier="GST_S24_3BE"
+              glib:nick="s24-3be"/>
+      <member name="u24_3le"
+              value="17"
+              c:identifier="GST_U24_3LE"
+              glib:nick="u24-3le"/>
+      <member name="u24_3be"
+              value="18"
+              c:identifier="GST_U24_3BE"
+              glib:nick="u24-3be"/>
+      <member name="s20_3le"
+              value="19"
+              c:identifier="GST_S20_3LE"
+              glib:nick="s20-3le"/>
+      <member name="s20_3be"
+              value="20"
+              c:identifier="GST_S20_3BE"
+              glib:nick="s20-3be"/>
+      <member name="u20_3le"
+              value="21"
+              c:identifier="GST_U20_3LE"
+              glib:nick="u20-3le"/>
+      <member name="u20_3be"
+              value="22"
+              c:identifier="GST_U20_3BE"
+              glib:nick="u20-3be"/>
+      <member name="s18_3le"
+              value="23"
+              c:identifier="GST_S18_3LE"
+              glib:nick="s18-3le"/>
+      <member name="s18_3be"
+              value="24"
+              c:identifier="GST_S18_3BE"
+              glib:nick="s18-3be"/>
+      <member name="u18_3le"
+              value="25"
+              c:identifier="GST_U18_3LE"
+              glib:nick="u18-3le"/>
+      <member name="u18_3be"
+              value="26"
+              c:identifier="GST_U18_3BE"
+              glib:nick="u18-3be"/>
+      <member name="float32_le"
+              value="27"
+              c:identifier="GST_FLOAT32_LE"
+              glib:nick="float32-le"/>
+      <member name="float32_be"
+              value="28"
+              c:identifier="GST_FLOAT32_BE"
+              glib:nick="float32-be"/>
+      <member name="float64_le"
+              value="29"
+              c:identifier="GST_FLOAT64_LE"
+              glib:nick="float64-le"/>
+      <member name="float64_be"
+              value="30"
+              c:identifier="GST_FLOAT64_BE"
+              glib:nick="float64-be"/>
+      <member name="mu_law"
+              value="31"
+              c:identifier="GST_MU_LAW"
+              glib:nick="mu-law"/>
+      <member name="a_law"
+              value="32"
+              c:identifier="GST_A_LAW"
+              glib:nick="a-law"/>
+      <member name="ima_adpcm"
+              value="33"
+              c:identifier="GST_IMA_ADPCM"
+              glib:nick="ima-adpcm"/>
+      <member name="mpeg" value="34" c:identifier="GST_MPEG" glib:nick="mpeg"/>
+      <member name="gsm" value="35" c:identifier="GST_GSM" glib:nick="gsm"/>
+      <member name="iec958"
+              value="36"
+              c:identifier="GST_IEC958"
+              glib:nick="iec958"/>
+      <member name="ac3" value="37" c:identifier="GST_AC3" glib:nick="ac3"/>
+      <member name="eac3" value="38" c:identifier="GST_EAC3" glib:nick="eac3"/>
+      <member name="dts" value="39" c:identifier="GST_DTS" glib:nick="dts"/>
+    </enumeration>
+    <enumeration name="BufferFormatType"
+                 doc="The format of the samples in the ringbuffer."
+                 glib:type-name="GstBufferFormatType"
+                 glib:get-type="gst_buffer_format_type_get_type"
+                 c:type="GstBufferFormatType">
+      <member name="linear"
+              value="0"
+              c:identifier="GST_BUFTYPE_LINEAR"
+              glib:nick="linear"/>
+      <member name="float"
+              value="1"
+              c:identifier="GST_BUFTYPE_FLOAT"
+              glib:nick="float"/>
+      <member name="mu_law"
+              value="2"
+              c:identifier="GST_BUFTYPE_MU_LAW"
+              glib:nick="mu-law"/>
+      <member name="a_law"
+              value="3"
+              c:identifier="GST_BUFTYPE_A_LAW"
+              glib:nick="a-law"/>
+      <member name="ima_adpcm"
+              value="4"
+              c:identifier="GST_BUFTYPE_IMA_ADPCM"
+              glib:nick="ima-adpcm"/>
+      <member name="mpeg"
+              value="5"
+              c:identifier="GST_BUFTYPE_MPEG"
+              glib:nick="mpeg"/>
+      <member name="gsm"
+              value="6"
+              c:identifier="GST_BUFTYPE_GSM"
+              glib:nick="gsm"/>
+      <member name="iec958"
+              value="7"
+              c:identifier="GST_BUFTYPE_IEC958"
+              glib:nick="iec958"/>
+      <member name="ac3"
+              value="8"
+              c:identifier="GST_BUFTYPE_AC3"
+              glib:nick="ac3"/>
+      <member name="eac3"
+              value="9"
+              c:identifier="GST_BUFTYPE_EAC3"
+              glib:nick="eac3"/>
+      <member name="dts"
+              value="10"
+              c:identifier="GST_BUFTYPE_DTS"
+              glib:nick="dts"/>
+    </enumeration>
+    <constant name="DEF_RATE" value="44100">
+      <type name="int"/>
+    </constant>
+    <constant name="FLOAT_PAD_TEMPLATE_CAPS"
+              value="audio/x-raw-float, rate = (int) [ 1, MAX ], channels = (int) [ 1, MAX ], endianness = (int) { LITTLE_ENDIAN , BIG_ENDIAN }, width = (int) { 32, 64 }">
+      <type name="utf8"/>
+    </constant>
+    <constant name="FLOAT_STANDARD_PAD_TEMPLATE_CAPS"
+              value="audio/x-raw-float, width = (int) 32, rate = (int) [ 1, MAX ], channels = (int) 1, endianness = (int) BYTE_ORDER">
+      <type name="utf8"/>
+    </constant>
+    <constant name="INT_PAD_TEMPLATE_CAPS"
+              value="audio/x-raw-int, rate = (int) [ 1, MAX ], channels = (int) [ 1, MAX ], endianness = (int) { LITTLE_ENDIAN, BIG_ENDIAN }, width = (int) { 8, 16, 24, 32 }, depth = (int) [ 1, 32 ], signed = (boolean) { true, false }">
+      <type name="utf8"/>
+    </constant>
+    <constant name="INT_STANDARD_PAD_TEMPLATE_CAPS"
+              value="audio/x-raw-int, rate = (int) [ 1, MAX ], channels = (int) 2, endianness = (int) BYTE_ORDER, width = (int) 16, depth = (int) 16, signed = (boolean) true">
+      <type name="utf8"/>
+    </constant>
+    <class name="RingBuffer"
+           c:type="GstRingBuffer"
+           doc="The ringbuffer base class structure."
+           parent="Gst.Object"
+           abstract="1"
+           glib:type-name="GstRingBuffer"
+           glib:get-type="gst_ring_buffer_get_type"
+           glib:type-struct="RingBufferClass">
+      <function name="parse_caps"
+                c:identifier="gst_ring_buffer_parse_caps"
+                doc="Parse @caps into @spec.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="spec" transfer-ownership="none">
+            <type name="RingBufferSpec" c:type="GstRingBufferSpec*"/>
+          </parameter>
+          <parameter name="caps" transfer-ownership="none">
+            <type name="Gst.Caps" c:type="GstCaps*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="debug_spec_caps"
+                c:identifier="gst_ring_buffer_debug_spec_caps"
+                doc="Print debug info about the parsed caps in @spec to the debug log.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="spec" transfer-ownership="none">
+            <type name="RingBufferSpec" c:type="GstRingBufferSpec*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="debug_spec_buff"
+                c:identifier="gst_ring_buffer_debug_spec_buff"
+                doc="Print debug info about the buffer sized in @spec to the debug log.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="spec" transfer-ownership="none">
+            <type name="RingBufferSpec" c:type="GstRingBufferSpec*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <virtual-method name="open_device" invoker="open_device">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="acquire" invoker="acquire">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="spec" transfer-ownership="none">
+            <type name="RingBufferSpec" c:type="GstRingBufferSpec*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="release" invoker="release">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="close_device" invoker="close_device">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="start" invoker="start">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="pause" invoker="pause">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="resume">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="stop" invoker="stop">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="delay" invoker="delay">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="activate" invoker="activate">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="active" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="commit">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+        <parameters>
+          <parameter name="sample" direction="out" transfer-ownership="full">
+            <type name="uint64" c:type="guint64*"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <array c:type="guchar*">
+              <type name="uint8"/>
+            </array>
+          </parameter>
+          <parameter name="in_samples" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="out_samples" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="accum" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="clear_all" invoker="clear_all">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <method name="set_callback"
+              c:identifier="gst_ring_buffer_set_callback"
+              doc="Sets the given callback function on the buffer. This function
+will be called every time a segment has been written to a device.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="cb"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="2">
+            <type name="RingBufferCallback" c:type="GstRingBufferCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="convert"
+              c:identifier="gst_ring_buffer_convert"
+              doc="Convert @src_val in @src_fmt to the equivalent value in @dest_fmt. The result
+will be put in @dest_val."
+              version="0.10.22.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="src_fmt" transfer-ownership="none">
+            <type name="Gst.Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="src_val" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+          <parameter name="dest_fmt" transfer-ownership="none">
+            <type name="Gst.Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="dest_val" direction="out" transfer-ownership="full">
+            <type name="int64" c:type="gint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="open_device"
+              c:identifier="gst_ring_buffer_open_device"
+              doc="Open the audio device associated with the ring buffer. Does not perform any
+setup on the device. You must open the device before acquiring the ring
+buffer.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="close_device"
+              c:identifier="gst_ring_buffer_close_device"
+              doc="Close the audio device associated with the ring buffer. The ring buffer
+should already have been released via gst_ring_buffer_release().
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="device_is_open"
+              c:identifier="gst_ring_buffer_device_is_open"
+              doc="Checks the status of the device associated with the ring buffer.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="acquire"
+              c:identifier="gst_ring_buffer_acquire"
+              doc="Allocate the resources for the ringbuffer. This function fills
+in the data pointer of the ring buffer with a valid #GstBuffer
+to which samples can be written.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="spec" transfer-ownership="none">
+            <type name="RingBufferSpec" c:type="GstRingBufferSpec*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="release"
+              c:identifier="gst_ring_buffer_release"
+              doc="Free the resources of the ringbuffer.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="is_acquired"
+              c:identifier="gst_ring_buffer_is_acquired"
+              doc="Check if the ringbuffer is acquired and ready to use.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="activate"
+              c:identifier="gst_ring_buffer_activate"
+              doc="Activate @buf to start or stop pulling data.
+MT safe.
+FALSE on error."
+              version="0.10.22.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="active" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="is_active"
+              c:identifier="gst_ring_buffer_is_active"
+              doc="Check if @buf is activated.
+MT safe."
+              version="0.10.22.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_flushing"
+              c:identifier="gst_ring_buffer_set_flushing"
+              doc="Set the ringbuffer to flushing mode or normal mode.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="flushing" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="start"
+              c:identifier="gst_ring_buffer_start"
+              doc="Start processing samples from the ringbuffer.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="pause"
+              c:identifier="gst_ring_buffer_pause"
+              doc="Pause processing samples from the ringbuffer.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="stop"
+              c:identifier="gst_ring_buffer_stop"
+              doc="Stop processing samples from the ringbuffer.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="delay"
+              c:identifier="gst_ring_buffer_delay"
+              doc="Get the number of samples queued in the audio device. This is
+usually less than the segment size but can be bigger when the
+implementation uses another internal buffer between the audio
+device.
+For playback ringbuffers this is the amount of samples transfered from the
+ringbuffer to the device but still not played.
+For capture ringbuffers this is the amount of samples in the device that are
+not yet transfered to the ringbuffer.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="samples_done"
+              c:identifier="gst_ring_buffer_samples_done"
+              doc="Get the number of samples that were processed by the ringbuffer
+since it was last started. This does not include the number of samples not
+yet processed (see gst_ring_buffer_delay()).
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="uint64" c:type="guint64"/>
+        </return-value>
+      </method>
+      <method name="set_sample"
+              c:identifier="gst_ring_buffer_set_sample"
+              doc="Make sure that the next sample written to the device is
+accounted for as being the @sample sample written to the
+device. This value will be used in reporting the current
+sample position of the ringbuffer.
+This function will also clear the buffer with silence.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="sample" transfer-ownership="none">
+            <type name="uint64" c:type="guint64"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="clear_all"
+              c:identifier="gst_ring_buffer_clear_all"
+              doc="Fill the ringbuffer with silence.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="commit"
+              c:identifier="gst_ring_buffer_commit"
+              doc="Same as gst_ring_buffer_commit_full() but with a in_samples and out_samples
+equal to @len, ignoring accum.
+error.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+        <parameters>
+          <parameter name="sample" transfer-ownership="none">
+            <type name="uint64" c:type="guint64"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <array c:type="guchar*">
+              <type name="uint8"/>
+            </array>
+          </parameter>
+          <parameter name="len" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="commit_full"
+              c:identifier="gst_ring_buffer_commit_full"
+              doc="Commit @in_samples samples pointed to by @data to the ringbuffer @buf.
+samples in @data. For negative rates, @out_samples must be negative and
+When @out_samples is positive, the first sample will be written at position @sample
+in the ringbuffer. When @out_samples is negative, the last sample will be written to
+although it is recommended for optimal performance.
+set to 0 when this function is first called. In case the commit operation is
+interrupted, one can resume the processing by passing the previously returned
+MT safe.
+number of samples written can be less than @out_samples when @buf was interrupted
+with a flush or stop."
+              version="0.10.11.">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+        <parameters>
+          <parameter name="sample" direction="out" transfer-ownership="full">
+            <type name="uint64" c:type="guint64*"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <array c:type="guchar*">
+              <type name="uint8"/>
+            </array>
+          </parameter>
+          <parameter name="in_samples" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="out_samples" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="accum" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="read"
+              c:identifier="gst_ring_buffer_read"
+              doc="Read @len samples from the ringbuffer into the memory pointed
+to by @data.
+The first sample should be read from position @sample in
+the ringbuffer.
+although it is recommended.
+error.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+        <parameters>
+          <parameter name="sample" transfer-ownership="none">
+            <type name="uint64" c:type="guint64"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <array c:type="guchar*">
+              <type name="uint8"/>
+            </array>
+          </parameter>
+          <parameter name="len" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="prepare_read"
+              c:identifier="gst_ring_buffer_prepare_read"
+              doc="Returns a pointer to memory where the data from segment @segment
+can be found. This function is mostly used by subclasses.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="segment" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+          <parameter name="readptr" direction="out" transfer-ownership="full">
+            <type name="uint8" c:type="guint8**"/>
+          </parameter>
+          <parameter name="len" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="clear"
+              c:identifier="gst_ring_buffer_clear"
+              doc="Clear the given segment of the buffer with silence samples.
+This function is used by subclasses.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="segment" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="advance"
+              c:identifier="gst_ring_buffer_advance"
+              doc="Subclasses should call this function to notify the fact that
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="advance" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="may_start"
+              c:identifier="gst_ring_buffer_may_start"
+              doc="Tell the ringbuffer that it is allowed to start playback when
+the ringbuffer is filled with samples.
+MT safe."
+              version="0.10.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="allowed" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <field name="object">
+        <type name="Gst.Object" c:type="GstObject"/>
+      </field>
+      <field name="cond">
+        <type name="GLib.Cond" c:type="GCond*"/>
+      </field>
+      <field name="open">
+        <type name="boolean" c:type="gboolean"/>
+      </field>
+      <field name="acquired">
+        <type name="boolean" c:type="gboolean"/>
+      </field>
+      <field name="data">
+        <type name="Gst.Buffer" c:type="GstBuffer*"/>
+      </field>
+      <field name="spec">
+        <type name="RingBufferSpec" c:type="GstRingBufferSpec"/>
+      </field>
+      <field name="segstate">
+        <type name="RingBufferSegState" c:type="GstRingBufferSegState*"/>
+      </field>
+      <field name="samples_per_seg">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="empty_seg">
+        <type name="any" c:type="guint8*"/>
+      </field>
+      <field name="state">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="segdone">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="segbase">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="waiting">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="callback">
+        <type name="RingBufferCallback" c:type="GstRingBufferCallback"/>
+      </field>
+      <field name="cb_data">
+        <type name="any" c:type="gpointer"/>
+      </field>
+      <union name="abidata" c:type="abidata">
+        <record name="ABI" c:type="ABI">
+          <field name="flushing" writable="1">
+            <type name="boolean" c:type="gboolean"/>
+          </field>
+          <field name="may_start" writable="1">
+            <type name="int" c:type="gint"/>
+          </field>
+          <field name="active" writable="1">
+            <type name="boolean" c:type="gboolean"/>
+          </field>
+        </record>
+        <field name="_gst_reserved" writable="1">
+          <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+            <type name="any"/>
+          </array>
+        </field>
+      </union>
+    </class>
+    <callback name="RingBufferCallback"
+              c:type="GstRingBufferCallback"
+              doc="This function is set with gst_ring_buffer_set_callback() and is
+called to fill the memory at @data with @len bytes of samples.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="rbuf" transfer-ownership="none">
+          <type name="RingBuffer" c:type="GstRingBuffer*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <array c:type="guint8*">
+            <type name="uint8"/>
+          </array>
+        </parameter>
+        <parameter name="len" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="3">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <record name="RingBufferClass"
+            c:type="GstRingBufferClass"
+            glib:is-gtype-struct-for="RingBuffer"
+            doc="consumed segments in the device. Since 0.10.22
+The vmethods that subclasses can override to implement the ringbuffer.">
+      <field name="parent_class">
+        <type name="Gst.ObjectClass" c:type="GstObjectClass"/>
+      </field>
+      <field name="open_device">
+        <callback name="open_device" c:type="open_device">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="buf" transfer-ownership="none">
+              <type name="RingBuffer" c:type="GstRingBuffer*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="acquire">
+        <callback name="acquire" c:type="acquire">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="buf" transfer-ownership="none">
+              <type name="RingBuffer" c:type="GstRingBuffer*"/>
+            </parameter>
+            <parameter name="spec" transfer-ownership="none">
+              <type name="RingBufferSpec" c:type="GstRingBufferSpec*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="release">
+        <callback name="release" c:type="release">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="buf" transfer-ownership="none">
+              <type name="RingBuffer" c:type="GstRingBuffer*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="close_device">
+        <callback name="close_device" c:type="close_device">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="buf" transfer-ownership="none">
+              <type name="RingBuffer" c:type="GstRingBuffer*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="start">
+        <callback name="start" c:type="start">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="buf" transfer-ownership="none">
+              <type name="RingBuffer" c:type="GstRingBuffer*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="pause">
+        <callback name="pause" c:type="pause">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="buf" transfer-ownership="none">
+              <type name="RingBuffer" c:type="GstRingBuffer*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="resume">
+        <callback name="resume" c:type="resume">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="buf" transfer-ownership="none">
+              <type name="RingBuffer" c:type="GstRingBuffer*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="stop">
+        <callback name="stop" c:type="stop">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="buf" transfer-ownership="none">
+              <type name="RingBuffer" c:type="GstRingBuffer*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="delay">
+        <callback name="delay" c:type="delay">
+          <return-value transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </return-value>
+          <parameters>
+            <parameter name="buf" transfer-ownership="none">
+              <type name="RingBuffer" c:type="GstRingBuffer*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="activate">
+        <callback name="activate" c:type="activate">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="buf" transfer-ownership="none">
+              <type name="RingBuffer" c:type="GstRingBuffer*"/>
+            </parameter>
+            <parameter name="active" transfer-ownership="none">
+              <type name="boolean" c:type="gboolean"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="commit">
+        <callback name="commit" c:type="commit">
+          <return-value transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </return-value>
+          <parameters>
+            <parameter name="buf" transfer-ownership="none">
+              <type name="RingBuffer" c:type="GstRingBuffer*"/>
+            </parameter>
+            <parameter name="sample" direction="out" transfer-ownership="full">
+              <type name="uint64" c:type="guint64*"/>
+            </parameter>
+            <parameter name="data" transfer-ownership="none">
+              <array c:type="guchar*">
+                <type name="uint8"/>
+              </array>
+            </parameter>
+            <parameter name="in_samples" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+            <parameter name="out_samples" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+            <parameter name="accum" direction="out" transfer-ownership="full">
+              <type name="int" c:type="gint*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="clear_all">
+        <callback name="clear_all" c:type="clear_all">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="buf" transfer-ownership="none">
+              <type name="RingBuffer" c:type="GstRingBuffer*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="1">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <enumeration name="RingBufferSegState"
+                 doc="The state of a segment in the ringbuffer."
+                 glib:type-name="GstRingBufferSegState"
+                 glib:get-type="gst_ring_buffer_seg_state_get_type"
+                 c:type="GstRingBufferSegState">
+      <member name="invalid"
+              value="0"
+              c:identifier="GST_SEGSTATE_INVALID"
+              glib:nick="invalid"/>
+      <member name="empty"
+              value="1"
+              c:identifier="GST_SEGSTATE_EMPTY"
+              glib:nick="empty"/>
+      <member name="filled"
+              value="2"
+              c:identifier="GST_SEGSTATE_FILLED"
+              glib:nick="filled"/>
+      <member name="partial"
+              value="3"
+              c:identifier="GST_SEGSTATE_PARTIAL"
+              glib:nick="partial"/>
+    </enumeration>
+    <record name="RingBufferSpec"
+            c:type="GstRingBufferSpec"
+            doc="defaults to segtotal
+The structure containing the format specification of the ringbuffer.">
+      <field name="caps" writable="1">
+        <type name="Gst.Caps" c:type="GstCaps*"/>
+      </field>
+      <field name="type" writable="1">
+        <type name="BufferFormatType" c:type="GstBufferFormatType"/>
+      </field>
+      <field name="format" writable="1">
+        <type name="BufferFormat" c:type="GstBufferFormat"/>
+      </field>
+      <field name="sign" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </field>
+      <field name="bigend" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </field>
+      <field name="width" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="depth" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="rate" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="channels" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="latency_time" writable="1">
+        <type name="uint64" c:type="guint64"/>
+      </field>
+      <field name="buffer_time" writable="1">
+        <type name="uint64" c:type="guint64"/>
+      </field>
+      <field name="segsize" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="segtotal" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="bytes_per_sample" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="silence_sample" writable="1">
+        <array zero-terminated="0" c:type="guint8" fixed-size="32">
+          <type name="uint8"/>
+        </array>
+      </field>
+      <field name="seglatency" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="_gst_reserved" writable="1">
+        <array zero-terminated="0" c:type="guint8" fixed-size="0">
+          <type name="uint8"/>
+        </array>
+      </field>
+    </record>
+    <enumeration name="RingBufferState"
+                 doc="The state of the ringbuffer."
+                 glib:type-name="GstRingBufferState"
+                 glib:get-type="gst_ring_buffer_state_get_type"
+                 c:type="GstRingBufferState">
+      <member name="stopped"
+              value="0"
+              c:identifier="GST_RING_BUFFER_STATE_STOPPED"
+              glib:nick="stopped"/>
+      <member name="paused"
+              value="1"
+              c:identifier="GST_RING_BUFFER_STATE_PAUSED"
+              glib:nick="paused"/>
+      <member name="started"
+              value="2"
+              c:identifier="GST_RING_BUFFER_STATE_STARTED"
+              glib:nick="started"/>
+    </enumeration>
+    <function name="buffer_clip"
+              c:identifier="gst_audio_buffer_clip"
+              doc="Clip the the buffer to the given %GstSegment.
+After calling this function the caller does not own a reference to
+otherwise the clipped buffer is returned.
+If the buffer has no timestamp, it is assumed to be inside the segment and
+is not clipped"
+              version="0.10.14">
+      <return-value transfer-ownership="full">
+        <type name="Gst.Buffer" c:type="GstBuffer*"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none">
+          <type name="Gst.Buffer" c:type="GstBuffer*"/>
+        </parameter>
+        <parameter name="segment" transfer-ownership="none">
+          <type name="Gst.Segment" c:type="GstSegment*"/>
+        </parameter>
+        <parameter name="rate" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="frame_size" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="check_channel_positions"
+              c:identifier="gst_audio_check_channel_positions"
+              doc="This functions checks if the given channel positions are valid. Channel
+positions are valid if:
+&lt;itemizedlist&gt;
+&lt;listitem&gt;&lt;para&gt;No channel positions appears twice or all positions are %GST_AUDIO_CHANNEL_POSITION_NONE.
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;Either all or none of the channel positions are %GST_AUDIO_CHANNEL_POSITION_NONE.
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;%GST_AUDIO_CHANNEL_POSITION_FRONT_MONO and %GST_AUDIO_CHANNEL_POSITION_FRONT_LEFT or %GST_AUDIO_CHANNEL_POSITION_FRONT_RIGHT don&apos;t appear together in the given positions.
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;/itemizedlist&gt;
+and %FALSE otherwise."
+              version="0.10.20">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="pos" transfer-ownership="none">
+          <type name="AudioChannelPosition" c:type="GstAudioChannelPosition*"/>
+        </parameter>
+        <parameter name="channels" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="default_registry_mixer_filter"
+              c:identifier="gst_audio_default_registry_mixer_filter"
+              doc="Utility function to find audio mixer elements.
+Will traverse the default plugin registry in order of plugin rank and
+find usable audio mixer elements. The caller may optionally fine-tune
+the selection by specifying a filter function.
+element in the list by setting it to NULL state and calling
+gst_object_unref(). After that the list itself should be freed
+using g_list_free()."
+              version="0.10.2">
+      <return-value transfer-ownership="full">
+        <type name="GLib.List" c:type="GList*"/>
+      </return-value>
+      <parameters>
+        <parameter name="filter_func" transfer-ownership="none" scope="call">
+          <type name="AudioMixerFilterFunc" c:type="GstAudioMixerFilterFunc"/>
+        </parameter>
+        <parameter name="first" transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="duration_from_pad_buffer"
+              c:identifier="gst_audio_duration_from_pad_buffer"
+              doc="Calculate length in nanoseconds of audio buffer @buf based on capabilities of">
+      <return-value transfer-ownership="full">
+        <type name="Gst.ClockTime" c:type="GstClockTime"/>
+      </return-value>
+      <parameters>
+        <parameter name="pad" transfer-ownership="none">
+          <type name="Gst.Pad" c:type="GstPad*"/>
+        </parameter>
+        <parameter name="buf" transfer-ownership="none">
+          <type name="Gst.Buffer" c:type="GstBuffer*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="fixate_channel_positions"
+              c:identifier="gst_audio_fixate_channel_positions"
+              doc="&quot;channel-positions&quot; field.
+Custom fixate function. Elements that implement some sort of
+channel conversion algorithm should use this function for
+fixating on GstAudioChannelPosition properties. It will take
+care of equal channel positioning (left/right). Caller g_free()s
+the return value. The input properties may be (and are supposed
+to be) unfixed.
+Note that this function is mostly a hack because we currently
+have no way to add default fixation functions for new GTypes.
+set of #GstAudioChannelPosition values.">
+      <return-value transfer-ownership="full">
+        <type name="AudioChannelPosition" c:type="GstAudioChannelPosition*"/>
+      </return-value>
+      <parameters>
+        <parameter name="str" transfer-ownership="none">
+          <type name="Gst.Structure" c:type="GstStructure*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="frame_byte_size"
+              c:identifier="gst_audio_frame_byte_size"
+              doc="Calculate byte size of an audio frame.">
+      <return-value transfer-ownership="none">
+        <type name="int" c:type="int"/>
+      </return-value>
+      <parameters>
+        <parameter name="pad" transfer-ownership="none">
+          <type name="Gst.Pad" c:type="GstPad*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="frame_length"
+              c:identifier="gst_audio_frame_length"
+              doc="Calculate length of buffer in frames.">
+      <return-value transfer-ownership="none">
+        <type name="long" c:type="long"/>
+      </return-value>
+      <parameters>
+        <parameter name="pad" transfer-ownership="none">
+          <type name="Gst.Pad" c:type="GstPad*"/>
+        </parameter>
+        <parameter name="buf" transfer-ownership="none">
+          <type name="Gst.Buffer" c:type="GstBuffer*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="get_channel_positions"
+              c:identifier="gst_audio_get_channel_positions"
+              doc="Retrieves a number of (fixed!) audio channel positions from
+the provided #GstStructure and returns it as a newly allocated
+array. The caller should g_free () this array. The caller
+should also check that the members in this #GstStructure are
+indeed &quot;fixed&quot; before calling this function.
+positions as provided in the given #GstStructure. Returns
+NULL on error.">
+      <return-value transfer-ownership="full">
+        <type name="AudioChannelPosition" c:type="GstAudioChannelPosition*"/>
+      </return-value>
+      <parameters>
+        <parameter name="str" transfer-ownership="none">
+          <type name="Gst.Structure" c:type="GstStructure*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="is_buffer_framed"
+              c:identifier="gst_audio_is_buffer_framed"
+              doc="Check if the buffer size is a whole multiple of the frame size.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="pad" transfer-ownership="none">
+          <type name="Gst.Pad" c:type="GstPad*"/>
+        </parameter>
+        <parameter name="buf" transfer-ownership="none">
+          <type name="Gst.Buffer" c:type="GstBuffer*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="set_caps_channel_positions_list"
+              c:identifier="gst_audio_set_caps_channel_positions_list"
+              doc="channel positions that we should add in each value
+of the array in the given structure.
+Sets a (possibly non-fixed) list of possible audio channel
+positions (given in pos) on the given caps. Each of the
+structures of the caps, after this function has been called,
+will contain a &quot;channel-positions&quot; field with an array.
+Each value in the array will contain each of the values given
+in the pos array. Note that the size of the caps might be
+increased by this, since each structure with a &quot;channel-
+positions&quot; field needs to have a fixed &quot;channels&quot; field.
+The input caps is not required to have this.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="caps" transfer-ownership="none">
+          <type name="Gst.Caps" c:type="GstCaps*"/>
+        </parameter>
+        <parameter name="pos" transfer-ownership="none">
+          <type name="AudioChannelPosition" c:type="GstAudioChannelPosition*"/>
+        </parameter>
+        <parameter name="num_positions" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="set_channel_positions"
+              c:identifier="gst_audio_set_channel_positions"
+              doc="in this array should be equal to the (fixed!) number
+of the &quot;channels&quot; field in the given #GstStructure.
+Adds a &quot;channel-positions&quot; field to the given #GstStructure,
+which will represent the channel positions as given in the
+provided #GstAudioChannelPosition array.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="str" transfer-ownership="none">
+          <type name="Gst.Structure" c:type="GstStructure*"/>
+        </parameter>
+        <parameter name="pos" transfer-ownership="none">
+          <type name="AudioChannelPosition" c:type="GstAudioChannelPosition*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="set_structure_channel_positions_list"
+              c:identifier="gst_audio_set_structure_channel_positions_list"
+              doc="on.
+channel positions that we should add in each value
+of the array in the given structure.
+Sets a (possibly non-fixed) list of possible audio channel
+positions (given in pos) on the given structure. The
+structure, after this function has been called, will contain
+a &quot;channel-positions&quot; field with an array of the size of
+the &quot;channels&quot; field value in the given structure (note
+that this means that the channels field in the provided
+structure should be fixed!). Each value in the array will
+contain each of the values given in the pos array.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="str" transfer-ownership="none">
+          <type name="Gst.Structure" c:type="GstStructure*"/>
+        </parameter>
+        <parameter name="pos" transfer-ownership="none">
+          <type name="AudioChannelPosition" c:type="GstAudioChannelPosition*"/>
+        </parameter>
+        <parameter name="num_positions" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="structure_set_int"
+              c:identifier="gst_audio_structure_set_int"
+              doc="Do not use anymore."
+              deprecated="use gst_structure_set()">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="structure" transfer-ownership="none">
+          <type name="Gst.Structure" c:type="GstStructure*"/>
+        </parameter>
+        <parameter name="flag" transfer-ownership="none">
+          <type name="AudioFieldFlag" c:type="GstAudioFieldFlag"/>
+        </parameter>
+      </parameters>
+    </function>
+  </namespace>
+</repository>
diff --git a/extra/gstreamer/audio/audio.factor b/extra/gstreamer/audio/audio.factor
new file mode 100644 (file)
index 0000000..1495be4
--- /dev/null
@@ -0,0 +1,5 @@
+! Copyright (C) 2010 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: gstreamer.audio.ffi ;
+IN: gstreamer.audio
+
diff --git a/extra/gstreamer/audio/ffi/ffi.factor b/extra/gstreamer/audio/ffi/ffi.factor
new file mode 100644 (file)
index 0000000..5b0be1d
--- /dev/null
@@ -0,0 +1,18 @@
+! Copyright (C) 2010 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: alien alien.c-types alien.libraries combinators kernel
+system
+gobject-introspection glib.ffi gstreamer.ffi gstreamer.base.ffi
+gstreamer.interfaces.ffi ;
+IN: gstreamer.audio.ffi
+
+<<
+"gstreamer.audio" {
+    { [ os winnt? ] [ drop ] }
+    { [ os macosx? ] [ drop ] }
+    { [ os unix? ] [ "libgstaudio-0.10.so" cdecl add-library ] }
+} cond
+>>
+
+GIR: vocab:gstreamer/audio/GstAudio-0.10.gir
+
diff --git a/extra/gstreamer/authors.txt b/extra/gstreamer/authors.txt
new file mode 100644 (file)
index 0000000..ce9bcc8
--- /dev/null
@@ -0,0 +1 @@
+Anton Gorenko
\ No newline at end of file
diff --git a/extra/gstreamer/base/GstBase-0.10.gir b/extra/gstreamer/base/GstBase-0.10.gir
new file mode 100644 (file)
index 0000000..a4ebc01
--- /dev/null
@@ -0,0 +1,5397 @@
+<?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.0"
+            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="GLib" version="2.0"/>
+  <include name="GModule" version="2.0"/>
+  <include name="GObject" version="2.0"/>
+  <include name="Gst" version="0.10"/>
+  <include name="libxml2" version="2.0"/>
+  <package name="gstreamer-0.10"/>
+  <c:include name="gst/base/gstadapter.h"/>
+  <c:include name="gst/base/gstbasesink.h"/>
+  <c:include name="gst/base/gstbasesrc.h"/>
+  <c:include name="gst/base/gstbasetransform.h"/>
+  <c:include name="gst/base/gstbitreader.h"/>
+  <c:include name="gst/base/gstbytereader.h"/>
+  <c:include name="gst/base/gstbytewriter.h"/>
+  <c:include name="gst/base/gstcollectpads.h"/>
+  <c:include name="gst/base/gstdataqueue.h"/>
+  <c:include name="gst/base/gstpushsrc.h"/>
+  <c:include name="gst/base/gsttypefindhelper.h"/>
+  <namespace name="GstBase"
+             version="0.10"
+             shared-library="libgstbase-0.10.so.0"
+             c:prefix="Gst">
+    <class name="Adapter"
+           c:type="GstAdapter"
+           doc="The opaque #GstAdapter data structure."
+           parent="GObject.Object"
+           glib:type-name="GstAdapter"
+           glib:get-type="gst_adapter_get_type"
+           glib:type-struct="AdapterClass">
+      <constructor name="new"
+                   c:identifier="gst_adapter_new"
+                   doc="Creates a new #GstAdapter. Free with g_object_unref().">
+        <return-value transfer-ownership="full">
+          <type name="Adapter" c:type="GstAdapter*"/>
+        </return-value>
+      </constructor>
+      <method name="clear"
+              c:identifier="gst_adapter_clear"
+              doc="Removes all buffers from @adapter.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="push"
+              c:identifier="gst_adapter_push"
+              doc="Adds the data from @buf to the data stored inside @adapter and takes
+ownership of the buffer.
+Empty buffers will be automatically dereferenced and not stored in the">
+        <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>
+        </parameters>
+      </method>
+      <method name="peek"
+              c:identifier="gst_adapter_peek"
+              doc="Gets the first @size bytes stored in the @adapter. The returned pointer is
+valid until the next function is called on the adapter.
+Note that setting the returned pointer as the data of a #GstBuffer is
+incorrect for general-purpose plugins. The reason is that if a downstream
+element stores the buffer so that it has access to it outside of the bounds
+of its chain function, the buffer will have an invalid data pointer after
+your element flushes the bytes. In that case you should use
+gst_adapter_take(), which returns a freshly-allocated buffer that you can set
+as #GstBuffer malloc_data or the potentially more performant
+gst_adapter_take_buffer().
+Returns #NULL if @size bytes are not available.">
+        <return-value transfer-ownership="none">
+          <array c:type="guint8*">
+            <type name="uint8"/>
+          </array>
+        </return-value>
+        <parameters>
+          <parameter name="size" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="copy"
+              c:identifier="gst_adapter_copy"
+              doc="Copies @size bytes of data starting at @offset out of the buffers
+contained in @GstAdapter into an array @dest provided by the caller.
+The array @dest should be large enough to contain @size bytes.
+The user should check that the adapter has (@offset + @size) bytes
+available before calling this function."
+              version="0.10.12">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="dest" transfer-ownership="none">
+            <array c:type="guint8*">
+              <type name="uint8"/>
+            </array>
+          </parameter>
+          <parameter name="offset" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="size" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="flush"
+              c:identifier="gst_adapter_flush"
+              doc="Flushes the first @flush bytes in the @adapter. The caller must ensure that
+at least this many bytes are available.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="flush" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="take"
+              c:identifier="gst_adapter_take"
+              doc="Returns a freshly allocated buffer containing the first @nbytes bytes of the
+Caller owns returned value. g_free after usage.">
+        <return-value transfer-ownership="full">
+          <array c:type="guint8*">
+            <type name="uint8"/>
+          </array>
+        </return-value>
+        <parameters>
+          <parameter name="nbytes" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="take_buffer"
+              c:identifier="gst_adapter_take_buffer"
+              doc="Returns a #GstBuffer containing the first @nbytes bytes of the
+This function is potentially more performant than gst_adapter_take()
+since it can reuse the memory in pushed buffers by subbuffering
+or merging.
+Caller owns returned value. gst_buffer_unref() after usage.
+or #NULL if @nbytes bytes are not available"
+              version="0.10.6">
+        <return-value transfer-ownership="full">
+          <type name="Gst.Buffer" c:type="GstBuffer*"/>
+        </return-value>
+        <parameters>
+          <parameter name="nbytes" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="available"
+              c:identifier="gst_adapter_available"
+              doc="Gets the maximum amount of bytes available, that is it returns the maximum
+value that can be supplied to gst_adapter_peek() without that function
+returning NULL.">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="available_fast"
+              c:identifier="gst_adapter_available_fast"
+              doc="Gets the maximum number of bytes that are immediately available without
+requiring any expensive operations (like copying the data into a
+temporary buffer).
+operations">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="prev_timestamp"
+              c:identifier="gst_adapter_prev_timestamp"
+              doc="Get the timestamp that was before the current byte in the adapter. When
+position is returned.
+The timestamp is reset to GST_CLOCK_TIME_NONE when the adapter is first
+created or when it is cleared."
+              version="0.10.24">
+        <return-value transfer-ownership="full">
+          <type name="Gst.ClockTime" c:type="GstClockTime"/>
+        </return-value>
+        <parameters>
+          <parameter name="distance" direction="out" transfer-ownership="full">
+            <type name="uint64" c:type="guint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="masked_scan_uint32"
+              c:identifier="gst_adapter_masked_scan_uint32"
+              doc="the last scanned position.
+Scan for pattern @pattern with applied mask @mask in the adapter data,
+starting from offset @offset.
+The bytes in @pattern and @mask are interpreted left-to-right, regardless
+of endianness.  All four bytes of the pattern must be present in the
+adapter for it to match, even if the first or last bytes are masked out.
+It is an error to call this function without making sure that there is
+enough data (offset+size bytes) in the adapter.
+Example:
+&lt;programlisting&gt;
+// Assume the adapter contains 0x00 0x01 0x02 ... 0xfe 0xff
+gst_adapter_masked_scan_uint32 (adapter, 0xffffffff, 0x00010203, 0, 256);
+// -&gt; returns 0
+gst_adapter_masked_scan_uint32 (adapter, 0xffffffff, 0x00010203, 1, 255);
+// -&gt; returns -1
+gst_adapter_masked_scan_uint32 (adapter, 0xffffffff, 0x01020304, 1, 255);
+// -&gt; returns 1
+gst_adapter_masked_scan_uint32 (adapter, 0xffff, 0x0001, 0, 256);
+// -&gt; returns -1
+gst_adapter_masked_scan_uint32 (adapter, 0xffff, 0x0203, 0, 256);
+// -&gt; returns 0
+gst_adapter_masked_scan_uint32 (adapter, 0xffff0000, 0x02030000, 0, 256);
+// -&gt; returns 2
+gst_adapter_masked_scan_uint32 (adapter, 0xffff0000, 0x02030000, 0, 4);
+// -&gt; returns -1
+&lt;/programlisting&gt;"
+              version="0.10.24">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+        <parameters>
+          <parameter name="mask" transfer-ownership="none">
+            <type name="uint32" c:type="guint32"/>
+          </parameter>
+          <parameter name="pattern" transfer-ownership="none">
+            <type name="uint32" c:type="guint32"/>
+          </parameter>
+          <parameter name="offset" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="size" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <field name="object">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="buflist">
+        <type name="GLib.SList" c:type="GSList*"/>
+      </field>
+      <field name="size">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="skip">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="assembled_data">
+        <type name="any" c:type="guint8*"/>
+      </field>
+      <field name="assembled_size">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="assembled_len">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="buflist_end">
+        <type name="GLib.SList" c:type="GSList*"/>
+      </field>
+      <field name="priv">
+        <type name="AdapterPrivate" c:type="GstAdapterPrivate*"/>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="2">
+          <type name="any"/>
+        </array>
+      </field>
+    </class>
+    <record name="AdapterClass"
+            c:type="GstAdapterClass"
+            glib:is-gtype-struct-for="Adapter">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <record name="AdapterPrivate" c:type="GstAdapterPrivate">
+    </record>
+    <class name="BaseSink"
+           c:type="GstBaseSink"
+           doc="The opaque #GstBaseSink data structure."
+           parent="Gst.Element"
+           abstract="1"
+           glib:type-name="GstBaseSink"
+           glib:get-type="gst_base_sink_get_type"
+           glib:type-struct="BaseSinkClass">
+      <virtual-method name="get_caps">
+        <return-value transfer-ownership="full">
+          <type name="Gst.Caps" c:type="GstCaps*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="set_caps">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="caps" transfer-ownership="none">
+            <type name="Gst.Caps" c:type="GstCaps*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="buffer_alloc">
+        <return-value transfer-ownership="full">
+          <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+        </return-value>
+        <parameters>
+          <parameter name="offset" transfer-ownership="none">
+            <type name="uint64" c:type="guint64"/>
+          </parameter>
+          <parameter name="size" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="caps" transfer-ownership="none">
+            <type name="Gst.Caps" c:type="GstCaps*"/>
+          </parameter>
+          <parameter name="buf" transfer-ownership="none">
+            <type name="Gst.Buffer" c:type="GstBuffer**"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_times">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="buffer" transfer-ownership="none">
+            <type name="Gst.Buffer" c:type="GstBuffer*"/>
+          </parameter>
+          <parameter name="start" transfer-ownership="none">
+            <type name="Gst.ClockTime" c:type="GstClockTime*"/>
+          </parameter>
+          <parameter name="end" transfer-ownership="none">
+            <type name="Gst.ClockTime" c:type="GstClockTime*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="start">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="stop">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="unlock">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="event">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="none">
+            <type name="Gst.Event" c:type="GstEvent*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="preroll">
+        <return-value transfer-ownership="full">
+          <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+        </return-value>
+        <parameters>
+          <parameter name="buffer" transfer-ownership="none">
+            <type name="Gst.Buffer" c:type="GstBuffer*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="render">
+        <return-value transfer-ownership="full">
+          <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+        </return-value>
+        <parameters>
+          <parameter name="buffer" transfer-ownership="none">
+            <type name="Gst.Buffer" c:type="GstBuffer*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="async_play">
+        <return-value transfer-ownership="full">
+          <type name="Gst.StateChangeReturn" c:type="GstStateChangeReturn"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="activate_pull">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="active" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="fixate">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="caps" transfer-ownership="none">
+            <type name="Gst.Caps" c:type="GstCaps*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="unlock_stop">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="render_list">
+        <return-value transfer-ownership="full">
+          <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+        </return-value>
+        <parameters>
+          <parameter name="buffer_list" transfer-ownership="none">
+            <type name="Gst.BufferList" c:type="GstBufferList*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="do_preroll"
+              c:identifier="gst_base_sink_do_preroll"
+              doc="If the @sink spawns its own thread for pulling buffers from upstream it
+should call this method after it has pulled a buffer. If the element needed
+to preroll, this function will perform the preroll and will then block
+until the element state is changed.
+This function should be called with the PREROLL_LOCK held.
+Since 0.10.22
+continue. Any other return value should be returned from the render vmethod.">
+        <return-value transfer-ownership="full">
+          <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+        </return-value>
+        <parameters>
+          <parameter name="obj" transfer-ownership="none">
+            <type name="Gst.MiniObject" c:type="GstMiniObject*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="wait_preroll"
+              c:identifier="gst_base_sink_wait_preroll"
+              doc="If the #GstBaseSinkClass.render() method performs its own synchronisation
+against the clock it must unblock when going from PLAYING to the PAUSED state
+and call this method before continuing to render the remaining data.
+This function will block until a state change to PLAYING happens (in which
+case this function returns #GST_FLOW_OK) or the processing must be stopped due
+to a state change to READY or a FLUSH event (in which case this function
+returns #GST_FLOW_WRONG_STATE).
+This function should only be called with the PREROLL_LOCK held, like in the
+render function.
+continue. Any other return value should be returned from the render vmethod."
+              version="0.10.11">
+        <return-value transfer-ownership="full">
+          <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+        </return-value>
+      </method>
+      <method name="set_sync"
+              c:identifier="gst_base_sink_set_sync"
+              doc="Configures @sink to synchronize on the clock or not. When
+possible. If @sync is TRUE, the timestamps of the incomming
+buffers will be used to schedule the exact render time of its
+contents."
+              version="0.10.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="sync" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_sync"
+              c:identifier="gst_base_sink_get_sync"
+              doc="Checks if @sink is currently configured to synchronize against the
+clock."
+              version="0.10.4">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_max_lateness"
+              c:identifier="gst_base_sink_set_max_lateness"
+              doc="Sets the new max lateness value to @max_lateness. This value is
+used to decide if a buffer should be dropped or not based on the
+buffer timestamp and the current clock time. A value of -1 means
+an unlimited time."
+              version="0.10.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="max_lateness" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_max_lateness"
+              c:identifier="gst_base_sink_get_max_lateness"
+              doc="Gets the max lateness value. See gst_base_sink_set_max_lateness for
+more details.
+before it is dropped and not rendered. A value of -1 means an
+unlimited time."
+              version="0.10.4">
+        <return-value transfer-ownership="none">
+          <type name="int64" c:type="gint64"/>
+        </return-value>
+      </method>
+      <method name="set_qos_enabled"
+              c:identifier="gst_base_sink_set_qos_enabled"
+              doc="Configures @sink to send Quality-of-Service events upstream."
+              version="0.10.5">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="enabled" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="is_qos_enabled"
+              c:identifier="gst_base_sink_is_qos_enabled"
+              doc="Checks if @sink is currently configured to send Quality-of-Service events
+upstream."
+              version="0.10.5">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_async_enabled"
+              c:identifier="gst_base_sink_set_async_enabled"
+              doc="Configures @sink to perform all state changes asynchronusly. When async is
+disabled, the sink will immediatly go to PAUSED instead of waiting for a
+preroll buffer. This feature is usefull if the sink does not synchronize
+against the clock or when it is dealing with sparse streams."
+              version="0.10.15">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="enabled" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="is_async_enabled"
+              c:identifier="gst_base_sink_is_async_enabled"
+              doc="Checks if @sink is currently configured to perform asynchronous state
+changes to PAUSED.
+changes."
+              version="0.10.15">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_ts_offset"
+              c:identifier="gst_base_sink_set_ts_offset"
+              doc="Adjust the synchronisation of @sink with @offset. A negative value will
+render buffers earlier than their timestamp. A positive value will delay
+rendering. This function can be used to fix playback of badly timestamped
+buffers."
+              version="0.10.15">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="offset" transfer-ownership="none">
+            <type name="Gst.ClockTimeDiff" c:type="GstClockTimeDiff"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_ts_offset"
+              c:identifier="gst_base_sink_get_ts_offset"
+              doc="Get the synchronisation offset of @sink."
+              version="0.10.15">
+        <return-value transfer-ownership="full">
+          <type name="Gst.ClockTimeDiff" c:type="GstClockTimeDiff"/>
+        </return-value>
+      </method>
+      <method name="get_last_buffer"
+              c:identifier="gst_base_sink_get_last_buffer"
+              doc="Get the last buffer that arrived in the sink and was used for preroll or for
+rendering. This property can be used to generate thumbnails.
+The #GstCaps on the buffer can be used to determine the type of the buffer.
+NULL when no buffer has arrived in the sink yet or when the sink is not in
+PAUSED or PLAYING."
+              version="0.10.15">
+        <return-value transfer-ownership="full"
+                      doc="after usage. This function returns">
+          <type name="Gst.Buffer" c:type="GstBuffer*"/>
+        </return-value>
+      </method>
+      <method name="query_latency"
+              c:identifier="gst_base_sink_query_latency"
+              doc="Query the sink for the latency parameters. The latency will be queried from
+the upstream elements. @live will be TRUE if @sink is configured to
+synchronize against the clock. @upstream_live will be TRUE if an upstream
+element is live.
+If both @live and @upstream_live are TRUE, the sink will want to compensate
+for the latency introduced by the upstream elements by setting the
+This function is mostly used by subclasses."
+              version="0.10.12">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="live" direction="out" transfer-ownership="full">
+            <type name="boolean" c:type="gboolean*"/>
+          </parameter>
+          <parameter name="upstream_live"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="boolean" c:type="gboolean*"/>
+          </parameter>
+          <parameter name="min_latency" transfer-ownership="none">
+            <type name="Gst.ClockTime" c:type="GstClockTime*"/>
+          </parameter>
+          <parameter name="max_latency" transfer-ownership="none">
+            <type name="Gst.ClockTime" c:type="GstClockTime*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_latency"
+              c:identifier="gst_base_sink_get_latency"
+              doc="Get the currently configured latency."
+              version="0.10.12">
+        <return-value transfer-ownership="full">
+          <type name="Gst.ClockTime" c:type="GstClockTime"/>
+        </return-value>
+      </method>
+      <method name="set_render_delay"
+              c:identifier="gst_base_sink_set_render_delay"
+              doc="Set the render delay in @sink to @delay. The render delay is the time
+between actual rendering of a buffer and its synchronisation time. Some
+devices might delay media rendering which can be compensated for with this
+function.
+After calling this function, this sink will report additional latency and
+other sinks will adjust their latency to delay the rendering of their media.
+This function is usually called by subclasses."
+              version="0.10.21">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="delay" transfer-ownership="none">
+            <type name="Gst.ClockTime" c:type="GstClockTime"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_render_delay"
+              c:identifier="gst_base_sink_get_render_delay"
+              doc="Get the render delay of @sink. see gst_base_sink_set_render_delay() for more
+information about the render delay."
+              version="0.10.21">
+        <return-value transfer-ownership="full">
+          <type name="Gst.ClockTime" c:type="GstClockTime"/>
+        </return-value>
+      </method>
+      <method name="set_blocksize"
+              c:identifier="gst_base_sink_set_blocksize"
+              doc="Set the number of bytes that the sink will pull when it is operating in pull
+mode."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="blocksize" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_blocksize"
+              c:identifier="gst_base_sink_get_blocksize"
+              doc="Get the number of bytes that the sink will pull when it is operating in pull
+mode."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="wait_clock"
+              c:identifier="gst_base_sink_wait_clock"
+              doc="This function will block until @time is reached. It is usually called by
+subclasses that use their own internal synchronisation.
+If @time is not valid, no sycnhronisation is done and #GST_CLOCK_BADTIME is
+returned. Likewise, if synchronisation is disabled in the element or there
+is no clock, no synchronisation is done and #GST_CLOCK_BADTIME is returned.
+This function should only be called with the PREROLL_LOCK held, like when
+receiving an EOS event in the #GstBaseSinkClass.event() vmethod or when
+receiving a buffer in
+the #GstBaseSinkClass.render() vmethod.
+The @time argument should be the running_time of when this method should
+return and is not adjusted with any latency or offset configured in the
+sink.
+Since 0.10.20">
+        <return-value transfer-ownership="full">
+          <type name="Gst.ClockReturn" c:type="GstClockReturn"/>
+        </return-value>
+        <parameters>
+          <parameter name="time" transfer-ownership="none">
+            <type name="Gst.ClockTime" c:type="GstClockTime"/>
+          </parameter>
+          <parameter name="jitter" transfer-ownership="none">
+            <type name="Gst.ClockTimeDiff" c:type="GstClockTimeDiff*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="wait_eos"
+              c:identifier="gst_base_sink_wait_eos"
+              doc="This function will block until @time is reached. It is usually called by
+subclasses that use their own internal synchronisation but want to let the
+EOS be handled by the base class.
+This function should only be called with the PREROLL_LOCK held, like when
+receiving an EOS event in the ::event vmethod.
+The @time argument should be the running_time of when the EOS should happen
+and will be adjusted with any latency and offset configured in the sink.
+Since 0.10.15">
+        <return-value transfer-ownership="full">
+          <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+        </return-value>
+        <parameters>
+          <parameter name="time" transfer-ownership="none">
+            <type name="Gst.ClockTime" c:type="GstClockTime"/>
+          </parameter>
+          <parameter name="jitter" transfer-ownership="none">
+            <type name="Gst.ClockTimeDiff" c:type="GstClockTimeDiff*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="async" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="blocksize" writable="1">
+        <type name="uint" c:type="guint"/>
+      </property>
+      <property name="last-buffer">
+        <type name="Gst.Buffer" c:type="GstBuffer"/>
+      </property>
+      <property name="max-lateness" writable="1">
+        <type name="int64" c:type="gint64"/>
+      </property>
+      <property name="preroll-queue-len" writable="1" construct="1">
+        <type name="uint" c:type="guint"/>
+      </property>
+      <property name="qos" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="render-delay" writable="1">
+        <type name="uint64" c:type="guint64"/>
+      </property>
+      <property name="sync" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="ts-offset" writable="1">
+        <type name="int64" c:type="gint64"/>
+      </property>
+      <field name="element">
+        <type name="Gst.Element" c:type="GstElement"/>
+      </field>
+      <field name="sinkpad">
+        <type name="Gst.Pad" c:type="GstPad*"/>
+      </field>
+      <field name="pad_mode">
+        <type name="Gst.ActivateMode" c:type="GstActivateMode"/>
+      </field>
+      <field name="offset">
+        <type name="uint64" c:type="guint64"/>
+      </field>
+      <field name="can_activate_pull">
+        <type name="boolean" c:type="gboolean"/>
+      </field>
+      <field name="can_activate_push">
+        <type name="boolean" c:type="gboolean"/>
+      </field>
+      <field name="preroll_queue">
+        <type name="GLib.Queue" c:type="GQueue*"/>
+      </field>
+      <field name="preroll_queue_max_len">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="preroll_queued">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="buffers_queued">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="events_queued">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="eos">
+        <type name="boolean" c:type="gboolean"/>
+      </field>
+      <field name="eos_queued">
+        <type name="boolean" c:type="gboolean"/>
+      </field>
+      <field name="need_preroll">
+        <type name="boolean" c:type="gboolean"/>
+      </field>
+      <field name="have_preroll">
+        <type name="boolean" c:type="gboolean"/>
+      </field>
+      <field name="playing_async">
+        <type name="boolean" c:type="gboolean"/>
+      </field>
+      <field name="have_newsegment">
+        <type name="boolean" c:type="gboolean"/>
+      </field>
+      <field name="segment">
+        <type name="Gst.Segment" c:type="GstSegment"/>
+      </field>
+      <field name="clock_id">
+        <type name="Gst.ClockID" c:type="GstClockID"/>
+      </field>
+      <field name="end_time">
+        <type name="Gst.ClockTime" c:type="GstClockTime"/>
+      </field>
+      <field name="sync">
+        <type name="boolean" c:type="gboolean"/>
+      </field>
+      <field name="flushing">
+        <type name="boolean" c:type="gboolean"/>
+      </field>
+      <union name="abidata" c:type="abidata">
+        <record name="ABI" c:type="ABI">
+          <field name="clip_segment" writable="1">
+            <type name="Gst.Segment" c:type="GstSegment*"/>
+          </field>
+          <field name="max_lateness" writable="1">
+            <type name="int64" c:type="gint64"/>
+          </field>
+          <field name="running" writable="1">
+            <type name="boolean" c:type="gboolean"/>
+          </field>
+        </record>
+        <field name="_gst_reserved" writable="1">
+          <array zero-terminated="0" c:type="gpointer" fixed-size="19">
+            <type name="any"/>
+          </array>
+        </field>
+      </union>
+      <field name="priv">
+        <type name="BaseSinkPrivate" c:type="GstBaseSinkPrivate*"/>
+      </field>
+    </class>
+    <record name="BaseSinkClass"
+            c:type="GstBaseSinkClass"
+            glib:is-gtype-struct-for="BaseSink"
+            doc="the passed buffer to the clock
+unblock any blocked function ASAP
+any state they set during unlock(), such as clearing command queues.
+correct moment if the #GstBaseSink has been set to sync to the clock.
+special processing when changing to the PLAYING state asynchronously.
+Called with the OBJECT_LOCK held.
+alternate method of spawning a thread to drive the pipeline in pull mode.
+Should start or stop the pulling thread, depending on the value of the
+&quot;active&quot; argument. Called after actually activating the sink pad in pull
+mode. The default implementation starts a task on the sink pad.
+gst_pad_fixate_caps() being called on the sink pad. Implement if you have
+ideas about what should be the default values for the caps you support.
+Subclasses can override any of the available virtual methods or not, as
+needed. At the minimum, the @render method should be overridden to
+output/present buffers.">
+      <field name="parent_class">
+        <type name="Gst.ElementClass" c:type="GstElementClass"/>
+      </field>
+      <field name="get_caps">
+        <callback name="get_caps" c:type="get_caps">
+          <return-value transfer-ownership="full">
+            <type name="Gst.Caps" c:type="GstCaps*"/>
+          </return-value>
+          <parameters>
+            <parameter name="sink" transfer-ownership="none">
+              <type name="BaseSink" c:type="GstBaseSink*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_caps">
+        <callback name="set_caps" c:type="set_caps">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="sink" transfer-ownership="none">
+              <type name="BaseSink" c:type="GstBaseSink*"/>
+            </parameter>
+            <parameter name="caps" transfer-ownership="none">
+              <type name="Gst.Caps" c:type="GstCaps*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="buffer_alloc">
+        <callback name="buffer_alloc" c:type="buffer_alloc">
+          <return-value transfer-ownership="full">
+            <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+          </return-value>
+          <parameters>
+            <parameter name="sink" transfer-ownership="none">
+              <type name="BaseSink" c:type="GstBaseSink*"/>
+            </parameter>
+            <parameter name="offset" transfer-ownership="none">
+              <type name="uint64" c:type="guint64"/>
+            </parameter>
+            <parameter name="size" transfer-ownership="none">
+              <type name="uint" c:type="guint"/>
+            </parameter>
+            <parameter name="caps" transfer-ownership="none">
+              <type name="Gst.Caps" c:type="GstCaps*"/>
+            </parameter>
+            <parameter name="buf" transfer-ownership="none">
+              <type name="Gst.Buffer" c:type="GstBuffer**"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_times">
+        <callback name="get_times" c:type="get_times">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="sink" transfer-ownership="none">
+              <type name="BaseSink" c:type="GstBaseSink*"/>
+            </parameter>
+            <parameter name="buffer" transfer-ownership="none">
+              <type name="Gst.Buffer" c:type="GstBuffer*"/>
+            </parameter>
+            <parameter name="start" transfer-ownership="none">
+              <type name="Gst.ClockTime" c:type="GstClockTime*"/>
+            </parameter>
+            <parameter name="end" transfer-ownership="none">
+              <type name="Gst.ClockTime" c:type="GstClockTime*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="start">
+        <callback name="start" c:type="start">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="sink" transfer-ownership="none">
+              <type name="BaseSink" c:type="GstBaseSink*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="stop">
+        <callback name="stop" c:type="stop">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="sink" transfer-ownership="none">
+              <type name="BaseSink" c:type="GstBaseSink*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="unlock">
+        <callback name="unlock" c:type="unlock">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="sink" transfer-ownership="none">
+              <type name="BaseSink" c:type="GstBaseSink*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="event">
+        <callback name="event" c:type="event">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="sink" transfer-ownership="none">
+              <type name="BaseSink" c:type="GstBaseSink*"/>
+            </parameter>
+            <parameter name="event" transfer-ownership="none">
+              <type name="Gst.Event" c:type="GstEvent*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="preroll">
+        <callback name="preroll" c:type="preroll">
+          <return-value transfer-ownership="full">
+            <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+          </return-value>
+          <parameters>
+            <parameter name="sink" transfer-ownership="none">
+              <type name="BaseSink" c:type="GstBaseSink*"/>
+            </parameter>
+            <parameter name="buffer" transfer-ownership="none">
+              <type name="Gst.Buffer" c:type="GstBuffer*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="render">
+        <callback name="render" c:type="render">
+          <return-value transfer-ownership="full">
+            <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+          </return-value>
+          <parameters>
+            <parameter name="sink" transfer-ownership="none">
+              <type name="BaseSink" c:type="GstBaseSink*"/>
+            </parameter>
+            <parameter name="buffer" transfer-ownership="none">
+              <type name="Gst.Buffer" c:type="GstBuffer*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="async_play">
+        <callback name="async_play" c:type="async_play">
+          <return-value transfer-ownership="full">
+            <type name="Gst.StateChangeReturn" c:type="GstStateChangeReturn"/>
+          </return-value>
+          <parameters>
+            <parameter name="sink" transfer-ownership="none">
+              <type name="BaseSink" c:type="GstBaseSink*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="activate_pull">
+        <callback name="activate_pull" c:type="activate_pull">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="sink" transfer-ownership="none">
+              <type name="BaseSink" c:type="GstBaseSink*"/>
+            </parameter>
+            <parameter name="active" transfer-ownership="none">
+              <type name="boolean" c:type="gboolean"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="fixate">
+        <callback name="fixate" c:type="fixate">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="sink" transfer-ownership="none">
+              <type name="BaseSink" c:type="GstBaseSink*"/>
+            </parameter>
+            <parameter name="caps" transfer-ownership="none">
+              <type name="Gst.Caps" c:type="GstCaps*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="unlock_stop">
+        <callback name="unlock_stop" c:type="unlock_stop">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="sink" transfer-ownership="none">
+              <type name="BaseSink" c:type="GstBaseSink*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="render_list">
+        <callback name="render_list" c:type="render_list">
+          <return-value transfer-ownership="full">
+            <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+          </return-value>
+          <parameters>
+            <parameter name="sink" transfer-ownership="none">
+              <type name="BaseSink" c:type="GstBaseSink*"/>
+            </parameter>
+            <parameter name="buffer_list" transfer-ownership="none">
+              <type name="Gst.BufferList" c:type="GstBufferList*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="15">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <record name="BaseSinkPrivate" c:type="GstBaseSinkPrivate">
+    </record>
+    <class name="BaseSrc"
+           c:type="GstBaseSrc"
+           doc="The opaque #GstBaseSrc data structure."
+           parent="Gst.Element"
+           abstract="1"
+           glib:type-name="GstBaseSrc"
+           glib:get-type="gst_base_src_get_type"
+           glib:type-struct="BaseSrcClass">
+      <virtual-method name="get_caps">
+        <return-value transfer-ownership="full">
+          <type name="Gst.Caps" c:type="GstCaps*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="set_caps">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="caps" transfer-ownership="none">
+            <type name="Gst.Caps" c:type="GstCaps*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="negotiate">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="newsegment">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="start">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="stop">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_times">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="buffer" transfer-ownership="none">
+            <type name="Gst.Buffer" c:type="GstBuffer*"/>
+          </parameter>
+          <parameter name="start" transfer-ownership="none">
+            <type name="Gst.ClockTime" c:type="GstClockTime*"/>
+          </parameter>
+          <parameter name="end" transfer-ownership="none">
+            <type name="Gst.ClockTime" c:type="GstClockTime*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_size">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="size" direction="out" transfer-ownership="full">
+            <type name="uint64" c:type="guint64*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="is_seekable">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="unlock">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="event">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="none">
+            <type name="Gst.Event" c:type="GstEvent*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="create">
+        <return-value transfer-ownership="full">
+          <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+        </return-value>
+        <parameters>
+          <parameter name="offset" transfer-ownership="none">
+            <type name="uint64" c:type="guint64"/>
+          </parameter>
+          <parameter name="size" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="buf" transfer-ownership="none">
+            <type name="Gst.Buffer" c:type="GstBuffer**"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="do_seek">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="segment" transfer-ownership="none">
+            <type name="Gst.Segment" c:type="GstSegment*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="query">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="query" transfer-ownership="none">
+            <type name="Gst.Query" c:type="GstQuery*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="check_get_range">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="fixate">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="caps" transfer-ownership="none">
+            <type name="Gst.Caps" c:type="GstCaps*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="unlock_stop">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="prepare_seek_segment">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="seek" transfer-ownership="none">
+            <type name="Gst.Event" c:type="GstEvent*"/>
+          </parameter>
+          <parameter name="segment" transfer-ownership="none">
+            <type name="Gst.Segment" c:type="GstSegment*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="wait_playing"
+              c:identifier="gst_base_src_wait_playing"
+              doc="If the #GstBaseSrcClass.create() method performs its own synchronisation
+against the clock it must unblock when going from PLAYING to the PAUSED state
+and call this method before continuing to produce the remaining data.
+This function will block until a state change to PLAYING happens (in which
+case this function returns #GST_FLOW_OK) or the processing must be stopped due
+to a state change to READY or a FLUSH event (in which case this function
+returns #GST_FLOW_WRONG_STATE).
+continue. Any other return value should be returned from the create vmethod."
+              version="0.10.12">
+        <return-value transfer-ownership="full">
+          <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+        </return-value>
+      </method>
+      <method name="set_live"
+              c:identifier="gst_base_src_set_live"
+              doc="If the element listens to a live source, @live should
+be set to %TRUE.
+A live source will not produce data in the PAUSED state and
+will therefore not be able to participate in the PREROLL phase
+of a pipeline. To signal this fact to the application and the
+pipeline, the state change return value of the live source will
+be GST_STATE_CHANGE_NO_PREROLL.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="live" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="is_live"
+              c:identifier="gst_base_src_is_live"
+              doc="Check if an element is in live mode.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_format"
+              c:identifier="gst_base_src_set_format"
+              doc="Sets the default format of the source. This will be the format used
+for sending NEW_SEGMENT events and for performing seeks.
+If a format of GST_FORMAT_BYTES is set, the element will be able to
+operate in pull mode if the #GstBaseSrc.is_seekable() returns TRUE.
+This function must only be called in states &lt; %GST_STATE_PAUSED."
+              version="0.10.1">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Gst.Format" c:type="GstFormat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="query_latency"
+              c:identifier="gst_base_src_query_latency"
+              doc="Query the source for the latency parameters. @live will be TRUE when @src is
+configured as a live source. @min_latency will be set to the difference
+between the running time and the timestamp of the first buffer.
+This function is mostly used by subclasses."
+              version="0.10.13">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="live" direction="out" transfer-ownership="full">
+            <type name="boolean" c:type="gboolean*"/>
+          </parameter>
+          <parameter name="min_latency" transfer-ownership="none">
+            <type name="Gst.ClockTime" c:type="GstClockTime*"/>
+          </parameter>
+          <parameter name="max_latency" transfer-ownership="none">
+            <type name="Gst.ClockTime" c:type="GstClockTime*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_blocksize"
+              c:identifier="gst_base_src_set_blocksize"
+              doc="Set the number of bytes that @src will push out with each buffer. When"
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="blocksize" transfer-ownership="none">
+            <type name="ulong" c:type="gulong"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_blocksize"
+              c:identifier="gst_base_src_get_blocksize"
+              doc="Get the number of bytes that @src will push out with each buffer."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="ulong" c:type="gulong"/>
+        </return-value>
+      </method>
+      <method name="set_do_timestamp"
+              c:identifier="gst_base_src_set_do_timestamp"
+              doc="Configure @src to automatically timestamp outgoing buffers based on the
+current running_time of the pipeline. This property is mostly useful for live
+sources."
+              version="0.10.15">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="timestamp" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_do_timestamp"
+              c:identifier="gst_base_src_get_do_timestamp"
+              doc="Query if @src timestamps outgoing buffers based on the current running_time."
+              version="0.10.15">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="new_seamless_segment"
+              c:identifier="gst_base_src_new_seamless_segment"
+              doc="Prepare a new seamless segment for emission downstream. This function must
+only be called by derived sub-classes, and only from the create() function,
+as the stream-lock needs to be held.
+The format for the new segment will be the current format of the source, as
+configured with gst_base_src_set_format()"
+              version="0.10.26">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="start" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+          <parameter name="stop" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+          <parameter name="position" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="blocksize" writable="1">
+        <type name="ulong" c:type="gulong"/>
+      </property>
+      <property name="do-timestamp" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="num-buffers" writable="1">
+        <type name="int" c:type="gint"/>
+      </property>
+      <property name="typefind" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <field name="element">
+        <type name="Gst.Element" c:type="GstElement"/>
+      </field>
+      <field name="srcpad">
+        <type name="Gst.Pad" c:type="GstPad*"/>
+      </field>
+      <field name="live_lock">
+        <type name="GLib.Mutex" c:type="GMutex*"/>
+      </field>
+      <field name="live_cond">
+        <type name="GLib.Cond" c:type="GCond*"/>
+      </field>
+      <field name="is_live">
+        <type name="boolean" c:type="gboolean"/>
+      </field>
+      <field name="live_running">
+        <type name="boolean" c:type="gboolean"/>
+      </field>
+      <field name="blocksize">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="can_activate_push">
+        <type name="boolean" c:type="gboolean"/>
+      </field>
+      <field name="pad_mode">
+        <type name="Gst.ActivateMode" c:type="GstActivateMode"/>
+      </field>
+      <field name="seekable">
+        <type name="boolean" c:type="gboolean"/>
+      </field>
+      <field name="random_access">
+        <type name="boolean" c:type="gboolean"/>
+      </field>
+      <field name="clock_id">
+        <type name="Gst.ClockID" c:type="GstClockID"/>
+      </field>
+      <field name="end_time">
+        <type name="Gst.ClockTime" c:type="GstClockTime"/>
+      </field>
+      <field name="segment">
+        <type name="Gst.Segment" c:type="GstSegment"/>
+      </field>
+      <field name="need_newsegment">
+        <type name="boolean" c:type="gboolean"/>
+      </field>
+      <field name="offset">
+        <type name="uint64" c:type="guint64"/>
+      </field>
+      <field name="size">
+        <type name="uint64" c:type="guint64"/>
+      </field>
+      <field name="num_buffers">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="num_buffers_left">
+        <type name="int" c:type="gint"/>
+      </field>
+      <union name="data" c:type="data">
+        <record name="ABI" c:type="ABI">
+          <field name="typefind" writable="1">
+            <type name="boolean" c:type="gboolean"/>
+          </field>
+          <field name="running" writable="1">
+            <type name="boolean" c:type="gboolean"/>
+          </field>
+          <field name="pending_seek" writable="1">
+            <type name="Gst.Event" c:type="GstEvent*"/>
+          </field>
+        </record>
+        <field name="_gst_reserved" writable="1">
+          <array zero-terminated="0" c:type="gpointer" fixed-size="19">
+            <type name="any"/>
+          </array>
+        </field>
+      </union>
+      <field name="priv">
+        <type name="BaseSrcPrivate" c:type="GstBaseSrcPrivate*"/>
+      </field>
+    </class>
+    <record name="BaseSrcClass"
+            c:type="GstBaseSrcClass"
+            glib:is-gtype-struct-for="BaseSrc"
+            doc="to produce data.
+should be pushed out. The base class will sync on the clock using
+these times.
+unblock any blocked function ASAP
+any state they set during unlock(), such as clearing command queues.
+do_seek vmethod for executing a seek request. Sub-classes should override
+this if they support seeking in formats other than the configured native
+format. By default, it tries to convert the seek arguments to the
+configured native format and prepare a segment in that format.
+operation if it were to be opened now. This vfunc is optional, but
+should be implemented if possible to avoid unnecessary start/stop
+cycles. The default implementation will open and close the resource
+to find out whether get_range is supported, and that is usually
+undesirable.
+setting a fixate function on the source pad.
+Subclasses can override any of the available virtual methods or not, as
+needed. At the minimum, the @create method should be overridden to produce
+buffers."
+            version="0.10.13">
+      <field name="parent_class">
+        <type name="Gst.ElementClass" c:type="GstElementClass"/>
+      </field>
+      <field name="get_caps">
+        <callback name="get_caps" c:type="get_caps">
+          <return-value transfer-ownership="full">
+            <type name="Gst.Caps" c:type="GstCaps*"/>
+          </return-value>
+          <parameters>
+            <parameter name="src" transfer-ownership="none">
+              <type name="BaseSrc" c:type="GstBaseSrc*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_caps">
+        <callback name="set_caps" c:type="set_caps">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="src" transfer-ownership="none">
+              <type name="BaseSrc" c:type="GstBaseSrc*"/>
+            </parameter>
+            <parameter name="caps" transfer-ownership="none">
+              <type name="Gst.Caps" c:type="GstCaps*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="negotiate">
+        <callback name="negotiate" c:type="negotiate">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="src" transfer-ownership="none">
+              <type name="BaseSrc" c:type="GstBaseSrc*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="newsegment">
+        <callback name="newsegment" c:type="newsegment">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="src" transfer-ownership="none">
+              <type name="BaseSrc" c:type="GstBaseSrc*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="start">
+        <callback name="start" c:type="start">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="src" transfer-ownership="none">
+              <type name="BaseSrc" c:type="GstBaseSrc*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="stop">
+        <callback name="stop" c:type="stop">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="src" transfer-ownership="none">
+              <type name="BaseSrc" c:type="GstBaseSrc*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_times">
+        <callback name="get_times" c:type="get_times">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="src" transfer-ownership="none">
+              <type name="BaseSrc" c:type="GstBaseSrc*"/>
+            </parameter>
+            <parameter name="buffer" transfer-ownership="none">
+              <type name="Gst.Buffer" c:type="GstBuffer*"/>
+            </parameter>
+            <parameter name="start" transfer-ownership="none">
+              <type name="Gst.ClockTime" c:type="GstClockTime*"/>
+            </parameter>
+            <parameter name="end" transfer-ownership="none">
+              <type name="Gst.ClockTime" c:type="GstClockTime*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_size">
+        <callback name="get_size" c:type="get_size">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="src" transfer-ownership="none">
+              <type name="BaseSrc" c:type="GstBaseSrc*"/>
+            </parameter>
+            <parameter name="size" direction="out" transfer-ownership="full">
+              <type name="uint64" c:type="guint64*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="is_seekable">
+        <callback name="is_seekable" c:type="is_seekable">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="src" transfer-ownership="none">
+              <type name="BaseSrc" c:type="GstBaseSrc*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="unlock">
+        <callback name="unlock" c:type="unlock">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="src" transfer-ownership="none">
+              <type name="BaseSrc" c:type="GstBaseSrc*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="event">
+        <callback name="event" c:type="event">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="src" transfer-ownership="none">
+              <type name="BaseSrc" c:type="GstBaseSrc*"/>
+            </parameter>
+            <parameter name="event" transfer-ownership="none">
+              <type name="Gst.Event" c:type="GstEvent*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="create">
+        <callback name="create" c:type="create">
+          <return-value transfer-ownership="full">
+            <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+          </return-value>
+          <parameters>
+            <parameter name="src" transfer-ownership="none">
+              <type name="BaseSrc" c:type="GstBaseSrc*"/>
+            </parameter>
+            <parameter name="offset" transfer-ownership="none">
+              <type name="uint64" c:type="guint64"/>
+            </parameter>
+            <parameter name="size" transfer-ownership="none">
+              <type name="uint" c:type="guint"/>
+            </parameter>
+            <parameter name="buf" transfer-ownership="none">
+              <type name="Gst.Buffer" c:type="GstBuffer**"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="do_seek">
+        <callback name="do_seek" c:type="do_seek">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="src" transfer-ownership="none">
+              <type name="BaseSrc" c:type="GstBaseSrc*"/>
+            </parameter>
+            <parameter name="segment" transfer-ownership="none">
+              <type name="Gst.Segment" c:type="GstSegment*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="query">
+        <callback name="query" c:type="query">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="src" transfer-ownership="none">
+              <type name="BaseSrc" c:type="GstBaseSrc*"/>
+            </parameter>
+            <parameter name="query" transfer-ownership="none">
+              <type name="Gst.Query" c:type="GstQuery*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="check_get_range">
+        <callback name="check_get_range" c:type="check_get_range">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="src" transfer-ownership="none">
+              <type name="BaseSrc" c:type="GstBaseSrc*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="fixate">
+        <callback name="fixate" c:type="fixate">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="src" transfer-ownership="none">
+              <type name="BaseSrc" c:type="GstBaseSrc*"/>
+            </parameter>
+            <parameter name="caps" transfer-ownership="none">
+              <type name="Gst.Caps" c:type="GstCaps*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="unlock_stop">
+        <callback name="unlock_stop" c:type="unlock_stop">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="src" transfer-ownership="none">
+              <type name="BaseSrc" c:type="GstBaseSrc*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="prepare_seek_segment">
+        <callback name="prepare_seek_segment" c:type="prepare_seek_segment">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="src" transfer-ownership="none">
+              <type name="BaseSrc" c:type="GstBaseSrc*"/>
+            </parameter>
+            <parameter name="seek" transfer-ownership="none">
+              <type name="Gst.Event" c:type="GstEvent*"/>
+            </parameter>
+            <parameter name="segment" transfer-ownership="none">
+              <type name="Gst.Segment" c:type="GstSegment*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="14">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <bitfield name="BaseSrcFlags"
+              doc="The #GstElement flags that a basesrc element may have."
+              c:type="GstBaseSrcFlags">
+      <member name="started"
+              value="1048576"
+              c:identifier="GST_BASE_SRC_STARTED"/>
+      <member name="flag_last"
+              value="4194304"
+              c:identifier="GST_BASE_SRC_FLAG_LAST"/>
+    </bitfield>
+    <record name="BaseSrcPrivate" c:type="GstBaseSrcPrivate">
+    </record>
+    <class name="BaseTransform"
+           c:type="GstBaseTransform"
+           doc="The opaque #GstBaseTransform data structure."
+           parent="Gst.Element"
+           abstract="1"
+           glib:type-name="GstBaseTransform"
+           glib:get-type="gst_base_transform_get_type"
+           glib:type-struct="BaseTransformClass">
+      <virtual-method name="transform_caps">
+        <return-value transfer-ownership="full">
+          <type name="Gst.Caps" c:type="GstCaps*"/>
+        </return-value>
+        <parameters>
+          <parameter name="direction" transfer-ownership="none">
+            <type name="Gst.PadDirection" c:type="GstPadDirection"/>
+          </parameter>
+          <parameter name="caps" transfer-ownership="none">
+            <type name="Gst.Caps" c:type="GstCaps*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="fixate_caps">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="direction" transfer-ownership="none">
+            <type name="Gst.PadDirection" c:type="GstPadDirection"/>
+          </parameter>
+          <parameter name="caps" transfer-ownership="none">
+            <type name="Gst.Caps" c:type="GstCaps*"/>
+          </parameter>
+          <parameter name="othercaps" transfer-ownership="none">
+            <type name="Gst.Caps" c:type="GstCaps*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="transform_size">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="direction" transfer-ownership="none">
+            <type name="Gst.PadDirection" c:type="GstPadDirection"/>
+          </parameter>
+          <parameter name="caps" transfer-ownership="none">
+            <type name="Gst.Caps" c:type="GstCaps*"/>
+          </parameter>
+          <parameter name="size" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="othercaps" transfer-ownership="none">
+            <type name="Gst.Caps" c:type="GstCaps*"/>
+          </parameter>
+          <parameter name="othersize"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="uint" c:type="guint*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_unit_size">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="caps" transfer-ownership="none">
+            <type name="Gst.Caps" c:type="GstCaps*"/>
+          </parameter>
+          <parameter name="size" direction="out" transfer-ownership="full">
+            <type name="uint" c:type="guint*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="set_caps">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="incaps" transfer-ownership="none">
+            <type name="Gst.Caps" c:type="GstCaps*"/>
+          </parameter>
+          <parameter name="outcaps" transfer-ownership="none">
+            <type name="Gst.Caps" c:type="GstCaps*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="start">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="stop">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="event">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="none">
+            <type name="Gst.Event" c:type="GstEvent*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="transform">
+        <return-value transfer-ownership="full">
+          <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+        </return-value>
+        <parameters>
+          <parameter name="inbuf" transfer-ownership="none">
+            <type name="Gst.Buffer" c:type="GstBuffer*"/>
+          </parameter>
+          <parameter name="outbuf" transfer-ownership="none">
+            <type name="Gst.Buffer" c:type="GstBuffer*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="transform_ip">
+        <return-value transfer-ownership="full">
+          <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+        </return-value>
+        <parameters>
+          <parameter name="buf" transfer-ownership="none">
+            <type name="Gst.Buffer" c:type="GstBuffer*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="prepare_output_buffer">
+        <return-value transfer-ownership="full">
+          <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+        </return-value>
+        <parameters>
+          <parameter name="input" transfer-ownership="none">
+            <type name="Gst.Buffer" c:type="GstBuffer*"/>
+          </parameter>
+          <parameter name="size" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="caps" transfer-ownership="none">
+            <type name="Gst.Caps" c:type="GstCaps*"/>
+          </parameter>
+          <parameter name="buf" transfer-ownership="none">
+            <type name="Gst.Buffer" c:type="GstBuffer**"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="src_event">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="none">
+            <type name="Gst.Event" c:type="GstEvent*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="before_transform">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="buffer" transfer-ownership="none">
+            <type name="Gst.Buffer" c:type="GstBuffer*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="set_passthrough"
+              c:identifier="gst_base_transform_set_passthrough"
+              doc="Set passthrough mode for this filter by default. This is mostly
+useful for filters that do not care about negotiation.
+Always TRUE for filters which don&apos;t implement either a transform
+or transform_ip method.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="passthrough" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="is_passthrough"
+              c:identifier="gst_base_transform_is_passthrough"
+              doc="See if @trans is configured as a passthrough transform.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_in_place"
+              c:identifier="gst_base_transform_set_in_place"
+              doc="on in_place buffers.
+Determines whether a non-writable buffer will be copied before passing
+to the transform_ip function.
+&lt;itemizedlist&gt;
+&lt;listitem&gt;Always TRUE if no transform function is implemented.&lt;/listitem&gt;
+&lt;listitem&gt;Always FALSE if ONLY transform function is implemented.&lt;/listitem&gt;
+&lt;/itemizedlist&gt;
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="in_place" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="is_in_place"
+              c:identifier="gst_base_transform_is_in_place"
+              doc="See if @trans is configured as a in_place transform.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="update_qos"
+              c:identifier="gst_base_transform_update_qos"
+              doc="running_time.
+Set the QoS parameters in the transform. This function is called internally
+when a QOS event is received but subclasses can provide custom information
+when needed.
+MT safe."
+              version="0.10.5">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="proportion" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="diff" transfer-ownership="none">
+            <type name="Gst.ClockTimeDiff" c:type="GstClockTimeDiff"/>
+          </parameter>
+          <parameter name="timestamp" transfer-ownership="none">
+            <type name="Gst.ClockTime" c:type="GstClockTime"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_qos_enabled"
+              c:identifier="gst_base_transform_set_qos_enabled"
+              doc="Enable or disable QoS handling in the transform.
+MT safe."
+              version="0.10.5">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="enabled" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="is_qos_enabled"
+              c:identifier="gst_base_transform_is_qos_enabled"
+              doc="Queries if the transform will handle QoS.
+MT safe."
+              version="0.10.5">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_gap_aware"
+              c:identifier="gst_base_transform_set_gap_aware"
+              doc="If @gap_aware is %FALSE (the default), output buffers will have the
+%GST_BUFFER_FLAG_GAP flag unset.
+If set to %TRUE, the element must handle output buffers with this flag set
+correctly, i.e. it can assume that the buffer contains neutral data but must
+unset the flag if the output is no neutral data.
+MT safe."
+              version="0.10.16">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="gap_aware" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="suggest"
+              c:identifier="gst_base_transform_suggest"
+              doc="Instructs @trans to suggest new @caps upstream. A copy of @caps will be
+taken."
+              version="0.10.21">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="caps" transfer-ownership="none">
+            <type name="Gst.Caps" c:type="GstCaps*"/>
+          </parameter>
+          <parameter name="size" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="reconfigure"
+              c:identifier="gst_base_transform_reconfigure"
+              doc="Instructs @trans to renegotiate a new downstream transform on the next
+buffer. This function is typically called after properties on the transform
+were set that influence the output format."
+              version="0.10.21">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <property name="qos" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <field name="element">
+        <type name="Gst.Element" c:type="GstElement"/>
+      </field>
+      <field name="sinkpad">
+        <type name="Gst.Pad" c:type="GstPad*"/>
+      </field>
+      <field name="srcpad">
+        <type name="Gst.Pad" c:type="GstPad*"/>
+      </field>
+      <field name="passthrough">
+        <type name="boolean" c:type="gboolean"/>
+      </field>
+      <field name="always_in_place">
+        <type name="boolean" c:type="gboolean"/>
+      </field>
+      <field name="cache_caps1">
+        <type name="Gst.Caps" c:type="GstCaps*"/>
+      </field>
+      <field name="cache_caps1_size">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="cache_caps2">
+        <type name="Gst.Caps" c:type="GstCaps*"/>
+      </field>
+      <field name="cache_caps2_size">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="have_same_caps">
+        <type name="boolean" c:type="gboolean"/>
+      </field>
+      <field name="delay_configure">
+        <type name="boolean" c:type="gboolean"/>
+      </field>
+      <field name="pending_configure">
+        <type name="boolean" c:type="gboolean"/>
+      </field>
+      <field name="negotiated">
+        <type name="boolean" c:type="gboolean"/>
+      </field>
+      <field name="have_newsegment">
+        <type name="boolean" c:type="gboolean"/>
+      </field>
+      <field name="segment">
+        <type name="Gst.Segment" c:type="GstSegment"/>
+      </field>
+      <field name="transform_lock">
+        <type name="GLib.Mutex" c:type="GMutex*"/>
+      </field>
+      <field name="priv">
+        <type name="BaseTransformPrivate" c:type="GstBaseTransformPrivate*"/>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="19">
+          <type name="any"/>
+        </array>
+      </field>
+    </class>
+    <record name="BaseTransformClass"
+            c:type="GstBaseTransformClass"
+            glib:is-gtype-struct-for="BaseTransform"
+            doc="caps, what caps are allowed on the other pad in this
+element ?
+caps, fixate the caps on the other pad.
+with the given caps, calculate the size in bytes of a buffer
+on the other pad with the given other caps.
+The default implementation uses get_unit_size and keeps
+the number of units the same.
+get the size in bytes of one unit for the given caps.
+Called when the element starts processing.
+Allows opening external resources.
+Called when the element stops processing.
+Allows closing external resources.
+Transforms one incoming buffer to one outgoing buffer.
+The function is allowed to change size/timestamp/duration
+of the outgoing buffer.
+Transform the incoming buffer in-place.
+Event handler on the sink pad. This function should return
+TRUE if the base class should forward the event.
+Event handler on the source pad.
+automatically enabled if the caps are the same.
+Subclasses can override this to do their own
+allocation of output buffers.  Elements that only do
+analysis can return a subbuffer or even just
+increment the reference to the input buffer (if in
+passthrough mode)
+This method is called right before the base class will
+start processing. Dynamic properties or other delayed
+configuration could be performed in this method.
+Subclasses can override any of the available virtual methods or not, as
+needed. At minimum either @transform or @transform_ip need to be overridden.
+If the element can overwrite the input data with the results (data is of the
+same type and quantity) it should provide @transform_ip.">
+      <field name="parent_class">
+        <type name="Gst.ElementClass" c:type="GstElementClass"/>
+      </field>
+      <field name="transform_caps">
+        <callback name="transform_caps" c:type="transform_caps">
+          <return-value transfer-ownership="full">
+            <type name="Gst.Caps" c:type="GstCaps*"/>
+          </return-value>
+          <parameters>
+            <parameter name="trans" transfer-ownership="none">
+              <type name="BaseTransform" c:type="GstBaseTransform*"/>
+            </parameter>
+            <parameter name="direction" transfer-ownership="none">
+              <type name="Gst.PadDirection" c:type="GstPadDirection"/>
+            </parameter>
+            <parameter name="caps" transfer-ownership="none">
+              <type name="Gst.Caps" c:type="GstCaps*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="fixate_caps">
+        <callback name="fixate_caps" c:type="fixate_caps">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="trans" transfer-ownership="none">
+              <type name="BaseTransform" c:type="GstBaseTransform*"/>
+            </parameter>
+            <parameter name="direction" transfer-ownership="none">
+              <type name="Gst.PadDirection" c:type="GstPadDirection"/>
+            </parameter>
+            <parameter name="caps" transfer-ownership="none">
+              <type name="Gst.Caps" c:type="GstCaps*"/>
+            </parameter>
+            <parameter name="othercaps" transfer-ownership="none">
+              <type name="Gst.Caps" c:type="GstCaps*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="transform_size">
+        <callback name="transform_size" c:type="transform_size">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="trans" transfer-ownership="none">
+              <type name="BaseTransform" c:type="GstBaseTransform*"/>
+            </parameter>
+            <parameter name="direction" transfer-ownership="none">
+              <type name="Gst.PadDirection" c:type="GstPadDirection"/>
+            </parameter>
+            <parameter name="caps" transfer-ownership="none">
+              <type name="Gst.Caps" c:type="GstCaps*"/>
+            </parameter>
+            <parameter name="size" transfer-ownership="none">
+              <type name="uint" c:type="guint"/>
+            </parameter>
+            <parameter name="othercaps" transfer-ownership="none">
+              <type name="Gst.Caps" c:type="GstCaps*"/>
+            </parameter>
+            <parameter name="othersize"
+                       direction="out"
+                       transfer-ownership="full">
+              <type name="uint" c:type="guint*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_unit_size">
+        <callback name="get_unit_size" c:type="get_unit_size">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="trans" transfer-ownership="none">
+              <type name="BaseTransform" c:type="GstBaseTransform*"/>
+            </parameter>
+            <parameter name="caps" transfer-ownership="none">
+              <type name="Gst.Caps" c:type="GstCaps*"/>
+            </parameter>
+            <parameter name="size" direction="out" transfer-ownership="full">
+              <type name="uint" c:type="guint*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_caps">
+        <callback name="set_caps" c:type="set_caps">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="trans" transfer-ownership="none">
+              <type name="BaseTransform" c:type="GstBaseTransform*"/>
+            </parameter>
+            <parameter name="incaps" transfer-ownership="none">
+              <type name="Gst.Caps" c:type="GstCaps*"/>
+            </parameter>
+            <parameter name="outcaps" transfer-ownership="none">
+              <type name="Gst.Caps" c:type="GstCaps*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="start">
+        <callback name="start" c:type="start">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="trans" transfer-ownership="none">
+              <type name="BaseTransform" c:type="GstBaseTransform*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="stop">
+        <callback name="stop" c:type="stop">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="trans" transfer-ownership="none">
+              <type name="BaseTransform" c:type="GstBaseTransform*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="event">
+        <callback name="event" c:type="event">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="trans" transfer-ownership="none">
+              <type name="BaseTransform" c:type="GstBaseTransform*"/>
+            </parameter>
+            <parameter name="event" transfer-ownership="none">
+              <type name="Gst.Event" c:type="GstEvent*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="transform">
+        <callback name="transform" c:type="transform">
+          <return-value transfer-ownership="full">
+            <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+          </return-value>
+          <parameters>
+            <parameter name="trans" transfer-ownership="none">
+              <type name="BaseTransform" c:type="GstBaseTransform*"/>
+            </parameter>
+            <parameter name="inbuf" transfer-ownership="none">
+              <type name="Gst.Buffer" c:type="GstBuffer*"/>
+            </parameter>
+            <parameter name="outbuf" transfer-ownership="none">
+              <type name="Gst.Buffer" c:type="GstBuffer*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="transform_ip">
+        <callback name="transform_ip" c:type="transform_ip">
+          <return-value transfer-ownership="full">
+            <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+          </return-value>
+          <parameters>
+            <parameter name="trans" transfer-ownership="none">
+              <type name="BaseTransform" c:type="GstBaseTransform*"/>
+            </parameter>
+            <parameter name="buf" transfer-ownership="none">
+              <type name="Gst.Buffer" c:type="GstBuffer*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="passthrough_on_same_caps">
+        <type name="boolean" c:type="gboolean"/>
+      </field>
+      <field name="prepare_output_buffer">
+        <callback name="prepare_output_buffer" c:type="prepare_output_buffer">
+          <return-value transfer-ownership="full">
+            <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+          </return-value>
+          <parameters>
+            <parameter name="trans" transfer-ownership="none">
+              <type name="BaseTransform" c:type="GstBaseTransform*"/>
+            </parameter>
+            <parameter name="input" transfer-ownership="none">
+              <type name="Gst.Buffer" c:type="GstBuffer*"/>
+            </parameter>
+            <parameter name="size" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+            <parameter name="caps" transfer-ownership="none">
+              <type name="Gst.Caps" c:type="GstCaps*"/>
+            </parameter>
+            <parameter name="buf" transfer-ownership="none">
+              <type name="Gst.Buffer" c:type="GstBuffer**"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="src_event">
+        <callback name="src_event" c:type="src_event">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="trans" transfer-ownership="none">
+              <type name="BaseTransform" c:type="GstBaseTransform*"/>
+            </parameter>
+            <parameter name="event" transfer-ownership="none">
+              <type name="Gst.Event" c:type="GstEvent*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="before_transform">
+        <callback name="before_transform" c:type="before_transform">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="trans" transfer-ownership="none">
+              <type name="BaseTransform" c:type="GstBaseTransform*"/>
+            </parameter>
+            <parameter name="buffer" transfer-ownership="none">
+              <type name="Gst.Buffer" c:type="GstBuffer*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="18">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <record name="BaseTransformPrivate" c:type="GstBaseTransformPrivate">
+    </record>
+    <record name="BitReader"
+            c:type="GstBitReader"
+            doc="A bit reader instance.">
+      <field name="data" writable="1">
+        <type name="any" c:type="guint8*"/>
+      </field>
+      <field name="size" writable="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="byte" writable="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="bit" writable="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <constructor name="new"
+                   c:identifier="gst_bit_reader_new"
+                   doc="Create a new #GstBitReader instance, which will read from @data."
+                   version="0.10.22">
+        <return-value transfer-ownership="full">
+          <type name="BitReader" c:type="GstBitReader*"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <array c:type="guint8*">
+              <type name="uint8"/>
+            </array>
+          </parameter>
+          <parameter name="size" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_from_buffer"
+                   c:identifier="gst_bit_reader_new_from_buffer"
+                   doc="Create a new #GstBitReader instance, which will read from the
+#GstBuffer @buffer."
+                   version="0.10.22">
+        <return-value transfer-ownership="full">
+          <type name="BitReader" c:type="GstBitReader*"/>
+        </return-value>
+        <parameters>
+          <parameter name="buffer" transfer-ownership="none">
+            <type name="Gst.Buffer" c:type="GstBuffer*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="free"
+              c:identifier="gst_bit_reader_free"
+              doc="Frees a #GstBitReader instance, which was previously allocated by
+gst_bit_reader_new() or gst_bit_reader_new_from_buffer()."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="init"
+              c:identifier="gst_bit_reader_init"
+              doc="Initializes a #GstBitReader instance to read from @data. This function
+can be called on already initialized instances."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <array c:type="guint8*">
+              <type name="uint8"/>
+            </array>
+          </parameter>
+          <parameter name="size" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="init_from_buffer"
+              c:identifier="gst_bit_reader_init_from_buffer"
+              doc="Initializes a #GstBitReader instance to read from @buffer. This function
+can be called on already initialized instances."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="buffer" transfer-ownership="none">
+            <type name="Gst.Buffer" c:type="GstBuffer*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_pos"
+              c:identifier="gst_bit_reader_set_pos"
+              doc="Sets the new position of a #GstBitReader instance to @pos in bits.
+otherwise."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="pos" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_pos"
+              c:identifier="gst_bit_reader_get_pos"
+              doc="Returns the current position of a #GstBitReader instance in bits."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="get_remaining"
+              c:identifier="gst_bit_reader_get_remaining"
+              doc="Returns the remaining number of bits of a #GstBitReader instance."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="get_size"
+              c:identifier="gst_bit_reader_get_size"
+              doc="Returns the total number of bits of a #GstBitReader instance."
+              version="0.10.26">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="skip"
+              c:identifier="gst_bit_reader_skip"
+              doc="Skips @nbits bits of the #GstBitReader instance."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="nbits" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="skip_to_byte"
+              c:identifier="gst_bit_reader_skip_to_byte"
+              doc="Skips until the next byte."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_bits_uint8"
+              c:identifier="gst_bit_reader_get_bits_uint8"
+              doc="Read @nbits bits into @val and update the current position."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" transfer-ownership="none">
+            <array c:type="guint8*">
+              <type name="uint8"/>
+            </array>
+          </parameter>
+          <parameter name="nbits" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_bits_uint16"
+              c:identifier="gst_bit_reader_get_bits_uint16"
+              doc="Read @nbits bits into @val and update the current position."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" direction="out" transfer-ownership="full">
+            <type name="uint16" c:type="guint16*"/>
+          </parameter>
+          <parameter name="nbits" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_bits_uint32"
+              c:identifier="gst_bit_reader_get_bits_uint32"
+              doc="Read @nbits bits into @val and update the current position."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" direction="out" transfer-ownership="full">
+            <type name="uint32" c:type="guint32*"/>
+          </parameter>
+          <parameter name="nbits" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_bits_uint64"
+              c:identifier="gst_bit_reader_get_bits_uint64"
+              doc="Read @nbits bits into @val and update the current position."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" direction="out" transfer-ownership="full">
+            <type name="uint64" c:type="guint64*"/>
+          </parameter>
+          <parameter name="nbits" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="peek_bits_uint8"
+              c:identifier="gst_bit_reader_peek_bits_uint8"
+              doc="Read @nbits bits into @val but keep the current position."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" transfer-ownership="none">
+            <array c:type="guint8*">
+              <type name="uint8"/>
+            </array>
+          </parameter>
+          <parameter name="nbits" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="peek_bits_uint16"
+              c:identifier="gst_bit_reader_peek_bits_uint16"
+              doc="Read @nbits bits into @val but keep the current position."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" direction="out" transfer-ownership="full">
+            <type name="uint16" c:type="guint16*"/>
+          </parameter>
+          <parameter name="nbits" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="peek_bits_uint32"
+              c:identifier="gst_bit_reader_peek_bits_uint32"
+              doc="Read @nbits bits into @val but keep the current position."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" direction="out" transfer-ownership="full">
+            <type name="uint32" c:type="guint32*"/>
+          </parameter>
+          <parameter name="nbits" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="peek_bits_uint64"
+              c:identifier="gst_bit_reader_peek_bits_uint64"
+              doc="Read @nbits bits into @val but keep the current position."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" direction="out" transfer-ownership="full">
+            <type name="uint64" c:type="guint64*"/>
+          </parameter>
+          <parameter name="nbits" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <record name="ByteReader"
+            c:type="GstByteReader"
+            doc="A byte reader instance.">
+      <field name="data" writable="1">
+        <type name="any" c:type="guint8*"/>
+      </field>
+      <field name="size" writable="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="byte" writable="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <constructor name="new"
+                   c:identifier="gst_byte_reader_new"
+                   doc="Create a new #GstByteReader instance, which will read from @data."
+                   version="0.10.22">
+        <return-value transfer-ownership="full">
+          <type name="ByteReader" c:type="GstByteReader*"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <array c:type="guint8*">
+              <type name="uint8"/>
+            </array>
+          </parameter>
+          <parameter name="size" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_from_buffer"
+                   c:identifier="gst_byte_reader_new_from_buffer"
+                   doc="Create a new #GstByteReader instance, which will read from the
+#GstBuffer @buffer."
+                   version="0.10.22">
+        <return-value transfer-ownership="full">
+          <type name="ByteReader" c:type="GstByteReader*"/>
+        </return-value>
+        <parameters>
+          <parameter name="buffer" transfer-ownership="none">
+            <type name="Gst.Buffer" c:type="GstBuffer*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="free"
+              c:identifier="gst_byte_reader_free"
+              doc="Frees a #GstByteReader instance, which was previously allocated by
+gst_byte_reader_new() or gst_byte_reader_new_from_buffer()."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="init"
+              c:identifier="gst_byte_reader_init"
+              doc="Initializes a #GstByteReader instance to read from @data. This function
+can be called on already initialized instances."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <array c:type="guint8*">
+              <type name="uint8"/>
+            </array>
+          </parameter>
+          <parameter name="size" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="init_from_buffer"
+              c:identifier="gst_byte_reader_init_from_buffer"
+              doc="Initializes a #GstByteReader instance to read from @buffer. This function
+can be called on already initialized instances."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="buffer" transfer-ownership="none">
+            <type name="Gst.Buffer" c:type="GstBuffer*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_pos"
+              c:identifier="gst_byte_reader_set_pos"
+              doc="Sets the new position of a #GstByteReader instance to @pos in bytes.
+otherwise."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="pos" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_pos"
+              c:identifier="gst_byte_reader_get_pos"
+              doc="Returns the current position of a #GstByteReader instance in bytes."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="get_remaining"
+              c:identifier="gst_byte_reader_get_remaining"
+              doc="Returns the remaining number of bytes of a #GstByteReader instance."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="get_size"
+              c:identifier="gst_byte_reader_get_size"
+              doc="Returns the total number of bytes of a #GstByteReader instance."
+              version="0.10.26">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="skip"
+              c:identifier="gst_byte_reader_skip"
+              doc="Skips @nbytes bytes of the #GstByteReader instance."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="nbytes" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_uint8"
+              c:identifier="gst_byte_reader_get_uint8"
+              doc="Read an unsigned 8 bit integer into @val and update the current position."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" transfer-ownership="none">
+            <array c:type="guint8*">
+              <type name="uint8"/>
+            </array>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_int8"
+              c:identifier="gst_byte_reader_get_int8"
+              doc="Read a signed 8 bit integer into @val and update the current position."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" direction="out" transfer-ownership="full">
+            <type name="int8" c:type="gint8*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_uint16_le"
+              c:identifier="gst_byte_reader_get_uint16_le"
+              doc="Read an unsigned 16 bit little endian integer into @val
+and update the current position."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" direction="out" transfer-ownership="full">
+            <type name="uint16" c:type="guint16*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_int16_le"
+              c:identifier="gst_byte_reader_get_int16_le"
+              doc="Read a signed 16 bit little endian integer into @val
+and update the current position."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" direction="out" transfer-ownership="full">
+            <type name="int16" c:type="gint16*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_uint16_be"
+              c:identifier="gst_byte_reader_get_uint16_be"
+              doc="Read an unsigned 16 bit big endian integer into @val
+and update the current position."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" direction="out" transfer-ownership="full">
+            <type name="uint16" c:type="guint16*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_int16_be"
+              c:identifier="gst_byte_reader_get_int16_be"
+              doc="Read a signed 16 bit big endian integer into @val
+and update the current position."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" direction="out" transfer-ownership="full">
+            <type name="int16" c:type="gint16*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_uint24_le"
+              c:identifier="gst_byte_reader_get_uint24_le"
+              doc="Read an unsigned 24 bit little endian integer into @val
+and update the current position."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" direction="out" transfer-ownership="full">
+            <type name="uint32" c:type="guint32*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_int24_le"
+              c:identifier="gst_byte_reader_get_int24_le"
+              doc="Read a signed 24 bit little endian integer into @val
+and update the current position."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" direction="out" transfer-ownership="full">
+            <type name="int32" c:type="gint32*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_uint24_be"
+              c:identifier="gst_byte_reader_get_uint24_be"
+              doc="Read an unsigned 24 bit big endian integer into @val
+and update the current position."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" direction="out" transfer-ownership="full">
+            <type name="uint32" c:type="guint32*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_int24_be"
+              c:identifier="gst_byte_reader_get_int24_be"
+              doc="Read a signed 24 bit big endian integer into @val
+and update the current position."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" direction="out" transfer-ownership="full">
+            <type name="int32" c:type="gint32*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_uint32_le"
+              c:identifier="gst_byte_reader_get_uint32_le"
+              doc="Read an unsigned 32 bit little endian integer into @val
+and update the current position."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" direction="out" transfer-ownership="full">
+            <type name="uint32" c:type="guint32*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_int32_le"
+              c:identifier="gst_byte_reader_get_int32_le"
+              doc="Read a signed 32 bit little endian integer into @val
+and update the current position."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" direction="out" transfer-ownership="full">
+            <type name="int32" c:type="gint32*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_uint32_be"
+              c:identifier="gst_byte_reader_get_uint32_be"
+              doc="Read an unsigned 32 bit big endian integer into @val
+and update the current position."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" direction="out" transfer-ownership="full">
+            <type name="uint32" c:type="guint32*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_int32_be"
+              c:identifier="gst_byte_reader_get_int32_be"
+              doc="Read a signed 32 bit big endian integer into @val
+and update the current position."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" direction="out" transfer-ownership="full">
+            <type name="int32" c:type="gint32*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_uint64_le"
+              c:identifier="gst_byte_reader_get_uint64_le"
+              doc="Read an unsigned 64 bit little endian integer into @val
+and update the current position."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" direction="out" transfer-ownership="full">
+            <type name="uint64" c:type="guint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_int64_le"
+              c:identifier="gst_byte_reader_get_int64_le"
+              doc="Read a signed 64 bit little endian integer into @val
+and update the current position."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" direction="out" transfer-ownership="full">
+            <type name="int64" c:type="gint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_uint64_be"
+              c:identifier="gst_byte_reader_get_uint64_be"
+              doc="Read an unsigned 64 bit big endian integer into @val
+and update the current position."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" direction="out" transfer-ownership="full">
+            <type name="uint64" c:type="guint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_int64_be"
+              c:identifier="gst_byte_reader_get_int64_be"
+              doc="Read a signed 64 bit big endian integer into @val
+and update the current position."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" direction="out" transfer-ownership="full">
+            <type name="int64" c:type="gint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="peek_uint8"
+              c:identifier="gst_byte_reader_peek_uint8"
+              doc="Read a signed 8 bit integer into @val but keep the current position."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" transfer-ownership="none">
+            <array c:type="guint8*">
+              <type name="uint8"/>
+            </array>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="peek_int8"
+              c:identifier="gst_byte_reader_peek_int8"
+              doc="Read a signed 8 bit integer into @val but keep the current position."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" direction="out" transfer-ownership="full">
+            <type name="int8" c:type="gint8*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="peek_uint16_le"
+              c:identifier="gst_byte_reader_peek_uint16_le"
+              doc="Read a signed 16 bit little endian integer into @val
+but keep the current position."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" direction="out" transfer-ownership="full">
+            <type name="uint16" c:type="guint16*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="peek_int16_le"
+              c:identifier="gst_byte_reader_peek_int16_le"
+              doc="Read a signed 16 bit little endian integer into @val
+but keep the current position."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" direction="out" transfer-ownership="full">
+            <type name="int16" c:type="gint16*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="peek_uint16_be"
+              c:identifier="gst_byte_reader_peek_uint16_be"
+              doc="Read a signed 16 bit big endian integer into @val
+but keep the current position."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" direction="out" transfer-ownership="full">
+            <type name="uint16" c:type="guint16*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="peek_int16_be"
+              c:identifier="gst_byte_reader_peek_int16_be"
+              doc="Read a signed 16 bit big endian integer into @val
+but keep the current position."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" direction="out" transfer-ownership="full">
+            <type name="int16" c:type="gint16*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="peek_uint24_le"
+              c:identifier="gst_byte_reader_peek_uint24_le"
+              doc="Read a signed 24 bit little endian integer into @val
+but keep the current position."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" direction="out" transfer-ownership="full">
+            <type name="uint32" c:type="guint32*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="peek_int24_le"
+              c:identifier="gst_byte_reader_peek_int24_le"
+              doc="Read a signed 24 bit little endian integer into @val
+but keep the current position."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" direction="out" transfer-ownership="full">
+            <type name="int32" c:type="gint32*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="peek_uint24_be"
+              c:identifier="gst_byte_reader_peek_uint24_be"
+              doc="Read a signed 24 bit big endian integer into @val
+but keep the current position."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" direction="out" transfer-ownership="full">
+            <type name="uint32" c:type="guint32*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="peek_int24_be"
+              c:identifier="gst_byte_reader_peek_int24_be"
+              doc="Read a signed 24 bit big endian integer into @val
+but keep the current position."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" direction="out" transfer-ownership="full">
+            <type name="int32" c:type="gint32*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="peek_uint32_le"
+              c:identifier="gst_byte_reader_peek_uint32_le"
+              doc="Read a signed 32 bit little endian integer into @val
+but keep the current position."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" direction="out" transfer-ownership="full">
+            <type name="uint32" c:type="guint32*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="peek_int32_le"
+              c:identifier="gst_byte_reader_peek_int32_le"
+              doc="Read a signed 32 bit little endian integer into @val
+but keep the current position."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" direction="out" transfer-ownership="full">
+            <type name="int32" c:type="gint32*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="peek_uint32_be"
+              c:identifier="gst_byte_reader_peek_uint32_be"
+              doc="Read a signed 32 bit big endian integer into @val
+but keep the current position."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" direction="out" transfer-ownership="full">
+            <type name="uint32" c:type="guint32*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="peek_int32_be"
+              c:identifier="gst_byte_reader_peek_int32_be"
+              doc="Read a signed 32 bit big endian integer into @val
+but keep the current position."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" direction="out" transfer-ownership="full">
+            <type name="int32" c:type="gint32*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="peek_uint64_le"
+              c:identifier="gst_byte_reader_peek_uint64_le"
+              doc="Read a signed 64 bit little endian integer into @val
+but keep the current position."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" direction="out" transfer-ownership="full">
+            <type name="uint64" c:type="guint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="peek_int64_le"
+              c:identifier="gst_byte_reader_peek_int64_le"
+              doc="Read a signed 64 bit little endian integer into @val
+but keep the current position."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" direction="out" transfer-ownership="full">
+            <type name="int64" c:type="gint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="peek_uint64_be"
+              c:identifier="gst_byte_reader_peek_uint64_be"
+              doc="Read a signed 64 bit big endian integer into @val
+but keep the current position."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" direction="out" transfer-ownership="full">
+            <type name="uint64" c:type="guint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="peek_int64_be"
+              c:identifier="gst_byte_reader_peek_int64_be"
+              doc="Read a signed 64 bit big endian integer into @val
+but keep the current position."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" direction="out" transfer-ownership="full">
+            <type name="int64" c:type="gint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_float32_le"
+              c:identifier="gst_byte_reader_get_float32_le"
+              doc="Read a 32 bit little endian floating point value into @val
+and update the current position."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" direction="out" transfer-ownership="full">
+            <type name="float" c:type="gfloat*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_float32_be"
+              c:identifier="gst_byte_reader_get_float32_be"
+              doc="Read a 32 bit big endian floating point value into @val
+and update the current position."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" direction="out" transfer-ownership="full">
+            <type name="float" c:type="gfloat*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_float64_le"
+              c:identifier="gst_byte_reader_get_float64_le"
+              doc="Read a 64 bit little endian floating point value into @val
+and update the current position."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" direction="out" transfer-ownership="full">
+            <type name="double" c:type="gdouble*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_float64_be"
+              c:identifier="gst_byte_reader_get_float64_be"
+              doc="Read a 64 bit big endian floating point value into @val
+and update the current position."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" direction="out" transfer-ownership="full">
+            <type name="double" c:type="gdouble*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="peek_float32_le"
+              c:identifier="gst_byte_reader_peek_float32_le"
+              doc="Read a 32 bit little endian floating point value into @val
+but keep the current position."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" direction="out" transfer-ownership="full">
+            <type name="float" c:type="gfloat*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="peek_float32_be"
+              c:identifier="gst_byte_reader_peek_float32_be"
+              doc="Read a 32 bit big endian floating point value into @val
+but keep the current position."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" direction="out" transfer-ownership="full">
+            <type name="float" c:type="gfloat*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="peek_float64_le"
+              c:identifier="gst_byte_reader_peek_float64_le"
+              doc="Read a 64 bit little endian floating point value into @val
+but keep the current position."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" direction="out" transfer-ownership="full">
+            <type name="double" c:type="gdouble*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="peek_float64_be"
+              c:identifier="gst_byte_reader_peek_float64_be"
+              doc="Read a 64 bit big endian floating point value into @val
+but keep the current position."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" direction="out" transfer-ownership="full">
+            <type name="double" c:type="gdouble*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="dup_data"
+              c:identifier="gst_byte_reader_dup_data"
+              doc="Returns a newly-allocated copy of the current data
+position if at least @size bytes are left and
+updates the current position."
+              version="0.10.24">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="size" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="val" direction="out" transfer-ownership="full">
+            <type name="uint8" c:type="guint8**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_data"
+              c:identifier="gst_byte_reader_get_data"
+              doc="Returns a constant pointer to the current data
+position if at least @size bytes are left and
+updates the current position."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="size" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="val" direction="out" transfer-ownership="full">
+            <type name="uint8" c:type="guint8**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="peek_data"
+              c:identifier="gst_byte_reader_peek_data"
+              doc="Returns a constant pointer to the current data
+position if at least @size bytes are left and
+keeps the current position."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="size" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="val" direction="out" transfer-ownership="full">
+            <type name="uint8" c:type="guint8**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="dup_string_utf8"
+              c:identifier="gst_byte_reader_dup_string_utf8"
+              doc="FIXME:Reads (copies) a NUL-terminated string in the #GstByteReader instance,
+advancing the current position to the byte after the string. This will work
+for any NUL-terminated string with a character width of 8 bits, so ASCII,
+UTF-8, ISO-8859-N etc. No input checking for valid UTF-8 is done.
+This function will fail if no NUL-terminator was found in in the data.
+string put into @str must be freed with g_free() when no longer needed."
+              version="0.10.24">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="str" transfer-ownership="none">
+            <array c:type="gchar**">
+              <type name="utf8"/>
+            </array>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="dup_string_utf16"
+              c:identifier="gst_byte_reader_dup_string_utf16"
+              doc="Returns a newly-allocated copy of the current data position if there is
+a NUL-terminated UTF-16 string in the data (this could be an empty string
+as well), and advances the current position.
+No input checking for valid UTF-16 is done. This function is endianness
+agnostic - you should not assume the UTF-16 characters are in host
+endianness.
+This function will fail if no NUL-terminator was found in in the data.
+byte alignment of the UTF-16 string.
+string put into @str must be freed with g_free() when no longer needed."
+              version="0.10.24">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="str" direction="out" transfer-ownership="full">
+            <type name="uint16" c:type="guint16**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="dup_string_utf32"
+              c:identifier="gst_byte_reader_dup_string_utf32"
+              doc="Returns a newly-allocated copy of the current data position if there is
+a NUL-terminated UTF-32 string in the data (this could be an empty string
+as well), and advances the current position.
+No input checking for valid UTF-32 is done. This function is endianness
+agnostic - you should not assume the UTF-32 characters are in host
+endianness.
+This function will fail if no NUL-terminator was found in in the data.
+byte alignment of the UTF-32 string.
+string put into @str must be freed with g_free() when no longer needed."
+              version="0.10.24">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="str" direction="out" transfer-ownership="full">
+            <type name="uint32" c:type="guint32**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="skip_string_utf8"
+              c:identifier="gst_byte_reader_skip_string_utf8"
+              doc="Skips a NUL-terminated string in the #GstByteReader instance, advancing
+the current position to the byte after the string. This will work for
+any NUL-terminated string with a character width of 8 bits, so ASCII,
+UTF-8, ISO-8859-N etc. No input checking for valid UTF-8 is done.
+This function will fail if no NUL-terminator was found in in the data."
+              version="0.10.24">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="skip_string_utf16"
+              c:identifier="gst_byte_reader_skip_string_utf16"
+              doc="Skips a NUL-terminated UTF-16 string in the #GstByteReader instance,
+advancing the current position to the byte after the string.
+No input checking for valid UTF-16 is done.
+This function will fail if no NUL-terminator was found in in the data."
+              version="0.10.24">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="skip_string_utf32"
+              c:identifier="gst_byte_reader_skip_string_utf32"
+              doc="Skips a NUL-terminated UTF-32 string in the #GstByteReader instance,
+advancing the current position to the byte after the string.
+No input checking for valid UTF-32 is done.
+This function will fail if no NUL-terminator was found in in the data."
+              version="0.10.24">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_string_utf8"
+              c:identifier="gst_byte_reader_get_string_utf8"
+              doc="Returns a constant pointer to the current data position if there is
+a NUL-terminated string in the data (this could be just a NUL terminator),
+advancing the current position to the byte after the string. This will work
+for any NUL-terminated string with a character width of 8 bits, so ASCII,
+UTF-8, ISO-8859-N etc.
+No input checking for valid UTF-8 is done.
+This function will fail if no NUL-terminator was found in in the data."
+              version="0.10.24">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="str" transfer-ownership="none">
+            <array c:type="gchar**">
+              <type name="utf8"/>
+            </array>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="peek_string_utf8"
+              c:identifier="gst_byte_reader_peek_string_utf8"
+              doc="Returns a constant pointer to the current data position if there is
+a NUL-terminated string in the data (this could be just a NUL terminator).
+The current position will be maintained. This will work for any
+NUL-terminated string with a character width of 8 bits, so ASCII,
+UTF-8, ISO-8859-N etc.
+No input checking for valid UTF-8 is done.
+This function will fail if no NUL-terminator was found in in the data."
+              version="0.10.24">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="str" transfer-ownership="none">
+            <array c:type="gchar**">
+              <type name="utf8"/>
+            </array>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="masked_scan_uint32"
+              c:identifier="gst_byte_reader_masked_scan_uint32"
+              doc="position
+Scan for pattern @pattern with applied mask @mask in the byte reader data,
+starting from offset @offset relative to the current position.
+The bytes in @pattern and @mask are interpreted left-to-right, regardless
+of endianness.  All four bytes of the pattern must be present in the
+byte reader data for it to match, even if the first or last bytes are masked
+out.
+It is an error to call this function without making sure that there is
+enough data (offset+size bytes) in the byte reader.
+Example:
+&lt;programlisting&gt;
+// Assume the reader contains 0x00 0x01 0x02 ... 0xfe 0xff
+gst_byte_reader_masked_scan_uint32 (reader, 0xffffffff, 0x00010203, 0, 256);
+// -&gt; returns 0
+gst_byte_reader_masked_scan_uint32 (reader, 0xffffffff, 0x00010203, 1, 255);
+// -&gt; returns -1
+gst_byte_reader_masked_scan_uint32 (reader, 0xffffffff, 0x01020304, 1, 255);
+// -&gt; returns 1
+gst_byte_reader_masked_scan_uint32 (reader, 0xffff, 0x0001, 0, 256);
+// -&gt; returns -1
+gst_byte_reader_masked_scan_uint32 (reader, 0xffff, 0x0203, 0, 256);
+// -&gt; returns 0
+gst_byte_reader_masked_scan_uint32 (reader, 0xffff0000, 0x02030000, 0, 256);
+// -&gt; returns 2
+gst_byte_reader_masked_scan_uint32 (reader, 0xffff0000, 0x02030000, 0, 4);
+// -&gt; returns -1
+&lt;/programlisting&gt;"
+              version="0.10.24">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+        <parameters>
+          <parameter name="mask" transfer-ownership="none">
+            <type name="uint32" c:type="guint32"/>
+          </parameter>
+          <parameter name="pattern" transfer-ownership="none">
+            <type name="uint32" c:type="guint32"/>
+          </parameter>
+          <parameter name="offset" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="size" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <record name="ByteWriter"
+            c:type="GstByteWriter"
+            doc="A byte writer instance.">
+      <field name="parent" writable="1">
+        <type name="ByteReader" c:type="GstByteReader"/>
+      </field>
+      <field name="alloc_size" writable="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="fixed" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </field>
+      <field name="owned" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </field>
+      <constructor name="new"
+                   c:identifier="gst_byte_writer_new"
+                   doc="Creates a new, empty #GstByteWriter instance"
+                   version="0.10.26">
+        <return-value transfer-ownership="full">
+          <type name="ByteWriter" c:type="GstByteWriter*"/>
+        </return-value>
+      </constructor>
+      <constructor name="new_with_size"
+                   c:identifier="gst_byte_writer_new_with_size"
+                   doc="Creates a new #GstByteWriter instance with the given
+initial data size."
+                   version="0.10.26">
+        <return-value transfer-ownership="full">
+          <type name="ByteWriter" c:type="GstByteWriter*"/>
+        </return-value>
+        <parameters>
+          <parameter name="size" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="fixed" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_with_data"
+                   c:identifier="gst_byte_writer_new_with_data"
+                   doc="Creates a new #GstByteWriter instance with the given
+memory area. If @initialized is %TRUE it is possible to
+read @size bytes from the #GstByteWriter from the beginning."
+                   version="0.10.26">
+        <return-value transfer-ownership="full">
+          <type name="ByteWriter" c:type="GstByteWriter*"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <array c:type="guint8*">
+              <type name="uint8"/>
+            </array>
+          </parameter>
+          <parameter name="size" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="initialized" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_with_buffer"
+                   c:identifier="gst_byte_writer_new_with_buffer"
+                   doc="Creates a new #GstByteWriter instance with the given
+buffer. If @initialized is %TRUE it is possible to
+read the complete buffer from the #GstByteWriter from the beginning.
+&lt;note&gt;@buffer must be writable&lt;/note&gt;"
+                   version="0.10.26">
+        <return-value transfer-ownership="full">
+          <type name="ByteWriter" c:type="GstByteWriter*"/>
+        </return-value>
+        <parameters>
+          <parameter name="buffer" transfer-ownership="none">
+            <type name="Gst.Buffer" c:type="GstBuffer*"/>
+          </parameter>
+          <parameter name="initialized" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="init"
+              c:identifier="gst_byte_writer_init"
+              doc="Initializes @writer to an empty instance"
+              version="0.10.26">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="init_with_size"
+              c:identifier="gst_byte_writer_init_with_size"
+              doc="Initializes @writer with the given initial data size."
+              version="0.10.26">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="size" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="fixed" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="init_with_data"
+              c:identifier="gst_byte_writer_init_with_data"
+              doc="Initializes @writer with the given
+memory area. If @initialized is %TRUE it is possible to
+read @size bytes from the #GstByteWriter from the beginning."
+              version="0.10.26">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <array c:type="guint8*">
+              <type name="uint8"/>
+            </array>
+          </parameter>
+          <parameter name="size" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="initialized" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="init_with_buffer"
+              c:identifier="gst_byte_writer_init_with_buffer"
+              doc="Initializes @writer with the given
+buffer. If @initialized is %TRUE it is possible to
+read the complete buffer from the #GstByteWriter from the beginning.
+&lt;note&gt;@buffer must be writable&lt;/note&gt;"
+              version="0.10.26">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="buffer" transfer-ownership="none">
+            <type name="Gst.Buffer" c:type="GstBuffer*"/>
+          </parameter>
+          <parameter name="initialized" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="free"
+              c:identifier="gst_byte_writer_free"
+              doc="Frees @writer and all memory allocated by it."
+              version="0.10.26">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="free_and_get_data"
+              c:identifier="gst_byte_writer_free_and_get_data"
+              doc="Frees @writer and all memory allocated by it except
+the current data, which is returned."
+              version="0.10.26">
+        <return-value transfer-ownership="full" doc="after usage.">
+          <array c:type="guint8*">
+            <type name="uint8"/>
+          </array>
+        </return-value>
+      </method>
+      <method name="free_and_get_buffer"
+              c:identifier="gst_byte_writer_free_and_get_buffer"
+              doc="Frees @writer and all memory allocated by it except
+the current data, which is returned as #GstBuffer."
+              version="0.10.26">
+        <return-value transfer-ownership="full" doc="after usage.">
+          <type name="Gst.Buffer" c:type="GstBuffer*"/>
+        </return-value>
+      </method>
+      <method name="reset"
+              c:identifier="gst_byte_writer_reset"
+              doc="Resets @writer and frees the data if it&apos;s
+owned by @writer."
+              version="0.10.26">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="reset_and_get_data"
+              c:identifier="gst_byte_writer_reset_and_get_data"
+              doc="Resets @writer and returns the current data."
+              version="0.10.26">
+        <return-value transfer-ownership="full" doc="after usage.">
+          <array c:type="guint8*">
+            <type name="uint8"/>
+          </array>
+        </return-value>
+      </method>
+      <method name="reset_and_get_buffer"
+              c:identifier="gst_byte_writer_reset_and_get_buffer"
+              doc="Resets @writer and returns the current data as buffer."
+              version="0.10.26">
+        <return-value transfer-ownership="full" doc="after usage.">
+          <type name="Gst.Buffer" c:type="GstBuffer*"/>
+        </return-value>
+      </method>
+      <method name="get_remaining"
+              c:identifier="gst_byte_writer_get_remaining"
+              doc="Returns the remaining size of data that can still be written. If
+-1 is returned the remaining size is only limited by system resources."
+              version="0.10.26">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="ensure_free_space"
+              c:identifier="gst_byte_writer_ensure_free_space"
+              doc="Checks if enough free space from the current write cursor is
+available and reallocates if necessary."
+              version="0.10.26">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="size" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="put_uint8"
+              c:identifier="gst_byte_writer_put_uint8"
+              doc="Writes a unsigned 8 bit integer to @writer."
+              version="0.10.26">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" transfer-ownership="none">
+            <type name="uint8" c:type="guint8"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="put_int8"
+              c:identifier="gst_byte_writer_put_int8"
+              doc="Writes a signed 8 bit integer to @writer."
+              version="0.10.26">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" transfer-ownership="none">
+            <type name="int8" c:type="gint8"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="put_uint16_be"
+              c:identifier="gst_byte_writer_put_uint16_be"
+              doc="Writes a unsigned big endian 16 bit integer to @writer."
+              version="0.10.26">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" transfer-ownership="none">
+            <type name="uint16" c:type="guint16"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="put_uint16_le"
+              c:identifier="gst_byte_writer_put_uint16_le"
+              doc="Writes a unsigned little endian 16 bit integer to @writer."
+              version="0.10.26">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" transfer-ownership="none">
+            <type name="uint16" c:type="guint16"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="put_int16_be"
+              c:identifier="gst_byte_writer_put_int16_be"
+              doc="Writes a signed big endian 16 bit integer to @writer."
+              version="0.10.26">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" transfer-ownership="none">
+            <type name="int16" c:type="gint16"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="put_int16_le"
+              c:identifier="gst_byte_writer_put_int16_le"
+              doc="Writes a signed little endian 16 bit integer to @writer."
+              version="0.10.26">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" transfer-ownership="none">
+            <type name="int16" c:type="gint16"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="put_uint24_be"
+              c:identifier="gst_byte_writer_put_uint24_be"
+              doc="Writes a unsigned big endian 24 bit integer to @writer."
+              version="0.10.26">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" transfer-ownership="none">
+            <type name="uint32" c:type="guint32"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="put_uint24_le"
+              c:identifier="gst_byte_writer_put_uint24_le"
+              doc="Writes a unsigned little endian 24 bit integer to @writer."
+              version="0.10.26">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" transfer-ownership="none">
+            <type name="uint32" c:type="guint32"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="put_int24_be"
+              c:identifier="gst_byte_writer_put_int24_be"
+              doc="Writes a signed big endian 24 bit integer to @writer."
+              version="0.10.26">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" transfer-ownership="none">
+            <type name="int32" c:type="gint32"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="put_int24_le"
+              c:identifier="gst_byte_writer_put_int24_le"
+              doc="Writes a signed little endian 24 bit integer to @writer."
+              version="0.10.26">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" transfer-ownership="none">
+            <type name="int32" c:type="gint32"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="put_uint32_be"
+              c:identifier="gst_byte_writer_put_uint32_be"
+              doc="Writes a unsigned big endian 32 bit integer to @writer."
+              version="0.10.26">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" transfer-ownership="none">
+            <type name="uint32" c:type="guint32"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="put_uint32_le"
+              c:identifier="gst_byte_writer_put_uint32_le"
+              doc="Writes a unsigned little endian 32 bit integer to @writer."
+              version="0.10.26">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" transfer-ownership="none">
+            <type name="uint32" c:type="guint32"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="put_int32_be"
+              c:identifier="gst_byte_writer_put_int32_be"
+              doc="Writes a signed big endian 32 bit integer to @writer."
+              version="0.10.26">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" transfer-ownership="none">
+            <type name="int32" c:type="gint32"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="put_int32_le"
+              c:identifier="gst_byte_writer_put_int32_le"
+              doc="Writes a signed little endian 32 bit integer to @writer."
+              version="0.10.26">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" transfer-ownership="none">
+            <type name="int32" c:type="gint32"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="put_uint64_be"
+              c:identifier="gst_byte_writer_put_uint64_be"
+              doc="Writes a unsigned big endian 64 bit integer to @writer."
+              version="0.10.26">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" transfer-ownership="none">
+            <type name="uint64" c:type="guint64"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="put_uint64_le"
+              c:identifier="gst_byte_writer_put_uint64_le"
+              doc="Writes a unsigned little endian 64 bit integer to @writer."
+              version="0.10.26">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" transfer-ownership="none">
+            <type name="uint64" c:type="guint64"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="put_int64_be"
+              c:identifier="gst_byte_writer_put_int64_be"
+              doc="Writes a signed big endian 64 bit integer to @writer."
+              version="0.10.26">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="put_int64_le"
+              c:identifier="gst_byte_writer_put_int64_le"
+              doc="Writes a signed little endian 64 bit integer to @writer."
+              version="0.10.26">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="put_float32_be"
+              c:identifier="gst_byte_writer_put_float32_be"
+              doc="Writes a big endian 32 bit float to @writer."
+              version="0.10.27">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="put_float32_le"
+              c:identifier="gst_byte_writer_put_float32_le"
+              doc="Writes a little endian 32 bit float to @writer."
+              version="0.10.27">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="put_float64_be"
+              c:identifier="gst_byte_writer_put_float64_be"
+              doc="Writes a big endian 64 bit float to @writer."
+              version="0.10.27">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="put_float64_le"
+              c:identifier="gst_byte_writer_put_float64_le"
+              doc="Writes a little endian 64 bit float to @writer."
+              version="0.10.27">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="put_data"
+              c:identifier="gst_byte_writer_put_data"
+              doc="Writes @size bytes of @data to @writer."
+              version="0.10.26">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <array c:type="guint8*">
+              <type name="uint8"/>
+            </array>
+          </parameter>
+          <parameter name="size" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="fill"
+              c:identifier="gst_byte_writer_fill"
+              doc="Writes @size bytes containing @value to @writer."
+              version="0.10.27">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="value" transfer-ownership="none">
+            <type name="uint8" c:type="guint8"/>
+          </parameter>
+          <parameter name="size" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="put_string_utf8"
+              c:identifier="gst_byte_writer_put_string_utf8"
+              doc="Writes a null-terminated UTF8 string to @writer."
+              version="0.10.26">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="put_string_utf16"
+              c:identifier="gst_byte_writer_put_string_utf16"
+              doc="Writes a null-terminated UTF16 string to @writer."
+              version="0.10.26">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" direction="out" transfer-ownership="none">
+            <type name="uint16" c:type="guint16*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="put_string_utf32"
+              c:identifier="gst_byte_writer_put_string_utf32"
+              doc="Writes a null-terminated UTF32 string to @writer."
+              version="0.10.26">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" direction="out" transfer-ownership="none">
+            <type name="uint32" c:type="guint32*"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <record name="CollectData"
+            c:type="GstCollectData"
+            doc="Structure used by the collect_pads.">
+      <field name="collect" writable="1">
+        <type name="CollectPads" c:type="GstCollectPads*"/>
+      </field>
+      <field name="pad" writable="1">
+        <type name="Gst.Pad" c:type="GstPad*"/>
+      </field>
+      <field name="buffer" writable="1">
+        <type name="Gst.Buffer" c:type="GstBuffer*"/>
+      </field>
+      <field name="pos" writable="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="segment" writable="1">
+        <type name="Gst.Segment" c:type="GstSegment"/>
+      </field>
+      <union name="abidata" c:type="abidata">
+        <record name="ABI" c:type="ABI">
+          <field name="flushing" writable="1">
+            <type name="boolean" c:type="gboolean"/>
+          </field>
+          <field name="new_segment" writable="1">
+            <type name="boolean" c:type="gboolean"/>
+          </field>
+          <field name="eos" writable="1">
+            <type name="boolean" c:type="gboolean"/>
+          </field>
+          <field name="refcount" writable="1">
+            <type name="int" c:type="gint"/>
+          </field>
+        </record>
+        <field name="_gst_reserved" writable="1">
+          <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+            <type name="any"/>
+          </array>
+        </field>
+      </union>
+    </record>
+    <callback name="CollectDataDestroyNotify"
+              c:type="GstCollectDataDestroyNotify"
+              doc="A function that will be called when the #GstCollectData will be freed.
+It is passed the pointer to the structure and should free any custom
+memory and resources allocated for it."
+              version="0.10.12">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="data" transfer-ownership="none">
+          <type name="CollectData" c:type="GstCollectData*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <class name="CollectPads"
+           c:type="GstCollectPads"
+           doc="Collectpads object.
+Note that @data doesn&apos;t contain the complete #GstCollectData list
+at all times and should not be used for iterating them."
+           parent="Gst.Object"
+           glib:type-name="GstCollectPads"
+           glib:get-type="gst_collect_pads_get_type"
+           glib:type-struct="CollectPadsClass">
+      <constructor name="new"
+                   c:identifier="gst_collect_pads_new"
+                   doc="Create a new instance of #GstCollectPads.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="CollectPads" c:type="GstCollectPads*"/>
+        </return-value>
+      </constructor>
+      <method name="set_function"
+              c:identifier="gst_collect_pads_set_function"
+              doc="Set the callback function and user data that will be called when
+all the pads added to the collection have buffers queued.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="2">
+            <type name="CollectPadsFunction" c:type="GstCollectPadsFunction"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_clip_function"
+              c:identifier="gst_collect_pads_set_clip_function"
+              doc="Install a clipping function that is called right after a buffer is received
+on a pad managed by @pads. See #GstCollectDataClipFunction for more info."
+              version="0.10.26">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="clipfunc"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="2">
+            <type name="CollectPadsClipFunction"
+                  c:type="GstCollectPadsClipFunction"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_pad"
+              c:identifier="gst_collect_pads_add_pad"
+              doc="Add a pad to the collection of collect pads. The pad has to be
+a sinkpad. The refcount of the pad is incremented. Use
+gst_collect_pads_remove_pad() to remove the pad from the collection
+again.
+This function will override the chain and event functions of the pad
+along with the element_private data, which is used to store private
+information for the collectpads.
+You specify a size for the returned #GstCollectData structure
+so that you can use it to store additional information.
+The pad will be automatically activated in push mode when @pads is
+started.
+This function calls gst_collect_pads_add_pad() passing a value of NULL
+for destroy_notify.
+if wrong parameters are supplied.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="CollectData" c:type="GstCollectData*"/>
+        </return-value>
+        <parameters>
+          <parameter name="pad" transfer-ownership="none">
+            <type name="Gst.Pad" c:type="GstPad*"/>
+          </parameter>
+          <parameter name="size" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_pad_full"
+              c:identifier="gst_collect_pads_add_pad_full"
+              doc="structure is freed
+Add a pad to the collection of collect pads. The pad has to be
+a sinkpad. The refcount of the pad is incremented. Use
+gst_collect_pads_remove_pad() to remove the pad from the collection
+again.
+You specify a size for the returned #GstCollectData structure
+so that you can use it to store additional information.
+You can also specify a #GstCollectDataDestroyNotify that will be called
+just before the #GstCollectData structure is freed. It is passed the
+pointer to the structure and should free any custom memory and resources
+allocated for it.
+The pad will be automatically activated in push mode when @pads is
+started.
+if wrong parameters are supplied.
+MT safe."
+              version="0.10.12">
+        <return-value transfer-ownership="full">
+          <type name="CollectData" c:type="GstCollectData*"/>
+        </return-value>
+        <parameters>
+          <parameter name="pad" transfer-ownership="none">
+            <type name="Gst.Pad" c:type="GstPad*"/>
+          </parameter>
+          <parameter name="size" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="destroy_notify"
+                     transfer-ownership="none"
+                     scope="call">
+            <type name="CollectDataDestroyNotify"
+                  c:type="GstCollectDataDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_pad"
+              c:identifier="gst_collect_pads_remove_pad"
+              doc="Remove a pad from the collection of collect pads. This function will also
+free the #GstCollectData and all the resources that were allocated with
+gst_collect_pads_add_pad().
+The pad will be deactivated automatically when @pads is stopped.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="pad" transfer-ownership="none">
+            <type name="Gst.Pad" c:type="GstPad*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="is_active"
+              c:identifier="gst_collect_pads_is_active"
+              doc="Check if a pad is active.
+This function is currently not implemented.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="pad" transfer-ownership="none">
+            <type name="Gst.Pad" c:type="GstPad*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="collect"
+              c:identifier="gst_collect_pads_collect"
+              doc="Collect data on all pads. This function is usually called
+from a #GstTask function in an element.
+This function is currently not implemented.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+        </return-value>
+      </method>
+      <method name="collect_range"
+              c:identifier="gst_collect_pads_collect_range"
+              doc="Collect data with @offset and @length on all pads. This function
+is typically called in the getrange function of an element.
+This function is currently not implemented.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+        </return-value>
+        <parameters>
+          <parameter name="offset" transfer-ownership="none">
+            <type name="uint64" c:type="guint64"/>
+          </parameter>
+          <parameter name="length" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="start"
+              c:identifier="gst_collect_pads_start"
+              doc="Starts the processing of data in the collect_pads.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="stop"
+              c:identifier="gst_collect_pads_stop"
+              doc="Stops the processing of data in the collect_pads. this function
+will also unblock any blocking operations.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="set_flushing"
+              c:identifier="gst_collect_pads_set_flushing"
+              doc="Change the flushing state of all the pads in the collection. No pad
+is able to accept anymore data when @flushing is %TRUE. Calling this
+function with @flushing %FALSE makes @pads accept data again.
+MT safe."
+              version="0.10.7.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="flushing" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="peek"
+              c:identifier="gst_collect_pads_peek"
+              doc="Peek at the buffer currently queued in @data. This function
+should be called with the @pads LOCK held, such as in the callback
+handler.
+should unref the buffer after usage.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="Gst.Buffer" c:type="GstBuffer*"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <type name="CollectData" c:type="GstCollectData*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="pop"
+              c:identifier="gst_collect_pads_pop"
+              doc="Pop the buffer currently queued in @data. This function
+should be called with the @pads LOCK held, such as in the callback
+handler.
+You should unref the buffer after usage.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="Gst.Buffer" c:type="GstBuffer*"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <type name="CollectData" c:type="GstCollectData*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="available"
+              c:identifier="gst_collect_pads_available"
+              doc="Query how much bytes can be read from each queued buffer. This means
+that the result of this call is the maximum number of bytes that can
+be read from each of the pads.
+This function should be called with @pads LOCK held, such as
+in the callback.
+returns 0 if a pad has no queued buffer.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="read"
+              c:identifier="gst_collect_pads_read"
+              doc="Get a pointer in @bytes where @size bytes can be read from the
+given pad @data.
+This function should be called with @pads LOCK held, such as
+in the callback.
+memory pointed to by @bytes. This can be less than @size and
+is 0 if the pad is end-of-stream.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <type name="CollectData" c:type="GstCollectData*"/>
+          </parameter>
+          <parameter name="bytes" direction="out" transfer-ownership="full">
+            <type name="uint8" c:type="guint8**"/>
+          </parameter>
+          <parameter name="size" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="read_buffer"
+              c:identifier="gst_collect_pads_read_buffer"
+              doc="Get a buffer of @size bytes from the given pad @data.
+This function should be called with @pads LOCK held, such as in the callback.
+A return of NULL signals that the pad is end-of-stream.
+Unref the buffer after use.
+MT safe."
+              version="0.10.18">
+        <return-value transfer-ownership="full">
+          <type name="Gst.Buffer" c:type="GstBuffer*"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <type name="CollectData" c:type="GstCollectData*"/>
+          </parameter>
+          <parameter name="size" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="take_buffer"
+              c:identifier="gst_collect_pads_take_buffer"
+              doc="Get a buffer of @size bytes from the given pad @data. Flushes the amount
+of read bytes.
+This function should be called with @pads LOCK held, such as in the callback.
+A return of NULL signals that the pad is end-of-stream.
+Unref the buffer after use.
+MT safe."
+              version="0.10.18">
+        <return-value transfer-ownership="full">
+          <type name="Gst.Buffer" c:type="GstBuffer*"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <type name="CollectData" c:type="GstCollectData*"/>
+          </parameter>
+          <parameter name="size" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="flush"
+              c:identifier="gst_collect_pads_flush"
+              doc="Flush @size bytes from the pad @data.
+This function should be called with @pads LOCK held, such as
+in the callback.
+is 0 if the pad was end-of-stream.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <type name="CollectData" c:type="GstCollectData*"/>
+          </parameter>
+          <parameter name="size" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <field name="object">
+        <type name="Gst.Object" c:type="GstObject"/>
+      </field>
+      <field name="data">
+        <type name="GLib.SList" c:type="GSList*"/>
+      </field>
+      <field name="cookie">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+      <field name="cond">
+        <type name="GLib.Cond" c:type="GCond*"/>
+      </field>
+      <field name="func">
+        <type name="CollectPadsFunction" c:type="GstCollectPadsFunction"/>
+      </field>
+      <field name="user_data">
+        <type name="any" c:type="gpointer"/>
+      </field>
+      <field name="numpads">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="queuedpads">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="eospads">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="started">
+        <type name="boolean" c:type="gboolean"/>
+      </field>
+      <union name="abidata" c:type="abidata">
+        <record name="ABI" c:type="ABI">
+          <field name="pad_lock" writable="1">
+            <type name="GLib.Mutex" c:type="GMutex*"/>
+          </field>
+          <field name="pad_list" writable="1">
+            <type name="GLib.SList" c:type="GSList*"/>
+          </field>
+          <field name="pad_cookie" writable="1">
+            <type name="uint32" c:type="guint32"/>
+          </field>
+          <field name="priv" writable="1">
+            <type name="CollectPadsPrivate" c:type="GstCollectPadsPrivate*"/>
+          </field>
+        </record>
+        <field name="_gst_reserved" writable="1">
+          <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+            <type name="any"/>
+          </array>
+        </field>
+      </union>
+    </class>
+    <record name="CollectPadsClass"
+            c:type="GstCollectPadsClass"
+            glib:is-gtype-struct-for="CollectPads">
+      <field name="parent_class">
+        <type name="Gst.ObjectClass" c:type="GstObjectClass"/>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <callback name="CollectPadsClipFunction"
+              c:type="GstCollectPadsClipFunction"
+              doc="A function that will be called when @buffer is received on the pad managed
+by @data in the collecpad object @pads.
+The function should use the segment of @data and the negotiated media type on
+the pad to perform clipping of @buffer.
+This function takes ownership of @buffer.
+the buffer has been clipped completely."
+              version="0.10.26">
+      <return-value transfer-ownership="full">
+        <type name="Gst.Buffer" c:type="GstBuffer*"/>
+      </return-value>
+      <parameters>
+        <parameter name="pads" transfer-ownership="none">
+          <type name="CollectPads" c:type="GstCollectPads*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="CollectData" c:type="GstCollectData*"/>
+        </parameter>
+        <parameter name="buffer" transfer-ownership="none">
+          <type name="Gst.Buffer" c:type="GstBuffer*"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="3">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="CollectPadsFunction"
+              c:type="GstCollectPadsFunction"
+              doc="A function that will be called when all pads have received data.">
+      <return-value transfer-ownership="full">
+        <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+      </return-value>
+      <parameters>
+        <parameter name="pads" transfer-ownership="none">
+          <type name="CollectPads" c:type="GstCollectPads*"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="1">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <record name="CollectPadsPrivate" c:type="GstCollectPadsPrivate">
+    </record>
+    <class name="DataQueue"
+           c:type="GstDataQueue"
+           doc="Opaque #GstDataQueue structure."
+           parent="GObject.Object"
+           glib:type-name="GstDataQueue"
+           glib:get-type="gst_data_queue_get_type"
+           glib:type-struct="DataQueueClass">
+      <constructor name="new" c:identifier="gst_data_queue_new" doc="or not.">
+        <return-value transfer-ownership="full">
+          <type name="DataQueue" c:type="GstDataQueue*"/>
+        </return-value>
+        <parameters>
+          <parameter name="checkfull"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="1">
+            <type name="DataQueueCheckFullFunction"
+                  c:type="GstDataQueueCheckFullFunction"/>
+          </parameter>
+          <parameter name="checkdata" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_full"
+                   c:identifier="gst_data_queue_new_full"
+                   doc="or not.
+Creates a new #GstDataQueue. The difference with @gst_data_queue_new is that it will
+not emit the &apos;full&apos; and &apos;empty&apos; signals, but instead calling directly @fullcallback
+or @emptycallback."
+                   version="0.10.26">
+        <return-value transfer-ownership="full">
+          <type name="DataQueue" c:type="GstDataQueue*"/>
+        </return-value>
+        <parameters>
+          <parameter name="checkfull" transfer-ownership="none" scope="call">
+            <type name="DataQueueCheckFullFunction"
+                  c:type="GstDataQueueCheckFullFunction"/>
+          </parameter>
+          <parameter name="fullcallback"
+                     transfer-ownership="none"
+                     scope="call">
+            <type name="DataQueueFullCallback"
+                  c:type="GstDataQueueFullCallback"/>
+          </parameter>
+          <parameter name="emptycallback"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="3">
+            <type name="DataQueueEmptyCallback"
+                  c:type="GstDataQueueEmptyCallback"/>
+          </parameter>
+          <parameter name="checkdata" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="push"
+              c:identifier="gst_data_queue_push"
+              doc="Pushes a #GstDataQueueItem (or a structure that begins with the same fields)
+on the @queue. If the @queue is full, the call will block until space is
+available, OR the @queue is set to flushing state.
+MT safe.
+Note that this function has slightly different semantics than gst_pad_push()
+the #GstMiniObject contained in @item if the push was successful. If FALSE
+is returned, the caller is responsible for freeing @item and its contents.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="item" transfer-ownership="none">
+            <type name="DataQueueItem" c:type="GstDataQueueItem*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="pop"
+              c:identifier="gst_data_queue_pop"
+              doc="Retrieves the first @item available on the @queue. If the queue is currently
+empty, the call will block until at least one item is available, OR the
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="item" transfer-ownership="none">
+            <type name="DataQueueItem" c:type="GstDataQueueItem**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="flush"
+              c:identifier="gst_data_queue_flush"
+              doc="Flushes all the contents of the @queue. Any call to #gst_data_queue_push and
+#gst_data_queue_pop will be released.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="set_flushing"
+              c:identifier="gst_data_queue_set_flushing"
+              doc="Sets the queue to flushing state if @flushing is #TRUE. If set to flushing
+state, any incoming data on the @queue will be discarded. Any call currently
+blocking on #gst_data_queue_push or #gst_data_queue_pop will return straight
+away with a return value of #FALSE. While the @queue is in flushing state,
+all calls to those two functions will return #FALSE.
+MT Safe.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="flushing" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="drop_head"
+              c:identifier="gst_data_queue_drop_head"
+              doc="Pop and unref the head-most #GstMiniObject with the given #GType.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="type" transfer-ownership="none">
+            <type name="GType" c:type="GType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="is_full"
+              c:identifier="gst_data_queue_is_full"
+              doc="Queries if @queue is full. This check will be done using the
+#GstDataQueueCheckFullFunction registered with @queue.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="is_empty"
+              c:identifier="gst_data_queue_is_empty"
+              doc="Queries if there are any items in the @queue.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_level"
+              c:identifier="gst_data_queue_get_level"
+              doc="Get the current level of the queue.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="level" transfer-ownership="none">
+            <type name="DataQueueSize" c:type="GstDataQueueSize*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="limits_changed"
+              c:identifier="gst_data_queue_limits_changed"
+              doc="Inform the queue that the limits for the fullness check have changed and that
+any blocking gst_data_queue_push() should be unblocked to recheck the limts.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <property name="current-level-bytes">
+        <type name="uint" c:type="guint"/>
+      </property>
+      <property name="current-level-time">
+        <type name="uint64" c:type="guint64"/>
+      </property>
+      <property name="current-level-visible">
+        <type name="uint" c:type="guint"/>
+      </property>
+      <field name="object">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="queue">
+        <type name="GLib.Queue" c:type="GQueue*"/>
+      </field>
+      <field name="cur_level">
+        <type name="DataQueueSize" c:type="GstDataQueueSize"/>
+      </field>
+      <field name="checkfull">
+        <type name="DataQueueCheckFullFunction"
+              c:type="GstDataQueueCheckFullFunction"/>
+      </field>
+      <field name="checkdata">
+        <type name="any" c:type="gpointer*"/>
+      </field>
+      <field name="qlock">
+        <type name="GLib.Mutex" c:type="GMutex*"/>
+      </field>
+      <field name="item_add">
+        <type name="GLib.Cond" c:type="GCond*"/>
+      </field>
+      <field name="item_del">
+        <type name="GLib.Cond" c:type="GCond*"/>
+      </field>
+      <field name="flushing">
+        <type name="boolean" c:type="gboolean"/>
+      </field>
+      <field name="fullcallback">
+        <type name="DataQueueFullCallback" c:type="GstDataQueueFullCallback"/>
+      </field>
+      <field name="emptycallback">
+        <type name="DataQueueEmptyCallback"
+              c:type="GstDataQueueEmptyCallback"/>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="2">
+          <type name="any"/>
+        </array>
+      </field>
+      <glib:signal name="empty"
+                   doc="Reports that the queue became empty (empty).
+A queue is empty if the total amount of visible items inside it (num-visible, time,
+size) is lower than the boundary values which can be set through the GObject
+properties.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="full"
+                   doc="Reports that the queue became full (full).
+A queue is full if the total amount of data inside it (num-visible, time,
+size) is higher than the boundary values which can be set through the GObject
+properties.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+    </class>
+    <callback name="DataQueueCheckFullFunction"
+              c:type="GstDataQueueCheckFullFunction"
+              doc="The prototype of the function used to inform the queue that it should be
+considered as full.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="queue" transfer-ownership="none">
+          <type name="DataQueue" c:type="GstDataQueue*"/>
+        </parameter>
+        <parameter name="visible" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="bytes" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="time" transfer-ownership="none">
+          <type name="uint64" c:type="guint64"/>
+        </parameter>
+        <parameter name="checkdata" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <record name="DataQueueClass"
+            c:type="GstDataQueueClass"
+            glib:is-gtype-struct-for="DataQueue">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="empty">
+        <callback name="empty" c:type="empty">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="queue" transfer-ownership="none">
+              <type name="DataQueue" c:type="GstDataQueue*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="full">
+        <callback name="full" c:type="full">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="queue" transfer-ownership="none">
+              <type name="DataQueue" c:type="GstDataQueue*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <callback name="DataQueueEmptyCallback" c:type="GstDataQueueEmptyCallback">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="queue" transfer-ownership="none">
+          <type name="DataQueue" c:type="GstDataQueue*"/>
+        </parameter>
+        <parameter name="checkdata" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="DataQueueFullCallback" c:type="GstDataQueueFullCallback">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="queue" transfer-ownership="none">
+          <type name="DataQueue" c:type="GstDataQueue*"/>
+        </parameter>
+        <parameter name="checkdata" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <record name="DataQueueItem"
+            c:type="GstDataQueueItem"
+            doc="#GST_CLOCK_TIME_NONE.
+This function should also drop the reference to @object the owner of the
+#GstDataQueueItem is assumed to hold.
+Structure used by #GstDataQueue. You can supply a different structure, as
+long as the top of the structure is identical to this structure.">
+      <field name="object" writable="1">
+        <type name="Gst.MiniObject" c:type="GstMiniObject*"/>
+      </field>
+      <field name="size" writable="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="duration" writable="1">
+        <type name="uint64" c:type="guint64"/>
+      </field>
+      <field name="visible" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </field>
+      <field name="destroy" writable="1">
+        <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+      </field>
+    </record>
+    <record name="DataQueueSize"
+            c:type="GstDataQueueSize"
+            doc="Structure describing the size of a queue.">
+      <field name="visible" writable="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="bytes" writable="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="time" writable="1">
+        <type name="uint64" c:type="guint64"/>
+      </field>
+    </record>
+    <class name="PushSrc"
+           c:type="GstPushSrc"
+           doc="The opaque #GstPushSrc data structure."
+           parent="BaseSrc"
+           glib:type-name="GstPushSrc"
+           glib:get-type="gst_push_src_get_type"
+           glib:type-struct="PushSrcClass">
+      <virtual-method name="create">
+        <return-value transfer-ownership="full">
+          <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+        </return-value>
+        <parameters>
+          <parameter name="buf" transfer-ownership="none">
+            <type name="Gst.Buffer" c:type="GstBuffer**"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <field name="parent">
+        <type name="BaseSrc" c:type="GstBaseSrc"/>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </class>
+    <record name="PushSrcClass"
+            c:type="GstPushSrcClass"
+            glib:is-gtype-struct-for="PushSrc">
+      <field name="parent_class">
+        <type name="BaseSrcClass" c:type="GstBaseSrcClass"/>
+      </field>
+      <field name="create">
+        <callback name="create" c:type="create">
+          <return-value transfer-ownership="full">
+            <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+          </return-value>
+          <parameters>
+            <parameter name="src" transfer-ownership="none">
+              <type name="PushSrc" c:type="GstPushSrc*"/>
+            </parameter>
+            <parameter name="buf" transfer-ownership="none">
+              <type name="Gst.Buffer" c:type="GstBuffer**"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <constant name="TRANSFORM_SINK_NAME" value="sink">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TRANSFORM_SRC_NAME" value="src">
+      <type name="utf8"/>
+    </constant>
+    <callback name="TypeFindHelperGetRangeFunction"
+              c:type="GstTypeFindHelperGetRangeFunction"
+              doc="This function will be called by gst_type_find_helper_get_range() when
+typefinding functions request to peek at the data of a stream at certain
+offsets. If this function returns GST_FLOW_OK, the result buffer will be
+stored in @buffer. The  contents of @buffer is invalid for any other
+return value.
+This function is supposed to behave exactly like a #GstPadGetRangeFunction.">
+      <return-value transfer-ownership="full">
+        <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+      </return-value>
+      <parameters>
+        <parameter name="obj" transfer-ownership="none">
+          <type name="Gst.Object" c:type="GstObject*"/>
+        </parameter>
+        <parameter name="offset" transfer-ownership="none">
+          <type name="uint64" c:type="guint64"/>
+        </parameter>
+        <parameter name="length" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="buffer" transfer-ownership="none">
+          <type name="Gst.Buffer" c:type="GstBuffer**"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <function name="type_find_helper"
+              c:identifier="gst_type_find_helper"
+              doc="Tries to find what type of data is flowing from the given source #GstPad.
+Returns #NULL if no #GstCaps matches the data stream.">
+      <return-value transfer-ownership="full">
+        <type name="Gst.Caps" c:type="GstCaps*"/>
+      </return-value>
+      <parameters>
+        <parameter name="src" transfer-ownership="none">
+          <type name="Gst.Pad" c:type="GstPad*"/>
+        </parameter>
+        <parameter name="size" transfer-ownership="none">
+          <type name="uint64" c:type="guint64"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_find_helper_for_buffer"
+              c:identifier="gst_type_find_helper_for_buffer"
+              doc="Tries to find what type of data is contained in the given #GstBuffer, the
+assumption being that the buffer represents the beginning of the stream or
+file.
+All available typefinders will be called on the data in order of rank. If
+a typefinding function returns a probability of #GST_TYPE_FIND_MAXIMUM,
+typefinding is stopped immediately and the found caps will be returned
+right away. Otherwise, all available typefind functions will the tried,
+and the caps with the highest probability will be returned, or #NULL if
+the content of the buffer could not be identified.
+be found. The caller should free the caps returned with gst_caps_unref().">
+      <return-value transfer-ownership="full">
+        <type name="Gst.Caps" c:type="GstCaps*"/>
+      </return-value>
+      <parameters>
+        <parameter name="obj" transfer-ownership="none">
+          <type name="Gst.Object" c:type="GstObject*"/>
+        </parameter>
+        <parameter name="buf" transfer-ownership="none">
+          <type name="Gst.Buffer" c:type="GstBuffer*"/>
+        </parameter>
+        <parameter name="prob" transfer-ownership="none">
+          <type name="Gst.TypeFindProbability"
+                c:type="GstTypeFindProbability*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_find_helper_for_extension"
+              c:identifier="gst_type_find_helper_for_extension"
+              doc="Tries to find the best #GstCaps associated with @extension.
+All available typefinders will be checked against the extension in order
+of rank. The caps of the first typefinder that can handle @extension will be
+returned.
+be found. The caller should free the caps returned with gst_caps_unref()."
+              version="0.10.23">
+      <return-value transfer-ownership="full">
+        <type name="Gst.Caps" c:type="GstCaps*"/>
+      </return-value>
+      <parameters>
+        <parameter name="obj" transfer-ownership="none">
+          <type name="Gst.Object" c:type="GstObject*"/>
+        </parameter>
+        <parameter name="extension" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_find_helper_get_range"
+              c:identifier="gst_type_find_helper_get_range"
+              doc="to access data at random offsets when doing the typefinding
+Utility function to do pull-based typefinding. Unlike gst_type_find_helper()
+however, this function will use the specified function @func to obtain the
+data needed by the typefind functions, rather than operating on a given
+source pad. This is useful mostly for elements like tag demuxers which
+strip off data at the beginning and/or end of a file and want to typefind
+the stripped data stream before adding their own source pad (the specified
+callback can then call the upstream peer pad with offsets adjusted for the
+tag size, for example).
+Returns #NULL if no #GstCaps matches the data stream.">
+      <return-value transfer-ownership="full">
+        <type name="Gst.Caps" c:type="GstCaps*"/>
+      </return-value>
+      <parameters>
+        <parameter name="obj" transfer-ownership="none">
+          <type name="Gst.Object" c:type="GstObject*"/>
+        </parameter>
+        <parameter name="func" transfer-ownership="none" scope="call">
+          <type name="TypeFindHelperGetRangeFunction"
+                c:type="GstTypeFindHelperGetRangeFunction"/>
+        </parameter>
+        <parameter name="size" transfer-ownership="none">
+          <type name="uint64" c:type="guint64"/>
+        </parameter>
+        <parameter name="prob" transfer-ownership="none">
+          <type name="Gst.TypeFindProbability"
+                c:type="GstTypeFindProbability*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_find_helper_get_range_ext"
+              c:identifier="gst_type_find_helper_get_range_ext"
+              doc="to access data at random offsets when doing the typefinding
+Utility function to do pull-based typefinding. Unlike gst_type_find_helper()
+however, this function will use the specified function @func to obtain the
+data needed by the typefind functions, rather than operating on a given
+source pad. This is useful mostly for elements like tag demuxers which
+strip off data at the beginning and/or end of a file and want to typefind
+the stripped data stream before adding their own source pad (the specified
+callback can then call the upstream peer pad with offsets adjusted for the
+tag size, for example).
+When @extension is not NULL, this function will first try the typefind
+functions for the given extension, which might speed up the typefinding
+in many cases.
+Returns #NULL if no #GstCaps matches the data stream."
+              version="0.10.26">
+      <return-value transfer-ownership="full">
+        <type name="Gst.Caps" c:type="GstCaps*"/>
+      </return-value>
+      <parameters>
+        <parameter name="obj" transfer-ownership="none">
+          <type name="Gst.Object" c:type="GstObject*"/>
+        </parameter>
+        <parameter name="func" transfer-ownership="none" scope="call">
+          <type name="TypeFindHelperGetRangeFunction"
+                c:type="GstTypeFindHelperGetRangeFunction"/>
+        </parameter>
+        <parameter name="size" transfer-ownership="none">
+          <type name="uint64" c:type="guint64"/>
+        </parameter>
+        <parameter name="extension" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="prob" transfer-ownership="none">
+          <type name="Gst.TypeFindProbability"
+                c:type="GstTypeFindProbability*"/>
+        </parameter>
+      </parameters>
+    </function>
+  </namespace>
+</repository>
diff --git a/extra/gstreamer/base/base.factor b/extra/gstreamer/base/base.factor
new file mode 100644 (file)
index 0000000..445d506
--- /dev/null
@@ -0,0 +1,5 @@
+! Copyright (C) 2010 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: gstreamer.base.ffi ;
+IN: gstreamer.base
+
diff --git a/extra/gstreamer/base/ffi/ffi.factor b/extra/gstreamer/base/ffi/ffi.factor
new file mode 100644 (file)
index 0000000..1f15ecf
--- /dev/null
@@ -0,0 +1,16 @@
+! Copyright (C) 2010 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: alien alien.libraries combinators kernel system
+gobject-introspection glib.ffi gstreamer.ffi ;
+IN: gstreamer.base.ffi
+
+<<
+"gstreamer.base" {
+    { [ os winnt? ] [ drop ] }
+    { [ os macosx? ] [ drop ] }
+    { [ os unix? ] [ "libgstbase-0.10.so" cdecl add-library ] }
+} cond
+>>
+
+GIR: vocab:gstreamer/base/GstBase-0.10.gir
+
diff --git a/extra/gstreamer/controller/GstController-0.10.gir b/extra/gstreamer/controller/GstController-0.10.gir
new file mode 100644 (file)
index 0000000..137e69a
--- /dev/null
@@ -0,0 +1,1005 @@
+<?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.0"
+            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="GLib" version="2.0"/>
+  <include name="GModule" version="2.0"/>
+  <include name="GObject" version="2.0"/>
+  <include name="Gst" version="0.10"/>
+  <include name="libxml2" version="2.0"/>
+  <package name="gstreamer-0.10"/>
+  <c:include name="gst/controller/gstcontroller.h"/>
+  <c:include name="gst/controller/gstcontrolsource.h"/>
+  <c:include name="gst/controller/gstinterpolationcontrolsource.h"/>
+  <c:include name="gst/controller/gstlfocontrolsource.h"/>
+  <namespace name="GstController"
+             version="0.10"
+             shared-library="libgstcontroller-0.10.so.0"
+             c:prefix="Gst">
+    <class name="ControlSource"
+           c:type="GstControlSource"
+           doc="The instance structure of #GstControlSource."
+           parent="GObject.Object"
+           abstract="1"
+           glib:type-name="GstControlSource"
+           glib:get-type="gst_control_source_get_type"
+           glib:type-struct="ControlSourceClass">
+      <method name="get_value"
+              c:identifier="gst_control_source_get_value"
+              doc="Gets the value for this #GstControlSource at a given timestamp.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="timestamp" transfer-ownership="none">
+            <type name="Gst.ClockTime" c:type="GstClockTime"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_value_array"
+              c:identifier="gst_control_source_get_value_array"
+              doc="Gets an array of values for one element property.
+All fields of @value_array must be filled correctly. Especially the
+of values.
+The type of the values in the array is the same as the property&apos;s type.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="timestamp" transfer-ownership="none">
+            <type name="Gst.ClockTime" c:type="GstClockTime"/>
+          </parameter>
+          <parameter name="value_array" transfer-ownership="none">
+            <type name="ValueArray" c:type="GstValueArray*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="bind"
+              c:identifier="gst_control_source_bind"
+              doc="Binds a #GstControlSource to a specific property. This must be called only once for a
+#GstControlSource.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="pspec" transfer-ownership="none">
+            <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <field name="parent">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="get_value">
+        <type name="ControlSourceGetValue" c:type="GstControlSourceGetValue"/>
+      </field>
+      <field name="get_value_array">
+        <type name="ControlSourceGetValueArray"
+              c:type="GstControlSourceGetValueArray"/>
+      </field>
+      <field name="bound">
+        <type name="boolean" c:type="gboolean"/>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </class>
+    <callback name="ControlSourceBind" c:type="GstControlSourceBind">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="self" transfer-ownership="none">
+          <type name="ControlSource" c:type="GstControlSource*"/>
+        </parameter>
+        <parameter name="pspec" transfer-ownership="none">
+          <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <record name="ControlSourceClass"
+            c:type="GstControlSourceClass"
+            glib:is-gtype-struct-for="ControlSource"
+            doc="The class structure of #GstControlSource.">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="bind">
+        <type name="ControlSourceBind" c:type="GstControlSourceBind"/>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <callback name="ControlSourceGetValue" c:type="GstControlSourceGetValue">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="self" transfer-ownership="none">
+          <type name="ControlSource" c:type="GstControlSource*"/>
+        </parameter>
+        <parameter name="timestamp" transfer-ownership="none">
+          <type name="Gst.ClockTime" c:type="GstClockTime"/>
+        </parameter>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="ControlSourceGetValueArray"
+              c:type="GstControlSourceGetValueArray">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="self" transfer-ownership="none">
+          <type name="ControlSource" c:type="GstControlSource*"/>
+        </parameter>
+        <parameter name="timestamp" transfer-ownership="none">
+          <type name="Gst.ClockTime" c:type="GstClockTime"/>
+        </parameter>
+        <parameter name="value_array" transfer-ownership="none">
+          <type name="ValueArray" c:type="GstValueArray*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <class name="Controller"
+           c:type="GstController"
+           doc="The instance structure of GstController"
+           parent="GObject.Object"
+           glib:type-name="GstController"
+           glib:get-type="gst_controller_get_type"
+           glib:type-struct="ControllerClass">
+      <constructor name="new_list"
+                   c:identifier="gst_controller_new_list"
+                   doc="Creates a new GstController for the given object&apos;s properties">
+        <return-value transfer-ownership="full">
+          <type name="Controller" c:type="GstController*"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="GObject.Object" c:type="GObject*"/>
+          </parameter>
+          <parameter name="list" transfer-ownership="none">
+            <type name="GLib.List" c:type="GList*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new"
+                   c:identifier="gst_controller_new"
+                   doc="Creates a new GstController for the given object&apos;s properties">
+        <return-value transfer-ownership="full">
+          <type name="Controller" c:type="GstController*"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="GObject.Object" c:type="GObject*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </constructor>
+      <function name="init"
+                c:identifier="gst_controller_init"
+                doc="Initializes the use of the controller library. Suggested to be called right
+after gst_init().">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="argc" direction="out" transfer-ownership="full">
+            <type name="int" c:type="int*"/>
+          </parameter>
+          <parameter name="argv" transfer-ownership="none">
+            <type name="utf8" c:type="char***"/>
+          </parameter>
+        </parameters>
+      </function>
+      <method name="remove_properties_list"
+              c:identifier="gst_controller_remove_properties_list"
+              doc="Removes the given object properties from the controller">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="list" transfer-ownership="none">
+            <type name="GLib.List" c:type="GList*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_properties"
+              c:identifier="gst_controller_remove_properties"
+              doc="Removes the given object properties from the controller">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_disabled"
+              c:identifier="gst_controller_set_disabled"
+              doc="or not.
+This function is used to disable all properties of the #GstController
+for some time, i.e. gst_controller_sync_values() will do nothing."
+              version="0.10.14">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="disabled" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_property_disabled"
+              c:identifier="gst_controller_set_property_disabled"
+              doc="or not.
+This function is used to disable the #GstController on a property for
+some time, i.e. gst_controller_sync_values() will do nothing for the
+property."
+              version="0.10.14">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="property_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="disabled" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_control_source"
+              c:identifier="gst_controller_set_control_source"
+              doc="Sets the #GstControlSource for @property_name. If there already was a #GstControlSource
+for this property it will be unreferenced.
+couldn&apos;t be bound to the property, %TRUE if everything worked as expected."
+              version="0.10.14">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="property_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="csource" transfer-ownership="none">
+            <type name="ControlSource" c:type="GstControlSource*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_control_source"
+              c:identifier="gst_controller_get_control_source"
+              doc="Gets the corresponding #GstControlSource for the property. This should be unreferenced
+again after use.
+controlled by this controller or no #GstControlSource was assigned yet."
+              version="0.10.14">
+        <return-value transfer-ownership="full">
+          <type name="ControlSource" c:type="GstControlSource*"/>
+        </return-value>
+        <parameters>
+          <parameter name="property_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="suggest_next_sync"
+              c:identifier="gst_controller_suggest_next_sync"
+              doc="Returns a suggestion for timestamps where buffers should be split
+to get best controller results.
+if no control-rate was set."
+              version="0.10.13">
+        <return-value transfer-ownership="full">
+          <type name="Gst.ClockTime" c:type="GstClockTime"/>
+        </return-value>
+      </method>
+      <method name="sync_values"
+              c:identifier="gst_controller_sync_values"
+              doc="Sets the properties of the element, according to the controller that (maybe)
+handles them and for the given timestamp.
+If this function fails, it is most likely the application developers fault.
+Most probably the control sources are not setup correctly.
+properties, %FALSE otherwise">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="timestamp" transfer-ownership="none">
+            <type name="Gst.ClockTime" c:type="GstClockTime"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get"
+              c:identifier="gst_controller_get"
+              doc="Gets the value for the given controller-handled property at the requested
+time.
+property isn&apos;t handled by the controller">
+        <return-value transfer-ownership="full">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </return-value>
+        <parameters>
+          <parameter name="property_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="timestamp" transfer-ownership="none">
+            <type name="Gst.ClockTime" c:type="GstClockTime"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_value_arrays"
+              c:identifier="gst_controller_get_value_arrays"
+              doc="Function to be able to get an array of values for one or more given element
+properties.
+All fields of the %GstValueArray in the list must be filled correctly.
+Especially the GstValueArray-&gt;values arrays must be big enough to keep
+the requested amount of values.
+The types of the values in the array are the same as the property&apos;s type.
+&lt;note&gt;&lt;para&gt;This doesn&apos;t modify the controlled GObject properties!&lt;/para&gt;&lt;/note&gt;">
+        <return-value transfer-ownership="none"
+                      doc="could be filled, %FALSE otherwise">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="timestamp" transfer-ownership="none">
+            <type name="Gst.ClockTime" c:type="GstClockTime"/>
+          </parameter>
+          <parameter name="value_arrays" transfer-ownership="none">
+            <type name="GLib.SList" c:type="GSList*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_value_array"
+              c:identifier="gst_controller_get_value_array"
+              doc="Function to be able to get an array of values for one element property.
+All fields of @value_array must be filled correctly. Especially the
+of values.
+The type of the values in the array is the same as the property&apos;s type.
+&lt;note&gt;&lt;para&gt;This doesn&apos;t modify the controlled GObject property!&lt;/para&gt;&lt;/note&gt;">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="timestamp" transfer-ownership="none">
+            <type name="Gst.ClockTime" c:type="GstClockTime"/>
+          </parameter>
+          <parameter name="value_array" transfer-ownership="none">
+            <type name="ValueArray" c:type="GstValueArray*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set"
+              c:identifier="gst_controller_set"
+              doc="Set the value of given controller-handled property at a certain time.
+directly."
+              deprecated="Use #GstControlSource, for example #GstInterpolationControlSource">
+        <return-value transfer-ownership="none" doc="TRUE otherwise">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="property_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="timestamp" transfer-ownership="none">
+            <type name="Gst.ClockTime" c:type="GstClockTime"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_from_list"
+              c:identifier="gst_controller_set_from_list"
+              doc="Sets multiple timed values at once.
+directly."
+              deprecated="Use #GstControlSource, for example #GstInterpolationControlSource">
+        <return-value transfer-ownership="none" doc="%TRUE otherwise">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="property_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="timedvalues" transfer-ownership="none">
+            <type name="GLib.SList" c:type="GSList*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="unset"
+              c:identifier="gst_controller_unset"
+              doc="Used to remove the value of given controller-handled property at a certain
+time.
+directly."
+              deprecated="Use #GstControlSource, for example #GstInterpolationControlSource">
+        <return-value transfer-ownership="none" doc="%TRUE otherwise">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="property_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="timestamp" transfer-ownership="none">
+            <type name="Gst.ClockTime" c:type="GstClockTime"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="unset_all"
+              c:identifier="gst_controller_unset_all"
+              doc="Used to remove all time-stamped values of given controller-handled property
+directly.
+by controller), %TRUE otherwise"
+              version="0.10.5"
+              deprecated="Use #GstControlSource, for example #GstInterpolationControlSource">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="property_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_all"
+              c:identifier="gst_controller_get_all"
+              doc="Returns a read-only copy of the list of #GstTimedValue for the given property.
+Free the list after done with it.
+&lt;note&gt;&lt;para&gt;This doesn&apos;t modify the controlled GObject property!&lt;/para&gt;&lt;/note&gt;
+directly."
+              deprecated="Use #GstControlSource, for example #GstInterpolationControlSource">
+        <return-value transfer-ownership="none">
+          <type name="GLib.List" c:type="GList*"/>
+        </return-value>
+        <parameters>
+          <parameter name="property_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_interpolation_mode"
+              c:identifier="gst_controller_set_interpolation_mode"
+              doc="Sets the given interpolation mode on the given property.
+&lt;note&gt;&lt;para&gt;User interpolation is not yet available and quadratic interpolation
+is deprecated and maps to cubic interpolation.&lt;/para&gt;&lt;/note&gt;
+directly."
+              deprecated="Use #GstControlSource, for example #GstInterpolationControlSource">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="property_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="mode" transfer-ownership="none">
+            <type name="InterpolateMode" c:type="GstInterpolateMode"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="control-rate" writable="1">
+        <type name="uint64" c:type="guint64"/>
+      </property>
+      <field name="parent">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="properties">
+        <type name="GLib.List" c:type="GList*"/>
+      </field>
+      <field name="lock">
+        <type name="GLib.Mutex" c:type="GMutex*"/>
+      </field>
+      <field name="object">
+        <type name="GObject.Object" c:type="GObject*"/>
+      </field>
+      <field name="priv">
+        <type name="ControllerPrivate" c:type="GstControllerPrivate*"/>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="3">
+          <type name="any"/>
+        </array>
+      </field>
+    </class>
+    <record name="ControllerClass"
+            c:type="GstControllerClass"
+            glib:is-gtype-struct-for="Controller">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <record name="ControllerPrivate" c:type="GstControllerPrivate">
+    </record>
+    <enumeration name="InterpolateMode"
+                 doc="except for times with specific values
+The various interpolation modes available."
+                 c:type="GstInterpolateMode">
+      <member name="none" value="0" c:identifier="GST_INTERPOLATE_NONE"/>
+      <member name="trigger" value="1" c:identifier="GST_INTERPOLATE_TRIGGER"/>
+      <member name="linear" value="2" c:identifier="GST_INTERPOLATE_LINEAR"/>
+      <member name="quadratic"
+              value="3"
+              c:identifier="GST_INTERPOLATE_QUADRATIC"/>
+      <member name="cubic" value="4" c:identifier="GST_INTERPOLATE_CUBIC"/>
+      <member name="user" value="5" c:identifier="GST_INTERPOLATE_USER"/>
+    </enumeration>
+    <class name="InterpolationControlSource"
+           c:type="GstInterpolationControlSource"
+           doc="The instance structure of #GstControlSource."
+           parent="ControlSource"
+           glib:type-name="GstInterpolationControlSource"
+           glib:get-type="gst_interpolation_control_source_get_type"
+           glib:type-struct="InterpolationControlSourceClass">
+      <constructor name="new"
+                   c:identifier="gst_interpolation_control_source_new"
+                   doc="This returns a new, unbound #GstInterpolationControlSource.">
+        <return-value transfer-ownership="full">
+          <type name="InterpolationControlSource"
+                c:type="GstInterpolationControlSource*"/>
+        </return-value>
+      </constructor>
+      <method name="set_interpolation_mode"
+              c:identifier="gst_interpolation_control_source_set_interpolation_mode"
+              doc="Sets the given interpolation mode.
+&lt;note&gt;&lt;para&gt;User interpolation is not yet available and quadratic interpolation
+is deprecated and maps to cubic interpolation.&lt;/para&gt;&lt;/note&gt;">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="mode" transfer-ownership="none">
+            <type name="InterpolateMode" c:type="GstInterpolateMode"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set"
+              c:identifier="gst_interpolation_control_source_set"
+              doc="Set the value of given controller-handled property at a certain time.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="timestamp" transfer-ownership="none">
+            <type name="Gst.ClockTime" c:type="GstClockTime"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_from_list"
+              c:identifier="gst_interpolation_control_source_set_from_list"
+              doc="Sets multiple timed values at once.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="timedvalues" transfer-ownership="none">
+            <type name="GLib.SList" c:type="GSList*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="unset"
+              c:identifier="gst_interpolation_control_source_unset"
+              doc="Used to remove the value of given controller-handled property at a certain
+time.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="timestamp" transfer-ownership="none">
+            <type name="Gst.ClockTime" c:type="GstClockTime"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="unset_all"
+              c:identifier="gst_interpolation_control_source_unset_all"
+              doc="Used to remove all time-stamped values of given controller-handled property">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_all"
+              c:identifier="gst_interpolation_control_source_get_all"
+              doc="Returns a read-only copy of the list of #GstTimedValue for the given property.
+Free the list after done with it.">
+        <return-value transfer-ownership="full">
+          <type name="GLib.List" c:type="GList*"/>
+        </return-value>
+      </method>
+      <method name="get_count"
+              c:identifier="gst_interpolation_control_source_get_count"
+              doc="Returns the number of control points that are set.">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <field name="parent">
+        <type name="ControlSource" c:type="GstControlSource"/>
+      </field>
+      <field name="lock">
+        <type name="GLib.Mutex" c:type="GMutex*"/>
+      </field>
+      <field name="priv">
+        <type name="InterpolationControlSourcePrivate"
+              c:type="GstInterpolationControlSourcePrivate*"/>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </class>
+    <record name="InterpolationControlSourceClass"
+            c:type="GstInterpolationControlSourceClass"
+            glib:is-gtype-struct-for="InterpolationControlSource">
+      <field name="parent_class">
+        <type name="ControlSourceClass" c:type="GstControlSourceClass"/>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <record name="InterpolationControlSourcePrivate"
+            c:type="GstInterpolationControlSourcePrivate">
+    </record>
+    <class name="LFOControlSource"
+           c:type="GstLFOControlSource"
+           doc="The instance structure of #GstControlSource."
+           parent="ControlSource"
+           glib:type-name="GstLFOControlSource"
+           glib:get-type="gst_lfo_control_source_get_type"
+           glib:type-struct="LFOControlSourceClass">
+      <constructor name="new"
+                   c:identifier="gst_lfo_control_source_new"
+                   doc="This returns a new, unbound #GstLFOControlSource.">
+        <return-value transfer-ownership="full">
+          <type name="LFOControlSource" c:type="GstLFOControlSource*"/>
+        </return-value>
+      </constructor>
+      <property name="amplitude" writable="1">
+        <type name="GObject.Value" c:type="GValue"/>
+      </property>
+      <property name="frequency" writable="1">
+        <type name="double" c:type="gdouble"/>
+      </property>
+      <property name="offset" writable="1">
+        <type name="GObject.Value" c:type="GValue"/>
+      </property>
+      <property name="timeshift" writable="1">
+        <type name="uint64" c:type="guint64"/>
+      </property>
+      <property name="waveform" writable="1">
+        <type name="LFOWaveform" c:type="GstLFOWaveform"/>
+      </property>
+      <field name="parent">
+        <type name="ControlSource" c:type="GstControlSource"/>
+      </field>
+      <field name="priv">
+        <type name="LFOControlSourcePrivate"
+              c:type="GstLFOControlSourcePrivate*"/>
+      </field>
+      <field name="lock">
+        <type name="GLib.Mutex" c:type="GMutex*"/>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </class>
+    <record name="LFOControlSourceClass"
+            c:type="GstLFOControlSourceClass"
+            glib:is-gtype-struct-for="LFOControlSource">
+      <field name="parent_class">
+        <type name="ControlSourceClass" c:type="GstControlSourceClass"/>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <record name="LFOControlSourcePrivate" c:type="GstLFOControlSourcePrivate">
+    </record>
+    <enumeration name="LFOWaveform"
+                 doc="The various waveform modes available."
+                 glib:type-name="GstLFOWaveform"
+                 glib:get-type="gst_lfo_waveform_get_type"
+                 c:type="GstLFOWaveform">
+      <member name="sine"
+              value="0"
+              c:identifier="GST_LFO_WAVEFORM_SINE"
+              glib:nick="sine"/>
+      <member name="square"
+              value="1"
+              c:identifier="GST_LFO_WAVEFORM_SQUARE"
+              glib:nick="square"/>
+      <member name="saw"
+              value="2"
+              c:identifier="GST_LFO_WAVEFORM_SAW"
+              glib:nick="saw"/>
+      <member name="reverse_saw"
+              value="3"
+              c:identifier="GST_LFO_WAVEFORM_REVERSE_SAW"
+              glib:nick="reverse-saw"/>
+      <member name="triangle"
+              value="4"
+              c:identifier="GST_LFO_WAVEFORM_TRIANGLE"
+              glib:nick="triangle"/>
+    </enumeration>
+    <record name="TimedValue"
+            c:type="GstTimedValue"
+            doc="Structure for saving a timestamp and a value.">
+      <field name="timestamp" writable="1">
+        <type name="Gst.ClockTime" c:type="GstClockTime"/>
+      </field>
+      <field name="value" writable="1">
+        <type name="GObject.Value" c:type="GValue"/>
+      </field>
+    </record>
+    <record name="ValueArray"
+            c:type="GstValueArray"
+            doc="Structure to receive multiple values at once.">
+      <field name="property_name" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="nbsamples" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="sample_interval" writable="1">
+        <type name="Gst.ClockTime" c:type="GstClockTime"/>
+      </field>
+      <field name="values" writable="1">
+        <type name="any" c:type="gpointer*"/>
+      </field>
+    </record>
+    <function name="object_control_properties"
+              c:identifier="gst_object_control_properties"
+              doc="Convenience function for GObject
+Creates a GstController that allows you to dynamically control one, or more, GObject properties.
+If the given GObject already has a GstController, it adds the given properties to the existing
+controller and returns that controller.
+one or more of the given properties aren&apos;t available, or cannot be controlled, for the given element."
+              version="0.9">
+      <return-value transfer-ownership="full">
+        <type name="Controller" c:type="GstController*"/>
+      </return-value>
+      <parameters>
+        <parameter name="object" transfer-ownership="none">
+          <type name="GObject.Object" c:type="GObject*"/>
+        </parameter>
+        <parameter transfer-ownership="none">
+          <varargs>
+          </varargs>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="object_get_control_rate"
+              c:identifier="gst_object_get_control_rate"
+              doc="Obtain the control-rate for this @object. Audio processing #GstElement
+objects will use this rate to sub-divide their processing loop and call
+gst_object_sync_values() inbetween. The length of the processing segment
+should be up to @control-rate nanoseconds.
+If the @object is not under property control, this will return
+%GST_CLOCK_TIME_NONE. This allows the element to avoid the sub-dividing.
+The control-rate is not expected to change if the element is in
+%GST_STATE_PAUSED or %GST_STATE_PLAYING."
+              version="0.10.10">
+      <return-value transfer-ownership="full">
+        <type name="Gst.ClockTime" c:type="GstClockTime"/>
+      </return-value>
+      <parameters>
+        <parameter name="object" transfer-ownership="none">
+          <type name="GObject.Object" c:type="GObject*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="object_get_control_source"
+              c:identifier="gst_object_get_control_source"
+              doc="Gets the corresponding #GstControlSource for the property. This should be unreferenced
+again after use.
+controlled by this controller or no #GstControlSource was assigned yet."
+              version="0.10.14">
+      <return-value transfer-ownership="full">
+        <type name="ControlSource" c:type="GstControlSource*"/>
+      </return-value>
+      <parameters>
+        <parameter name="object" transfer-ownership="none">
+          <type name="GObject.Object" c:type="GObject*"/>
+        </parameter>
+        <parameter name="property_name" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="object_get_controller"
+              c:identifier="gst_object_get_controller"
+              doc="Gets the controller for the given GObject"
+              version="0.9">
+      <return-value transfer-ownership="full">
+        <type name="Controller" c:type="GstController*"/>
+      </return-value>
+      <parameters>
+        <parameter name="object" transfer-ownership="none">
+          <type name="GObject.Object" c:type="GObject*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="object_get_value_array"
+              c:identifier="gst_object_get_value_array"
+              doc="Function to be able to get an array of values for one element properties
+If the GstValueArray-&gt;values array is NULL, it will be created by the function.
+The type of the values in the array are the same as the property&apos;s type.
+The g_object_* functions are just convenience functions for GObject"
+              version="0.9">
+      <return-value transfer-ownership="none"
+                    doc="could be filled, %FALSE otherwise">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="object" transfer-ownership="none">
+          <type name="GObject.Object" c:type="GObject*"/>
+        </parameter>
+        <parameter name="timestamp" transfer-ownership="none">
+          <type name="Gst.ClockTime" c:type="GstClockTime"/>
+        </parameter>
+        <parameter name="value_array" transfer-ownership="none">
+          <type name="ValueArray" c:type="GstValueArray*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="object_get_value_arrays"
+              c:identifier="gst_object_get_value_arrays"
+              doc="Function to be able to get an array of values for one or more given element
+properties.
+If the GstValueArray-&gt;values array in list nodes is NULL, it will be created
+by the function.
+The type of the values in the array are the same as the property&apos;s type.
+The g_object_* functions are just convenience functions for GObject"
+              version="0.9">
+      <return-value transfer-ownership="none"
+                    doc="could be filled, %FALSE otherwise">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="object" transfer-ownership="none">
+          <type name="GObject.Object" c:type="GObject*"/>
+        </parameter>
+        <parameter name="timestamp" transfer-ownership="none">
+          <type name="Gst.ClockTime" c:type="GstClockTime"/>
+        </parameter>
+        <parameter name="value_arrays" transfer-ownership="none">
+          <type name="GLib.SList" c:type="GSList*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="object_set_control_rate"
+              c:identifier="gst_object_set_control_rate"
+              doc="Change the control-rate for this @object. Audio processing #GstElement
+objects will use this rate to sub-divide their processing loop and call
+gst_object_sync_values() inbetween. The length of the processing segment
+should be up to @control-rate nanoseconds.
+The control-rate should not change if the element is in %GST_STATE_PAUSED or
+%GST_STATE_PLAYING."
+              version="0.10.10">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="object" transfer-ownership="none">
+          <type name="GObject.Object" c:type="GObject*"/>
+        </parameter>
+        <parameter name="control_rate" transfer-ownership="none">
+          <type name="Gst.ClockTime" c:type="GstClockTime"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="object_set_control_source"
+              c:identifier="gst_object_set_control_source"
+              doc="Sets the #GstControlSource for @property_name. If there already was a #GstControlSource
+for this property it will be unreferenced.
+couldn&apos;t be bound to the property, %TRUE if everything worked as expected."
+              version="0.10.14">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="object" transfer-ownership="none">
+          <type name="GObject.Object" c:type="GObject*"/>
+        </parameter>
+        <parameter name="property_name" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="csource" transfer-ownership="none">
+          <type name="ControlSource" c:type="GstControlSource*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="object_set_controller"
+              c:identifier="gst_object_set_controller"
+              doc="Sets the controller on the given GObject"
+              version="0.9">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="object" transfer-ownership="none">
+          <type name="GObject.Object" c:type="GObject*"/>
+        </parameter>
+        <parameter name="controller" transfer-ownership="none">
+          <type name="Controller" c:type="GstController*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="object_suggest_next_sync"
+              c:identifier="gst_object_suggest_next_sync"
+              doc="Convenience function for GObject"
+              version="0.10.13">
+      <return-value transfer-ownership="full">
+        <type name="Gst.ClockTime" c:type="GstClockTime"/>
+      </return-value>
+      <parameters>
+        <parameter name="object" transfer-ownership="none">
+          <type name="GObject.Object" c:type="GObject*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="object_sync_values"
+              c:identifier="gst_object_sync_values"
+              doc="Convenience function for GObject"
+              version="0.9">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="object" transfer-ownership="none">
+          <type name="GObject.Object" c:type="GObject*"/>
+        </parameter>
+        <parameter name="timestamp" transfer-ownership="none">
+          <type name="Gst.ClockTime" c:type="GstClockTime"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="object_uncontrol_properties"
+              c:identifier="gst_object_uncontrol_properties"
+              doc="Convenience function for GObject
+Removes the given element&apos;s properties from it&apos;s controller
+controller, %TRUE otherwise"
+              version="0.9">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="object" transfer-ownership="none">
+          <type name="GObject.Object" c:type="GObject*"/>
+        </parameter>
+        <parameter transfer-ownership="none">
+          <varargs>
+          </varargs>
+        </parameter>
+      </parameters>
+    </function>
+  </namespace>
+</repository>
diff --git a/extra/gstreamer/controller/controller.factor b/extra/gstreamer/controller/controller.factor
new file mode 100644 (file)
index 0000000..ca101cb
--- /dev/null
@@ -0,0 +1,5 @@
+! Copyright (C) 2010 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: gstreamer.controller.ffi ;
+IN: gstreamer.controller
+
diff --git a/extra/gstreamer/controller/ffi/ffi.factor b/extra/gstreamer/controller/ffi/ffi.factor
new file mode 100644 (file)
index 0000000..ea5de2f
--- /dev/null
@@ -0,0 +1,17 @@
+! Copyright (C) 2010 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: alien alien.c-types alien.libraries combinators kernel
+system
+gobject-introspection glib.ffi gobject.ffi gstreamer.ffi ;
+IN: gstreamer.controller.ffi
+
+<<
+"gstreamer.controller" {
+    { [ os winnt? ] [ drop ] }
+    { [ os macosx? ] [ drop ] }
+    { [ os unix? ] [ "libgstcontroller-0.10.so" cdecl add-library ] }
+} cond
+>>
+
+GIR: vocab:gstreamer/controller/GstController-0.10.gir
+
diff --git a/extra/gstreamer/ffi/ffi.factor b/extra/gstreamer/ffi/ffi.factor
new file mode 100644 (file)
index 0000000..ac31e7d
--- /dev/null
@@ -0,0 +1,27 @@
+! Copyright (C) 2010 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: alien alien.syntax alien.libraries combinators kernel
+system
+gobject-introspection glib.ffi gmodule.ffi gobject.ffi ;
+EXCLUDE: alien.c-types => pointer ;
+IN: gstreamer.ffi
+
+<<
+"gstreamer" {
+    { [ os winnt? ] [ drop ] }
+    { [ os macosx? ] [ drop ] }
+    { [ os unix? ] [ "libgstreamer-0.10.so" cdecl add-library ] }
+} cond
+>>
+
+TYPEDEF: gpointer GstClockID
+TYPEDEF: guint64 GstClockTime
+TYPEDEF: gint64 GstClockTimeDiff
+
+! types from libxml2
+TYPEDEF: void* xmlNodePtr
+TYPEDEF: void* xmlDocPtr
+TYPEDEF: void* xmlNsPtr
+
+GIR: vocab:gstreamer/Gst-0.10.gir
+
diff --git a/extra/gstreamer/fft/GstFft-0.10.gir b/extra/gstreamer/fft/GstFft-0.10.gir
new file mode 100644 (file)
index 0000000..578dc59
--- /dev/null
@@ -0,0 +1,462 @@
+<?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.0"
+            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="GLib" version="2.0"/>
+  <include name="GModule" version="2.0"/>
+  <include name="GObject" version="2.0"/>
+  <include name="Gst" version="0.10"/>
+  <include name="libxml2" version="2.0"/>
+  <package name="gstreamer-0.10"/>
+  <c:include name="gst/fft/gstfft.h"/>
+  <c:include name="gst/fft/gstfftf32.h"/>
+  <c:include name="gst/fft/gstfftf64.h"/>
+  <c:include name="gst/fft/gstffts16.h"/>
+  <c:include name="gst/fft/gstffts32.h"/>
+  <namespace name="GstFft"
+             version="0.10"
+             shared-library="libgstfft-0.10.so.0"
+             c:prefix="Gst">
+    <record name="FFTF32"
+            c:type="GstFFTF32"
+            doc="Instance structure for #GstFFTF32.">
+      <field name="cfg" writable="1">
+        <type name="any" c:type="void*"/>
+      </field>
+      <field name="inverse" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </field>
+      <field name="len" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="_padding" writable="1">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+      <constructor name="new"
+                   c:identifier="gst_fft_f32_new"
+                   doc="This returns a new #GstFFTF32 instance with the given parameters. It makes
+sense to keep one instance for several calls for speed reasons.
+2, 3 and 5. To get the next number with this characteristics use
+gst_fft_next_fast_length().">
+        <return-value transfer-ownership="full">
+          <type name="FFTF32" c:type="GstFFTF32*"/>
+        </return-value>
+        <parameters>
+          <parameter name="len" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="inverse" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="fft"
+              c:identifier="gst_fft_f32_fft"
+              doc="This performs the FFT on @timedata and puts the result in @freqdata.
+allocating the #GstFFTF32 instance with gst_fft_f32_new().
+domain samples.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="timedata" direction="out" transfer-ownership="none">
+            <type name="float" c:type="gfloat*"/>
+          </parameter>
+          <parameter name="freqdata" transfer-ownership="none">
+            <type name="FFTF32Complex" c:type="GstFFTF32Complex*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="inverse_fft"
+              c:identifier="gst_fft_f32_inverse_fft"
+              doc="This performs the inverse FFT on @freqdata and puts the result in @timedata.
+while allocating the #GstFFTF32 instance with gst_fft_f32_new().">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="freqdata" transfer-ownership="none">
+            <type name="FFTF32Complex" c:type="GstFFTF32Complex*"/>
+          </parameter>
+          <parameter name="timedata" direction="out" transfer-ownership="full">
+            <type name="float" c:type="gfloat*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="free"
+              c:identifier="gst_fft_f32_free"
+              doc="This frees the memory allocated for @self.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="window"
+              c:identifier="gst_fft_f32_window"
+              doc="This calls the window function @window on the @timedata sample buffer.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="timedata" direction="out" transfer-ownership="full">
+            <type name="float" c:type="gfloat*"/>
+          </parameter>
+          <parameter name="window" transfer-ownership="none">
+            <type name="FFTWindow" c:type="GstFFTWindow"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <record name="FFTF32Complex"
+            c:type="GstFFTF32Complex"
+            doc="Data type for complex numbers composed of
+32 bit float.">
+      <field name="r" writable="1">
+        <type name="float" c:type="gfloat"/>
+      </field>
+      <field name="i" writable="1">
+        <type name="float" c:type="gfloat"/>
+      </field>
+    </record>
+    <record name="FFTF64"
+            c:type="GstFFTF64"
+            doc="Instance structure for #GstFFTF64.">
+      <field name="cfg" writable="1">
+        <type name="any" c:type="void*"/>
+      </field>
+      <field name="inverse" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </field>
+      <field name="len" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="_padding" writable="1">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+      <constructor name="new"
+                   c:identifier="gst_fft_f64_new"
+                   doc="This returns a new #GstFFTF64 instance with the given parameters. It makes
+sense to keep one instance for several calls for speed reasons.
+2, 3 and 5. To get the next number with this characteristics use
+gst_fft_next_fast_length().">
+        <return-value transfer-ownership="full">
+          <type name="FFTF64" c:type="GstFFTF64*"/>
+        </return-value>
+        <parameters>
+          <parameter name="len" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="inverse" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="fft"
+              c:identifier="gst_fft_f64_fft"
+              doc="This performs the FFT on @timedata and puts the result in @freqdata.
+allocating the #GstFFTF64 instance with gst_fft_f64_new().
+domain samples.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="timedata" direction="out" transfer-ownership="none">
+            <type name="double" c:type="gdouble*"/>
+          </parameter>
+          <parameter name="freqdata" transfer-ownership="none">
+            <type name="FFTF64Complex" c:type="GstFFTF64Complex*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="inverse_fft"
+              c:identifier="gst_fft_f64_inverse_fft"
+              doc="This performs the inverse FFT on @freqdata and puts the result in @timedata.
+while allocating the #GstFFTF64 instance with gst_fft_f64_new().">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="freqdata" transfer-ownership="none">
+            <type name="FFTF64Complex" c:type="GstFFTF64Complex*"/>
+          </parameter>
+          <parameter name="timedata" direction="out" transfer-ownership="full">
+            <type name="double" c:type="gdouble*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="free"
+              c:identifier="gst_fft_f64_free"
+              doc="This frees the memory allocated for @self.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="window"
+              c:identifier="gst_fft_f64_window"
+              doc="This calls the window function @window on the @timedata sample buffer.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="timedata" direction="out" transfer-ownership="full">
+            <type name="double" c:type="gdouble*"/>
+          </parameter>
+          <parameter name="window" transfer-ownership="none">
+            <type name="FFTWindow" c:type="GstFFTWindow"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <record name="FFTF64Complex"
+            c:type="GstFFTF64Complex"
+            doc="Data type for complex numbers composed of
+64 bit float.">
+      <field name="r" writable="1">
+        <type name="double" c:type="gdouble"/>
+      </field>
+      <field name="i" writable="1">
+        <type name="double" c:type="gdouble"/>
+      </field>
+    </record>
+    <record name="FFTS16"
+            c:type="GstFFTS16"
+            doc="Instance structure for #GstFFTS16.">
+      <field name="cfg" writable="1">
+        <type name="any" c:type="void*"/>
+      </field>
+      <field name="inverse" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </field>
+      <field name="len" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="_padding" writable="1">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+      <constructor name="new"
+                   c:identifier="gst_fft_s16_new"
+                   doc="This returns a new #GstFFTS16 instance with the given parameters. It makes
+sense to keep one instance for several calls for speed reasons.
+2, 3 and 5. To get the next number with this characteristics use
+gst_fft_next_fast_length().">
+        <return-value transfer-ownership="full">
+          <type name="FFTS16" c:type="GstFFTS16*"/>
+        </return-value>
+        <parameters>
+          <parameter name="len" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="inverse" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="fft"
+              c:identifier="gst_fft_s16_fft"
+              doc="This performs the FFT on @timedata and puts the result in @freqdata.
+allocating the #GstFFTS16 instance with gst_fft_s16_new().
+domain samples.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="timedata" direction="out" transfer-ownership="none">
+            <type name="int16" c:type="gint16*"/>
+          </parameter>
+          <parameter name="freqdata" transfer-ownership="none">
+            <type name="FFTS16Complex" c:type="GstFFTS16Complex*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="inverse_fft"
+              c:identifier="gst_fft_s16_inverse_fft"
+              doc="This performs the inverse FFT on @freqdata and puts the result in @timedata.
+while allocating the #GstFFTS16 instance with gst_fft_s16_new().">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="freqdata" transfer-ownership="none">
+            <type name="FFTS16Complex" c:type="GstFFTS16Complex*"/>
+          </parameter>
+          <parameter name="timedata" direction="out" transfer-ownership="full">
+            <type name="int16" c:type="gint16*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="free"
+              c:identifier="gst_fft_s16_free"
+              doc="This frees the memory allocated for @self.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="window"
+              c:identifier="gst_fft_s16_window"
+              doc="This calls the window function @window on the @timedata sample buffer.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="timedata" direction="out" transfer-ownership="full">
+            <type name="int16" c:type="gint16*"/>
+          </parameter>
+          <parameter name="window" transfer-ownership="none">
+            <type name="FFTWindow" c:type="GstFFTWindow"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <record name="FFTS16Complex"
+            c:type="GstFFTS16Complex"
+            doc="Data type for complex numbers composed of
+signed 16 bit integers.">
+      <field name="r" writable="1">
+        <type name="int16" c:type="gint16"/>
+      </field>
+      <field name="i" writable="1">
+        <type name="int16" c:type="gint16"/>
+      </field>
+    </record>
+    <record name="FFTS32"
+            c:type="GstFFTS32"
+            doc="Instance structure for #GstFFTS32.">
+      <field name="cfg" writable="1">
+        <type name="any" c:type="void*"/>
+      </field>
+      <field name="inverse" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </field>
+      <field name="len" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="_padding" writable="1">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+      <constructor name="new"
+                   c:identifier="gst_fft_s32_new"
+                   doc="This returns a new #GstFFTS32 instance with the given parameters. It makes
+sense to keep one instance for several calls for speed reasons.
+2, 3 and 5. To get the next number with this characteristics use
+gst_fft_next_fast_length().">
+        <return-value transfer-ownership="full">
+          <type name="FFTS32" c:type="GstFFTS32*"/>
+        </return-value>
+        <parameters>
+          <parameter name="len" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="inverse" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="fft"
+              c:identifier="gst_fft_s32_fft"
+              doc="This performs the FFT on @timedata and puts the result in @freqdata.
+allocating the #GstFFTS32 instance with gst_fft_s32_new().
+domain samples.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="timedata" direction="out" transfer-ownership="none">
+            <type name="int32" c:type="gint32*"/>
+          </parameter>
+          <parameter name="freqdata" transfer-ownership="none">
+            <type name="FFTS32Complex" c:type="GstFFTS32Complex*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="inverse_fft"
+              c:identifier="gst_fft_s32_inverse_fft"
+              doc="This performs the inverse FFT on @freqdata and puts the result in @timedata.
+while allocating the #GstFFTS32 instance with gst_fft_s32_new().">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="freqdata" transfer-ownership="none">
+            <type name="FFTS32Complex" c:type="GstFFTS32Complex*"/>
+          </parameter>
+          <parameter name="timedata" direction="out" transfer-ownership="full">
+            <type name="int32" c:type="gint32*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="free"
+              c:identifier="gst_fft_s32_free"
+              doc="This frees the memory allocated for @self.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="window"
+              c:identifier="gst_fft_s32_window"
+              doc="This calls the window function @window on the @timedata sample buffer.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="timedata" direction="out" transfer-ownership="full">
+            <type name="int32" c:type="gint32*"/>
+          </parameter>
+          <parameter name="window" transfer-ownership="none">
+            <type name="FFTWindow" c:type="GstFFTWindow"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <record name="FFTS32Complex"
+            c:type="GstFFTS32Complex"
+            doc="Data type for complex numbers composed of
+signed 32 bit integers.">
+      <field name="r" writable="1">
+        <type name="int32" c:type="gint32"/>
+      </field>
+      <field name="i" writable="1">
+        <type name="int32" c:type="gint32"/>
+      </field>
+    </record>
+    <enumeration name="FFTWindow"
+                 doc="The various window functions available."
+                 c:type="GstFFTWindow">
+      <member name="rectangular"
+              value="0"
+              c:identifier="GST_FFT_WINDOW_RECTANGULAR"/>
+      <member name="hamming" value="1" c:identifier="GST_FFT_WINDOW_HAMMING"/>
+      <member name="hann" value="2" c:identifier="GST_FFT_WINDOW_HANN"/>
+      <member name="bartlett"
+              value="3"
+              c:identifier="GST_FFT_WINDOW_BARTLETT"/>
+      <member name="blackman"
+              value="4"
+              c:identifier="GST_FFT_WINDOW_BLACKMAN"/>
+    </enumeration>
+    <function name="next_fast_length"
+              c:identifier="gst_fft_next_fast_length"
+              doc="Returns the next number to @n that is entirely a product
+of 2, 3 and 5. Using this as the @len parameter for
+the different GstFFT types will provide the best performance.">
+      <return-value transfer-ownership="none">
+        <type name="int" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="n" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+  </namespace>
+</repository>
diff --git a/extra/gstreamer/fft/ffi/ffi.factor b/extra/gstreamer/fft/ffi/ffi.factor
new file mode 100644 (file)
index 0000000..77fd0e3
--- /dev/null
@@ -0,0 +1,17 @@
+! Copyright (C) 2010 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: alien alien.c-types alien.libraries combinators kernel
+system
+gobject-introspection glib.ffi gstreamer.ffi ;
+IN: gstreamer.fft.ffi
+
+<<
+"gstreamer.fft" {
+    { [ os winnt? ] [ drop ] }
+    { [ os macosx? ] [ drop ] }
+    { [ os unix? ] [ "libgstfft-0.10.so" cdecl add-library ] }
+} cond
+>>
+
+GIR: vocab:gstreamer/fft/GstFft-0.10.gir
+
diff --git a/extra/gstreamer/fft/fft.factor b/extra/gstreamer/fft/fft.factor
new file mode 100644 (file)
index 0000000..4ddb102
--- /dev/null
@@ -0,0 +1,5 @@
+! Copyright (C) 2010 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: gstreamer.fft.ffi ;
+IN: gstreamer.fft
+
diff --git a/extra/gstreamer/gstreamer.factor b/extra/gstreamer/gstreamer.factor
new file mode 100644 (file)
index 0000000..174fbc6
--- /dev/null
@@ -0,0 +1,5 @@
+! Copyright (C) 2010 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: gstreamer.ffi ;
+IN: gstreamer
+
diff --git a/extra/gstreamer/interfaces/GstInterfaces-0.10.gir b/extra/gstreamer/interfaces/GstInterfaces-0.10.gir
new file mode 100644 (file)
index 0000000..06591fa
--- /dev/null
@@ -0,0 +1,3570 @@
+<?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.0"
+            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="GLib" version="2.0"/>
+  <include name="GModule" version="2.0"/>
+  <include name="GObject" version="2.0"/>
+  <include name="Gst" version="0.10"/>
+  <include name="libxml2" version="2.0"/>
+  <package name="gstreamer-0.10"/>
+  <c:include name="gst/interfaces/colorbalance.h"/>
+  <c:include name="gst/interfaces/colorbalancechannel.h"/>
+  <c:include name="gst/interfaces/interfaces-enumtypes.h"/>
+  <c:include name="gst/interfaces/mixer.h"/>
+  <c:include name="gst/interfaces/mixeroptions.h"/>
+  <c:include name="gst/interfaces/mixertrack.h"/>
+  <c:include name="gst/interfaces/navigation.h"/>
+  <c:include name="gst/interfaces/propertyprobe.h"/>
+  <c:include name="gst/interfaces/streamvolume.h"/>
+  <c:include name="gst/interfaces/tuner.h"/>
+  <c:include name="gst/interfaces/tunerchannel.h"/>
+  <c:include name="gst/interfaces/tunernorm.h"/>
+  <c:include name="gst/interfaces/videoorientation.h"/>
+  <c:include name="gst/interfaces/xoverlay.h"/>
+  <namespace name="GstInterfaces"
+             version="0.10"
+             shared-library="libgstinterfaces-0.10.so.0"
+             c:prefix="Gst">
+    <interface name="ColorBalance"
+               c:type="GstColorBalance"
+               glib:type-name="GstColorBalance"
+               glib:get-type="gst_color_balance_get_type"
+               glib:type-struct="ColorBalanceClass">
+      <prerequisite name="Gst.ImplementsInterface"/>
+      <prerequisite name="Gst.Element"/>
+      <virtual-method name="list_channels" invoker="list_channels">
+        <return-value transfer-ownership="none">
+          <type name="GLib.List" c:type="GList*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="set_value" invoker="set_value">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="channel" transfer-ownership="none">
+            <type name="ColorBalanceChannel" c:type="GstColorBalanceChannel*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_value" invoker="get_value">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="channel" transfer-ownership="none">
+            <type name="ColorBalanceChannel" c:type="GstColorBalanceChannel*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="list_channels"
+              c:identifier="gst_color_balance_list_channels"
+              doc="Retrieve a list of the available channels.
+The list is owned by the #GstColorBalance instance and must not
+be freed.">
+        <return-value transfer-ownership="none">
+          <type name="GLib.List" c:type="GList*"/>
+        </return-value>
+      </method>
+      <method name="set_value"
+              c:identifier="gst_color_balance_set_value"
+              doc="Sets the current value of the channel to the passed value, which must
+be between min_value and max_value.
+#GstColorBalanceChannel::max_value members of the
+#GstColorBalanceChannel object.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="channel" transfer-ownership="none">
+            <type name="ColorBalanceChannel" c:type="GstColorBalanceChannel*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_value"
+              c:identifier="gst_color_balance_get_value"
+              doc="Retrieve the current value of the indicated channel, between min_value
+and max_value.
+#GstColorBalanceChannel::max_value members of the
+#GstColorBalanceChannel object.">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="channel" transfer-ownership="none">
+            <type name="ColorBalanceChannel" c:type="GstColorBalanceChannel*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_balance_type"
+              c:identifier="gst_color_balance_get_balance_type"
+              doc="Get the #GstColorBalanceType of this implementation."
+              version="0.10.24">
+        <return-value transfer-ownership="full">
+          <type name="ColorBalanceType" c:type="GstColorBalanceType"/>
+        </return-value>
+      </method>
+      <method name="value_changed"
+              c:identifier="gst_color_balance_value_changed"
+              doc="A helper function called by implementations of the GstColorBalance
+interface. It fires the #GstColorBalance::value-changed signal on the
+instance, and the #GstColorBalanceChannel::value-changed signal on the
+channel object.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="channel" transfer-ownership="none">
+            <type name="ColorBalanceChannel" c:type="GstColorBalanceChannel*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <glib:signal name="value-changed"
+                   doc="Fired when the value of the indicated channel has changed.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="channel" transfer-ownership="none">
+            <type name="ColorBalanceChannel" c:type="GstColorBalanceChannel"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </interface>
+    <class name="ColorBalanceChannel"
+           c:type="GstColorBalanceChannel"
+           parent="GObject.Object"
+           glib:type-name="GstColorBalanceChannel"
+           glib:get-type="gst_color_balance_channel_get_type"
+           glib:type-struct="ColorBalanceChannelClass">
+      <field name="parent">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="label">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="min_value">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="max_value">
+        <type name="int" c:type="gint"/>
+      </field>
+      <glib:signal name="value-changed"
+                   doc="Fired when the value of the indicated channel has changed.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="value" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <record name="ColorBalanceChannelClass"
+            c:type="GstColorBalanceChannelClass"
+            glib:is-gtype-struct-for="ColorBalanceChannel">
+      <field name="parent">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="value_changed">
+        <callback name="value_changed" c:type="value_changed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="channel" transfer-ownership="none">
+              <type name="ColorBalanceChannel"
+                    c:type="GstColorBalanceChannel*"/>
+            </parameter>
+            <parameter name="value" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <record name="ColorBalanceClass"
+            c:type="GstColorBalanceClass"
+            glib:is-gtype-struct-for="ColorBalance">
+      <field name="klass">
+        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+      </field>
+      <field name="balance_type">
+        <type name="ColorBalanceType" c:type="GstColorBalanceType"/>
+      </field>
+      <field name="list_channels">
+        <callback name="list_channels" c:type="list_channels">
+          <return-value transfer-ownership="none">
+            <type name="GLib.List" c:type="GList*"/>
+          </return-value>
+          <parameters>
+            <parameter name="balance" transfer-ownership="none">
+              <type name="ColorBalance" c:type="GstColorBalance*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_value">
+        <callback name="set_value" c:type="set_value">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="balance" transfer-ownership="none">
+              <type name="ColorBalance" c:type="GstColorBalance*"/>
+            </parameter>
+            <parameter name="channel" transfer-ownership="none">
+              <type name="ColorBalanceChannel"
+                    c:type="GstColorBalanceChannel*"/>
+            </parameter>
+            <parameter name="value" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_value">
+        <callback name="get_value" c:type="get_value">
+          <return-value transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </return-value>
+          <parameters>
+            <parameter name="balance" transfer-ownership="none">
+              <type name="ColorBalance" c:type="GstColorBalance*"/>
+            </parameter>
+            <parameter name="channel" transfer-ownership="none">
+              <type name="ColorBalanceChannel"
+                    c:type="GstColorBalanceChannel*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="value_changed">
+        <callback name="value_changed" c:type="value_changed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="balance" transfer-ownership="none">
+              <type name="ColorBalance" c:type="GstColorBalance*"/>
+            </parameter>
+            <parameter name="channel" transfer-ownership="none">
+              <type name="ColorBalanceChannel"
+                    c:type="GstColorBalanceChannel*"/>
+            </parameter>
+            <parameter name="value" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <enumeration name="ColorBalanceType"
+                 doc="hardware.
+processing.
+An enumeration indicating whether an element implements color balancing
+operations in software or in dedicated hardware. In general, dedicated
+hardware implementations (such as those provided by xvimagesink) are
+preferred."
+                 glib:type-name="GstColorBalanceType"
+                 glib:get-type="gst_color_balance_type_get_type"
+                 c:type="GstColorBalanceType">
+      <member name="hardware"
+              value="0"
+              c:identifier="GST_COLOR_BALANCE_HARDWARE"
+              glib:nick="hardware"/>
+      <member name="software"
+              value="1"
+              c:identifier="GST_COLOR_BALANCE_SOFTWARE"
+              glib:nick="software"/>
+    </enumeration>
+    <interface name="Mixer"
+               c:type="GstMixer"
+               glib:type-name="GstMixer"
+               glib:get-type="gst_mixer_get_type"
+               glib:type-struct="MixerClass">
+      <prerequisite name="Gst.ImplementsInterface"/>
+      <prerequisite name="Gst.Element"/>
+      <virtual-method name="list_tracks" invoker="list_tracks">
+        <return-value transfer-ownership="none">
+          <type name="GLib.List" c:type="GList*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="set_volume" invoker="set_volume">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="track" transfer-ownership="none">
+            <type name="MixerTrack" c:type="GstMixerTrack*"/>
+          </parameter>
+          <parameter name="volumes" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_volume" invoker="get_volume">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="track" transfer-ownership="none">
+            <type name="MixerTrack" c:type="GstMixerTrack*"/>
+          </parameter>
+          <parameter name="volumes" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="set_mute" invoker="set_mute">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="track" transfer-ownership="none">
+            <type name="MixerTrack" c:type="GstMixerTrack*"/>
+          </parameter>
+          <parameter name="mute" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="set_record" invoker="set_record">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="track" transfer-ownership="none">
+            <type name="MixerTrack" c:type="GstMixerTrack*"/>
+          </parameter>
+          <parameter name="record" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="set_option" invoker="set_option">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="opts" transfer-ownership="none">
+            <type name="MixerOptions" c:type="GstMixerOptions*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="full">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_option" invoker="get_option">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="opts" transfer-ownership="none">
+            <type name="MixerOptions" c:type="GstMixerOptions*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_mixer_flags" invoker="get_mixer_flags">
+        <return-value transfer-ownership="full">
+          <type name="MixerFlags" c:type="GstMixerFlags"/>
+        </return-value>
+      </virtual-method>
+      <method name="list_tracks"
+              c:identifier="gst_mixer_list_tracks"
+              doc="Returns a list of available tracks for this mixer/element. Note
+that it is allowed for sink (output) elements to only provide
+the output tracks in this list. Likewise, for sources (inputs),
+it is allowed to only provide input elements in this list.
+The list is owned by the #GstMixer instance and must not be freed
+or modified.">
+        <return-value transfer-ownership="none">
+          <type name="GLib.List" c:type="GList*"/>
+        </return-value>
+      </method>
+      <method name="set_volume"
+              c:identifier="gst_mixer_set_volume"
+              doc="that gives the wanted volume for each channel in
+this track.
+Sets the volume on each channel in a track. Short note about
+the mixer/element, such as &apos;Line-in&apos; or &apos;Microphone&apos;. A
+channel is said to be a mono-stream inside this track. A
+stereo track thus contains two channels.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="track" transfer-ownership="none">
+            <type name="MixerTrack" c:type="GstMixerTrack*"/>
+          </parameter>
+          <parameter name="volumes" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_volume"
+              c:identifier="gst_mixer_get_volume"
+              doc="track-&gt;num_channels) to store the current volume
+of each channel in the given track in.
+Get the current volume(s) on the given track.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="track" transfer-ownership="none">
+            <type name="MixerTrack" c:type="GstMixerTrack*"/>
+          </parameter>
+          <parameter name="volumes" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_mute"
+              c:identifier="gst_mixer_set_mute"
+              doc="muting.
+Mutes or unmutes the given channel. To find out whether a
+track is currently muted, use GST_MIXER_TRACK_HAS_FLAG ().">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="track" transfer-ownership="none">
+            <type name="MixerTrack" c:type="GstMixerTrack*"/>
+          </parameter>
+          <parameter name="mute" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_record"
+              c:identifier="gst_mixer_set_record"
+              doc="or off recording.
+Enables or disables recording on the given track. Note that
+this is only possible on input tracks, not on output tracks
+(see GST_MIXER_TRACK_HAS_FLAG () and the GST_MIXER_TRACK_INPUT
+flag).">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="track" transfer-ownership="none">
+            <type name="MixerTrack" c:type="GstMixerTrack*"/>
+          </parameter>
+          <parameter name="record" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_option"
+              c:identifier="gst_mixer_set_option"
+              doc="Sets a name/value option in the mixer to the requested value.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="opts" transfer-ownership="none">
+            <type name="MixerOptions" c:type="GstMixerOptions*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="full">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_option"
+              c:identifier="gst_mixer_get_option"
+              doc="Get the current value of a name/value option in the mixer.">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="opts" transfer-ownership="none">
+            <type name="MixerOptions" c:type="GstMixerOptions*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="mute_toggled"
+              c:identifier="gst_mixer_mute_toggled"
+              doc="This function is called by the mixer implementation to produce
+a notification message on the bus indicating that the given track
+has changed mute state.
+This function only works for GstElements that are implementing the
+GstMixer interface, and the element needs to have been provided a bus.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="track" transfer-ownership="none">
+            <type name="MixerTrack" c:type="GstMixerTrack*"/>
+          </parameter>
+          <parameter name="mute" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="record_toggled"
+              c:identifier="gst_mixer_record_toggled"
+              doc="This function is called by the mixer implementation to produce
+a notification message on the bus indicating that the given track
+has changed recording state.
+This function only works for GstElements that are implementing the
+GstMixer interface, and the element needs to have been provided a bus.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="track" transfer-ownership="none">
+            <type name="MixerTrack" c:type="GstMixerTrack*"/>
+          </parameter>
+          <parameter name="record" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="volume_changed"
+              c:identifier="gst_mixer_volume_changed"
+              doc="This function is called by the mixer implementation to produce
+a notification message on the bus indicating that the volume(s) for the
+given track have changed.
+This function only works for GstElements that are implementing the
+GstMixer interface, and the element needs to have been provided a bus.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="track" transfer-ownership="none">
+            <type name="MixerTrack" c:type="GstMixerTrack*"/>
+          </parameter>
+          <parameter name="volumes" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="option_changed"
+              c:identifier="gst_mixer_option_changed"
+              doc="This function is called by the mixer implementation to produce
+a notification message on the bus indicating that the given options
+object has changed state.
+This function only works for GstElements that are implementing the
+GstMixer interface, and the element needs to have been provided a bus.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="opts" transfer-ownership="none">
+            <type name="MixerOptions" c:type="GstMixerOptions*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="mixer_changed"
+              c:identifier="gst_mixer_mixer_changed"
+              doc="This function is called by the mixer implementation to produce
+a notification message on the bus indicating that the list of available
+mixer tracks for a given mixer object has changed. Applications should
+rebuild their interface when they receive this message.
+This function only works for GstElements that are implementing the
+GstMixer interface, and the element needs to have been provided a bus."
+              version="0.10.18">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="options_list_changed"
+              c:identifier="gst_mixer_options_list_changed"
+              doc="This function is called by the mixer implementation to produce
+a notification message on the bus indicating that the list of possible
+options of a given options object has changed.
+The new options are not contained in the message on purpose. Applications
+should call gst_mixer_option_get_values() on @opts to make @opts update
+its internal state and obtain the new list of values.
+This function only works for GstElements that are implementing the
+GstMixer interface, and the element needs to have been provided a bus
+for this to work."
+              version="0.10.18">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="opts" transfer-ownership="none">
+            <type name="MixerOptions" c:type="GstMixerOptions*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_mixer_type"
+              c:identifier="gst_mixer_get_mixer_type"
+              doc="Get the #GstMixerType of this mixer implementation."
+              version="0.10.24">
+        <return-value transfer-ownership="full">
+          <type name="MixerType" c:type="GstMixerType"/>
+        </return-value>
+      </method>
+      <method name="get_mixer_flags"
+              c:identifier="gst_mixer_get_mixer_flags"
+              doc="Get the set of supported flags for this mixer implementation.">
+        <return-value transfer-ownership="full">
+          <type name="MixerFlags" c:type="GstMixerFlags"/>
+        </return-value>
+      </method>
+      <glib:signal name="mute-toggled">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="MixerTrack" c:type="GstMixerTrack"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="option-changed">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="MixerOptions" c:type="GstMixerOptions"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <type name="utf8" c:type="gchararray"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="record-toggled">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="MixerTrack" c:type="GstMixerTrack"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="volume-changed">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="MixerTrack" c:type="GstMixerTrack"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </interface>
+    <record name="MixerClass"
+            c:type="GstMixerClass"
+            glib:is-gtype-struct-for="Mixer">
+      <field name="klass">
+        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+      </field>
+      <field name="mixer_type">
+        <type name="MixerType" c:type="GstMixerType"/>
+      </field>
+      <field name="list_tracks">
+        <callback name="list_tracks" c:type="list_tracks">
+          <return-value transfer-ownership="none">
+            <type name="GLib.List" c:type="GList*"/>
+          </return-value>
+          <parameters>
+            <parameter name="mixer" transfer-ownership="none">
+              <type name="Mixer" c:type="GstMixer*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_volume">
+        <callback name="set_volume" c:type="set_volume">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="mixer" transfer-ownership="none">
+              <type name="Mixer" c:type="GstMixer*"/>
+            </parameter>
+            <parameter name="track" transfer-ownership="none">
+              <type name="MixerTrack" c:type="GstMixerTrack*"/>
+            </parameter>
+            <parameter name="volumes"
+                       direction="out"
+                       transfer-ownership="full">
+              <type name="int" c:type="gint*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_volume">
+        <callback name="get_volume" c:type="get_volume">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="mixer" transfer-ownership="none">
+              <type name="Mixer" c:type="GstMixer*"/>
+            </parameter>
+            <parameter name="track" transfer-ownership="none">
+              <type name="MixerTrack" c:type="GstMixerTrack*"/>
+            </parameter>
+            <parameter name="volumes"
+                       direction="out"
+                       transfer-ownership="full">
+              <type name="int" c:type="gint*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_mute">
+        <callback name="set_mute" c:type="set_mute">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="mixer" transfer-ownership="none">
+              <type name="Mixer" c:type="GstMixer*"/>
+            </parameter>
+            <parameter name="track" transfer-ownership="none">
+              <type name="MixerTrack" c:type="GstMixerTrack*"/>
+            </parameter>
+            <parameter name="mute" transfer-ownership="none">
+              <type name="boolean" c:type="gboolean"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_record">
+        <callback name="set_record" c:type="set_record">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="mixer" transfer-ownership="none">
+              <type name="Mixer" c:type="GstMixer*"/>
+            </parameter>
+            <parameter name="track" transfer-ownership="none">
+              <type name="MixerTrack" c:type="GstMixerTrack*"/>
+            </parameter>
+            <parameter name="record" transfer-ownership="none">
+              <type name="boolean" c:type="gboolean"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="mute_toggled">
+        <callback name="mute_toggled" c:type="mute_toggled">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="mixer" transfer-ownership="none">
+              <type name="Mixer" c:type="GstMixer*"/>
+            </parameter>
+            <parameter name="channel" transfer-ownership="none">
+              <type name="MixerTrack" c:type="GstMixerTrack*"/>
+            </parameter>
+            <parameter name="mute" transfer-ownership="none">
+              <type name="boolean" c:type="gboolean"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="record_toggled">
+        <callback name="record_toggled" c:type="record_toggled">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="mixer" transfer-ownership="none">
+              <type name="Mixer" c:type="GstMixer*"/>
+            </parameter>
+            <parameter name="channel" transfer-ownership="none">
+              <type name="MixerTrack" c:type="GstMixerTrack*"/>
+            </parameter>
+            <parameter name="record" transfer-ownership="none">
+              <type name="boolean" c:type="gboolean"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="volume_changed">
+        <callback name="volume_changed" c:type="volume_changed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="mixer" transfer-ownership="none">
+              <type name="Mixer" c:type="GstMixer*"/>
+            </parameter>
+            <parameter name="channel" transfer-ownership="none">
+              <type name="MixerTrack" c:type="GstMixerTrack*"/>
+            </parameter>
+            <parameter name="volumes"
+                       direction="out"
+                       transfer-ownership="full">
+              <type name="int" c:type="gint*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_option">
+        <callback name="set_option" c:type="set_option">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="mixer" transfer-ownership="none">
+              <type name="Mixer" c:type="GstMixer*"/>
+            </parameter>
+            <parameter name="opts" transfer-ownership="none">
+              <type name="MixerOptions" c:type="GstMixerOptions*"/>
+            </parameter>
+            <parameter name="value" transfer-ownership="full">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_option">
+        <callback name="get_option" c:type="get_option">
+          <return-value transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </return-value>
+          <parameters>
+            <parameter name="mixer" transfer-ownership="none">
+              <type name="Mixer" c:type="GstMixer*"/>
+            </parameter>
+            <parameter name="opts" transfer-ownership="none">
+              <type name="MixerOptions" c:type="GstMixerOptions*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="option_changed">
+        <callback name="option_changed" c:type="option_changed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="mixer" transfer-ownership="none">
+              <type name="Mixer" c:type="GstMixer*"/>
+            </parameter>
+            <parameter name="opts" transfer-ownership="none">
+              <type name="MixerOptions" c:type="GstMixerOptions*"/>
+            </parameter>
+            <parameter name="option" transfer-ownership="full">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_mixer_flags">
+        <callback name="get_mixer_flags" c:type="get_mixer_flags">
+          <return-value transfer-ownership="full">
+            <type name="MixerFlags" c:type="GstMixerFlags"/>
+          </return-value>
+          <parameters>
+            <parameter name="mixer" transfer-ownership="none">
+              <type name="Mixer" c:type="GstMixer*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="3">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <bitfield name="MixerFlags"
+              doc="sends notification messages.
+marked without either input or output.  Controls marked as input or
+output should be grouped with input &amp; output sliders, even if they
+Flags indicating which optional features are supported by a mixer
+implementation."
+              version="0.10.14"
+              glib:type-name="GstMixerFlags"
+              glib:get-type="gst_mixer_flags_get_type"
+              c:type="GstMixerFlags">
+      <member name="none"
+              value="0"
+              c:identifier="GST_MIXER_FLAG_NONE"
+              glib:nick="none"/>
+      <member name="auto_notifications"
+              value="1"
+              c:identifier="GST_MIXER_FLAG_AUTO_NOTIFICATIONS"
+              glib:nick="auto-notifications"/>
+      <member name="has_whitelist"
+              value="2"
+              c:identifier="GST_MIXER_FLAG_HAS_WHITELIST"
+              glib:nick="has-whitelist"/>
+      <member name="grouping"
+              value="4"
+              c:identifier="GST_MIXER_FLAG_GROUPING"
+              glib:nick="grouping"/>
+    </bitfield>
+    <enumeration name="MixerMessageType"
+                 doc="GstMixer message, posted when the list of available options for a
+when the list of available mixer tracks has changed. The application
+An enumeration for the type of a GstMixer message received on the bus"
+                 version="0.10.14"
+                 glib:type-name="GstMixerMessageType"
+                 glib:get-type="gst_mixer_message_type_get_type"
+                 c:type="GstMixerMessageType">
+      <member name="invalid"
+              value="0"
+              c:identifier="GST_MIXER_MESSAGE_INVALID"
+              glib:nick="invalid"/>
+      <member name="mute_toggled"
+              value="1"
+              c:identifier="GST_MIXER_MESSAGE_MUTE_TOGGLED"
+              glib:nick="mute-toggled"/>
+      <member name="record_toggled"
+              value="2"
+              c:identifier="GST_MIXER_MESSAGE_RECORD_TOGGLED"
+              glib:nick="record-toggled"/>
+      <member name="volume_changed"
+              value="3"
+              c:identifier="GST_MIXER_MESSAGE_VOLUME_CHANGED"
+              glib:nick="volume-changed"/>
+      <member name="option_changed"
+              value="4"
+              c:identifier="GST_MIXER_MESSAGE_OPTION_CHANGED"
+              glib:nick="option-changed"/>
+      <member name="options_list_changed"
+              value="5"
+              c:identifier="GST_MIXER_MESSAGE_OPTIONS_LIST_CHANGED"
+              glib:nick="options-list-changed"/>
+      <member name="mixer_changed"
+              value="6"
+              c:identifier="GST_MIXER_MESSAGE_MIXER_CHANGED"
+              glib:nick="mixer-changed"/>
+    </enumeration>
+    <class name="MixerOptions"
+           c:type="GstMixerOptions"
+           doc="always use gst_mixer_options_get_values() instead."
+           parent="MixerTrack"
+           glib:type-name="GstMixerOptions"
+           glib:get-type="gst_mixer_options_get_type"
+           glib:type-struct="MixerOptionsClass">
+      <virtual-method name="get_values" invoker="get_values">
+        <return-value transfer-ownership="full">
+          <type name="GLib.List" c:type="GList*"/>
+        </return-value>
+      </virtual-method>
+      <method name="get_values"
+              c:identifier="gst_mixer_options_get_values"
+              doc="Get the values for the mixer option.
+option. You must not free or modify the list or its contents, it belongs
+to the @mixer_options object.">
+        <return-value transfer-ownership="full">
+          <type name="GLib.List" c:type="GList*"/>
+        </return-value>
+      </method>
+      <field name="parent">
+        <type name="MixerTrack" c:type="GstMixerTrack"/>
+      </field>
+      <field name="values">
+        <type name="GLib.List" c:type="GList*"/>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </class>
+    <record name="MixerOptionsClass"
+            c:type="GstMixerOptionsClass"
+            glib:is-gtype-struct-for="MixerOptions">
+      <field name="parent">
+        <type name="MixerTrackClass" c:type="GstMixerTrackClass"/>
+      </field>
+      <field name="get_values">
+        <callback name="get_values" c:type="get_values">
+          <return-value transfer-ownership="full">
+            <type name="GLib.List" c:type="GList*"/>
+          </return-value>
+          <parameters>
+            <parameter name="opts" transfer-ownership="none">
+              <type name="MixerOptions" c:type="GstMixerOptions*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="3">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <class name="MixerTrack"
+           c:type="GstMixerTrack"
+           parent="GObject.Object"
+           glib:type-name="GstMixerTrack"
+           glib:get-type="gst_mixer_track_get_type"
+           glib:type-struct="MixerTrackClass">
+      <property name="flags">
+        <type name="uint" c:type="guint"/>
+      </property>
+      <property name="index" writable="1" construct-only="1">
+        <type name="uint" c:type="guint"/>
+      </property>
+      <property name="label">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <property name="max-volume">
+        <type name="int" c:type="gint"/>
+      </property>
+      <property name="min-volume">
+        <type name="int" c:type="gint"/>
+      </property>
+      <property name="num-channels">
+        <type name="int" c:type="gint"/>
+      </property>
+      <property name="untranslated-label" writable="1" construct-only="1">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <field name="parent">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="label">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="flags">
+        <type name="MixerTrackFlags" c:type="GstMixerTrackFlags"/>
+      </field>
+      <field name="num_channels">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="min_volume">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="max_volume">
+        <type name="int" c:type="gint"/>
+      </field>
+    </class>
+    <record name="MixerTrackClass"
+            c:type="GstMixerTrackClass"
+            glib:is-gtype-struct-for="MixerTrack">
+      <field name="parent">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <bitfield name="MixerTrackFlags"
+              doc="(for #GST_MIXER_TRACK_INPUT mixer tracks only)
+in software (as opposed to a hardware control)
+Mixer track flags."
+              version="0.10.23"
+              glib:type-name="GstMixerTrackFlags"
+              glib:get-type="gst_mixer_track_flags_get_type"
+              c:type="GstMixerTrackFlags">
+      <member name="input"
+              value="1"
+              c:identifier="GST_MIXER_TRACK_INPUT"
+              glib:nick="input"/>
+      <member name="output"
+              value="2"
+              c:identifier="GST_MIXER_TRACK_OUTPUT"
+              glib:nick="output"/>
+      <member name="mute"
+              value="4"
+              c:identifier="GST_MIXER_TRACK_MUTE"
+              glib:nick="mute"/>
+      <member name="record"
+              value="8"
+              c:identifier="GST_MIXER_TRACK_RECORD"
+              glib:nick="record"/>
+      <member name="master"
+              value="16"
+              c:identifier="GST_MIXER_TRACK_MASTER"
+              glib:nick="master"/>
+      <member name="software"
+              value="32"
+              c:identifier="GST_MIXER_TRACK_SOFTWARE"
+              glib:nick="software"/>
+      <member name="no_record"
+              value="64"
+              c:identifier="GST_MIXER_TRACK_NO_RECORD"
+              glib:nick="no-record"/>
+      <member name="no_mute"
+              value="128"
+              c:identifier="GST_MIXER_TRACK_NO_MUTE"
+              glib:nick="no-mute"/>
+      <member name="whitelist"
+              value="256"
+              c:identifier="GST_MIXER_TRACK_WHITELIST"
+              glib:nick="whitelist"/>
+      <member name="readonly"
+              value="512"
+              c:identifier="GST_MIXER_TRACK_READONLY"
+              glib:nick="readonly"/>
+      <member name="writeonly"
+              value="1024"
+              c:identifier="GST_MIXER_TRACK_WRITEONLY"
+              glib:nick="writeonly"/>
+    </bitfield>
+    <enumeration name="MixerType"
+                 glib:type-name="GstMixerType"
+                 glib:get-type="gst_mixer_type_get_type"
+                 c:type="GstMixerType">
+      <member name="hardware"
+              value="0"
+              c:identifier="GST_MIXER_HARDWARE"
+              glib:nick="hardware"/>
+      <member name="software"
+              value="1"
+              c:identifier="GST_MIXER_SOFTWARE"
+              glib:nick="software"/>
+    </enumeration>
+    <interface name="Navigation"
+               c:type="GstNavigation"
+               glib:type-name="GstNavigation"
+               glib:get-type="gst_navigation_get_type"
+               glib:type-struct="NavigationInterface">
+      <virtual-method name="send_event" invoker="send_event">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="structure" transfer-ownership="none">
+            <type name="Gst.Structure" c:type="GstStructure*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="send_event" c:identifier="gst_navigation_send_event">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="structure" transfer-ownership="none">
+            <type name="Gst.Structure" c:type="GstStructure*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="send_key_event"
+              c:identifier="gst_navigation_send_key_event"
+              doc="&quot;key-release&quot;
+by XKeysymToString.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="key" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="send_mouse_event"
+              c:identifier="gst_navigation_send_mouse_event"
+              doc="&quot;mouse-button-press&quot;, &quot;mouse-button-release&quot; and &quot;mouse-move&quot;.
+for mouse-move events.
+Sends a mouse event to the navigation interface. Mouse event coordinates
+are sent relative to the display space of the related output area. This is
+usually the size in pixels of the window associated with the element
+implementing the #GstNavigation interface.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="button" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+          <parameter name="x" transfer-ownership="none">
+            <type name="double" c:type="double"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <type name="double" c:type="double"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="send_command"
+              c:identifier="gst_navigation_send_command"
+              doc="Sends the indicated command to the navigation interface."
+              version="0.10.23">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="command" transfer-ownership="none">
+            <type name="NavigationCommand" c:type="GstNavigationCommand"/>
+          </parameter>
+        </parameters>
+      </method>
+    </interface>
+    <enumeration name="NavigationCommand"
+                 doc="this enters the DVD root menu, or exits back to the title from the menu.
+this jumps to the DVD title menu.
+this jumps into the DVD root menu.
+this jumps to the Subpicture menu.
+the jumps to the audio menu.
+this jumps to the angles menu.
+this jumps to the chapter menu.
+if such a button exists.
+if such a button exists.
+menu, if such a button exists.
+menu, if such a button exists.
+button in a menu, if such a button exists.
+multiangle feature.
+feature.
+A set of commands that may be issued to an element providing the
+#GstNavigation interface. The available commands can be queried via
+the gst_navigation_query_new_commands() query.
+For convenience in handling DVD navigation, the MENU commands are aliased as:
+GST_NAVIGATION_COMMAND_DVD_MENU            = @GST_NAVIGATION_COMMAND_MENU1
+GST_NAVIGATION_COMMAND_DVD_TITLE_MENU      = @GST_NAVIGATION_COMMAND_MENU2
+GST_NAVIGATION_COMMAND_DVD_ROOT_MENU       = @GST_NAVIGATION_COMMAND_MENU3
+GST_NAVIGATION_COMMAND_DVD_SUBPICTURE_MENU = @GST_NAVIGATION_COMMAND_MENU4
+GST_NAVIGATION_COMMAND_DVD_AUDIO_MENU      = @GST_NAVIGATION_COMMAND_MENU5
+GST_NAVIGATION_COMMAND_DVD_ANGLE_MENU      = @GST_NAVIGATION_COMMAND_MENU6
+GST_NAVIGATION_COMMAND_DVD_CHAPTER_MENU    = @GST_NAVIGATION_COMMAND_MENU7"
+                 version="0.10.23"
+                 glib:type-name="GstNavigationCommand"
+                 glib:get-type="gst_navigation_command_get_type"
+                 c:type="GstNavigationCommand">
+      <member name="invalid"
+              value="0"
+              c:identifier="GST_NAVIGATION_COMMAND_INVALID"
+              glib:nick="invalid"/>
+      <member name="menu1"
+              value="1"
+              c:identifier="GST_NAVIGATION_COMMAND_MENU1"
+              glib:nick="menu1"/>
+      <member name="menu2"
+              value="2"
+              c:identifier="GST_NAVIGATION_COMMAND_MENU2"
+              glib:nick="menu2"/>
+      <member name="menu3"
+              value="3"
+              c:identifier="GST_NAVIGATION_COMMAND_MENU3"
+              glib:nick="menu3"/>
+      <member name="menu4"
+              value="4"
+              c:identifier="GST_NAVIGATION_COMMAND_MENU4"
+              glib:nick="menu4"/>
+      <member name="menu5"
+              value="5"
+              c:identifier="GST_NAVIGATION_COMMAND_MENU5"
+              glib:nick="menu5"/>
+      <member name="menu6"
+              value="6"
+              c:identifier="GST_NAVIGATION_COMMAND_MENU6"
+              glib:nick="menu6"/>
+      <member name="menu7"
+              value="7"
+              c:identifier="GST_NAVIGATION_COMMAND_MENU7"
+              glib:nick="menu7"/>
+      <member name="left"
+              value="20"
+              c:identifier="GST_NAVIGATION_COMMAND_LEFT"
+              glib:nick="left"/>
+      <member name="right"
+              value="21"
+              c:identifier="GST_NAVIGATION_COMMAND_RIGHT"
+              glib:nick="right"/>
+      <member name="up"
+              value="22"
+              c:identifier="GST_NAVIGATION_COMMAND_UP"
+              glib:nick="up"/>
+      <member name="down"
+              value="23"
+              c:identifier="GST_NAVIGATION_COMMAND_DOWN"
+              glib:nick="down"/>
+      <member name="activate"
+              value="24"
+              c:identifier="GST_NAVIGATION_COMMAND_ACTIVATE"
+              glib:nick="activate"/>
+      <member name="prev_angle"
+              value="30"
+              c:identifier="GST_NAVIGATION_COMMAND_PREV_ANGLE"
+              glib:nick="prev-angle"/>
+      <member name="next_angle"
+              value="31"
+              c:identifier="GST_NAVIGATION_COMMAND_NEXT_ANGLE"
+              glib:nick="next-angle"/>
+    </enumeration>
+    <enumeration name="NavigationEventType"
+                 doc="gst_navigation_event_get_type() when the passed event is not a navigation event.
+gst_navigation_event_parse_key_event() to extract the details from the event.
+gst_navigation_event_parse_key_event() to extract the details from the event.
+gst_navigation_event_parse_mouse_button_event() to extract the details from the
+event.
+gst_navigation_event_parse_mouse_button_event() to extract the details from the
+event.
+gst_navigation_event_parse_mouse_move_event() to extract the details from the
+event.
+gst_navigation_event_parse_command() to extract the details from the event.
+Enum values for the various events that an element implementing the
+GstNavigation interface might send up the pipeline."
+                 version="0.10.23"
+                 glib:type-name="GstNavigationEventType"
+                 glib:get-type="gst_navigation_event_type_get_type"
+                 c:type="GstNavigationEventType">
+      <member name="invalid"
+              value="0"
+              c:identifier="GST_NAVIGATION_EVENT_INVALID"
+              glib:nick="invalid"/>
+      <member name="key_press"
+              value="1"
+              c:identifier="GST_NAVIGATION_EVENT_KEY_PRESS"
+              glib:nick="key-press"/>
+      <member name="key_release"
+              value="2"
+              c:identifier="GST_NAVIGATION_EVENT_KEY_RELEASE"
+              glib:nick="key-release"/>
+      <member name="mouse_button_press"
+              value="3"
+              c:identifier="GST_NAVIGATION_EVENT_MOUSE_BUTTON_PRESS"
+              glib:nick="mouse-button-press"/>
+      <member name="mouse_button_release"
+              value="4"
+              c:identifier="GST_NAVIGATION_EVENT_MOUSE_BUTTON_RELEASE"
+              glib:nick="mouse-button-release"/>
+      <member name="mouse_move"
+              value="5"
+              c:identifier="GST_NAVIGATION_EVENT_MOUSE_MOVE"
+              glib:nick="mouse-move"/>
+      <member name="command"
+              value="6"
+              c:identifier="GST_NAVIGATION_EVENT_COMMAND"
+              glib:nick="command"/>
+    </enumeration>
+    <record name="NavigationInterface"
+            c:type="GstNavigationInterface"
+            glib:is-gtype-struct-for="Navigation">
+      <field name="g_iface">
+        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+      </field>
+      <field name="send_event">
+        <callback name="send_event" c:type="send_event">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="navigation" transfer-ownership="none">
+              <type name="Navigation" c:type="GstNavigation*"/>
+            </parameter>
+            <parameter name="structure" transfer-ownership="none">
+              <type name="Gst.Structure" c:type="GstStructure*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <enumeration name="NavigationMessageType"
+                 doc="gst_navigation_message_get_type() when the passed message is not a
+navigation message.
+clickable region of the output, such as a DVD menu button.
+changes and should re-queried by interested applications.
+feature (such as a multiangle DVD) change - either angles have appeared or
+disappeared.
+A set of notifications that may be received on the bus when navigation
+related status changes."
+                 version="0.10.23"
+                 glib:type-name="GstNavigationMessageType"
+                 glib:get-type="gst_navigation_message_type_get_type"
+                 c:type="GstNavigationMessageType">
+      <member name="invalid"
+              value="0"
+              c:identifier="GST_NAVIGATION_MESSAGE_INVALID"
+              glib:nick="invalid"/>
+      <member name="mouse_over"
+              value="1"
+              c:identifier="GST_NAVIGATION_MESSAGE_MOUSE_OVER"
+              glib:nick="mouse-over"/>
+      <member name="commands_changed"
+              value="2"
+              c:identifier="GST_NAVIGATION_MESSAGE_COMMANDS_CHANGED"
+              glib:nick="commands-changed"/>
+      <member name="angles_changed"
+              value="3"
+              c:identifier="GST_NAVIGATION_MESSAGE_ANGLES_CHANGED"
+              glib:nick="angles-changed"/>
+    </enumeration>
+    <enumeration name="NavigationQueryType"
+                 glib:type-name="GstNavigationQueryType"
+                 glib:get-type="gst_navigation_query_type_get_type"
+                 c:type="GstNavigationQueryType">
+      <member name="invalid"
+              value="0"
+              c:identifier="GST_NAVIGATION_QUERY_INVALID"
+              glib:nick="invalid"/>
+      <member name="commands"
+              value="1"
+              c:identifier="GST_NAVIGATION_QUERY_COMMANDS"
+              glib:nick="commands"/>
+      <member name="angles"
+              value="2"
+              c:identifier="GST_NAVIGATION_QUERY_ANGLES"
+              glib:nick="angles"/>
+    </enumeration>
+    <interface name="PropertyProbe"
+               c:type="GstPropertyProbe"
+               doc="Opaque #GstPropertyProbe data structure."
+               glib:type-name="GstPropertyProbe"
+               glib:get-type="gst_property_probe_get_type"
+               glib:type-struct="PropertyProbeInterface">
+      <virtual-method name="get_properties" invoker="get_properties">
+        <return-value transfer-ownership="none">
+          <type name="GLib.List" c:type="GList*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="needs_probe">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="prop_id" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="pspec" transfer-ownership="none">
+            <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="probe_property">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="prop_id" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="pspec" transfer-ownership="none">
+            <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_values">
+        <return-value transfer-ownership="full">
+          <type name="GObject.ValueArray" c:type="GValueArray*"/>
+        </return-value>
+        <parameters>
+          <parameter name="prop_id" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="pspec" transfer-ownership="none">
+            <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="get_properties"
+              c:identifier="gst_property_probe_get_properties"
+              doc="Get a list of properties for which probing is supported.
+by this element.">
+        <return-value transfer-ownership="none">
+          <type name="GLib.List" c:type="GList*"/>
+        </return-value>
+      </method>
+      <method name="get_property"
+              c:identifier="gst_property_probe_get_property"
+              doc="Get #GParamSpec for a property for which probing is supported.">
+        <return-value transfer-ownership="none">
+          <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="probe_property"
+              c:identifier="gst_property_probe_probe_property"
+              doc="Runs a probe on the property specified by @pspec">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="pspec" transfer-ownership="none">
+            <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="probe_property_name"
+              c:identifier="gst_property_probe_probe_property_name"
+              doc="Runs a probe on the property specified by @name.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="needs_probe"
+              c:identifier="gst_property_probe_needs_probe"
+              doc="Checks whether a property needs a probe. This might be because
+the property wasn&apos;t initialized before, or because host setup
+changed. This might be, for example, because a new device was
+added, and thus device probing needs to be refreshed to display
+the new device.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="pspec" transfer-ownership="none">
+            <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="needs_probe_name"
+              c:identifier="gst_property_probe_needs_probe_name"
+              doc="Same as gst_property_probe_needs_probe ().">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_values"
+              c:identifier="gst_property_probe_get_values"
+              doc="Gets the possible (probed) values for the given property,
+requires the property to have been probed before.">
+        <return-value transfer-ownership="full">
+          <type name="GObject.ValueArray" c:type="GValueArray*"/>
+        </return-value>
+        <parameters>
+          <parameter name="pspec" transfer-ownership="none">
+            <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_values_name"
+              c:identifier="gst_property_probe_get_values_name"
+              doc="Same as gst_property_probe_get_values ().">
+        <return-value transfer-ownership="full">
+          <type name="GObject.ValueArray" c:type="GValueArray*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="probe_and_get_values"
+              c:identifier="gst_property_probe_probe_and_get_values"
+              doc="Check whether the given property requires a new probe. If so,
+fo the probe. After that, retrieve a value list. Meant as a
+utility function that wraps the above functions.">
+        <return-value transfer-ownership="full">
+          <type name="GObject.ValueArray" c:type="GValueArray*"/>
+        </return-value>
+        <parameters>
+          <parameter name="pspec" transfer-ownership="none">
+            <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="probe_and_get_values_name"
+              c:identifier="gst_property_probe_probe_and_get_values_name"
+              doc="Same as gst_property_probe_probe_and_get_values ().">
+        <return-value transfer-ownership="full">
+          <type name="GObject.ValueArray" c:type="GValueArray*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <glib:signal name="probe-needed">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </interface>
+    <record name="PropertyProbeInterface"
+            c:type="GstPropertyProbeInterface"
+            glib:is-gtype-struct-for="PropertyProbe"
+            doc="#GstPropertyProbe interface.">
+      <field name="klass">
+        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+      </field>
+      <field name="probe_needed">
+        <callback name="probe_needed" c:type="probe_needed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="probe" transfer-ownership="none">
+              <type name="PropertyProbe" c:type="GstPropertyProbe*"/>
+            </parameter>
+            <parameter name="pspec" transfer-ownership="none">
+              <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_properties">
+        <callback name="get_properties" c:type="get_properties">
+          <return-value transfer-ownership="none">
+            <type name="GLib.List" c:type="GList*"/>
+          </return-value>
+          <parameters>
+            <parameter name="probe" transfer-ownership="none">
+              <type name="PropertyProbe" c:type="GstPropertyProbe*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="needs_probe">
+        <callback name="needs_probe" c:type="needs_probe">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="probe" transfer-ownership="none">
+              <type name="PropertyProbe" c:type="GstPropertyProbe*"/>
+            </parameter>
+            <parameter name="prop_id" transfer-ownership="none">
+              <type name="uint" c:type="guint"/>
+            </parameter>
+            <parameter name="pspec" transfer-ownership="none">
+              <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="probe_property">
+        <callback name="probe_property" c:type="probe_property">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="probe" transfer-ownership="none">
+              <type name="PropertyProbe" c:type="GstPropertyProbe*"/>
+            </parameter>
+            <parameter name="prop_id" transfer-ownership="none">
+              <type name="uint" c:type="guint"/>
+            </parameter>
+            <parameter name="pspec" transfer-ownership="none">
+              <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_values">
+        <callback name="get_values" c:type="get_values">
+          <return-value transfer-ownership="full">
+            <type name="GObject.ValueArray" c:type="GValueArray*"/>
+          </return-value>
+          <parameters>
+            <parameter name="probe" transfer-ownership="none">
+              <type name="PropertyProbe" c:type="GstPropertyProbe*"/>
+            </parameter>
+            <parameter name="prop_id" transfer-ownership="none">
+              <type name="uint" c:type="guint"/>
+            </parameter>
+            <parameter name="pspec" transfer-ownership="none">
+              <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <interface name="StreamVolume"
+               c:type="GstStreamVolume"
+               glib:type-name="GstStreamVolume"
+               glib:get-type="gst_stream_volume_get_type"
+               glib:type-struct="StreamVolumeInterface">
+      <method name="set_volume"
+              c:identifier="gst_stream_volume_set_volume"
+              version="0.10.25">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <type name="StreamVolumeFormat" c:type="GstStreamVolumeFormat"/>
+          </parameter>
+          <parameter name="val" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_volume"
+              c:identifier="gst_stream_volume_get_volume"
+              version="0.10.25">
+        <return-value transfer-ownership="none">
+          <type name="double" c:type="gdouble"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <type name="StreamVolumeFormat" c:type="GstStreamVolumeFormat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_mute"
+              c:identifier="gst_stream_volume_set_mute"
+              version="0.10.25">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="mute" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_mute"
+              c:identifier="gst_stream_volume_get_mute"
+              version="0.10.25">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <property name="mute" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="volume" writable="1">
+        <type name="double" c:type="gdouble"/>
+      </property>
+    </interface>
+    <enumeration name="StreamVolumeFormat"
+                 doc="Different representations of a stream volume. gst_stream_volume_convert()
+allows to convert between the different representations.
+Formulas to convert from a linear to a cubic or dB volume are
+cbrt(val) and 20 * log10 (val)."
+                 version="0.10.25"
+                 glib:type-name="GstStreamVolumeFormat"
+                 glib:get-type="gst_stream_volume_format_get_type"
+                 c:type="GstStreamVolumeFormat">
+      <member name="linear"
+              value="0"
+              c:identifier="GST_STREAM_VOLUME_FORMAT_LINEAR"
+              glib:nick="linear"/>
+      <member name="cubic"
+              value="1"
+              c:identifier="GST_STREAM_VOLUME_FORMAT_CUBIC"
+              glib:nick="cubic"/>
+      <member name="db"
+              value="2"
+              c:identifier="GST_STREAM_VOLUME_FORMAT_DB"
+              glib:nick="db"/>
+    </enumeration>
+    <record name="StreamVolumeInterface"
+            c:type="GstStreamVolumeInterface"
+            glib:is-gtype-struct-for="StreamVolume">
+      <field name="parent">
+        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <interface name="Tuner"
+               c:type="GstTuner"
+               glib:type-name="GstTuner"
+               glib:get-type="gst_tuner_get_type"
+               glib:type-struct="TunerClass">
+      <prerequisite name="Gst.ImplementsInterface"/>
+      <prerequisite name="Gst.Element"/>
+      <virtual-method name="list_channels" invoker="list_channels">
+        <return-value transfer-ownership="none">
+          <type name="GLib.List" c:type="GList*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="set_channel" invoker="set_channel">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="channel" transfer-ownership="none">
+            <type name="TunerChannel" c:type="GstTunerChannel*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_channel" invoker="get_channel">
+        <return-value transfer-ownership="full">
+          <type name="TunerChannel" c:type="GstTunerChannel*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="list_norms" invoker="list_norms">
+        <return-value transfer-ownership="none">
+          <type name="GLib.List" c:type="GList*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="set_norm" invoker="set_norm">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="norm" transfer-ownership="none">
+            <type name="TunerNorm" c:type="GstTunerNorm*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_norm" invoker="get_norm">
+        <return-value transfer-ownership="full">
+          <type name="TunerNorm" c:type="GstTunerNorm*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="set_frequency" invoker="set_frequency">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="channel" transfer-ownership="none">
+            <type name="TunerChannel" c:type="GstTunerChannel*"/>
+          </parameter>
+          <parameter name="frequency" transfer-ownership="none">
+            <type name="ulong" c:type="gulong"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_frequency" invoker="get_frequency">
+        <return-value transfer-ownership="none">
+          <type name="ulong" c:type="gulong"/>
+        </return-value>
+        <parameters>
+          <parameter name="channel" transfer-ownership="none">
+            <type name="TunerChannel" c:type="GstTunerChannel*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="signal_strength" invoker="signal_strength">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="channel" transfer-ownership="none">
+            <type name="TunerChannel" c:type="GstTunerChannel*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="list_channels"
+              c:identifier="gst_tuner_list_channels"
+              doc="Retrieve a #GList of #GstTunerChannels available
+(e.g. &apos;composite&apos;, &apos;s-video&apos;, ...) from the given tuner object.
+owned by the GstTuner and must not be freed.">
+        <return-value transfer-ownership="none">
+          <type name="GLib.List" c:type="GList*"/>
+        </return-value>
+      </method>
+      <method name="set_channel"
+              c:identifier="gst_tuner_set_channel"
+              doc="Tunes the object to the given channel, which should be one of the
+channels returned by gst_tuner_list_channels().">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="channel" transfer-ownership="none">
+            <type name="TunerChannel" c:type="GstTunerChannel*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_channel"
+              c:identifier="gst_tuner_get_channel"
+              doc="Retrieve the current channel from the tuner.">
+        <return-value transfer-ownership="full">
+          <type name="TunerChannel" c:type="GstTunerChannel*"/>
+        </return-value>
+      </method>
+      <method name="list_norms"
+              c:identifier="gst_tuner_list_norms"
+              doc="Retrieve a GList of available #GstTunerNorm settings for the currently
+tuned channel on the given tuner object.
+tuner object. The list is owned by the GstTuner and must not
+be freed.">
+        <return-value transfer-ownership="none">
+          <type name="GLib.List" c:type="GList*"/>
+        </return-value>
+      </method>
+      <method name="set_norm"
+              c:identifier="gst_tuner_set_norm"
+              doc="Changes the video norm on this tuner to the given norm, which should be
+one of the norms returned by gst_tuner_list_norms().">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="norm" transfer-ownership="none">
+            <type name="TunerNorm" c:type="GstTunerNorm*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_norm"
+              c:identifier="gst_tuner_get_norm"
+              doc="Get the current video norm from the given tuner object for the
+currently selected channel.">
+        <return-value transfer-ownership="full">
+          <type name="TunerNorm" c:type="GstTunerNorm*"/>
+        </return-value>
+      </method>
+      <method name="set_frequency"
+              c:identifier="gst_tuner_set_frequency"
+              doc="Sets a tuning frequency on the given tuner/channel. Note that this
+requires the given channel to be a &quot;tuning&quot; channel, which can be
+checked using GST_TUNER_CHANNEL_HAS_FLAG (), with the proper flag
+being GST_TUNER_CHANNEL_FREQUENCY.
+The frequency is in Hz, with minimum steps indicated by the
+frequency_multiplicator provided in the #GstTunerChannel. The
+valid range is provided in the min_frequency and max_frequency properties
+of the #GstTunerChannel.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="channel" transfer-ownership="none">
+            <type name="TunerChannel" c:type="GstTunerChannel*"/>
+          </parameter>
+          <parameter name="frequency" transfer-ownership="none">
+            <type name="ulong" c:type="gulong"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_frequency"
+              c:identifier="gst_tuner_get_frequency"
+              doc="Retrieve the current frequency from the given channel. As for
+gst_tuner_set_frequency(), the #GstTunerChannel must support frequency
+operations, as indicated by the GST_TUNER_CHANNEL_FREQUENCY flag.">
+        <return-value transfer-ownership="none">
+          <type name="ulong" c:type="gulong"/>
+        </return-value>
+        <parameters>
+          <parameter name="channel" transfer-ownership="none">
+            <type name="TunerChannel" c:type="GstTunerChannel*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="signal_strength"
+              c:identifier="gst_tuner_signal_strength"
+              doc="Get the strength of the signal on this channel. Note that this
+requires the current channel to be a &quot;tuning&quot; channel, i.e. a
+channel on which frequency can be set. This can be checked using
+GST_TUNER_CHANNEL_HAS_FLAG (), and the appropriate flag to check
+for is GST_TUNER_CHANNEL_FREQUENCY.
+The valid range of the signal strength is indicated in the
+min_signal and max_signal properties of the #GstTunerChannel.">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="channel" transfer-ownership="none">
+            <type name="TunerChannel" c:type="GstTunerChannel*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="find_norm_by_name"
+              c:identifier="gst_tuner_find_norm_by_name"
+              doc="Look up a #GstTunerNorm by name.
+is available.">
+        <return-value transfer-ownership="full">
+          <type name="TunerNorm" c:type="GstTunerNorm*"/>
+        </return-value>
+        <parameters>
+          <parameter name="norm" transfer-ownership="full">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="find_channel_by_name"
+              c:identifier="gst_tuner_find_channel_by_name"
+              doc="Look up a #GstTunerChannel by name.
+is available.">
+        <return-value transfer-ownership="full">
+          <type name="TunerChannel" c:type="GstTunerChannel*"/>
+        </return-value>
+        <parameters>
+          <parameter name="channel" transfer-ownership="full">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="channel_changed"
+              c:identifier="gst_tuner_channel_changed"
+              doc="Called by elements implementing the #GstTuner interface when the
+current channel changes. Fires the #GstTuner::channel-changed signal.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="channel" transfer-ownership="none">
+            <type name="TunerChannel" c:type="GstTunerChannel*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="norm_changed"
+              c:identifier="gst_tuner_norm_changed"
+              doc="Called by elements implementing the #GstTuner interface when the
+current norm changes. Fires the #GstTuner::norm-changed signal.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="norm" transfer-ownership="none">
+            <type name="TunerNorm" c:type="GstTunerNorm*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="frequency_changed"
+              c:identifier="gst_tuner_frequency_changed"
+              doc="Called by elements implementing the #GstTuner interface when the
+configured frequency changes. Fires the #GstTuner::frequency-changed
+signal on the tuner, and the #GstTunerChannel::frequency-changed signal
+on the channel.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="channel" transfer-ownership="none">
+            <type name="TunerChannel" c:type="GstTunerChannel*"/>
+          </parameter>
+          <parameter name="frequency" transfer-ownership="none">
+            <type name="ulong" c:type="gulong"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="signal_changed"
+              c:identifier="gst_tuner_signal_changed"
+              doc="Called by elements implementing the #GstTuner interface when the
+incoming signal strength changes. Fires the #GstTuner::signal-changed
+signal on the tuner and the #GstTunerChannel::signal-changed signal on
+the channel.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="channel" transfer-ownership="none">
+            <type name="TunerChannel" c:type="GstTunerChannel*"/>
+          </parameter>
+          <parameter name="signal" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <glib:signal name="channel-changed"
+                   doc="Reports that the current #GstTunerChannel has changed.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="channel" transfer-ownership="none">
+            <type name="TunerChannel" c:type="GstTunerChannel"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="frequency-changed"
+                   doc="Reports that the current frequency has changed.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="TunerChannel" c:type="GstTunerChannel"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <type name="ulong" c:type="gulong"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="norm-changed"
+                   doc="Reports that the current #GstTunerNorm has changed.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="norm" transfer-ownership="none">
+            <type name="TunerNorm" c:type="GstTunerNorm"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="signal-changed"
+                   doc="Reports that the signal strength has changed.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="channel" transfer-ownership="none">
+            <type name="TunerChannel" c:type="GstTunerChannel"/>
+          </parameter>
+          <parameter name="signal" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </interface>
+    <class name="TunerChannel"
+           c:type="GstTunerChannel"
+           parent="GObject.Object"
+           glib:type-name="GstTunerChannel"
+           glib:get-type="gst_tuner_channel_get_type"
+           glib:type-struct="TunerChannelClass">
+      <field name="parent">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="label">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="flags">
+        <type name="TunerChannelFlags" c:type="GstTunerChannelFlags"/>
+      </field>
+      <field name="freq_multiplicator">
+        <type name="float" c:type="gfloat"/>
+      </field>
+      <field name="min_frequency">
+        <type name="ulong" c:type="gulong"/>
+      </field>
+      <field name="max_frequency">
+        <type name="ulong" c:type="gulong"/>
+      </field>
+      <field name="min_signal">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="max_signal">
+        <type name="int" c:type="gint"/>
+      </field>
+      <glib:signal name="frequency-changed"
+                   doc="Reports that the current frequency has changed.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="frequency" transfer-ownership="none">
+            <type name="ulong" c:type="gulong"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="signal-changed"
+                   doc="Reports that the signal strength has changed.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="signal" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <record name="TunerChannelClass"
+            c:type="GstTunerChannelClass"
+            glib:is-gtype-struct-for="TunerChannel">
+      <field name="parent">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="frequency_changed">
+        <callback name="frequency_changed" c:type="frequency_changed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="channel" transfer-ownership="none">
+              <type name="TunerChannel" c:type="GstTunerChannel*"/>
+            </parameter>
+            <parameter name="frequency" transfer-ownership="none">
+              <type name="ulong" c:type="gulong"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="signal_changed">
+        <callback name="signal_changed" c:type="signal_changed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="channel" transfer-ownership="none">
+              <type name="TunerChannel" c:type="GstTunerChannel*"/>
+            </parameter>
+            <parameter name="signal" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <bitfield name="TunerChannelFlags"
+              doc="and signal strength.
+An enumeration for flags indicating the available capabilities
+of a #GstTunerChannel."
+              glib:type-name="GstTunerChannelFlags"
+              glib:get-type="gst_tuner_channel_flags_get_type"
+              c:type="GstTunerChannelFlags">
+      <member name="input"
+              value="1"
+              c:identifier="GST_TUNER_CHANNEL_INPUT"
+              glib:nick="input"/>
+      <member name="output"
+              value="2"
+              c:identifier="GST_TUNER_CHANNEL_OUTPUT"
+              glib:nick="output"/>
+      <member name="frequency"
+              value="4"
+              c:identifier="GST_TUNER_CHANNEL_FREQUENCY"
+              glib:nick="frequency"/>
+      <member name="audio"
+              value="8"
+              c:identifier="GST_TUNER_CHANNEL_AUDIO"
+              glib:nick="audio"/>
+    </bitfield>
+    <record name="TunerClass"
+            c:type="GstTunerClass"
+            glib:is-gtype-struct-for="Tuner">
+      <field name="klass">
+        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+      </field>
+      <field name="list_channels">
+        <callback name="list_channels" c:type="list_channels">
+          <return-value transfer-ownership="none">
+            <type name="GLib.List" c:type="GList*"/>
+          </return-value>
+          <parameters>
+            <parameter name="tuner" transfer-ownership="none">
+              <type name="Tuner" c:type="GstTuner*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_channel">
+        <callback name="set_channel" c:type="set_channel">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="tuner" transfer-ownership="none">
+              <type name="Tuner" c:type="GstTuner*"/>
+            </parameter>
+            <parameter name="channel" transfer-ownership="none">
+              <type name="TunerChannel" c:type="GstTunerChannel*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_channel">
+        <callback name="get_channel" c:type="get_channel">
+          <return-value transfer-ownership="full">
+            <type name="TunerChannel" c:type="GstTunerChannel*"/>
+          </return-value>
+          <parameters>
+            <parameter name="tuner" transfer-ownership="none">
+              <type name="Tuner" c:type="GstTuner*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="list_norms">
+        <callback name="list_norms" c:type="list_norms">
+          <return-value transfer-ownership="none">
+            <type name="GLib.List" c:type="GList*"/>
+          </return-value>
+          <parameters>
+            <parameter name="tuner" transfer-ownership="none">
+              <type name="Tuner" c:type="GstTuner*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_norm">
+        <callback name="set_norm" c:type="set_norm">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="tuner" transfer-ownership="none">
+              <type name="Tuner" c:type="GstTuner*"/>
+            </parameter>
+            <parameter name="norm" transfer-ownership="none">
+              <type name="TunerNorm" c:type="GstTunerNorm*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_norm">
+        <callback name="get_norm" c:type="get_norm">
+          <return-value transfer-ownership="full">
+            <type name="TunerNorm" c:type="GstTunerNorm*"/>
+          </return-value>
+          <parameters>
+            <parameter name="tuner" transfer-ownership="none">
+              <type name="Tuner" c:type="GstTuner*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_frequency">
+        <callback name="set_frequency" c:type="set_frequency">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="tuner" transfer-ownership="none">
+              <type name="Tuner" c:type="GstTuner*"/>
+            </parameter>
+            <parameter name="channel" transfer-ownership="none">
+              <type name="TunerChannel" c:type="GstTunerChannel*"/>
+            </parameter>
+            <parameter name="frequency" transfer-ownership="none">
+              <type name="ulong" c:type="gulong"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_frequency">
+        <callback name="get_frequency" c:type="get_frequency">
+          <return-value transfer-ownership="none">
+            <type name="ulong" c:type="gulong"/>
+          </return-value>
+          <parameters>
+            <parameter name="tuner" transfer-ownership="none">
+              <type name="Tuner" c:type="GstTuner*"/>
+            </parameter>
+            <parameter name="channel" transfer-ownership="none">
+              <type name="TunerChannel" c:type="GstTunerChannel*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="signal_strength">
+        <callback name="signal_strength" c:type="signal_strength">
+          <return-value transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </return-value>
+          <parameters>
+            <parameter name="tuner" transfer-ownership="none">
+              <type name="Tuner" c:type="GstTuner*"/>
+            </parameter>
+            <parameter name="channel" transfer-ownership="none">
+              <type name="TunerChannel" c:type="GstTunerChannel*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="channel_changed">
+        <callback name="channel_changed" c:type="channel_changed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="tuner" transfer-ownership="none">
+              <type name="Tuner" c:type="GstTuner*"/>
+            </parameter>
+            <parameter name="channel" transfer-ownership="none">
+              <type name="TunerChannel" c:type="GstTunerChannel*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="norm_changed">
+        <callback name="norm_changed" c:type="norm_changed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="tuner" transfer-ownership="none">
+              <type name="Tuner" c:type="GstTuner*"/>
+            </parameter>
+            <parameter name="norm" transfer-ownership="none">
+              <type name="TunerNorm" c:type="GstTunerNorm*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="frequency_changed">
+        <callback name="frequency_changed" c:type="frequency_changed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="tuner" transfer-ownership="none">
+              <type name="Tuner" c:type="GstTuner*"/>
+            </parameter>
+            <parameter name="channel" transfer-ownership="none">
+              <type name="TunerChannel" c:type="GstTunerChannel*"/>
+            </parameter>
+            <parameter name="frequency" transfer-ownership="none">
+              <type name="ulong" c:type="gulong"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="signal_changed">
+        <callback name="signal_changed" c:type="signal_changed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="tuner" transfer-ownership="none">
+              <type name="Tuner" c:type="GstTuner*"/>
+            </parameter>
+            <parameter name="channel" transfer-ownership="none">
+              <type name="TunerChannel" c:type="GstTunerChannel*"/>
+            </parameter>
+            <parameter name="signal" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <class name="TunerNorm"
+           c:type="GstTunerNorm"
+           doc="if any. (May be unset)."
+           parent="GObject.Object"
+           glib:type-name="GstTunerNorm"
+           glib:get-type="gst_tuner_norm_get_type"
+           glib:type-struct="TunerNormClass">
+      <field name="parent">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="label">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="framerate">
+        <type name="GObject.Value" c:type="GValue"/>
+      </field>
+    </class>
+    <record name="TunerNormClass"
+            c:type="GstTunerNormClass"
+            glib:is-gtype-struct-for="TunerNorm">
+      <field name="parent">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <interface name="VideoOrientation"
+               c:type="GstVideoOrientation"
+               doc="Opaque #GstVideoOrientation data structure."
+               glib:type-name="GstVideoOrientation"
+               glib:get-type="gst_video_orientation_get_type"
+               glib:type-struct="VideoOrientationInterface">
+      <prerequisite name="Gst.ImplementsInterface"/>
+      <prerequisite name="Gst.Element"/>
+      <virtual-method name="get_hflip" invoker="get_hflip">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="flip" direction="out" transfer-ownership="full">
+            <type name="boolean" c:type="gboolean*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_vflip" invoker="get_vflip">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="flip" direction="out" transfer-ownership="full">
+            <type name="boolean" c:type="gboolean*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_hcenter" invoker="get_hcenter">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="center" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_vcenter" invoker="get_vcenter">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="center" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="set_hflip" invoker="set_hflip">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="flip" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="set_vflip" invoker="set_vflip">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="flip" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="set_hcenter" invoker="set_hcenter">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="center" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="set_vcenter" invoker="set_vcenter">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="center" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="get_hflip"
+              c:identifier="gst_video_orientation_get_hflip"
+              doc="Get the horizontal flipping state (%TRUE for flipped) from the given object."
+              version="0.10.11">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="flip" direction="out" transfer-ownership="full">
+            <type name="boolean" c:type="gboolean*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_vflip"
+              c:identifier="gst_video_orientation_get_vflip"
+              doc="Get the vertical flipping state (%TRUE for flipped) from the given object."
+              version="0.10.11">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="flip" direction="out" transfer-ownership="full">
+            <type name="boolean" c:type="gboolean*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_hcenter"
+              c:identifier="gst_video_orientation_get_hcenter"
+              doc="Get the horizontal centering offset from the given object."
+              version="0.10.11">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="center" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_vcenter"
+              c:identifier="gst_video_orientation_get_vcenter"
+              doc="Get the vertical centering offset from the given object."
+              version="0.10.11">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="center" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_hflip"
+              c:identifier="gst_video_orientation_set_hflip"
+              doc="Set the horizontal flipping state (%TRUE for flipped) for the given object."
+              version="0.10.11">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="flip" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_vflip"
+              c:identifier="gst_video_orientation_set_vflip"
+              doc="Set the vertical flipping state (%TRUE for flipped) for the given object."
+              version="0.10.11">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="flip" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_hcenter"
+              c:identifier="gst_video_orientation_set_hcenter"
+              doc="Set the horizontal centering offset for the given object."
+              version="0.10.11">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="center" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_vcenter"
+              c:identifier="gst_video_orientation_set_vcenter"
+              doc="Set the vertical centering offset for the given object."
+              version="0.10.11">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="center" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+    </interface>
+    <record name="VideoOrientationInterface"
+            c:type="GstVideoOrientationInterface"
+            glib:is-gtype-struct-for="VideoOrientation"
+            doc="#GstVideoOrientationInterface interface.">
+      <field name="parent">
+        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+      </field>
+      <field name="get_hflip">
+        <callback name="get_hflip" c:type="get_hflip">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="video_orientation" transfer-ownership="none">
+              <type name="VideoOrientation" c:type="GstVideoOrientation*"/>
+            </parameter>
+            <parameter name="flip" direction="out" transfer-ownership="full">
+              <type name="boolean" c:type="gboolean*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_vflip">
+        <callback name="get_vflip" c:type="get_vflip">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="video_orientation" transfer-ownership="none">
+              <type name="VideoOrientation" c:type="GstVideoOrientation*"/>
+            </parameter>
+            <parameter name="flip" direction="out" transfer-ownership="full">
+              <type name="boolean" c:type="gboolean*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_hcenter">
+        <callback name="get_hcenter" c:type="get_hcenter">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="video_orientation" transfer-ownership="none">
+              <type name="VideoOrientation" c:type="GstVideoOrientation*"/>
+            </parameter>
+            <parameter name="center" direction="out" transfer-ownership="full">
+              <type name="int" c:type="gint*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_vcenter">
+        <callback name="get_vcenter" c:type="get_vcenter">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="video_orientation" transfer-ownership="none">
+              <type name="VideoOrientation" c:type="GstVideoOrientation*"/>
+            </parameter>
+            <parameter name="center" direction="out" transfer-ownership="full">
+              <type name="int" c:type="gint*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_hflip">
+        <callback name="set_hflip" c:type="set_hflip">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="video_orientation" transfer-ownership="none">
+              <type name="VideoOrientation" c:type="GstVideoOrientation*"/>
+            </parameter>
+            <parameter name="flip" transfer-ownership="none">
+              <type name="boolean" c:type="gboolean"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_vflip">
+        <callback name="set_vflip" c:type="set_vflip">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="video_orientation" transfer-ownership="none">
+              <type name="VideoOrientation" c:type="GstVideoOrientation*"/>
+            </parameter>
+            <parameter name="flip" transfer-ownership="none">
+              <type name="boolean" c:type="gboolean"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_hcenter">
+        <callback name="set_hcenter" c:type="set_hcenter">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="video_orientation" transfer-ownership="none">
+              <type name="VideoOrientation" c:type="GstVideoOrientation*"/>
+            </parameter>
+            <parameter name="center" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_vcenter">
+        <callback name="set_vcenter" c:type="set_vcenter">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="video_orientation" transfer-ownership="none">
+              <type name="VideoOrientation" c:type="GstVideoOrientation*"/>
+            </parameter>
+            <parameter name="center" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <interface name="XOverlay"
+               c:type="GstXOverlay"
+               doc="Opaque #GstXOverlay data structure."
+               glib:type-name="GstXOverlay"
+               glib:get-type="gst_x_overlay_get_type"
+               glib:type-struct="XOverlayClass">
+      <prerequisite name="Gst.ImplementsInterface"/>
+      <prerequisite name="Gst.Element"/>
+      <virtual-method name="set_xwindow_id" invoker="set_xwindow_id">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="xwindow_id" transfer-ownership="none">
+            <type name="ulong" c:type="gulong"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="expose" invoker="expose">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="handle_events" invoker="handle_events">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="handle_events" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="set_render_rectangle"
+                      invoker="set_render_rectangle">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="x" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="width" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="height" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="set_xwindow_id"
+              c:identifier="gst_x_overlay_set_xwindow_id"
+              doc="This will call the video overlay&apos;s set_xwindow_id method. You should
+use this method to tell to a XOverlay to display video output to a
+specific XWindow. Passing 0 as the xwindow_id will tell the overlay to
+stop using that window and create an internal one.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="xwindow_id" transfer-ownership="none">
+            <type name="ulong" c:type="gulong"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_render_rectangle"
+              c:identifier="gst_x_overlay_set_render_rectangle"
+              doc="Configure a subregion as a video target within the window set by
+gst_x_overlay_set_xwindow_id(). If this is not used or not supported
+the video will fill the area of the window set as the overlay to 100%.
+By specifying the rectangle, the video can be overlayed to a specific region
+of that window only. After setting the new rectangle one should call
+gst_x_overlay_expose() to force a redraw. To unset the region pass -1 for
+the @x, @y, @width, and @height parameters.
+This method is needed for non fullscreen video overlay in UI toolkits that
+do not support subwindows."
+              version="0.10.29">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="x" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="width" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="height" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="expose"
+              c:identifier="gst_x_overlay_expose"
+              doc="Tell an overlay that it has been exposed. This will redraw the current frame
+in the drawable even if the pipeline is PAUSED.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="handle_events"
+              c:identifier="gst_x_overlay_handle_events"
+              doc="Tell an overlay that it should handle events from the window system. These
+events are forwared upstream as navigation events. In some window system,
+events are not propagated in the window hierarchy if a client is listening
+for them. This method allows you to disable events handling completely
+from the XOverlay."
+              version="0.10.12">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="handle_events" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="got_xwindow_id"
+              c:identifier="gst_x_overlay_got_xwindow_id"
+              doc="This will post a &quot;have-xwindow-id&quot; element message on the bus.
+This function should only be used by video overlay plugin developers.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="xwindow_id" transfer-ownership="none">
+            <type name="ulong" c:type="gulong"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="prepare_xwindow_id"
+              c:identifier="gst_x_overlay_prepare_xwindow_id"
+              doc="This will post a &quot;prepare-xwindow-id&quot; element message on the bus
+to give applications an opportunity to call
+gst_x_overlay_set_xwindow_id() before a plugin creates its own
+window.
+This function should only be used by video overlay plugin developers.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+    </interface>
+    <record name="XOverlayClass"
+            c:type="GstXOverlayClass"
+            glib:is-gtype-struct-for="XOverlay"
+            doc="#GstXOverlay interface">
+      <field name="klass">
+        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+      </field>
+      <field name="set_xwindow_id">
+        <callback name="set_xwindow_id" c:type="set_xwindow_id">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="overlay" transfer-ownership="none">
+              <type name="XOverlay" c:type="GstXOverlay*"/>
+            </parameter>
+            <parameter name="xwindow_id" transfer-ownership="none">
+              <type name="ulong" c:type="gulong"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="expose">
+        <callback name="expose" c:type="expose">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="overlay" transfer-ownership="none">
+              <type name="XOverlay" c:type="GstXOverlay*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="handle_events">
+        <callback name="handle_events" c:type="handle_events">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="overlay" transfer-ownership="none">
+              <type name="XOverlay" c:type="GstXOverlay*"/>
+            </parameter>
+            <parameter name="handle_events" transfer-ownership="none">
+              <type name="boolean" c:type="gboolean"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_render_rectangle">
+        <callback name="set_render_rectangle" c:type="set_render_rectangle">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="overlay" transfer-ownership="none">
+              <type name="XOverlay" c:type="GstXOverlay*"/>
+            </parameter>
+            <parameter name="x" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+            <parameter name="y" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+            <parameter name="width" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+            <parameter name="height" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="2">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <function name="mixer_message_get_type"
+              c:identifier="gst_mixer_message_get_type"
+              doc="Check a bus message to see if it is a GstMixer notification
+message and return the GstMixerMessageType identifying which
+type of notification it is.
+if the message is not a GstMixer notification."
+              version="0.10.14">
+      <return-value transfer-ownership="full">
+        <type name="MixerMessageType" c:type="GstMixerMessageType"/>
+      </return-value>
+      <parameters>
+        <parameter name="message" transfer-ownership="none">
+          <type name="Gst.Message" c:type="GstMessage*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="mixer_message_parse_mute_toggled"
+              c:identifier="gst_mixer_message_parse_mute_toggled"
+              doc="Extracts the contents of a mute-toggled bus message. Reads
+the GstMixerTrack that has changed, and the new value of the mute
+flag.
+The GstMixerTrack remains valid until the message is freed."
+              version="0.10.14">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="message" transfer-ownership="none">
+          <type name="Gst.Message" c:type="GstMessage*"/>
+        </parameter>
+        <parameter name="track" transfer-ownership="none">
+          <type name="MixerTrack" c:type="GstMixerTrack**"/>
+        </parameter>
+        <parameter name="mute" direction="out" transfer-ownership="full">
+          <type name="boolean" c:type="gboolean*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="mixer_message_parse_option_changed"
+              c:identifier="gst_mixer_message_parse_option_changed"
+              doc="Extracts the GstMixerOptions and new value from a option-changed bus notification
+message.
+The options and value returned remain valid until the message is freed."
+              version="0.10.14">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="message" transfer-ownership="none">
+          <type name="Gst.Message" c:type="GstMessage*"/>
+        </parameter>
+        <parameter name="options" transfer-ownership="none">
+          <type name="MixerOptions" c:type="GstMixerOptions**"/>
+        </parameter>
+        <parameter name="value" transfer-ownership="none">
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="mixer_message_parse_options_list_changed"
+              c:identifier="gst_mixer_message_parse_options_list_changed"
+              doc="Extracts the GstMixerOptions whose value list has changed from an
+options-list-changed bus notification message.
+The options object returned remains valid until the message is freed. You
+do not need to unref it."
+              version="0.10.18">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="message" transfer-ownership="none">
+          <type name="Gst.Message" c:type="GstMessage*"/>
+        </parameter>
+        <parameter name="options" transfer-ownership="none">
+          <type name="MixerOptions" c:type="GstMixerOptions**"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="mixer_message_parse_record_toggled"
+              c:identifier="gst_mixer_message_parse_record_toggled"
+              doc="Extracts the contents of a record-toggled bus message. Reads
+the GstMixerTrack that has changed, and the new value of the
+recording flag.
+The GstMixerTrack remains valid until the message is freed."
+              version="0.10.14">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="message" transfer-ownership="none">
+          <type name="Gst.Message" c:type="GstMessage*"/>
+        </parameter>
+        <parameter name="track" transfer-ownership="none">
+          <type name="MixerTrack" c:type="GstMixerTrack**"/>
+        </parameter>
+        <parameter name="record" direction="out" transfer-ownership="full">
+          <type name="boolean" c:type="gboolean*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="mixer_message_parse_volume_changed"
+              c:identifier="gst_mixer_message_parse_volume_changed"
+              doc="Parses a volume-changed notification message and extracts the track object
+it refers to, as well as an array of volumes and the size of the volumes array.
+The track object remains valid until the message is freed.
+The caller must free the array returned in the volumes parameter using g_free
+when they are done with it."
+              version="0.10.14">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="message" transfer-ownership="none">
+          <type name="Gst.Message" c:type="GstMessage*"/>
+        </parameter>
+        <parameter name="track" transfer-ownership="none">
+          <type name="MixerTrack" c:type="GstMixerTrack**"/>
+        </parameter>
+        <parameter name="volumes" direction="out" transfer-ownership="full">
+          <type name="int" c:type="gint**"/>
+        </parameter>
+        <parameter name="num_channels"
+                   direction="out"
+                   transfer-ownership="full">
+          <type name="int" c:type="gint*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="navigation_event_get_type"
+              c:identifier="gst_navigation_event_get_type"
+              doc="Inspect a #GstEvent and return the #GstNavigationEventType of the event, or
+#GST_NAVIGATION_EVENT_INVALID if the event is not a #GstNavigation event."
+              version="0.10.23">
+      <return-value transfer-ownership="full">
+        <type name="NavigationEventType" c:type="GstNavigationEventType"/>
+      </return-value>
+      <parameters>
+        <parameter name="event" transfer-ownership="none">
+          <type name="Gst.Event" c:type="GstEvent*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="navigation_event_parse_command"
+              c:identifier="gst_navigation_event_parse_command"
+              doc="navigation event.
+Inspect a #GstNavigation command event and retrieve the enum value of the
+associated command."
+              version="0.10.23">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="event" transfer-ownership="none">
+          <type name="Gst.Event" c:type="GstEvent*"/>
+        </parameter>
+        <parameter name="command" transfer-ownership="none">
+          <type name="NavigationCommand" c:type="GstNavigationCommand*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="navigation_event_parse_key_event"
+              c:identifier="gst_navigation_event_parse_key_event"
+              doc="press. The returned string is owned by the event, and valid only until the
+event is unreffed."
+              version="0.10.23">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="event" transfer-ownership="none">
+          <type name="Gst.Event" c:type="GstEvent*"/>
+        </parameter>
+        <parameter name="key" transfer-ownership="none">
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="navigation_event_parse_mouse_button_event"
+              c:identifier="gst_navigation_event_parse_mouse_button_event"
+              doc="with the event.
+event.
+event.
+Retrieve the details of either a #GstNavigation mouse button press event or
+a mouse button release event. Determine which type the event is using
+gst_navigation_event_get_type() to retrieve the #GstNavigationEventType.
+otherwise FALSE."
+              version="0.10.23">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="event" transfer-ownership="none">
+          <type name="Gst.Event" c:type="GstEvent*"/>
+        </parameter>
+        <parameter name="button" direction="out" transfer-ownership="full">
+          <type name="int" c:type="gint*"/>
+        </parameter>
+        <parameter name="x" direction="out" transfer-ownership="full">
+          <type name="double" c:type="gdouble*"/>
+        </parameter>
+        <parameter name="y" direction="out" transfer-ownership="full">
+          <type name="double" c:type="gdouble*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="navigation_event_parse_mouse_move_event"
+              c:identifier="gst_navigation_event_parse_mouse_move_event"
+              doc="Inspect a #GstNavigation mouse movement event and extract the coordinates
+of the event."
+              version="0.10.23">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="event" transfer-ownership="none">
+          <type name="Gst.Event" c:type="GstEvent*"/>
+        </parameter>
+        <parameter name="x" direction="out" transfer-ownership="full">
+          <type name="double" c:type="gdouble*"/>
+        </parameter>
+        <parameter name="y" direction="out" transfer-ownership="full">
+          <type name="double" c:type="gdouble*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="navigation_message_get_type"
+              c:identifier="gst_navigation_message_get_type"
+              doc="Check a bus message to see if it is a #GstNavigation event, and return
+the #GstNavigationMessageType identifying the type of the message if so.
+#GST_NAVIGATION_MESSAGE_INVALID if the message is not a #GstNavigation
+notification."
+              version="0.10.23">
+      <return-value transfer-ownership="full">
+        <type name="NavigationMessageType" c:type="GstNavigationMessageType"/>
+      </return-value>
+      <parameters>
+        <parameter name="message" transfer-ownership="none">
+          <type name="Gst.Message" c:type="GstMessage*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="navigation_message_new_angles_changed"
+              c:identifier="gst_navigation_message_new_angles_changed"
+              doc="Creates a new #GstNavigation message with type
+#GST_NAVIGATION_MESSAGE_ANGLES_CHANGED for notifying an application
+that the current angle, or current number of angles available in a
+multiangle video has changed."
+              version="0.10.23">
+      <return-value transfer-ownership="full">
+        <type name="Gst.Message" c:type="GstMessage*"/>
+      </return-value>
+      <parameters>
+        <parameter name="src" transfer-ownership="none">
+          <type name="Gst.Object" c:type="GstObject*"/>
+        </parameter>
+        <parameter name="cur_angle" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="n_angles" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="navigation_message_new_commands_changed"
+              c:identifier="gst_navigation_message_new_commands_changed"
+              doc="Creates a new #GstNavigation message with type
+#GST_NAVIGATION_MESSAGE_COMMANDS_CHANGED"
+              version="0.10.23">
+      <return-value transfer-ownership="full">
+        <type name="Gst.Message" c:type="GstMessage*"/>
+      </return-value>
+      <parameters>
+        <parameter name="src" transfer-ownership="none">
+          <type name="Gst.Object" c:type="GstObject*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="navigation_message_new_mouse_over"
+              c:identifier="gst_navigation_message_new_mouse_over"
+              doc="%FALSE if it over a non-clickable area.
+Creates a new #GstNavigation message with type
+#GST_NAVIGATION_MESSAGE_MOUSE_OVER."
+              version="0.10.23">
+      <return-value transfer-ownership="full">
+        <type name="Gst.Message" c:type="GstMessage*"/>
+      </return-value>
+      <parameters>
+        <parameter name="src" transfer-ownership="none">
+          <type name="Gst.Object" c:type="GstObject*"/>
+        </parameter>
+        <parameter name="active" transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="navigation_message_parse_angles_changed"
+              c:identifier="gst_navigation_message_parse_angles_changed"
+              doc="or NULL
+Parse a #GstNavigation message of type GST_NAVIGATION_MESSAGE_ANGLES_CHANGED
+and extract the @cur_angle and @n_angles parameters."
+              version="0.10.23">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="message" transfer-ownership="none">
+          <type name="Gst.Message" c:type="GstMessage*"/>
+        </parameter>
+        <parameter name="cur_angle" direction="out" transfer-ownership="full">
+          <type name="uint" c:type="guint*"/>
+        </parameter>
+        <parameter name="n_angles" direction="out" transfer-ownership="full">
+          <type name="uint" c:type="guint*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="navigation_message_parse_mouse_over"
+              c:identifier="gst_navigation_message_parse_mouse_over"
+              doc="or NULL.
+Parse a #GstNavigation message of type #GST_NAVIGATION_MESSAGE_MOUSE_OVER
+and extract the active/inactive flag. If the mouse over event is marked
+active, it indicates that the mouse is over a clickable area."
+              version="0.10.23">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="message" transfer-ownership="none">
+          <type name="Gst.Message" c:type="GstMessage*"/>
+        </parameter>
+        <parameter name="active" direction="out" transfer-ownership="full">
+          <type name="boolean" c:type="gboolean*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="navigation_query_get_type"
+              c:identifier="gst_navigation_query_get_type"
+              doc="Inspect a #GstQuery and return the #GstNavigationQueryType associated with
+it if it is a #GstNavigation query.
+#GST_NAVIGATION_QUERY_INVALID"
+              version="0.10.23">
+      <return-value transfer-ownership="full">
+        <type name="NavigationQueryType" c:type="GstNavigationQueryType"/>
+      </return-value>
+      <parameters>
+        <parameter name="query" transfer-ownership="none">
+          <type name="Gst.Query" c:type="GstQuery*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="navigation_query_new_angles"
+              c:identifier="gst_navigation_query_new_angles"
+              doc="Create a new #GstNavigation angles query. When executed, it will
+query the pipeline for the set of currently available angles, which may be
+greater than one in a multiangle video."
+              version="0.10.23">
+      <return-value transfer-ownership="full">
+        <type name="Gst.Query" c:type="GstQuery*"/>
+      </return-value>
+    </function>
+    <function name="navigation_query_new_commands"
+              c:identifier="gst_navigation_query_new_commands"
+              doc="Create a new #GstNavigation commands query. When executed, it will
+query the pipeline for the set of currently available commands."
+              version="0.10.23">
+      <return-value transfer-ownership="full">
+        <type name="Gst.Query" c:type="GstQuery*"/>
+      </return-value>
+    </function>
+    <function name="navigation_query_parse_angles"
+              c:identifier="gst_navigation_query_parse_angles"
+              doc="angle value from the query, or NULL
+value from the query, or NULL
+Parse the current angle number in the #GstNavigation angles @query into the
+#guint pointed to by the @cur_angle variable, and the number of available
+angles into the #guint pointed to by the @n_angles variable."
+              version="0.10.23">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="query" transfer-ownership="none">
+          <type name="Gst.Query" c:type="GstQuery*"/>
+        </parameter>
+        <parameter name="cur_angle" direction="out" transfer-ownership="full">
+          <type name="uint" c:type="guint*"/>
+        </parameter>
+        <parameter name="n_angles" direction="out" transfer-ownership="full">
+          <type name="uint" c:type="guint*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="navigation_query_parse_commands_length"
+              c:identifier="gst_navigation_query_parse_commands_length"
+              doc="Parse the number of commands in the #GstNavigation commands @query."
+              version="0.10.23">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="query" transfer-ownership="none">
+          <type name="Gst.Query" c:type="GstQuery*"/>
+        </parameter>
+        <parameter name="n_cmds" direction="out" transfer-ownership="full">
+          <type name="uint" c:type="guint*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="navigation_query_parse_commands_nth"
+              c:identifier="gst_navigation_query_parse_commands_nth"
+              doc="Parse the #GstNavigation command query and retrieve the @nth command from
+it into @cmd. If the list contains less elements than @nth, @cmd will be
+set to #GST_NAVIGATION_COMMAND_INVALID."
+              version="0.10.23">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="query" transfer-ownership="none">
+          <type name="Gst.Query" c:type="GstQuery*"/>
+        </parameter>
+        <parameter name="nth" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="cmd" transfer-ownership="none">
+          <type name="NavigationCommand" c:type="GstNavigationCommand*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="navigation_query_set_angles"
+              c:identifier="gst_navigation_query_set_angles"
+              doc="Set the #GstNavigation angles query result field in @query."
+              version="0.10.23">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="query" transfer-ownership="none">
+          <type name="Gst.Query" c:type="GstQuery*"/>
+        </parameter>
+        <parameter name="cur_angle" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="n_angles" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="navigation_query_set_commands"
+              c:identifier="gst_navigation_query_set_commands"
+              doc="Set the #GstNavigation command query result fields in @query. The number
+of commands passed must be equal to @n_commands."
+              version="0.10.23">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="query" transfer-ownership="none">
+          <type name="Gst.Query" c:type="GstQuery*"/>
+        </parameter>
+        <parameter name="n_cmds" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter transfer-ownership="none">
+          <varargs>
+          </varargs>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="navigation_query_set_commandsv"
+              c:identifier="gst_navigation_query_set_commandsv"
+              doc="Set the #GstNavigation command query result fields in @query. The number
+of commands passed must be equal to @n_commands."
+              version="0.10.23">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="query" transfer-ownership="none">
+          <type name="Gst.Query" c:type="GstQuery*"/>
+        </parameter>
+        <parameter name="n_cmds" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="cmds" transfer-ownership="none">
+          <type name="NavigationCommand" c:type="GstNavigationCommand*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="stream_volume_convert_volume"
+              c:identifier="gst_stream_volume_convert_volume"
+              version="0.10.25">
+      <return-value transfer-ownership="none">
+        <type name="double" c:type="gdouble"/>
+      </return-value>
+      <parameters>
+        <parameter name="from" transfer-ownership="none">
+          <type name="StreamVolumeFormat" c:type="GstStreamVolumeFormat"/>
+        </parameter>
+        <parameter name="to" transfer-ownership="none">
+          <type name="StreamVolumeFormat" c:type="GstStreamVolumeFormat"/>
+        </parameter>
+        <parameter name="val" transfer-ownership="none">
+          <type name="double" c:type="gdouble"/>
+        </parameter>
+      </parameters>
+    </function>
+  </namespace>
+</repository>
diff --git a/extra/gstreamer/interfaces/ffi/ffi.factor b/extra/gstreamer/interfaces/ffi/ffi.factor
new file mode 100644 (file)
index 0000000..45d57d2
--- /dev/null
@@ -0,0 +1,17 @@
+! Copyright (C) 2010 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: alien alien.c-types alien.libraries combinators kernel
+system
+gobject-introspection glib.ffi gobject.ffi gstreamer.ffi ;
+IN: gstreamer.interfaces.ffi
+
+<<
+"gstreamer.interfaces" {
+    { [ os winnt? ] [ drop ] }
+    { [ os macosx? ] [ drop ] }
+    { [ os unix? ] [ "libgstinterfaces-0.10.so" cdecl add-library ] }
+} cond
+>>
+
+GIR: vocab:gstreamer/interfaces/GstInterfaces-0.10.gir
+
diff --git a/extra/gstreamer/interfaces/interfaces.factor b/extra/gstreamer/interfaces/interfaces.factor
new file mode 100644 (file)
index 0000000..b9b57f6
--- /dev/null
@@ -0,0 +1,5 @@
+! Copyright (C) 2010 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: gstreamer.interfaces.ffi ;
+IN: gstreamer.interfaces
+
diff --git a/extra/gstreamer/net/GstNet-0.10.gir b/extra/gstreamer/net/GstNet-0.10.gir
new file mode 100644 (file)
index 0000000..eb3a4b7
--- /dev/null
@@ -0,0 +1,279 @@
+<?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.0"
+            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="GLib" version="2.0"/>
+  <include name="GModule" version="2.0"/>
+  <include name="GObject" version="2.0"/>
+  <include name="Gst" version="0.10"/>
+  <include name="libxml2" version="2.0"/>
+  <package name="gstreamer-0.10"/>
+  <namespace name="GstNet"
+             version="0.10"
+             shared-library="libgstnet-0.10.so.0"
+             c:prefix="Gst">
+    <class name="NetClientClock"
+           c:type="GstNetClientClock"
+           doc="Opaque #GstNetClientClock structure."
+           parent="Gst.SystemClock"
+           glib:type-name="GstNetClientClock"
+           glib:get-type="gst_net_client_clock_get_type"
+           glib:type-struct="NetClientClockClass">
+      <constructor name="new"
+                   c:identifier="gst_net_client_clock_new"
+                   doc="Create a new #GstNetClientClock that will report the time
+provided by the #GstNetTimeProvider on @remote_address and
+clock.">
+        <return-value transfer-ownership="full">
+          <type name="NetClientClock" c:type="GstClock*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="full">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="remote_address" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="remote_port" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="base_time" transfer-ownership="none">
+            <type name="Gst.ClockTime" c:type="GstClockTime"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <property name="address" writable="1">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <property name="port" writable="1">
+        <type name="int" c:type="gint"/>
+      </property>
+      <field name="clock">
+        <type name="Gst.SystemClock" c:type="GstSystemClock"/>
+      </field>
+      <field name="address">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="port">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="sock">
+        <type name="int" c:type="int"/>
+      </field>
+      <field name="control_sock">
+        <array zero-terminated="0" c:type="int" fixed-size="2">
+          <type name="int"/>
+        </array>
+      </field>
+      <field name="current_timeout">
+        <type name="Gst.ClockTime" c:type="GstClockTime"/>
+      </field>
+      <field name="servaddr">
+        <type name="any" c:type="any*"/>
+      </field>
+      <field name="thread">
+        <type name="GLib.Thread" c:type="GThread*"/>
+      </field>
+      <field name="priv">
+        <type name="NetClientClockPrivate" c:type="GstNetClientClockPrivate*"/>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="3">
+          <type name="any"/>
+        </array>
+      </field>
+    </class>
+    <record name="NetClientClockClass"
+            c:type="GstNetClientClockClass"
+            glib:is-gtype-struct-for="NetClientClock">
+      <field name="parent_class">
+        <type name="Gst.SystemClockClass" c:type="GstSystemClockClass"/>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <record name="NetClientClockPrivate" c:type="GstNetClientClockPrivate">
+    </record>
+    <record name="NetTimePacket"
+            c:type="GstNetTimePacket"
+            doc="Content of a #GstNetTimePacket.">
+      <field name="local_time" writable="1">
+        <type name="Gst.ClockTime" c:type="GstClockTime"/>
+      </field>
+      <field name="remote_time" writable="1">
+        <type name="Gst.ClockTime" c:type="GstClockTime"/>
+      </field>
+      <constructor name="new"
+                   c:identifier="gst_net_time_packet_new"
+                   doc="Creates a new #GstNetTimePacket from a buffer received over the network. The
+caller is responsible for ensuring that @buffer is at least
+#GST_NET_TIME_PACKET_SIZE bytes long.
+If @buffer is #NULL, the local and remote times will be set to
+#GST_CLOCK_TIME_NONE.
+MT safe. Caller owns return value (g_free to free).">
+        <return-value transfer-ownership="full">
+          <type name="NetTimePacket" c:type="GstNetTimePacket*"/>
+        </return-value>
+        <parameters>
+          <parameter name="buffer" transfer-ownership="none">
+            <array c:type="guint8*">
+              <type name="uint8"/>
+            </array>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="serialize"
+              c:identifier="gst_net_time_packet_serialize"
+              doc="Serialized a #GstNetTimePacket into a newly-allocated sequence of
+#GST_NET_TIME_PACKET_SIZE bytes, in network byte order. The value returned is
+suitable for passing to write(2) or sendto(2) for communication over the
+network.
+MT safe. Caller owns return value (g_free to free).">
+        <return-value transfer-ownership="full">
+          <array c:type="guint8*">
+            <type name="uint8"/>
+          </array>
+        </return-value>
+      </method>
+      <method name="send"
+              c:identifier="gst_net_time_packet_send"
+              doc="Sends a #GstNetTimePacket over a socket. Essentially a thin wrapper around
+sendto(2) and gst_net_time_packet_serialize().
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="fd" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="addr" transfer-ownership="none">
+            <type name="any" c:type="any*"/>
+          </parameter>
+          <parameter name="len" transfer-ownership="none">
+            <type name="int32" c:type="socklen_t"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <class name="NetTimeProvider"
+           c:type="GstNetTimeProvider"
+           doc="Opaque #GstNetTimeProvider structure."
+           parent="Gst.Object"
+           glib:type-name="GstNetTimeProvider"
+           glib:get-type="gst_net_time_provider_get_type"
+           glib:type-struct="NetTimeProviderClass">
+      <constructor name="new"
+                   c:identifier="gst_net_time_provider_new"
+                   doc="to bind to all addresses
+Allows network clients to get the current time of @clock.">
+        <return-value transfer-ownership="full">
+          <type name="NetTimeProvider" c:type="GstNetTimeProvider*"/>
+        </return-value>
+        <parameters>
+          <parameter name="clock" transfer-ownership="none">
+            <type name="Gst.Clock" c:type="GstClock*"/>
+          </parameter>
+          <parameter name="address" transfer-ownership="none" doc="or NULL">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="port" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <property name="active" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="address" writable="1">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <property name="clock" writable="1">
+        <type name="Gst.Clock" c:type="GstClock"/>
+      </property>
+      <property name="port" writable="1">
+        <type name="int" c:type="gint"/>
+      </property>
+      <field name="parent">
+        <type name="Gst.Object" c:type="GstObject"/>
+      </field>
+      <field name="address">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="port">
+        <type name="int" c:type="int"/>
+      </field>
+      <field name="sock">
+        <type name="int" c:type="int"/>
+      </field>
+      <field name="control_sock">
+        <array zero-terminated="0" c:type="int" fixed-size="2">
+          <type name="int"/>
+        </array>
+      </field>
+      <field name="thread">
+        <type name="GLib.Thread" c:type="GThread*"/>
+      </field>
+      <field name="clock">
+        <type name="Gst.Clock" c:type="GstClock*"/>
+      </field>
+      <union name="active" c:type="active">
+        <field name="_gst_reserved1" writable="1">
+          <type name="any" c:type="gpointer"/>
+        </field>
+        <field name="active" writable="1">
+          <type name="int" c:type="gint"/>
+        </field>
+      </union>
+      <field name="priv">
+        <type name="NetTimeProviderPrivate"
+              c:type="GstNetTimeProviderPrivate*"/>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="2">
+          <type name="any"/>
+        </array>
+      </field>
+    </class>
+    <record name="NetTimeProviderClass"
+            c:type="GstNetTimeProviderClass"
+            glib:is-gtype-struct-for="NetTimeProvider">
+      <field name="parent_class">
+        <type name="Gst.ObjectClass" c:type="GstObjectClass"/>
+      </field>
+    </record>
+    <record name="NetTimeProviderPrivate" c:type="GstNetTimeProviderPrivate">
+    </record>
+    <constant name="TIME_PACKET_SIZE" value="16">
+      <type name="int"/>
+    </constant>
+    <function name="time_packet_receive"
+              c:identifier="gst_net_time_packet_receive"
+              doc="Receives a #GstNetTimePacket over a socket. Handles interrupted system calls,
+but otherwise returns NULL on error. See recvfrom(2) for more information on
+how to interpret @sockaddr.
+MT safe. Caller owns return value (g_free to free).">
+      <return-value transfer-ownership="full">
+        <type name="NetTimePacket" c:type="GstNetTimePacket*"/>
+      </return-value>
+      <parameters>
+        <parameter name="fd" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="addr" transfer-ownership="none">
+          <type name="any" c:type="any*"/>
+        </parameter>
+        <parameter name="len" direction="out" transfer-ownership="full">
+          <type name="int32" c:type="socklen_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+  </namespace>
+</repository>
diff --git a/extra/gstreamer/net/ffi/ffi.factor b/extra/gstreamer/net/ffi/ffi.factor
new file mode 100644 (file)
index 0000000..fbd5148
--- /dev/null
@@ -0,0 +1,19 @@
+! Copyright (C) 2010 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: alien alien.libraries combinators kernel system
+gobject-introspection glib.ffi gstreamer.ffi ;
+FROM: unix.types => socklen_t ;
+IN: gstreamer.net.ffi
+
+<<
+"gstreamer.net" {
+    { [ os winnt? ] [ drop ] }
+    { [ os macosx? ] [ drop ] }
+    { [ os unix? ] [ "libgstnet-0.10.so" cdecl add-library ] }
+} cond
+>>
+
+REPLACE-C-TYPE: any gpointer
+
+GIR: vocab:gstreamer/net/GstNet-0.10.gir
+
diff --git a/extra/gstreamer/net/net.factor b/extra/gstreamer/net/net.factor
new file mode 100644 (file)
index 0000000..b409685
--- /dev/null
@@ -0,0 +1,5 @@
+! Copyright (C) 2010 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: gstreamer.net.ffi ;
+IN: gstreamer.net
+
diff --git a/extra/gstreamer/netbuffer/GstNetbuffer-0.10.gir b/extra/gstreamer/netbuffer/GstNetbuffer-0.10.gir
new file mode 100644 (file)
index 0000000..4095f0d
--- /dev/null
@@ -0,0 +1,267 @@
+<?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.0"
+            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="GLib" version="2.0"/>
+  <include name="GModule" version="2.0"/>
+  <include name="GObject" version="2.0"/>
+  <include name="Gst" version="0.10"/>
+  <include name="libxml2" version="2.0"/>
+  <package name="gstreamer-0.10"/>
+  <c:include name="gst/netbuffer/gstnetbuffer.h"/>
+  <namespace name="GstNetbuffer"
+             version="0.10"
+             shared-library="libgstnetbuffer-0.10.so.0"
+             c:prefix="Gst">
+    <record name="NetAddress"
+            c:type="GstNetAddress"
+            doc="An opaque network address as used in #GstNetBuffer.">
+      <field name="type" writable="1">
+        <type name="NetType" c:type="GstNetType"/>
+      </field>
+      <union name="address" c:type="address">
+        <field name="ip6" writable="1">
+          <array zero-terminated="0" c:type="guint8" fixed-size="16">
+            <type name="uint8"/>
+          </array>
+        </field>
+        <field name="ip4" writable="1">
+          <type name="uint32" c:type="guint32"/>
+        </field>
+      </union>
+      <field name="port" writable="1">
+        <type name="uint16" c:type="guint16"/>
+      </field>
+      <field name="_gst_reserved" writable="1">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <record name="NetBuffer"
+            c:type="GstNetBuffer"
+            doc="buffer for use in network sources and sinks.
+It contains the source or destination address of the buffer.">
+      <field name="buffer" writable="1">
+        <type name="Gst.Buffer" c:type="GstBuffer"/>
+      </field>
+      <field name="from" writable="1">
+        <type name="NetAddress" c:type="GstNetAddress"/>
+      </field>
+      <field name="to" writable="1">
+        <type name="NetAddress" c:type="GstNetAddress"/>
+      </field>
+      <field name="_gst_reserved" writable="1">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <record name="NetBufferClass" c:type="GstNetBufferClass">
+      <field name="buffer_class" writable="1">
+        <type name="Gst.BufferClass" c:type="GstBufferClass"/>
+      </field>
+      <field name="_gst_reserved" writable="1">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <enumeration name="NetType"
+                 doc="The Address type used in #GstNetAddress."
+                 c:type="GstNetType">
+      <member name="unknown" value="0" c:identifier="GST_NET_TYPE_UNKNOWN"/>
+      <member name="ip4" value="1" c:identifier="GST_NET_TYPE_IP4"/>
+      <member name="ip6" value="2" c:identifier="GST_NET_TYPE_IP6"/>
+    </enumeration>
+    <function name="netaddress_equal"
+              c:identifier="gst_netaddress_equal"
+              doc="Compare two #GstNetAddress structures"
+              version="0.10.18">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="naddr1" transfer-ownership="none">
+          <type name="NetAddress" c:type="GstNetAddress*"/>
+        </parameter>
+        <parameter name="naddr2" transfer-ownership="none">
+          <type name="NetAddress" c:type="GstNetAddress*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="netaddress_get_address_bytes"
+              c:identifier="gst_netaddress_get_address_bytes"
+              doc="Get just the address bytes stored in @naddr into @address.
+Note that @port is expressed in network byte order, use g_ntohs() to convert
+it to host order. IP4 addresses are also stored in network byte order."
+              version="0.10.22">
+      <return-value transfer-ownership="none">
+        <type name="int" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="naddr" transfer-ownership="none">
+          <type name="NetAddress" c:type="GstNetAddress*"/>
+        </parameter>
+        <parameter name="address" transfer-ownership="none">
+          <type name="uint8" c:type="guint8"/>
+        </parameter>
+        <parameter name="port" direction="out" transfer-ownership="full">
+          <type name="uint16" c:type="guint16*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="netaddress_get_ip4_address"
+              c:identifier="gst_netaddress_get_ip4_address"
+              doc="Get the IPv4 address stored in @naddr into @address. This function requires
+that the address type of @naddr is of type #GST_NET_TYPE_IP4.
+Note that @port and @address are expressed in network byte order, use
+g_ntohs() and g_ntohl() to convert them to host order.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="naddr" transfer-ownership="none">
+          <type name="NetAddress" c:type="GstNetAddress*"/>
+        </parameter>
+        <parameter name="address" direction="out" transfer-ownership="full">
+          <type name="uint32" c:type="guint32*"/>
+        </parameter>
+        <parameter name="port" direction="out" transfer-ownership="full">
+          <type name="uint16" c:type="guint16*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="netaddress_get_ip6_address"
+              c:identifier="gst_netaddress_get_ip6_address"
+              doc="Get the IPv6 address stored in @naddr into @address.
+If @naddr is of type GST_NET_TYPE_IP4, the transitional IP6 address is
+returned.
+Note that @port is expressed in network byte order, use g_ntohs() to convert
+it to host order.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="naddr" transfer-ownership="none">
+          <type name="NetAddress" c:type="GstNetAddress*"/>
+        </parameter>
+        <parameter name="address" transfer-ownership="none">
+          <type name="uint8" c:type="guint8"/>
+        </parameter>
+        <parameter name="port" direction="out" transfer-ownership="full">
+          <type name="uint16" c:type="guint16*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="netaddress_get_net_type"
+              c:identifier="gst_netaddress_get_net_type"
+              doc="Get the type of address stored in @naddr.">
+      <return-value transfer-ownership="full">
+        <type name="NetType" c:type="GstNetType"/>
+      </return-value>
+      <parameters>
+        <parameter name="naddr" transfer-ownership="none">
+          <type name="NetAddress" c:type="GstNetAddress*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="netaddress_set_address_bytes"
+              c:identifier="gst_netaddress_set_address_bytes"
+              doc="Set just the address bytes stored in @naddr into @address.
+Note that @port must be expressed in network byte order, use g_htons() to
+convert it to network byte order order. IP4 address bytes must also be
+stored in network byte order."
+              version="0.10.22">
+      <return-value transfer-ownership="none">
+        <type name="int" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="naddr" transfer-ownership="none">
+          <type name="NetAddress" c:type="GstNetAddress*"/>
+        </parameter>
+        <parameter name="type" transfer-ownership="none">
+          <type name="NetType" c:type="GstNetType"/>
+        </parameter>
+        <parameter name="address" transfer-ownership="none">
+          <type name="uint8" c:type="guint8"/>
+        </parameter>
+        <parameter name="port" transfer-ownership="none">
+          <type name="uint16" c:type="guint16"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="netaddress_set_ip4_address"
+              c:identifier="gst_netaddress_set_ip4_address"
+              doc="Set @naddr with the IPv4 @address and @port pair.
+Note that @port and @address must be expressed in network byte order,
+use g_htons() and g_htonl() to convert them to network byte order.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="naddr" transfer-ownership="none">
+          <type name="NetAddress" c:type="GstNetAddress*"/>
+        </parameter>
+        <parameter name="address" transfer-ownership="none">
+          <type name="uint32" c:type="guint32"/>
+        </parameter>
+        <parameter name="port" transfer-ownership="none">
+          <type name="uint16" c:type="guint16"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="netaddress_set_ip6_address"
+              c:identifier="gst_netaddress_set_ip6_address"
+              doc="Set @naddr with the IPv6 @address and @port pair.
+Note that @port must be expressed in network byte order, use g_htons() to convert
+it to network byte order.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="naddr" transfer-ownership="none">
+          <type name="NetAddress" c:type="GstNetAddress*"/>
+        </parameter>
+        <parameter name="address" transfer-ownership="none">
+          <type name="uint8" c:type="guint8"/>
+        </parameter>
+        <parameter name="port" transfer-ownership="none">
+          <type name="uint16" c:type="guint16"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="netaddress_to_string"
+              c:identifier="gst_netaddress_to_string"
+              doc="Copies a string representation of @naddr into @dest. Up to @len bytes are
+copied.
+enough"
+              version="0.10.24">
+      <return-value transfer-ownership="none">
+        <type name="int" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="naddr" transfer-ownership="none">
+          <type name="NetAddress" c:type="GstNetAddress*"/>
+        </parameter>
+        <parameter name="dest" transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="len" transfer-ownership="none">
+          <type name="ulong" c:type="gulong"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="new"
+              c:identifier="gst_netbuffer_new"
+              doc="Create a new network buffer.">
+      <return-value transfer-ownership="full">
+        <type name="NetBuffer" c:type="GstNetBuffer*"/>
+      </return-value>
+    </function>
+  </namespace>
+</repository>
diff --git a/extra/gstreamer/netbuffer/ffi/ffi.factor b/extra/gstreamer/netbuffer/ffi/ffi.factor
new file mode 100644 (file)
index 0000000..c291a8b
--- /dev/null
@@ -0,0 +1,16 @@
+! Copyright (C) 2010 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: alien alien.libraries combinators kernel system
+gobject-introspection glib.ffi ;
+IN: gstreamer.netbuffer.ffi
+
+<<
+"gstreamer.netbuffer" {
+    { [ os winnt? ] [ drop ] }
+    { [ os macosx? ] [ drop ] }
+    { [ os unix? ] [ "libgstnetbuffer-0.10.so" cdecl add-library ] }
+} cond
+>>
+
+GIR: vocab:gstreamer/netbuffer/GstNetbuffer-0.10.gir
+
diff --git a/extra/gstreamer/netbuffer/netbuffer.factor b/extra/gstreamer/netbuffer/netbuffer.factor
new file mode 100644 (file)
index 0000000..7273c3a
--- /dev/null
@@ -0,0 +1,5 @@
+! Copyright (C) 2010 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: gstreamer.netbuffer.ffi ;
+IN: gstreamer.netbuffer
+
diff --git a/extra/gstreamer/pbutils/GstPbutils-0.10.gir b/extra/gstreamer/pbutils/GstPbutils-0.10.gir
new file mode 100644 (file)
index 0000000..c9748b3
--- /dev/null
@@ -0,0 +1,665 @@
+<?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.0"
+            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="GLib" version="2.0"/>
+  <include name="GModule" version="2.0"/>
+  <include name="GObject" version="2.0"/>
+  <include name="Gst" version="0.10"/>
+  <include name="libxml2" version="2.0"/>
+  <package name="gstreamer-0.10"/>
+  <c:include name="gst/pbutils/descriptions.h"/>
+  <c:include name="gst/pbutils/install-plugins.h"/>
+  <c:include name="gst/pbutils/missing-plugins.h"/>
+  <c:include name="gst/pbutils/pbutils-enumtypes.h"/>
+  <c:include name="gst/pbutils/pbutils.h"/>
+  <namespace name="GstPbutils"
+             version="0.10"
+             shared-library="libgstpbutils-0.10.so.0"
+             c:prefix="Gst">
+    <record name="InstallPluginsContext"
+            c:type="GstInstallPluginsContext"
+            doc="Opaque context structure for the plugin installation. Use the provided
+API to set details on it."
+            version="0.10.12"
+            glib:type-name="GstInstallPluginsContext"
+            glib:get-type="gst_install_plugins_context_get_type">
+      <constructor name="new"
+                   c:identifier="gst_install_plugins_context_new"
+                   doc="Creates a new #GstInstallPluginsContext.
+gst_install_plugins_context_free() when no longer needed"
+                   version="0.10.12">
+        <return-value transfer-ownership="full">
+          <type name="InstallPluginsContext"
+                c:type="GstInstallPluginsContext*"/>
+        </return-value>
+      </constructor>
+      <method name="free"
+              c:identifier="gst_install_plugins_context_free"
+              doc="Frees a #GstInstallPluginsContext."
+              version="0.10.12">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="set_xid"
+              c:identifier="gst_install_plugins_context_set_xid"
+              doc="This function is for X11-based applications (such as most Gtk/Qt
+applications on linux/unix) only. You can use it to tell the external
+installer the XID of your main application window. That way the installer
+can make its own window transient to your application window during the
+installation.
+If set, the XID will be passed to the installer via a --transient-for=XID
+command line option.
+Gtk+/Gnome application should be able to obtain the XID of the top-level
+window like this:
+&lt;programlisting&gt;
+##include &amp;lt;gtk/gtk.h&amp;gt;
+##ifdef GDK_WINDOWING_X11
+##include &amp;lt;gdk/gdkx.h&amp;gt;
+##endif
+...
+##ifdef GDK_WINDOWING_X11
+xid = GDK_WINDOW_XWINDOW (GTK_WIDGET (application_window)-&amp;gt;window);
+##endif
+...
+&lt;/programlisting&gt;"
+              version="0.10.12">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="xid"
+                     transfer-ownership="none"
+                     doc="of the top-level application">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <callback name="InstallPluginsResultFunc"
+              c:type="GstInstallPluginsResultFunc"
+              doc="The prototype of the callback function that will be called once the
+external plugin installer program has returned. You only need to provide
+a callback function if you are using the asynchronous interface."
+              version="0.10.12">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="result" transfer-ownership="none">
+          <type name="InstallPluginsReturn" c:type="GstInstallPluginsReturn"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="1">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <enumeration name="InstallPluginsReturn"
+                 doc="installed
+any of the requested plugins could be found. Only return this if nothing
+has been installed. Return #GST_INSTALL_PLUGINS_PARTIAL_SUCCESS if
+some (but not all) of the requested plugins could be installed.
+this happens, the  user has already seen an error message and another
+one should not be displayed
+(ie. death by signal)
+be installed, but not all
+indicate that everything went fine so far and the provided callback
+will be called with the result of the installation later
+occured when trying to start the installer
+actual installer is not installed
+installation is still in progress, try again later
+Result codes returned by gst_install_plugins_async() and
+gst_install_plugins_sync(), and also the result code passed to the
+#GstInstallPluginsResultFunc specified with gst_install_plugin_async().
+These codes indicate success or failure of starting an external installer
+program and to what extent the requested plugins could be installed."
+                 version="0.10.12"
+                 glib:type-name="GstInstallPluginsReturn"
+                 glib:get-type="gst_install_plugins_return_get_type"
+                 c:type="GstInstallPluginsReturn">
+      <member name="success"
+              value="0"
+              c:identifier="GST_INSTALL_PLUGINS_SUCCESS"
+              glib:nick="success"/>
+      <member name="not_found"
+              value="1"
+              c:identifier="GST_INSTALL_PLUGINS_NOT_FOUND"
+              glib:nick="not-found"/>
+      <member name="error"
+              value="2"
+              c:identifier="GST_INSTALL_PLUGINS_ERROR"
+              glib:nick="error"/>
+      <member name="partial_success"
+              value="3"
+              c:identifier="GST_INSTALL_PLUGINS_PARTIAL_SUCCESS"
+              glib:nick="partial-success"/>
+      <member name="user_abort"
+              value="4"
+              c:identifier="GST_INSTALL_PLUGINS_USER_ABORT"
+              glib:nick="user-abort"/>
+      <member name="crashed"
+              value="100"
+              c:identifier="GST_INSTALL_PLUGINS_CRASHED"
+              glib:nick="crashed"/>
+      <member name="invalid"
+              value="101"
+              c:identifier="GST_INSTALL_PLUGINS_INVALID"
+              glib:nick="invalid"/>
+      <member name="started_ok"
+              value="200"
+              c:identifier="GST_INSTALL_PLUGINS_STARTED_OK"
+              glib:nick="started-ok"/>
+      <member name="internal_failure"
+              value="201"
+              c:identifier="GST_INSTALL_PLUGINS_INTERNAL_FAILURE"
+              glib:nick="internal-failure"/>
+      <member name="helper_missing"
+              value="202"
+              c:identifier="GST_INSTALL_PLUGINS_HELPER_MISSING"
+              glib:nick="helper-missing"/>
+      <member name="install_in_progress"
+              value="203"
+              c:identifier="GST_INSTALL_PLUGINS_INSTALL_IN_PROGRESS"
+              glib:nick="install-in-progress"/>
+    </enumeration>
+    <function name="install_plugins_async"
+              c:identifier="gst_install_plugins_async"
+              doc="Requests plugin installation without blocking. Once the plugins have been
+installed or installation has failed, @func will be called with the result
+of the installation and your provided @user_data pointer.
+This function requires a running GLib/Gtk main loop. If you are not
+running a GLib/Gtk main loop, make sure to regularly call
+g_main_context_iteration(NULL,FALSE).
+The installer strings that make up @detail are typically obtained by
+calling gst_missing_plugin_message_get_installer_detail() on missing-plugin
+messages that have been caught on a pipeline&apos;s bus or created by the
+application via the provided API, such as gst_missing_element_message_new().
+It is possible to request the installation of multiple missing plugins in
+one go (as might be required if there is a demuxer for a certain format
+installed but no suitable video decoder and no suitable audio decoder)."
+              version="0.10.12">
+      <return-value transfer-ownership="full">
+        <type name="InstallPluginsReturn" c:type="GstInstallPluginsReturn"/>
+      </return-value>
+      <parameters>
+        <parameter name="details" transfer-ownership="none">
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </parameter>
+        <parameter name="ctx" transfer-ownership="none">
+          <type name="InstallPluginsContext"
+                c:type="GstInstallPluginsContext*"/>
+        </parameter>
+        <parameter name="func"
+                   transfer-ownership="none"
+                   scope="call"
+                   closure="3">
+          <type name="InstallPluginsResultFunc"
+                c:type="GstInstallPluginsResultFunc"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="install_plugins_installation_in_progress"
+              c:identifier="gst_install_plugins_installation_in_progress"
+              doc="Checks whether plugin installation (initiated by this application only)
+is currently in progress."
+              version="0.10.12">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+    </function>
+    <function name="install_plugins_return_get_name"
+              c:identifier="gst_install_plugins_return_get_name"
+              doc="Convenience function to return the descriptive string associated
+with a status code.  This function returns English strings and
+should not be used for user messages. It is here only to assist
+in debugging."
+              version="0.10.12">
+      <return-value transfer-ownership="none">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="ret" transfer-ownership="none">
+          <type name="InstallPluginsReturn" c:type="GstInstallPluginsReturn"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="install_plugins_supported"
+              c:identifier="gst_install_plugins_supported"
+              doc="Checks whether plugin installation is likely to be supported by the
+current environment. This currently only checks whether the helper script
+that is to be provided by the distribution or operating system vendor
+exists."
+              version="0.10.15">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+    </function>
+    <function name="install_plugins_sync"
+              c:identifier="gst_install_plugins_sync"
+              doc="Requests plugin installation and block until the plugins have been
+installed or installation has failed.
+This function should almost never be used, it only exists for cases where
+a non-GLib main loop is running and the user wants to run it in a separate
+thread and marshal the result back asynchronously into the main thread
+using the other non-GLib main loop. You should almost always use
+gst_install_plugins_async() instead of this function."
+              version="0.10.12">
+      <return-value transfer-ownership="full">
+        <type name="InstallPluginsReturn" c:type="GstInstallPluginsReturn"/>
+      </return-value>
+      <parameters>
+        <parameter name="details" transfer-ownership="none">
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </parameter>
+        <parameter name="ctx" transfer-ownership="none">
+          <type name="InstallPluginsContext"
+                c:type="GstInstallPluginsContext*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="is_missing_plugin_message"
+              c:identifier="gst_is_missing_plugin_message"
+              doc="Checks whether @msg is a missing plugins message.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="msg" transfer-ownership="none">
+          <type name="Gst.Message" c:type="GstMessage*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="missing_decoder_installer_detail_new"
+              c:identifier="gst_missing_decoder_installer_detail_new"
+              doc="Returns an opaque string containing all the details about the missing
+element to be passed to an external installer called via
+gst_install_plugins_async() or gst_install_plugins_sync().
+This function is mainly for applications that call external plugin
+installation mechanisms using one of the two above-mentioned functions in
+the case where the application knows exactly what kind of plugin it is
+missing.
+with g_free() when not needed any longer."
+              version="0.10.15">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="decode_caps"
+                   transfer-ownership="none"
+                   doc="caps for which a decoder element is needed">
+          <type name="Gst.Caps" c:type="GstCaps*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="missing_decoder_message_new"
+              c:identifier="gst_missing_decoder_message_new"
+              doc="Creates a missing-plugin message for @element to notify the application
+that a decoder element for a particular set of (fixed) caps is missing.
+This function is mainly for use in plugins.">
+      <return-value transfer-ownership="full">
+        <type name="Gst.Message" c:type="GstMessage*"/>
+      </return-value>
+      <parameters>
+        <parameter name="element" transfer-ownership="none">
+          <type name="Gst.Element" c:type="GstElement*"/>
+        </parameter>
+        <parameter name="decode_caps"
+                   transfer-ownership="none"
+                   doc="caps for which a decoder element is needed">
+          <type name="Gst.Caps" c:type="GstCaps*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="missing_element_installer_detail_new"
+              c:identifier="gst_missing_element_installer_detail_new"
+              doc="e.g. &quot;videoscale&quot; or &quot;cdparanoiasrc&quot;
+Returns an opaque string containing all the details about the missing
+element to be passed to an external installer called via
+gst_install_plugins_async() or gst_install_plugins_sync().
+This function is mainly for applications that call external plugin
+installation mechanisms using one of the two above-mentioned functions in
+the case where the application knows exactly what kind of plugin it is
+missing.
+with g_free() when not needed any longer."
+              version="0.10.15">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="factory_name" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="missing_element_message_new"
+              c:identifier="gst_missing_element_message_new"
+              doc="e.g. &quot;videoscale&quot; or &quot;cdparanoiasrc&quot;
+Creates a missing-plugin message for @element to notify the application
+that a certain required element is missing. This function is mainly for
+use in plugins.">
+      <return-value transfer-ownership="full">
+        <type name="Gst.Message" c:type="GstMessage*"/>
+      </return-value>
+      <parameters>
+        <parameter name="element" transfer-ownership="none">
+          <type name="Gst.Element" c:type="GstElement*"/>
+        </parameter>
+        <parameter name="factory_name" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="missing_encoder_installer_detail_new"
+              c:identifier="gst_missing_encoder_installer_detail_new"
+              doc="Returns an opaque string containing all the details about the missing
+element to be passed to an external installer called via
+gst_install_plugins_async() or gst_install_plugins_sync().
+This function is mainly for applications that call external plugin
+installation mechanisms using one of the two above-mentioned functions in
+the case where the application knows exactly what kind of plugin it is
+missing.
+with g_free() when not needed any longer."
+              version="0.10.15">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="encode_caps"
+                   transfer-ownership="none"
+                   doc="caps for which an encoder element is needed">
+          <type name="Gst.Caps" c:type="GstCaps*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="missing_encoder_message_new"
+              c:identifier="gst_missing_encoder_message_new"
+              doc="Creates a missing-plugin message for @element to notify the application
+that an encoder element for a particular set of (fixed) caps is missing.
+This function is mainly for use in plugins.">
+      <return-value transfer-ownership="full">
+        <type name="Gst.Message" c:type="GstMessage*"/>
+      </return-value>
+      <parameters>
+        <parameter name="element" transfer-ownership="none">
+          <type name="Gst.Element" c:type="GstElement*"/>
+        </parameter>
+        <parameter name="encode_caps"
+                   transfer-ownership="none"
+                   doc="caps for which an encoder element is needed">
+          <type name="Gst.Caps" c:type="GstCaps*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="missing_plugin_message_get_description"
+              c:identifier="gst_missing_plugin_message_get_description"
+              doc="Returns a localised string describing the missing feature, for use in
+error dialogs and the like. Should never return NULL unless @msg is not
+a valid missing-plugin message.
+This function is mainly for applications that need a human-readable string
+describing a missing plugin, given a previously collected missing-plugin
+message
+string with g_free() when not needed any longer.">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="msg" transfer-ownership="none">
+          <type name="Gst.Message" c:type="GstMessage*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="missing_plugin_message_get_installer_detail"
+              c:identifier="gst_missing_plugin_message_get_installer_detail"
+              doc="Returns an opaque string containing all the details about the missing
+element to be passed to an external installer called via
+gst_install_plugins_async() or gst_install_plugins_sync().
+This function is mainly for applications that call external plugin
+installation mechanisms using one of the two above-mentioned functions.
+with g_free() when not needed any longer.">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="msg" transfer-ownership="none">
+          <type name="Gst.Message" c:type="GstMessage*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="missing_uri_sink_installer_detail_new"
+              c:identifier="gst_missing_uri_sink_installer_detail_new"
+              doc="e.g. &quot;http&quot; or &quot;mms&quot;
+Returns an opaque string containing all the details about the missing
+element to be passed to an external installer called via
+gst_install_plugins_async() or gst_install_plugins_sync().
+This function is mainly for applications that call external plugin
+installation mechanisms using one of the two above-mentioned functions in
+the case where the application knows exactly what kind of plugin it is
+missing.
+with g_free() when not needed any longer."
+              version="0.10.15">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="protocol" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="missing_uri_sink_message_new"
+              c:identifier="gst_missing_uri_sink_message_new"
+              doc="e.g. &quot;http&quot; or &quot;smb&quot;
+Creates a missing-plugin message for @element to notify the application
+that a sink element for a particular URI protocol is missing. This
+function is mainly for use in plugins.">
+      <return-value transfer-ownership="full">
+        <type name="Gst.Message" c:type="GstMessage*"/>
+      </return-value>
+      <parameters>
+        <parameter name="element" transfer-ownership="none">
+          <type name="Gst.Element" c:type="GstElement*"/>
+        </parameter>
+        <parameter name="protocol" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="missing_uri_source_installer_detail_new"
+              c:identifier="gst_missing_uri_source_installer_detail_new"
+              doc="e.g. &quot;http&quot; or &quot;mms&quot;
+Returns an opaque string containing all the details about the missing
+element to be passed to an external installer called via
+gst_install_plugins_async() or gst_install_plugins_sync().
+This function is mainly for applications that call external plugin
+installation mechanisms using one of the two above-mentioned functions in
+the case where the application knows exactly what kind of plugin it is
+missing.
+with g_free() when not needed any longer."
+              version="0.10.15">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="protocol" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="missing_uri_source_message_new"
+              c:identifier="gst_missing_uri_source_message_new"
+              doc="e.g. &quot;http&quot; or &quot;mms&quot;
+Creates a missing-plugin message for @element to notify the application
+that a source element for a particular URI protocol is missing. This
+function is mainly for use in plugins.">
+      <return-value transfer-ownership="full">
+        <type name="Gst.Message" c:type="GstMessage*"/>
+      </return-value>
+      <parameters>
+        <parameter name="element" transfer-ownership="none">
+          <type name="Gst.Element" c:type="GstElement*"/>
+        </parameter>
+        <parameter name="protocol" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="pb_utils_add_codec_description_to_tag_list"
+              c:identifier="gst_pb_utils_add_codec_description_to_tag_list"
+              doc="#GST_TAG_VIDEO_CODEC or #GST_TAG_CODEC
+Adds a codec tag describing the format specified by @caps to @taglist.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="taglist" transfer-ownership="none">
+          <type name="Gst.TagList" c:type="GstTagList*"/>
+        </parameter>
+        <parameter name="codec_tag" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="caps"
+                   transfer-ownership="none"
+                   doc="#GstCaps for which a codec tag should be added.">
+          <type name="Gst.Caps" c:type="GstCaps*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="pb_utils_get_codec_description"
+              c:identifier="gst_pb_utils_get_codec_description"
+              doc="Returns a localised (as far as this is possible) string describing the
+media format specified in @caps, for use in error dialogs or other messages
+to be seen by the user. Should never return NULL unless @caps is invalid.
+Also see the convenience function
+gst_pb_utils_add_codec_description_to_tag_list().
+string with g_free() when not needed any longer.">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="caps"
+                   transfer-ownership="none"
+                   doc="#GstCaps for which an format description is needed">
+          <type name="Gst.Caps" c:type="GstCaps*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="pb_utils_get_decoder_description"
+              c:identifier="gst_pb_utils_get_decoder_description"
+              doc="Returns a localised string describing an decoder for the format specified
+in @caps, for use in error dialogs or other messages to be seen by the user.
+Should never return NULL unless @factory_name or @caps are invalid.
+This function is mainly for internal use, applications would typically
+use gst_missing_plugin_message_get_description() to get a description of
+a missing feature from a missing-plugin message.
+string with g_free() when not needed any longer.">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="caps"
+                   transfer-ownership="none"
+                   doc="#GstCaps for which an decoder description is needed">
+          <type name="Gst.Caps" c:type="GstCaps*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="pb_utils_get_element_description"
+              c:identifier="gst_pb_utils_get_element_description"
+              doc="Returns a localised string describing the given element, for use in
+error dialogs or other messages to be seen by the user. Should never
+return NULL unless @factory_name is invalid.
+This function is mainly for internal use, applications would typically
+use gst_missing_plugin_message_get_description() to get a description of
+a missing feature from a missing-plugin message.
+string with g_free() when not needed any longer.">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="factory_name" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="pb_utils_get_encoder_description"
+              c:identifier="gst_pb_utils_get_encoder_description"
+              doc="Returns a localised string describing an encoder for the format specified
+in @caps, for use in error dialogs or other messages to be seen by the user.
+Should never return NULL unless @factory_name or @caps are invalid.
+This function is mainly for internal use, applications would typically
+use gst_missing_plugin_message_get_description() to get a description of
+a missing feature from a missing-plugin message.
+string with g_free() when not needed any longer.">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="caps"
+                   transfer-ownership="none"
+                   doc="#GstCaps for which an encoder description is needed">
+          <type name="Gst.Caps" c:type="GstCaps*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="pb_utils_get_sink_description"
+              c:identifier="gst_pb_utils_get_sink_description"
+              doc="Returns a localised string describing a sink element handling the protocol
+specified in @protocol, for use in error dialogs or other messages to be
+seen by the user. Should never return NULL unless @protocol is invalid.
+This function is mainly for internal use, applications would typically
+use gst_missing_plugin_message_get_description() to get a description of
+a missing feature from a missing-plugin message.
+string with g_free() when not needed any longer.">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="protocol" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="pb_utils_get_source_description"
+              c:identifier="gst_pb_utils_get_source_description"
+              doc="Returns a localised string describing a source element handling the protocol
+specified in @protocol, for use in error dialogs or other messages to be
+seen by the user. Should never return NULL unless @protocol is invalid.
+This function is mainly for internal use, applications would typically
+use gst_missing_plugin_message_get_description() to get a description of
+a missing feature from a missing-plugin message.
+string with g_free() when not needed any longer.">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="protocol" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="pb_utils_init"
+              c:identifier="gst_pb_utils_init"
+              doc="Initialises the base utils support library. This function is not
+thread-safe. Applications should call it after calling gst_init(),
+plugins should call it from their plugin_init function.
+This function may be called multiple times. It will do nothing if the
+library has already been initialised."
+              version="0.10.12">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+  </namespace>
+</repository>
diff --git a/extra/gstreamer/pbutils/ffi/ffi.factor b/extra/gstreamer/pbutils/ffi/ffi.factor
new file mode 100644 (file)
index 0000000..f494c51
--- /dev/null
@@ -0,0 +1,16 @@
+! Copyright (C) 2010 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: alien alien.libraries combinators kernel system
+gobject-introspection glib.ffi gstreamer.ffi ;
+IN: gstreamer.pbutils.ffi
+
+<<
+"gstreamer.pbutils" {
+    { [ os winnt? ] [ drop ] }
+    { [ os macosx? ] [ drop ] }
+    { [ os unix? ] [ "libgstpbutils-0.10.so" cdecl add-library ] }
+} cond
+>>
+
+GIR: vocab:gstreamer/pbutils/GstPbutils-0.10.gir
+
diff --git a/extra/gstreamer/pbutils/pbutils.factor b/extra/gstreamer/pbutils/pbutils.factor
new file mode 100644 (file)
index 0000000..9010553
--- /dev/null
@@ -0,0 +1,5 @@
+! Copyright (C) 2010 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: gstreamer.pbutils.ffi ;
+IN: gstreamer.pbutils
+
diff --git a/extra/gstreamer/riff/GstRiff-0.10.gir b/extra/gstreamer/riff/GstRiff-0.10.gir
new file mode 100644 (file)
index 0000000..d3c7519
--- /dev/null
@@ -0,0 +1,983 @@
+<?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.0"
+            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="GLib" version="2.0"/>
+  <include name="GModule" version="2.0"/>
+  <include name="GObject" version="2.0"/>
+  <include name="Gst" version="0.10"/>
+  <include name="GstAudio" version="0.10"/>
+  <include name="GstBase" version="0.10"/>
+  <include name="GstInterfaces" version="0.10"/>
+  <include name="GstTag" version="0.10"/>
+  <include name="libxml2" version="2.0"/>
+  <package name="gstreamer-0.10"/>
+  <package name="gstreamer-audio-0.10"/>
+  <package name="gstreamer-interfaces-0.10"/>
+  <package name="gstreamer-tag-0.10"/>
+  <c:include name="gst/riff/riff-ids.h"/>
+  <c:include name="gst/riff/riff-media.h"/>
+  <c:include name="gst/riff/riff-read.h"/>
+  <namespace name="GstRiff"
+             version="0.10"
+             shared-library="libgstriff-0.10.so.0"
+             c:prefix="Gst">
+    <constant name="IBM_FORMAT_ADPCM" value="259">
+      <type name="int"/>
+    </constant>
+    <constant name="IBM_FORMAT_ALAW" value="258">
+      <type name="int"/>
+    </constant>
+    <constant name="IBM_FORMAT_MULAW" value="257">
+      <type name="int"/>
+    </constant>
+    <constant name="IF_KEYFRAME" value="16">
+      <type name="int"/>
+    </constant>
+    <constant name="IF_LIST" value="1">
+      <type name="int"/>
+    </constant>
+    <constant name="IF_NO_TIME" value="256">
+      <type name="int"/>
+    </constant>
+    <constant name="STRH_DISABLED" value="1">
+      <type name="int"/>
+    </constant>
+    <constant name="STRH_VIDEOPALCHANGES" value="65536">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_A52" value="8192">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_AAC" value="255">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_AAC_AC" value="16707">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_AAC_pm" value="28781">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_ADPCM" value="2">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_ADPCM_IMA_DK3" value="98">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_ADPCM_IMA_DK4" value="97">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_ADPCM_IMA_WAV" value="105">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_ALAW" value="6">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_AMR_NB" value="87">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_AMR_WB" value="88">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_APTX" value="37">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_AUDIOFILE_AF10" value="38">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_AUDIOFILE_AF36" value="36">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_BTV_DIGITAL" value="1024">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_CANOPUS_ATRAC" value="99">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_CIRRUS" value="96">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_CONTROL_RES_CR10" value="55">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_CONTROL_RES_VQLPC" value="52">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_CREATIVE_ADPCM" value="512">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_CREATIVE_FASTSPEECH10" value="515">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_CREATIVE_FASTSPEECH8" value="514">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_CS2" value="608">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_CS_IMAADPCM" value="57">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_CU_CODEC" value="25">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_DF_G726" value="133">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_DF_GSM610" value="134">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_DIALOGIC_OKI_ADPCM" value="23">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_DIGIADPCM" value="54">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_DIGIFIX" value="22">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_DIGIREAL" value="53">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_DIGISTD" value="21">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_DIGITAL_G723" value="291">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_DOLBY_AC2" value="48">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_DOLBY_AC3_SPDIF" value="146">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_DSAT_DISPLAY" value="103">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_DSP_TRUESPEECH" value="34">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_DTS" value="8193">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_DVI_ADPCM" value="17">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_ECHOSC1" value="35">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_ECHOSC3" value="58">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_ESPCM" value="97">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_EXTENSIBLE" value="65534">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_FLAC" value="61868">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_FM_TOWNS_SND" value="768">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_G722_ADPCM" value="101">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_G723_ADPCM" value="20">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_G726ADPCM" value="320">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_G726_ADPCM" value="100">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_G728_CELP" value="65">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_G729A" value="131">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_GSM610" value="49">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_GSM_AMR_CBR" value="31265">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_GSM_AMR_VBR" value="31266">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_IBM_CVSD" value="5">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_IEEE_FLOAT" value="3">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_ILINK_VC" value="560">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_IMC" value="1025">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_IPI_HSX" value="592">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_IPI_RPELP" value="593">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_ISIAUDIO" value="136">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_ITU_G721_ADPCM" value="64">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_LH_CODEC" value="4352">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_LRC" value="40">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_LUCENT_G723" value="89">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_MALDEN_PHONYTALK" value="160">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_MEDIASONIC_G723" value="147">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_MEDIASPACE_ADPCM" value="18">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_MEDIAVISION_ADPCM" value="24">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_MPEGL12" value="80">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_MPEGL3" value="85">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_MSG723" value="66">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_MSN" value="50">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_MSRT24" value="130">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_MULAW" value="7">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_MVI_MVI2" value="132">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_NMS_VBXADPCM" value="56">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_NORRIS" value="5120">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_OKI_ADPCM" value="16">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_OLIADPCM" value="4097">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_OLICELP" value="4098">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_OLIGSM" value="4096">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_OLIOPR" value="4100">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_OLISBC" value="4099">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_ONLIVE" value="137">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_PAC" value="83">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_PACKED" value="153">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_PCM" value="1">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_PHILIPS_LPCBB" value="152">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_PROSODY_1612" value="39">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_PROSODY_8KBPS" value="148">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_QDESIGN_MUSIC" value="1104">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_QUALCOMM_HALFRATE" value="337">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_QUALCOMM_PUREVOICE" value="336">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_QUARTERDECK" value="544">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_RAW_SPORT" value="576">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_RHETOREX_ADPCM" value="256">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_ROCKWELL_ADPCM" value="59">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_ROCKWELL_DIGITALK" value="60">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_RT24" value="82">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_SANYO_LD_ADPCM" value="293">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_SBC24" value="145">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_SIERRA_ADPCM" value="19">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_SIPROLAB_ACELP4800" value="305">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_SIPROLAB_ACELP8V3" value="306">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_SIPROLAB_ACEPLNET" value="304">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_SIPROLAB_G729" value="307">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_SIPROLAB_G729A" value="308">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_SIPROLAB_KELVIN" value="309">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_SIREN" value="654">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_SOFTSOUND" value="128">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_SONARC" value="33">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_SONIC" value="8264">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_SONIC_LS" value="8264">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_SONY_ATRAC3" value="624">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_SOUNDSPACE_MUSICOMPRESS" value="5376">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_TPC" value="1665">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_TUBGSM" value="341">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_UHER_ADPCM" value="528">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_UNKNOWN" value="0">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_VIVO_G723" value="273">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_VIVO_SIREN" value="274">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_VME_VMPCM" value="1664">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_VORBIS1" value="26447">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_VORBIS1PLUS" value="26479">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_VORBIS2" value="26448">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_VORBIS2PLUS" value="26480">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_VORBIS3" value="26449">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_VORBIS3PLUS" value="26481">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_VOXWARE" value="98">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_VOXWARE_AC10" value="113">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_VOXWARE_AC16" value="114">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_VOXWARE_AC20" value="115">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_VOXWARE_AC8" value="112">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_VOXWARE_BYTE_ALIGNED" value="105">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_VOXWARE_METASOUND" value="117">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_VOXWARE_METAVOICE" value="116">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_VOXWARE_RT29HW" value="118">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_VOXWARE_TQ40" value="121">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_VOXWARE_TQ60" value="129">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_VOXWARE_VR12" value="119">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_VOXWARE_VR18" value="120">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_VSELP" value="4">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_WMAV1" value="352">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_WMAV2" value="353">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_WMAV3" value="354">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_WMAV3_L" value="355">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_WMS" value="10">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_XEBEC" value="61">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_YAMAHA_ADPCM" value="32">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_ZYXEL_ADPCM" value="151">
+      <type name="int"/>
+    </constant>
+    <function name="create_audio_caps"
+              c:identifier="gst_riff_create_audio_caps">
+      <return-value transfer-ownership="full">
+        <type name="Gst.Caps" c:type="GstCaps*"/>
+      </return-value>
+      <parameters>
+        <parameter name="codec_id" transfer-ownership="none">
+          <type name="uint16" c:type="guint16"/>
+        </parameter>
+        <parameter name="strh" transfer-ownership="none">
+          <type name="riff_strh" c:type="gst_riff_strh*"/>
+        </parameter>
+        <parameter name="strf" transfer-ownership="none">
+          <type name="riff_strf_auds" c:type="gst_riff_strf_auds*"/>
+        </parameter>
+        <parameter name="strf_data" transfer-ownership="none">
+          <type name="Gst.Buffer" c:type="GstBuffer*"/>
+        </parameter>
+        <parameter name="strd_data" transfer-ownership="none">
+          <type name="Gst.Buffer" c:type="GstBuffer*"/>
+        </parameter>
+        <parameter name="codec_name" transfer-ownership="none">
+          <array c:type="char**">
+            <type name="utf8"/>
+          </array>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="create_audio_template_caps"
+              c:identifier="gst_riff_create_audio_template_caps">
+      <return-value transfer-ownership="full">
+        <type name="Gst.Caps" c:type="GstCaps*"/>
+      </return-value>
+    </function>
+    <function name="create_iavs_caps" c:identifier="gst_riff_create_iavs_caps">
+      <return-value transfer-ownership="full">
+        <type name="Gst.Caps" c:type="GstCaps*"/>
+      </return-value>
+      <parameters>
+        <parameter name="codec_fcc" transfer-ownership="none">
+          <type name="uint32" c:type="guint32"/>
+        </parameter>
+        <parameter name="strh" transfer-ownership="none">
+          <type name="riff_strh" c:type="gst_riff_strh*"/>
+        </parameter>
+        <parameter name="strf" transfer-ownership="none">
+          <type name="riff_strf_iavs" c:type="gst_riff_strf_iavs*"/>
+        </parameter>
+        <parameter name="strf_data" transfer-ownership="none">
+          <type name="Gst.Buffer" c:type="GstBuffer*"/>
+        </parameter>
+        <parameter name="strd_data" transfer-ownership="none">
+          <type name="Gst.Buffer" c:type="GstBuffer*"/>
+        </parameter>
+        <parameter name="codec_name" transfer-ownership="none">
+          <array c:type="char**">
+            <type name="utf8"/>
+          </array>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="create_iavs_template_caps"
+              c:identifier="gst_riff_create_iavs_template_caps">
+      <return-value transfer-ownership="full">
+        <type name="Gst.Caps" c:type="GstCaps*"/>
+      </return-value>
+    </function>
+    <function name="create_video_caps"
+              c:identifier="gst_riff_create_video_caps"
+              doc="data that is within the range of strf.size, but excluding any
+additional data withint this chunk but outside strf.size.
+chunk outside reach of strf.size. Ususally a palette.
+chunk. Usually codec initialization data.">
+      <return-value transfer-ownership="full">
+        <type name="Gst.Caps" c:type="GstCaps*"/>
+      </return-value>
+      <parameters>
+        <parameter name="codec_fcc" transfer-ownership="none">
+          <type name="uint32" c:type="guint32"/>
+        </parameter>
+        <parameter name="strh" transfer-ownership="none">
+          <type name="riff_strh" c:type="gst_riff_strh*"/>
+        </parameter>
+        <parameter name="strf" transfer-ownership="none">
+          <type name="riff_strf_vids" c:type="gst_riff_strf_vids*"/>
+        </parameter>
+        <parameter name="strf_data" transfer-ownership="none">
+          <type name="Gst.Buffer" c:type="GstBuffer*"/>
+        </parameter>
+        <parameter name="strd_data" transfer-ownership="none">
+          <type name="Gst.Buffer" c:type="GstBuffer*"/>
+        </parameter>
+        <parameter name="codec_name" transfer-ownership="none">
+          <array c:type="char**">
+            <type name="utf8"/>
+          </array>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="create_video_template_caps"
+              c:identifier="gst_riff_create_video_template_caps">
+      <return-value transfer-ownership="full">
+        <type name="Gst.Caps" c:type="GstCaps*"/>
+      </return-value>
+    </function>
+    <function name="init"
+              c:identifier="gst_riff_init"
+              doc="Initialize riff library.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="parse_chunk"
+              c:identifier="gst_riff_parse_chunk"
+              doc="by the read size by this function.
+chunk data, which may be NULL if chunksize == 0
+Reads a single chunk.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="element" transfer-ownership="none">
+          <type name="Gst.Element" c:type="GstElement*"/>
+        </parameter>
+        <parameter name="buf" transfer-ownership="none">
+          <type name="Gst.Buffer" c:type="GstBuffer*"/>
+        </parameter>
+        <parameter name="offset" direction="out" transfer-ownership="full">
+          <type name="uint" c:type="guint*"/>
+        </parameter>
+        <parameter name="fourcc" direction="out" transfer-ownership="full">
+          <type name="uint32" c:type="guint32*"/>
+        </parameter>
+        <parameter name="chunk_data"
+                   transfer-ownership="none"
+                   doc="containing the">
+          <type name="Gst.Buffer" c:type="GstBuffer**"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="parse_file_header"
+              c:identifier="gst_riff_parse_file_header"
+              doc="should be at least 12 bytes long.
+type of document (according to the header).
+Reads the first few bytes from the provided buffer, checks
+if this stream is a RIFF stream, and determines document type.
+This function takes ownership of @buf so it should not be used anymore
+after calling this function.
+caller should error out; we already throw an error), or TRUE
+if it is.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="element" transfer-ownership="none">
+          <type name="Gst.Element" c:type="GstElement*"/>
+        </parameter>
+        <parameter name="buf" transfer-ownership="none">
+          <type name="Gst.Buffer" c:type="GstBuffer*"/>
+        </parameter>
+        <parameter name="doctype"
+                   direction="out"
+                   transfer-ownership="full"
+                   doc="to indicate the">
+          <type name="uint32" c:type="guint32*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="parse_info"
+              c:identifier="gst_riff_parse_info"
+              doc="containing information about this stream. May be
+NULL if no supported tags were found.
+Parses stream metadata from input data.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="element" transfer-ownership="none">
+          <type name="Gst.Element" c:type="GstElement*"/>
+        </parameter>
+        <parameter name="buf" transfer-ownership="none">
+          <type name="Gst.Buffer" c:type="GstBuffer*"/>
+        </parameter>
+        <parameter name="taglist" transfer-ownership="none">
+          <type name="Gst.TagList" c:type="GstTagList**"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="parse_strf_auds"
+              c:identifier="gst_riff_parse_strf_auds"
+              doc="strf/auds structure. Caller should free it.
+containing extradata for this particular stream (e.g.
+codec initialization data).
+Parses an audio stream´s strf structure plus optionally some
+extradata from input data. This function takes ownership of @buf.
+use.
+should be skipped on error, but it is not fatal.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="element" transfer-ownership="none">
+          <type name="Gst.Element" c:type="GstElement*"/>
+        </parameter>
+        <parameter name="buf" transfer-ownership="none">
+          <type name="Gst.Buffer" c:type="GstBuffer*"/>
+        </parameter>
+        <parameter name="strf" transfer-ownership="none" doc="to a filled-in">
+          <type name="riff_strf_auds" c:type="gst_riff_strf_auds**"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none" doc="to a buffer">
+          <type name="Gst.Buffer" c:type="GstBuffer**"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="parse_strf_iavs"
+              c:identifier="gst_riff_parse_strf_iavs"
+              doc="strf/iavs structure. Caller should free it.
+containing extradata for this particular stream (e.g.
+codec initialization data).
+Parses a interleaved (also known as &quot;complex&quot;)  stream´s strf
+structure plus optionally some extradata from input data. This
+function takes ownership of @buf.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="element" transfer-ownership="none">
+          <type name="Gst.Element" c:type="GstElement*"/>
+        </parameter>
+        <parameter name="buf" transfer-ownership="none">
+          <type name="Gst.Buffer" c:type="GstBuffer*"/>
+        </parameter>
+        <parameter name="strf" transfer-ownership="none" doc="to a filled-in">
+          <type name="riff_strf_iavs" c:type="gst_riff_strf_iavs**"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none" doc="to a buffer">
+          <type name="Gst.Buffer" c:type="GstBuffer**"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="parse_strf_vids"
+              c:identifier="gst_riff_parse_strf_vids"
+              doc="strf/vids structure. Caller should free it.
+containing extradata for this particular stream (e.g.
+palette, codec initialization data).
+Parses a video stream´s strf structure plus optionally some
+extradata from input data. This function takes ownership of @buf.
+should be skipped on error, but it is not fatal.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="element" transfer-ownership="none">
+          <type name="Gst.Element" c:type="GstElement*"/>
+        </parameter>
+        <parameter name="buf" transfer-ownership="none">
+          <type name="Gst.Buffer" c:type="GstBuffer*"/>
+        </parameter>
+        <parameter name="strf" transfer-ownership="none" doc="to a filled-in">
+          <type name="riff_strf_vids" c:type="gst_riff_strf_vids**"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none" doc="to a buffer">
+          <type name="Gst.Buffer" c:type="GstBuffer**"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="parse_strh"
+              c:identifier="gst_riff_parse_strh"
+              doc="strh structure. Caller should free it.
+Parses a strh structure from input data. Takes ownership of @buf.
+should be skipped on error, but it is not fatal.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="element" transfer-ownership="none">
+          <type name="Gst.Element" c:type="GstElement*"/>
+        </parameter>
+        <parameter name="buf" transfer-ownership="none">
+          <type name="Gst.Buffer" c:type="GstBuffer*"/>
+        </parameter>
+        <parameter name="strh" transfer-ownership="none" doc="to a filled-in">
+          <type name="riff_strh" c:type="gst_riff_strh**"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="read_chunk"
+              c:identifier="gst_riff_read_chunk"
+              doc="Reads a single chunk of data. Since 0.10.8 &apos;JUNK&apos; chunks
+are skipped automatically.">
+      <return-value transfer-ownership="full">
+        <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+      </return-value>
+      <parameters>
+        <parameter name="element" transfer-ownership="none">
+          <type name="Gst.Element" c:type="GstElement*"/>
+        </parameter>
+        <parameter name="pad" transfer-ownership="none">
+          <type name="Gst.Pad" c:type="GstPad*"/>
+        </parameter>
+        <parameter name="offset" direction="out" transfer-ownership="full">
+          <type name="uint64" c:type="guint64*"/>
+        </parameter>
+        <parameter name="tag" direction="out" transfer-ownership="full">
+          <type name="uint32" c:type="guint32*"/>
+        </parameter>
+        <parameter name="chunk_data" transfer-ownership="none">
+          <type name="Gst.Buffer" c:type="GstBuffer**"/>
+        </parameter>
+      </parameters>
+    </function>
+    <record name="riff_acid" c:type="_gst_riff_acid">
+      <field name="loop_type" writable="1">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+      <field name="root_note" writable="1">
+        <type name="uint16" c:type="guint16"/>
+      </field>
+      <field name="unknown1" writable="1">
+        <type name="uint16" c:type="guint16"/>
+      </field>
+      <field name="unknown2" writable="1">
+        <type name="float" c:type="gfloat"/>
+      </field>
+      <field name="number_of_beats" writable="1">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+      <field name="meter_d" writable="1">
+        <type name="uint16" c:type="guint16"/>
+      </field>
+      <field name="meter_n" writable="1">
+        <type name="uint16" c:type="guint16"/>
+      </field>
+      <field name="tempo" writable="1">
+        <type name="float" c:type="gfloat"/>
+      </field>
+    </record>
+    <record name="riff_dmlh" c:type="_gst_riff_dmlh">
+      <field name="totalframes" writable="1">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+    </record>
+    <record name="riff_index_entry" c:type="_gst_riff_index_entry">
+      <field name="id" writable="1">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+      <field name="flags" writable="1">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+      <field name="offset" writable="1">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+      <field name="size" writable="1">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+    </record>
+    <record name="riff_strf_auds" c:type="_gst_riff_strf_auds">
+      <field name="format" writable="1">
+        <type name="uint16" c:type="guint16"/>
+      </field>
+      <field name="channels" writable="1">
+        <type name="uint16" c:type="guint16"/>
+      </field>
+      <field name="rate" writable="1">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+      <field name="av_bps" writable="1">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+      <field name="blockalign" writable="1">
+        <type name="uint16" c:type="guint16"/>
+      </field>
+      <field name="size" writable="1">
+        <type name="uint16" c:type="guint16"/>
+      </field>
+    </record>
+    <record name="riff_strf_iavs" c:type="_gst_riff_strf_iavs">
+      <field name="DVAAuxSrc" writable="1">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+      <field name="DVAAuxCtl" writable="1">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+      <field name="DVAAuxSrc1" writable="1">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+      <field name="DVAAuxCtl1" writable="1">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+      <field name="DVVAuxSrc" writable="1">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+      <field name="DVVAuxCtl" writable="1">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+      <field name="DVReserved1" writable="1">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+      <field name="DVReserved2" writable="1">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+    </record>
+    <record name="riff_strf_vids" c:type="_gst_riff_strf_vids">
+      <field name="size" writable="1">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+      <field name="width" writable="1">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+      <field name="height" writable="1">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+      <field name="planes" writable="1">
+        <type name="uint16" c:type="guint16"/>
+      </field>
+      <field name="bit_cnt" writable="1">
+        <type name="uint16" c:type="guint16"/>
+      </field>
+      <field name="compression" writable="1">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+      <field name="image_size" writable="1">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+      <field name="xpels_meter" writable="1">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+      <field name="ypels_meter" writable="1">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+      <field name="num_colors" writable="1">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+      <field name="imp_colors" writable="1">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+    </record>
+    <record name="riff_strh" c:type="_gst_riff_strh">
+      <field name="type" writable="1">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+      <field name="fcc_handler" writable="1">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+      <field name="flags" writable="1">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+      <field name="priority" writable="1">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+      <field name="init_frames" writable="1">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+      <field name="scale" writable="1">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+      <field name="rate" writable="1">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+      <field name="start" writable="1">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+      <field name="length" writable="1">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+      <field name="bufsize" writable="1">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+      <field name="quality" writable="1">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+      <field name="samplesize" writable="1">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+    </record>
+  </namespace>
+</repository>
diff --git a/extra/gstreamer/riff/ffi/ffi.factor b/extra/gstreamer/riff/ffi/ffi.factor
new file mode 100644 (file)
index 0000000..ac31e7d
--- /dev/null
@@ -0,0 +1,27 @@
+! Copyright (C) 2010 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: alien alien.syntax alien.libraries combinators kernel
+system
+gobject-introspection glib.ffi gmodule.ffi gobject.ffi ;
+EXCLUDE: alien.c-types => pointer ;
+IN: gstreamer.ffi
+
+<<
+"gstreamer" {
+    { [ os winnt? ] [ drop ] }
+    { [ os macosx? ] [ drop ] }
+    { [ os unix? ] [ "libgstreamer-0.10.so" cdecl add-library ] }
+} cond
+>>
+
+TYPEDEF: gpointer GstClockID
+TYPEDEF: guint64 GstClockTime
+TYPEDEF: gint64 GstClockTimeDiff
+
+! types from libxml2
+TYPEDEF: void* xmlNodePtr
+TYPEDEF: void* xmlDocPtr
+TYPEDEF: void* xmlNsPtr
+
+GIR: vocab:gstreamer/Gst-0.10.gir
+
diff --git a/extra/gstreamer/riff/riff.factor b/extra/gstreamer/riff/riff.factor
new file mode 100644 (file)
index 0000000..174fbc6
--- /dev/null
@@ -0,0 +1,5 @@
+! Copyright (C) 2010 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: gstreamer.ffi ;
+IN: gstreamer
+
diff --git a/extra/gstreamer/rtp/GstRtp-0.10.gir b/extra/gstreamer/rtp/GstRtp-0.10.gir
new file mode 100644 (file)
index 0000000..e720150
--- /dev/null
@@ -0,0 +1,2550 @@
+<?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.0"
+            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="GLib" version="2.0"/>
+  <include name="GModule" version="2.0"/>
+  <include name="GObject" version="2.0"/>
+  <include name="Gst" version="0.10"/>
+  <include name="GstBase" version="0.10"/>
+  <include name="libxml2" version="2.0"/>
+  <package name="gstreamer-0.10"/>
+  <package name="gstreamer-base-0.10"/>
+  <c:include name="gst/rtp/gstbasertpaudiopayload.h"/>
+  <c:include name="gst/rtp/gstbasertpdepayload.h"/>
+  <c:include name="gst/rtp/gstbasertppayload.h"/>
+  <c:include name="gst/rtp/gstrtcpbuffer.h"/>
+  <c:include name="gst/rtp/gstrtpbuffer.h"/>
+  <c:include name="gst/rtp/gstrtppayloads.h"/>
+  <namespace name="GstRtp"
+             version="0.10"
+             shared-library="libgstrtp-0.10.so.0"
+             c:prefix="Gst">
+    <class name="BaseRTPAudioPayload"
+           c:type="GstBaseRTPAudioPayload"
+           parent="BaseRTPPayload"
+           glib:type-name="GstBaseRTPAudioPayload"
+           glib:get-type="gst_base_rtp_audio_payload_get_type"
+           glib:type-struct="BaseRTPAudioPayloadClass">
+      <method name="set_frame_based"
+              c:identifier="gst_base_rtp_audio_payload_set_frame_based"
+              doc="Tells #GstBaseRTPAudioPayload that the child element is for a frame based
+audio codec">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="set_frame_options"
+              c:identifier="gst_base_rtp_audio_payload_set_frame_options"
+              doc="Sets the options for frame based audio codecs.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="frame_duration" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="frame_size" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_sample_based"
+              c:identifier="gst_base_rtp_audio_payload_set_sample_based"
+              doc="Tells #GstBaseRTPAudioPayload that the child element is for a sample based
+audio codec">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="set_sample_options"
+              c:identifier="gst_base_rtp_audio_payload_set_sample_options"
+              doc="Sets the options for sample based audio codecs.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="sample_size" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_samplebits_options"
+              c:identifier="gst_base_rtp_audio_payload_set_samplebits_options"
+              doc="Sets the options for sample based audio codecs."
+              version="0.10.18">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="sample_size" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_adapter"
+              c:identifier="gst_base_rtp_audio_payload_get_adapter"
+              doc="Gets the internal adapter used by the depayloader."
+              version="0.10.13">
+        <return-value transfer-ownership="full">
+          <type name="GstBase.Adapter" c:type="GstAdapter*"/>
+        </return-value>
+      </method>
+      <method name="push"
+              c:identifier="gst_base_rtp_audio_payload_push"
+              doc="Create an RTP buffer and store @payload_len bytes of @data as the
+payload. Set the timestamp on the new buffer to @timestamp before pushing
+the buffer downstream."
+              version="0.10.13">
+        <return-value transfer-ownership="full">
+          <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <array c:type="guint8*">
+              <type name="uint8"/>
+            </array>
+          </parameter>
+          <parameter name="payload_len" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="timestamp" transfer-ownership="none">
+            <type name="Gst.ClockTime" c:type="GstClockTime"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="flush"
+              c:identifier="gst_base_rtp_audio_payload_flush"
+              doc="Create an RTP buffer and store @payload_len bytes of the adapter as the
+payload. Set the timestamp on the new buffer to @timestamp before pushing
+the buffer downstream.
+If @payload_len is -1, all pending bytes will be flushed. If @timestamp is
+-1, the timestamp will be calculated automatically."
+              version="0.10.25">
+        <return-value transfer-ownership="full">
+          <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+        </return-value>
+        <parameters>
+          <parameter name="payload_len" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="timestamp" transfer-ownership="none">
+            <type name="Gst.ClockTime" c:type="GstClockTime"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="buffer-list" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <field name="payload">
+        <type name="BaseRTPPayload" c:type="GstBaseRTPPayload"/>
+      </field>
+      <field name="priv">
+        <type name="BaseRTPAudioPayloadPrivate"
+              c:type="GstBaseRTPAudioPayloadPrivate*"/>
+      </field>
+      <field name="base_ts">
+        <type name="Gst.ClockTime" c:type="GstClockTime"/>
+      </field>
+      <field name="frame_size">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="frame_duration">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="sample_size">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </class>
+    <record name="BaseRTPAudioPayloadClass"
+            c:type="GstBaseRTPAudioPayloadClass"
+            glib:is-gtype-struct-for="BaseRTPAudioPayload">
+      <field name="parent_class">
+        <type name="BaseRTPPayloadClass" c:type="GstBaseRTPPayloadClass"/>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <record name="BaseRTPAudioPayloadPrivate"
+            c:type="GstBaseRTPAudioPayloadPrivate">
+    </record>
+    <class name="BaseRTPDepayload"
+           c:type="GstBaseRTPDepayload"
+           parent="Gst.Element"
+           glib:type-name="GstBaseRTPDepayload"
+           glib:get-type="gst_base_rtp_depayload_get_type"
+           glib:type-struct="BaseRTPDepayloadClass">
+      <virtual-method name="set_caps">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="caps" transfer-ownership="none">
+            <type name="Gst.Caps" c:type="GstCaps*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="add_to_queue">
+        <return-value transfer-ownership="full">
+          <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+        </return-value>
+        <parameters>
+          <parameter name="in" transfer-ownership="none">
+            <type name="Gst.Buffer" c:type="GstBuffer*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="process">
+        <return-value transfer-ownership="full">
+          <type name="Gst.Buffer" c:type="GstBuffer*"/>
+        </return-value>
+        <parameters>
+          <parameter name="in" transfer-ownership="none">
+            <type name="Gst.Buffer" c:type="GstBuffer*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="set_gst_timestamp">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="timestamp" transfer-ownership="none">
+            <type name="uint32" c:type="guint32"/>
+          </parameter>
+          <parameter name="buf" transfer-ownership="none">
+            <type name="Gst.Buffer" c:type="GstBuffer*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="packet_lost">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="none">
+            <type name="Gst.Event" c:type="GstEvent*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="push"
+              c:identifier="gst_base_rtp_depayload_push"
+              doc="Push @out_buf to the peer of @filter. This function takes ownership of
+Unlike gst_base_rtp_depayload_push_ts(), this function will not apply
+any timestamp on the outgoing buffer. Subclasses should therefore timestamp
+outgoing buffers themselves.">
+        <return-value transfer-ownership="full">
+          <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+        </return-value>
+        <parameters>
+          <parameter name="out_buf" transfer-ownership="none">
+            <type name="Gst.Buffer" c:type="GstBuffer*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="push_ts"
+              c:identifier="gst_base_rtp_depayload_push_ts"
+              doc="Push @out_buf to the peer of @filter. This function takes ownership of
+Unlike gst_base_rtp_depayload_push(), this function will by default apply
+the last incomming timestamp on the outgoing buffer when it didn&apos;t have a
+timestamp already. The set_get_timestamp vmethod can be overwritten to change
+this behaviour (and take, for example, @timestamp into account).">
+        <return-value transfer-ownership="full">
+          <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+        </return-value>
+        <parameters>
+          <parameter name="timestamp" transfer-ownership="none">
+            <type name="uint32" c:type="guint32"/>
+          </parameter>
+          <parameter name="out_buf" transfer-ownership="none">
+            <type name="Gst.Buffer" c:type="GstBuffer*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="queue-delay" writable="1">
+        <type name="uint" c:type="guint"/>
+      </property>
+      <field name="parent">
+        <type name="Gst.Element" c:type="GstElement"/>
+      </field>
+      <field name="sinkpad">
+        <type name="Gst.Pad" c:type="GstPad*"/>
+      </field>
+      <field name="srcpad">
+        <type name="Gst.Pad" c:type="GstPad*"/>
+      </field>
+      <field name="queuelock">
+        <type name="GLib.StaticRecMutex" c:type="GStaticRecMutex"/>
+      </field>
+      <field name="thread_running">
+        <type name="boolean" c:type="gboolean"/>
+      </field>
+      <field name="thread">
+        <type name="GLib.Thread" c:type="GThread*"/>
+      </field>
+      <field name="clock_rate">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="queue_delay">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="queue">
+        <type name="GLib.Queue" c:type="GQueue*"/>
+      </field>
+      <field name="segment">
+        <type name="Gst.Segment" c:type="GstSegment"/>
+      </field>
+      <field name="need_newsegment">
+        <type name="boolean" c:type="gboolean"/>
+      </field>
+      <field name="priv">
+        <type name="BaseRTPDepayloadPrivate"
+              c:type="GstBaseRTPDepayloadPrivate*"/>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="3">
+          <type name="any"/>
+        </array>
+      </field>
+    </class>
+    <record name="BaseRTPDepayloadClass"
+            c:type="GstBaseRTPDepayloadClass"
+            glib:is-gtype-struct-for="BaseRTPDepayload">
+      <field name="parent_class">
+        <type name="Gst.ElementClass" c:type="GstElementClass"/>
+      </field>
+      <field name="set_caps">
+        <callback name="set_caps" c:type="set_caps">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="filter" transfer-ownership="none">
+              <type name="BaseRTPDepayload" c:type="GstBaseRTPDepayload*"/>
+            </parameter>
+            <parameter name="caps" transfer-ownership="none">
+              <type name="Gst.Caps" c:type="GstCaps*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="add_to_queue">
+        <callback name="add_to_queue" c:type="add_to_queue">
+          <return-value transfer-ownership="full">
+            <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+          </return-value>
+          <parameters>
+            <parameter name="filter" transfer-ownership="none">
+              <type name="BaseRTPDepayload" c:type="GstBaseRTPDepayload*"/>
+            </parameter>
+            <parameter name="in" transfer-ownership="none">
+              <type name="Gst.Buffer" c:type="GstBuffer*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="process">
+        <callback name="process" c:type="process">
+          <return-value transfer-ownership="full">
+            <type name="Gst.Buffer" c:type="GstBuffer*"/>
+          </return-value>
+          <parameters>
+            <parameter name="base" transfer-ownership="none">
+              <type name="BaseRTPDepayload" c:type="GstBaseRTPDepayload*"/>
+            </parameter>
+            <parameter name="in" transfer-ownership="none">
+              <type name="Gst.Buffer" c:type="GstBuffer*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_gst_timestamp">
+        <callback name="set_gst_timestamp" c:type="set_gst_timestamp">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="filter" transfer-ownership="none">
+              <type name="BaseRTPDepayload" c:type="GstBaseRTPDepayload*"/>
+            </parameter>
+            <parameter name="timestamp" transfer-ownership="none">
+              <type name="uint32" c:type="guint32"/>
+            </parameter>
+            <parameter name="buf" transfer-ownership="none">
+              <type name="Gst.Buffer" c:type="GstBuffer*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="packet_lost">
+        <callback name="packet_lost" c:type="packet_lost">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="filter" transfer-ownership="none">
+              <type name="BaseRTPDepayload" c:type="GstBaseRTPDepayload*"/>
+            </parameter>
+            <parameter name="event" transfer-ownership="none">
+              <type name="Gst.Event" c:type="GstEvent*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="3">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <record name="BaseRTPDepayloadPrivate" c:type="GstBaseRTPDepayloadPrivate">
+    </record>
+    <class name="BaseRTPPayload"
+           c:type="GstBaseRTPPayload"
+           parent="Gst.Element"
+           abstract="1"
+           glib:type-name="GstBaseRTPPayload"
+           glib:get-type="gst_basertppayload_get_type"
+           glib:type-struct="BaseRTPPayloadClass">
+      <virtual-method name="set_caps">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="caps" transfer-ownership="none">
+            <type name="Gst.Caps" c:type="GstCaps*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="handle_buffer">
+        <return-value transfer-ownership="full">
+          <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+        </return-value>
+        <parameters>
+          <parameter name="buffer" transfer-ownership="none">
+            <type name="Gst.Buffer" c:type="GstBuffer*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_caps">
+        <return-value transfer-ownership="full">
+          <type name="Gst.Caps" c:type="GstCaps*"/>
+        </return-value>
+        <parameters>
+          <parameter name="pad" transfer-ownership="none">
+            <type name="Gst.Pad" c:type="GstPad*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="set_options"
+              c:identifier="gst_basertppayload_set_options"
+              doc="Set the rtp options of the payloader. These options will be set in the caps
+of the payloader. Subclasses must call this method before calling
+gst_basertppayload_push() or gst_basertppayload_set_outcaps().">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="media" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="dynamic" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="encoding_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="clock_rate" transfer-ownership="none">
+            <type name="uint32" c:type="guint32"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_outcaps"
+              c:identifier="gst_basertppayload_set_outcaps"
+              doc="Configure the output caps with the optional parameters.
+Variable arguments should be in the form field name, field type
+(as a GType), value(s).  The last variable argument should be NULL.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="fieldname" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="is_filled"
+              c:identifier="gst_basertppayload_is_filled"
+              doc="Check if the packet with @size and @duration would exceed the configured
+maximum size.
+configured MTU or max_ptime.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="size" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="duration" transfer-ownership="none">
+            <type name="Gst.ClockTime" c:type="GstClockTime"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="push"
+              c:identifier="gst_basertppayload_push"
+              doc="Push @buffer to the peer element of the payloader. The SSRC, payload type,
+seqnum and timestamp of the RTP buffer will be updated first.
+This function takes ownership of @buffer.">
+        <return-value transfer-ownership="full">
+          <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+        </return-value>
+        <parameters>
+          <parameter name="buffer" transfer-ownership="none">
+            <type name="Gst.Buffer" c:type="GstBuffer*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="push_list"
+              c:identifier="gst_basertppayload_push_list"
+              doc="Push @list to the peer element of the payloader. The SSRC, payload type,
+seqnum and timestamp of the RTP buffer will be updated first.
+This function takes ownership of @list."
+              version="0.10.24">
+        <return-value transfer-ownership="full">
+          <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+        </return-value>
+        <parameters>
+          <parameter name="list" transfer-ownership="none">
+            <type name="Gst.BufferList" c:type="GstBufferList*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="max-ptime" writable="1">
+        <type name="int64" c:type="gint64"/>
+      </property>
+      <property name="min-ptime" writable="1">
+        <type name="int64" c:type="gint64"/>
+      </property>
+      <property name="mtu" writable="1">
+        <type name="uint" c:type="guint"/>
+      </property>
+      <property name="perfect-rtptime" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="pt" writable="1">
+        <type name="uint" c:type="guint"/>
+      </property>
+      <property name="ptime-multiple" writable="1">
+        <type name="int64" c:type="gint64"/>
+      </property>
+      <property name="seqnum">
+        <type name="uint" c:type="guint"/>
+      </property>
+      <property name="seqnum-offset" writable="1">
+        <type name="int" c:type="gint"/>
+      </property>
+      <property name="ssrc" writable="1">
+        <type name="uint" c:type="guint"/>
+      </property>
+      <property name="timestamp">
+        <type name="uint" c:type="guint"/>
+      </property>
+      <property name="timestamp-offset" writable="1">
+        <type name="uint" c:type="guint"/>
+      </property>
+      <field name="element">
+        <type name="Gst.Element" c:type="GstElement"/>
+      </field>
+      <field name="sinkpad">
+        <type name="Gst.Pad" c:type="GstPad*"/>
+      </field>
+      <field name="srcpad">
+        <type name="Gst.Pad" c:type="GstPad*"/>
+      </field>
+      <field name="seq_rand">
+        <type name="GLib.Rand" c:type="GRand*"/>
+      </field>
+      <field name="ssrc_rand">
+        <type name="GLib.Rand" c:type="GRand*"/>
+      </field>
+      <field name="ts_rand">
+        <type name="GLib.Rand" c:type="GRand*"/>
+      </field>
+      <field name="ts_base">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+      <field name="seqnum_base">
+        <type name="uint16" c:type="guint16"/>
+      </field>
+      <field name="media">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="encoding_name">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="dynamic">
+        <type name="boolean" c:type="gboolean"/>
+      </field>
+      <field name="clock_rate">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+      <field name="ts_offset">
+        <type name="int32" c:type="gint32"/>
+      </field>
+      <field name="timestamp">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+      <field name="seqnum_offset">
+        <type name="int16" c:type="gint16"/>
+      </field>
+      <field name="seqnum">
+        <type name="uint16" c:type="guint16"/>
+      </field>
+      <field name="max_ptime">
+        <type name="int64" c:type="gint64"/>
+      </field>
+      <field name="pt">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="ssrc">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="current_ssrc">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="mtu">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="segment">
+        <type name="Gst.Segment" c:type="GstSegment"/>
+      </field>
+      <field name="min_ptime">
+        <type name="uint64" c:type="guint64"/>
+      </field>
+      <field name="priv">
+        <type name="BaseRTPPayloadPrivate" c:type="GstBaseRTPPayloadPrivate*"/>
+      </field>
+      <union name="abidata" c:type="abidata">
+        <record name="ABI" c:type="ABI">
+          <field name="ptime" writable="1">
+            <type name="uint64" c:type="guint64"/>
+          </field>
+          <field name="ptime_multiple" writable="1">
+            <type name="uint64" c:type="guint64"/>
+          </field>
+        </record>
+        <field name="_gst_reserved" writable="1">
+          <array zero-terminated="0" c:type="gpointer" fixed-size="3">
+            <type name="any"/>
+          </array>
+        </field>
+      </union>
+    </class>
+    <record name="BaseRTPPayloadClass"
+            c:type="GstBaseRTPPayloadClass"
+            glib:is-gtype-struct-for="BaseRTPPayload">
+      <field name="parent_class">
+        <type name="Gst.ElementClass" c:type="GstElementClass"/>
+      </field>
+      <field name="set_caps">
+        <callback name="set_caps" c:type="set_caps">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="payload" transfer-ownership="none">
+              <type name="BaseRTPPayload" c:type="GstBaseRTPPayload*"/>
+            </parameter>
+            <parameter name="caps" transfer-ownership="none">
+              <type name="Gst.Caps" c:type="GstCaps*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="handle_buffer">
+        <callback name="handle_buffer" c:type="handle_buffer">
+          <return-value transfer-ownership="full">
+            <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+          </return-value>
+          <parameters>
+            <parameter name="payload" transfer-ownership="none">
+              <type name="BaseRTPPayload" c:type="GstBaseRTPPayload*"/>
+            </parameter>
+            <parameter name="buffer" transfer-ownership="none">
+              <type name="Gst.Buffer" c:type="GstBuffer*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="handle_event">
+        <callback name="handle_event" c:type="handle_event">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="pad" transfer-ownership="none">
+              <type name="Gst.Pad" c:type="GstPad*"/>
+            </parameter>
+            <parameter name="event" transfer-ownership="none">
+              <type name="Gst.Event" c:type="GstEvent*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_caps">
+        <callback name="get_caps" c:type="get_caps">
+          <return-value transfer-ownership="full">
+            <type name="Gst.Caps" c:type="GstCaps*"/>
+          </return-value>
+          <parameters>
+            <parameter name="payload" transfer-ownership="none">
+              <type name="BaseRTPPayload" c:type="GstBaseRTPPayload*"/>
+            </parameter>
+            <parameter name="pad" transfer-ownership="none">
+              <type name="Gst.Pad" c:type="GstPad*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="2">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <record name="BaseRTPPayloadPrivate" c:type="GstBaseRTPPayloadPrivate">
+    </record>
+    <constant name="PAYLOAD_1016_STRING" value="1">
+      <type name="utf8"/>
+    </constant>
+    <constant name="PAYLOAD_CELLB_STRING" value="25">
+      <type name="utf8"/>
+    </constant>
+    <constant name="PAYLOAD_CN_STRING" value="13">
+      <type name="utf8"/>
+    </constant>
+    <constant name="PAYLOAD_DVI4_11025_STRING" value="16">
+      <type name="utf8"/>
+    </constant>
+    <constant name="PAYLOAD_DVI4_16000_STRING" value="6">
+      <type name="utf8"/>
+    </constant>
+    <constant name="PAYLOAD_DVI4_22050_STRING" value="17">
+      <type name="utf8"/>
+    </constant>
+    <constant name="PAYLOAD_DVI4_8000_STRING" value="5">
+      <type name="utf8"/>
+    </constant>
+    <constant name="PAYLOAD_DYNAMIC_STRING" value="[96, 127]">
+      <type name="utf8"/>
+    </constant>
+    <constant name="PAYLOAD_G721_STRING" value="2">
+      <type name="utf8"/>
+    </constant>
+    <constant name="PAYLOAD_G722_STRING" value="9">
+      <type name="utf8"/>
+    </constant>
+    <constant name="PAYLOAD_G723_53" value="17">
+      <type name="int"/>
+    </constant>
+    <constant name="PAYLOAD_G723_53_STRING" value="17">
+      <type name="utf8"/>
+    </constant>
+    <constant name="PAYLOAD_G723_63" value="16">
+      <type name="int"/>
+    </constant>
+    <constant name="PAYLOAD_G723_63_STRING" value="16">
+      <type name="utf8"/>
+    </constant>
+    <constant name="PAYLOAD_G723_STRING" value="4">
+      <type name="utf8"/>
+    </constant>
+    <constant name="PAYLOAD_G728_STRING" value="15">
+      <type name="utf8"/>
+    </constant>
+    <constant name="PAYLOAD_G729_STRING" value="18">
+      <type name="utf8"/>
+    </constant>
+    <constant name="PAYLOAD_GSM_STRING" value="3">
+      <type name="utf8"/>
+    </constant>
+    <constant name="PAYLOAD_H261_STRING" value="31">
+      <type name="utf8"/>
+    </constant>
+    <constant name="PAYLOAD_H263_STRING" value="34">
+      <type name="utf8"/>
+    </constant>
+    <constant name="PAYLOAD_JPEG_STRING" value="26">
+      <type name="utf8"/>
+    </constant>
+    <constant name="PAYLOAD_L16_MONO_STRING" value="11">
+      <type name="utf8"/>
+    </constant>
+    <constant name="PAYLOAD_L16_STEREO_STRING" value="10">
+      <type name="utf8"/>
+    </constant>
+    <constant name="PAYLOAD_LPC_STRING" value="7">
+      <type name="utf8"/>
+    </constant>
+    <constant name="PAYLOAD_MP2T_STRING" value="33">
+      <type name="utf8"/>
+    </constant>
+    <constant name="PAYLOAD_MPA_STRING" value="14">
+      <type name="utf8"/>
+    </constant>
+    <constant name="PAYLOAD_MPV_STRING" value="32">
+      <type name="utf8"/>
+    </constant>
+    <constant name="PAYLOAD_NV_STRING" value="28">
+      <type name="utf8"/>
+    </constant>
+    <constant name="PAYLOAD_PCMA_STRING" value="8">
+      <type name="utf8"/>
+    </constant>
+    <constant name="PAYLOAD_PCMU_STRING" value="0">
+      <type name="utf8"/>
+    </constant>
+    <constant name="PAYLOAD_QCELP_STRING" value="12">
+      <type name="utf8"/>
+    </constant>
+    <constant name="PAYLOAD_TS41" value="19">
+      <type name="int"/>
+    </constant>
+    <constant name="PAYLOAD_TS41_STRING" value="19">
+      <type name="utf8"/>
+    </constant>
+    <constant name="PAYLOAD_TS48" value="18">
+      <type name="int"/>
+    </constant>
+    <constant name="PAYLOAD_TS48_STRING" value="18">
+      <type name="utf8"/>
+    </constant>
+    <enumeration name="RTCPFBType"
+                 doc="Different types of feedback messages."
+                 version="0.10.23"
+                 c:type="GstRTCPFBType">
+      <member name="fb_type_invalid"
+              value="0"
+              c:identifier="GST_RTCP_FB_TYPE_INVALID"/>
+      <member name="rtpfb_type_nack"
+              value="1"
+              c:identifier="GST_RTCP_RTPFB_TYPE_NACK"/>
+      <member name="psfb_type_pli"
+              value="1"
+              c:identifier="GST_RTCP_PSFB_TYPE_PLI"/>
+      <member name="psfb_type_sli"
+              value="2"
+              c:identifier="GST_RTCP_PSFB_TYPE_SLI"/>
+      <member name="psfb_type_rpsi"
+              value="3"
+              c:identifier="GST_RTCP_PSFB_TYPE_RPSI"/>
+      <member name="psfb_type_afb"
+              value="15"
+              c:identifier="GST_RTCP_PSFB_TYPE_AFB"/>
+    </enumeration>
+    <record name="RTCPPacket"
+            c:type="GstRTCPPacket"
+            doc="Data structure that points to a packet at @offset in @buffer.
+The size of the structure is made public to allow stack allocations.">
+      <field name="buffer" writable="1">
+        <type name="Gst.Buffer" c:type="GstBuffer*"/>
+      </field>
+      <field name="offset" writable="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="padding" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </field>
+      <field name="count" writable="1">
+        <type name="uint8" c:type="guint8"/>
+      </field>
+      <field name="type" writable="1">
+        <type name="RTCPType" c:type="GstRTCPType"/>
+      </field>
+      <field name="length" writable="1">
+        <type name="uint16" c:type="guint16"/>
+      </field>
+      <field name="item_offset" writable="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="item_count" writable="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="entry_offset" writable="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <method name="move_to_next"
+              c:identifier="gst_rtcp_packet_move_to_next"
+              doc="Move the packet pointer @packet to the next packet in the payload.
+Use gst_rtcp_buffer_get_first_packet() to initialize @packet.
+function.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="remove"
+              c:identifier="gst_rtcp_packet_remove"
+              doc="Removes the packet pointed to by @packet and moves pointer to the next one
+function.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_padding"
+              c:identifier="gst_rtcp_packet_get_padding"
+              doc="Get the packet padding of the packet pointed to by @packet.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_count"
+              c:identifier="gst_rtcp_packet_get_count"
+              doc="Get the count field in @packet.
+valid packet.">
+        <return-value transfer-ownership="none">
+          <type name="uint8" c:type="guint8"/>
+        </return-value>
+      </method>
+      <method name="get_length"
+              c:identifier="gst_rtcp_packet_get_length"
+              doc="Get the length field of @packet. This is the length of the packet in
+32-bit words minus one.">
+        <return-value transfer-ownership="none">
+          <type name="uint16" c:type="guint16"/>
+        </return-value>
+      </method>
+      <method name="sr_get_sender_info"
+              c:identifier="gst_rtcp_packet_sr_get_sender_info"
+              doc="Parse the SR sender info and store the values.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="ssrc" direction="out" transfer-ownership="full">
+            <type name="uint32" c:type="guint32*"/>
+          </parameter>
+          <parameter name="ntptime" direction="out" transfer-ownership="full">
+            <type name="uint64" c:type="guint64*"/>
+          </parameter>
+          <parameter name="rtptime" direction="out" transfer-ownership="full">
+            <type name="uint32" c:type="guint32*"/>
+          </parameter>
+          <parameter name="packet_count"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="uint32" c:type="guint32*"/>
+          </parameter>
+          <parameter name="octet_count"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="uint32" c:type="guint32*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="sr_set_sender_info"
+              c:identifier="gst_rtcp_packet_sr_set_sender_info"
+              doc="Set the given values in the SR packet @packet.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="ssrc" transfer-ownership="none">
+            <type name="uint32" c:type="guint32"/>
+          </parameter>
+          <parameter name="ntptime" transfer-ownership="none">
+            <type name="uint64" c:type="guint64"/>
+          </parameter>
+          <parameter name="rtptime" transfer-ownership="none">
+            <type name="uint32" c:type="guint32"/>
+          </parameter>
+          <parameter name="packet_count" transfer-ownership="none">
+            <type name="uint32" c:type="guint32"/>
+          </parameter>
+          <parameter name="octet_count" transfer-ownership="none">
+            <type name="uint32" c:type="guint32"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="rr_get_ssrc"
+              c:identifier="gst_rtcp_packet_rr_get_ssrc"
+              doc="Get the ssrc field of the RR @packet.">
+        <return-value transfer-ownership="none">
+          <type name="uint32" c:type="guint32"/>
+        </return-value>
+      </method>
+      <method name="rr_set_ssrc"
+              c:identifier="gst_rtcp_packet_rr_set_ssrc"
+              doc="Set the ssrc field of the RR @packet.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="ssrc" transfer-ownership="none">
+            <type name="uint32" c:type="guint32"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_rb_count"
+              c:identifier="gst_rtcp_packet_get_rb_count"
+              doc="Get the number of report blocks in @packet.">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="get_rb"
+              c:identifier="gst_rtcp_packet_get_rb"
+              doc="Parse the values of the @nth report block in @packet and store the result in
+the values.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="nth" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="ssrc" direction="out" transfer-ownership="full">
+            <type name="uint32" c:type="guint32*"/>
+          </parameter>
+          <parameter name="fractionlost" transfer-ownership="none">
+            <array c:type="guint8*">
+              <type name="uint8"/>
+            </array>
+          </parameter>
+          <parameter name="packetslost"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="int32" c:type="gint32*"/>
+          </parameter>
+          <parameter name="exthighestseq"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="uint32" c:type="guint32*"/>
+          </parameter>
+          <parameter name="jitter" direction="out" transfer-ownership="full">
+            <type name="uint32" c:type="guint32*"/>
+          </parameter>
+          <parameter name="lsr" direction="out" transfer-ownership="full">
+            <type name="uint32" c:type="guint32*"/>
+          </parameter>
+          <parameter name="dlsr" direction="out" transfer-ownership="full">
+            <type name="uint32" c:type="guint32*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_rb"
+              c:identifier="gst_rtcp_packet_add_rb"
+              doc="Add a new report block to @packet with the given values.
+the max MTU is exceeded or the number of report blocks is greater than
+#GST_RTCP_MAX_RB_COUNT.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="ssrc" transfer-ownership="none">
+            <type name="uint32" c:type="guint32"/>
+          </parameter>
+          <parameter name="fractionlost" transfer-ownership="none">
+            <type name="uint8" c:type="guint8"/>
+          </parameter>
+          <parameter name="packetslost" transfer-ownership="none">
+            <type name="int32" c:type="gint32"/>
+          </parameter>
+          <parameter name="exthighestseq" transfer-ownership="none">
+            <type name="uint32" c:type="guint32"/>
+          </parameter>
+          <parameter name="jitter" transfer-ownership="none">
+            <type name="uint32" c:type="guint32"/>
+          </parameter>
+          <parameter name="lsr" transfer-ownership="none">
+            <type name="uint32" c:type="guint32"/>
+          </parameter>
+          <parameter name="dlsr" transfer-ownership="none">
+            <type name="uint32" c:type="guint32"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_rb"
+              c:identifier="gst_rtcp_packet_set_rb"
+              doc="Set the @nth new report block in @packet with the given values.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="nth" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="ssrc" transfer-ownership="none">
+            <type name="uint32" c:type="guint32"/>
+          </parameter>
+          <parameter name="fractionlost" transfer-ownership="none">
+            <type name="uint8" c:type="guint8"/>
+          </parameter>
+          <parameter name="packetslost" transfer-ownership="none">
+            <type name="int32" c:type="gint32"/>
+          </parameter>
+          <parameter name="exthighestseq" transfer-ownership="none">
+            <type name="uint32" c:type="guint32"/>
+          </parameter>
+          <parameter name="jitter" transfer-ownership="none">
+            <type name="uint32" c:type="guint32"/>
+          </parameter>
+          <parameter name="lsr" transfer-ownership="none">
+            <type name="uint32" c:type="guint32"/>
+          </parameter>
+          <parameter name="dlsr" transfer-ownership="none">
+            <type name="uint32" c:type="guint32"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="sdes_get_item_count"
+              c:identifier="gst_rtcp_packet_sdes_get_item_count"
+              doc="Get the number of items in the SDES packet @packet.">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="sdes_first_item"
+              c:identifier="gst_rtcp_packet_sdes_first_item"
+              doc="Move to the first SDES item in @packet.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="sdes_next_item"
+              c:identifier="gst_rtcp_packet_sdes_next_item"
+              doc="Move to the next SDES item in @packet.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="sdes_get_ssrc"
+              c:identifier="gst_rtcp_packet_sdes_get_ssrc"
+              doc="Get the SSRC of the current SDES item.">
+        <return-value transfer-ownership="none">
+          <type name="uint32" c:type="guint32"/>
+        </return-value>
+      </method>
+      <method name="sdes_first_entry"
+              c:identifier="gst_rtcp_packet_sdes_first_entry"
+              doc="Move to the first SDES entry in the current item.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="sdes_next_entry"
+              c:identifier="gst_rtcp_packet_sdes_next_entry"
+              doc="Move to the next SDES entry in the current item.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="sdes_get_entry"
+              c:identifier="gst_rtcp_packet_sdes_get_entry"
+              doc="Get the data of the current SDES item entry. @type (when not NULL) will
+contain the type of the entry. @data (when not NULL) will point to @len
+bytes.
+When @type refers to a text item, @data will point to a UTF8 string. Note
+that this UTF8 string is NOT null-terminated. Use
+gst_rtcp_packet_sdes_copy_entry() to get a null-termined copy of the entry.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="type" transfer-ownership="none">
+            <type name="RTCPSDESType" c:type="GstRTCPSDESType*"/>
+          </parameter>
+          <parameter name="len" transfer-ownership="none">
+            <array c:type="guint8*">
+              <type name="uint8"/>
+            </array>
+          </parameter>
+          <parameter name="data" direction="out" transfer-ownership="full">
+            <type name="uint8" c:type="guint8**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="sdes_copy_entry"
+              c:identifier="gst_rtcp_packet_sdes_copy_entry"
+              doc="This function is like gst_rtcp_packet_sdes_get_entry() but it returns a
+null-terminated copy of the data instead. use g_free() after usage.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="type" transfer-ownership="none">
+            <type name="RTCPSDESType" c:type="GstRTCPSDESType*"/>
+          </parameter>
+          <parameter name="len" transfer-ownership="none">
+            <array c:type="guint8*">
+              <type name="uint8"/>
+            </array>
+          </parameter>
+          <parameter name="data" direction="out" transfer-ownership="full">
+            <type name="uint8" c:type="guint8**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="sdes_add_item"
+              c:identifier="gst_rtcp_packet_sdes_add_item"
+              doc="Add a new SDES item for @ssrc to @packet.
+items has been exceeded for the SDES packet or the MTU has been reached.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="ssrc" transfer-ownership="none">
+            <type name="uint32" c:type="guint32"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="sdes_add_entry"
+              c:identifier="gst_rtcp_packet_sdes_add_entry"
+              doc="Add a new SDES entry to the current item in @packet.
+reached.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="type" transfer-ownership="none">
+            <type name="RTCPSDESType" c:type="GstRTCPSDESType"/>
+          </parameter>
+          <parameter name="len" transfer-ownership="none">
+            <type name="uint8" c:type="guint8"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <array c:type="guint8*">
+              <type name="uint8"/>
+            </array>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="bye_get_ssrc_count"
+              c:identifier="gst_rtcp_packet_bye_get_ssrc_count"
+              doc="Get the number of SSRC fields in @packet.">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="bye_get_nth_ssrc"
+              c:identifier="gst_rtcp_packet_bye_get_nth_ssrc"
+              doc="Get the @nth SSRC of the BYE @packet.">
+        <return-value transfer-ownership="none">
+          <type name="uint32" c:type="guint32"/>
+        </return-value>
+        <parameters>
+          <parameter name="nth" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="bye_add_ssrc"
+              c:identifier="gst_rtcp_packet_bye_add_ssrc"
+              doc="Add @ssrc to the BYE @packet.
+the max MTU is exceeded or the number of sources blocks is greater than
+#GST_RTCP_MAX_BYE_SSRC_COUNT.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="ssrc" transfer-ownership="none">
+            <type name="uint32" c:type="guint32"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="bye_add_ssrcs"
+              c:identifier="gst_rtcp_packet_bye_add_ssrcs"
+              doc="Adds @len SSRCs in @ssrc to BYE @packet.
+the max MTU is exceeded or the number of sources blocks is greater than
+#GST_RTCP_MAX_BYE_SSRC_COUNT.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="ssrc" direction="out" transfer-ownership="full">
+            <type name="uint32" c:type="guint32*"/>
+          </parameter>
+          <parameter name="len" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="bye_get_reason_len"
+              c:identifier="gst_rtcp_packet_bye_get_reason_len"
+              doc="Get the length of the reason string.
+present.">
+        <return-value transfer-ownership="none">
+          <type name="uint8" c:type="guint8"/>
+        </return-value>
+      </method>
+      <method name="bye_get_reason"
+              c:identifier="gst_rtcp_packet_bye_get_reason"
+              doc="Get the reason in @packet.
+a reason string. The string must be freed with g_free() after usage.">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="bye_set_reason"
+              c:identifier="gst_rtcp_packet_bye_set_reason"
+              doc="Set the reason string to @reason in @packet.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="reason" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="fb_get_sender_ssrc"
+              c:identifier="gst_rtcp_packet_fb_get_sender_ssrc"
+              doc="Get the sender SSRC field of the RTPFB or PSFB @packet."
+              version="0.10.23">
+        <return-value transfer-ownership="none">
+          <type name="uint32" c:type="guint32"/>
+        </return-value>
+      </method>
+      <method name="fb_set_sender_ssrc"
+              c:identifier="gst_rtcp_packet_fb_set_sender_ssrc"
+              doc="Set the sender SSRC field of the RTPFB or PSFB @packet."
+              version="0.10.23">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="ssrc" transfer-ownership="none">
+            <type name="uint32" c:type="guint32"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="fb_get_media_ssrc"
+              c:identifier="gst_rtcp_packet_fb_get_media_ssrc"
+              doc="Get the media SSRC field of the RTPFB or PSFB @packet."
+              version="0.10.23">
+        <return-value transfer-ownership="none">
+          <type name="uint32" c:type="guint32"/>
+        </return-value>
+      </method>
+      <method name="fb_set_media_ssrc"
+              c:identifier="gst_rtcp_packet_fb_set_media_ssrc"
+              doc="Set the media SSRC field of the RTPFB or PSFB @packet."
+              version="0.10.23">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="ssrc" transfer-ownership="none">
+            <type name="uint32" c:type="guint32"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="fb_set_type"
+              c:identifier="gst_rtcp_packet_fb_set_type"
+              doc="Set the feedback message type of the FB @packet."
+              version="0.10.23">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="type" transfer-ownership="none">
+            <type name="RTCPFBType" c:type="GstRTCPFBType"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <enumeration name="RTCPSDESType" c:type="GstRTCPSDESType">
+      <member name="invalid" value="-1" c:identifier="GST_RTCP_SDES_INVALID"/>
+      <member name="end" value="0" c:identifier="GST_RTCP_SDES_END"/>
+      <member name="cname" value="1" c:identifier="GST_RTCP_SDES_CNAME"/>
+      <member name="name" value="2" c:identifier="GST_RTCP_SDES_NAME"/>
+      <member name="email" value="3" c:identifier="GST_RTCP_SDES_EMAIL"/>
+      <member name="phone" value="4" c:identifier="GST_RTCP_SDES_PHONE"/>
+      <member name="loc" value="5" c:identifier="GST_RTCP_SDES_LOC"/>
+      <member name="tool" value="6" c:identifier="GST_RTCP_SDES_TOOL"/>
+      <member name="note" value="7" c:identifier="GST_RTCP_SDES_NOTE"/>
+      <member name="priv" value="8" c:identifier="GST_RTCP_SDES_PRIV"/>
+    </enumeration>
+    <enumeration name="RTCPType" c:type="GstRTCPType">
+      <member name="invalid" value="0" c:identifier="GST_RTCP_TYPE_INVALID"/>
+      <member name="sr" value="200" c:identifier="GST_RTCP_TYPE_SR"/>
+      <member name="rr" value="201" c:identifier="GST_RTCP_TYPE_RR"/>
+      <member name="sdes" value="202" c:identifier="GST_RTCP_TYPE_SDES"/>
+      <member name="bye" value="203" c:identifier="GST_RTCP_TYPE_BYE"/>
+      <member name="app" value="204" c:identifier="GST_RTCP_TYPE_APP"/>
+      <member name="rtpfb" value="205" c:identifier="GST_RTCP_TYPE_RTPFB"/>
+      <member name="psfb" value="206" c:identifier="GST_RTCP_TYPE_PSFB"/>
+    </enumeration>
+    <constant name="RTCP_MAX_BYE_SSRC_COUNT" value="31">
+      <type name="int"/>
+    </constant>
+    <constant name="RTCP_MAX_RB_COUNT" value="31">
+      <type name="int"/>
+    </constant>
+    <constant name="RTCP_MAX_SDES" value="255">
+      <type name="int"/>
+    </constant>
+    <constant name="RTCP_MAX_SDES_ITEM_COUNT" value="31">
+      <type name="int"/>
+    </constant>
+    <constant name="RTCP_VALID_MASK" value="57598">
+      <type name="int"/>
+    </constant>
+    <constant name="RTCP_VALID_VALUE" value="0">
+      <type name="int"/>
+    </constant>
+    <constant name="RTCP_VERSION" value="2">
+      <type name="int"/>
+    </constant>
+    <enumeration name="RTPPayload" c:type="GstRTPPayload">
+      <member name="pcmu" value="0" c:identifier="GST_RTP_PAYLOAD_PCMU"/>
+      <member name="1016" value="1" c:identifier="GST_RTP_PAYLOAD_1016"/>
+      <member name="g721" value="2" c:identifier="GST_RTP_PAYLOAD_G721"/>
+      <member name="gsm" value="3" c:identifier="GST_RTP_PAYLOAD_GSM"/>
+      <member name="g723" value="4" c:identifier="GST_RTP_PAYLOAD_G723"/>
+      <member name="dvi4_8000"
+              value="5"
+              c:identifier="GST_RTP_PAYLOAD_DVI4_8000"/>
+      <member name="dvi4_16000"
+              value="6"
+              c:identifier="GST_RTP_PAYLOAD_DVI4_16000"/>
+      <member name="lpc" value="7" c:identifier="GST_RTP_PAYLOAD_LPC"/>
+      <member name="pcma" value="8" c:identifier="GST_RTP_PAYLOAD_PCMA"/>
+      <member name="g722" value="9" c:identifier="GST_RTP_PAYLOAD_G722"/>
+      <member name="l16_stereo"
+              value="10"
+              c:identifier="GST_RTP_PAYLOAD_L16_STEREO"/>
+      <member name="l16_mono"
+              value="11"
+              c:identifier="GST_RTP_PAYLOAD_L16_MONO"/>
+      <member name="qcelp" value="12" c:identifier="GST_RTP_PAYLOAD_QCELP"/>
+      <member name="cn" value="13" c:identifier="GST_RTP_PAYLOAD_CN"/>
+      <member name="mpa" value="14" c:identifier="GST_RTP_PAYLOAD_MPA"/>
+      <member name="g728" value="15" c:identifier="GST_RTP_PAYLOAD_G728"/>
+      <member name="dvi4_11025"
+              value="16"
+              c:identifier="GST_RTP_PAYLOAD_DVI4_11025"/>
+      <member name="dvi4_22050"
+              value="17"
+              c:identifier="GST_RTP_PAYLOAD_DVI4_22050"/>
+      <member name="g729" value="18" c:identifier="GST_RTP_PAYLOAD_G729"/>
+      <member name="cellb" value="25" c:identifier="GST_RTP_PAYLOAD_CELLB"/>
+      <member name="jpeg" value="26" c:identifier="GST_RTP_PAYLOAD_JPEG"/>
+      <member name="nv" value="28" c:identifier="GST_RTP_PAYLOAD_NV"/>
+      <member name="h261" value="31" c:identifier="GST_RTP_PAYLOAD_H261"/>
+      <member name="mpv" value="32" c:identifier="GST_RTP_PAYLOAD_MPV"/>
+      <member name="mp2t" value="33" c:identifier="GST_RTP_PAYLOAD_MP2T"/>
+      <member name="h263" value="34" c:identifier="GST_RTP_PAYLOAD_H263"/>
+    </enumeration>
+    <record name="RTPPayloadInfo"
+            c:type="GstRTPPayloadInfo"
+            doc="&quot;message&quot;.
+channels. NULL = not applicable.
+Structure holding default payload type information.">
+      <field name="payload_type" writable="1">
+        <type name="uint8" c:type="guint8"/>
+      </field>
+      <field name="media" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="encoding_name" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="clock_rate" writable="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="encoding_parameters" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="bitrate" writable="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+    </record>
+    <constant name="VERSION" value="2">
+      <type name="int"/>
+    </constant>
+    <function name="buffer_allocate_data"
+              c:identifier="gst_rtp_buffer_allocate_data"
+              doc="Allocate enough data in @buffer to hold an RTP packet with @csrc_count CSRCs,
+a payload length of @payload_len and padding of @pad_len.
+MALLOCDATA of @buffer will be overwritten and will not be freed.
+All other RTP header fields will be set to 0/FALSE.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none">
+          <type name="Gst.Buffer" c:type="GstBuffer*"/>
+        </parameter>
+        <parameter name="payload_len" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="pad_len" transfer-ownership="none">
+          <type name="uint8" c:type="guint8"/>
+        </parameter>
+        <parameter name="csrc_count" transfer-ownership="none">
+          <type name="uint8" c:type="guint8"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_calc_header_len"
+              c:identifier="gst_rtp_buffer_calc_header_len"
+              doc="Calculate the header length of an RTP packet with @csrc_count CSRC entries.
+An RTP packet can have at most 15 CSRC entries.">
+      <return-value transfer-ownership="none">
+        <type name="uint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="csrc_count" transfer-ownership="none">
+          <type name="uint8" c:type="guint8"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_calc_packet_len"
+              c:identifier="gst_rtp_buffer_calc_packet_len"
+              doc="Calculate the total length of an RTP packet with a payload size of @payload_len,
+a padding of @pad_len and a @csrc_count CSRC entries.">
+      <return-value transfer-ownership="none">
+        <type name="uint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="payload_len" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="pad_len" transfer-ownership="none">
+          <type name="uint8" c:type="guint8"/>
+        </parameter>
+        <parameter name="csrc_count" transfer-ownership="none">
+          <type name="uint8" c:type="guint8"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_calc_payload_len"
+              c:identifier="gst_rtp_buffer_calc_payload_len"
+              doc="Calculate the length of the payload of an RTP packet with size @packet_len,
+a padding of @pad_len and a @csrc_count CSRC entries.">
+      <return-value transfer-ownership="none">
+        <type name="uint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="packet_len" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="pad_len" transfer-ownership="none">
+          <type name="uint8" c:type="guint8"/>
+        </parameter>
+        <parameter name="csrc_count" transfer-ownership="none">
+          <type name="uint8" c:type="guint8"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_compare_seqnum"
+              c:identifier="gst_rtp_buffer_compare_seqnum"
+              doc="Compare two sequence numbers, taking care of wraparounds. This function
+returns the difference between @seqnum1 and @seqnum2.
+are equal or a positive value if @seqnum1 is smaller than @segnum2."
+              version="0.10.15">
+      <return-value transfer-ownership="none">
+        <type name="int" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="seqnum1" transfer-ownership="none">
+          <type name="uint16" c:type="guint16"/>
+        </parameter>
+        <parameter name="seqnum2" transfer-ownership="none">
+          <type name="uint16" c:type="guint16"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_default_clock_rate"
+              c:identifier="gst_rtp_buffer_default_clock_rate"
+              doc="Get the default clock-rate for the static payload type @payload_type.
+the clock-rate is undefined."
+              version="0.10.13">
+      <return-value transfer-ownership="none">
+        <type name="uint32" c:type="guint32"/>
+      </return-value>
+      <parameters>
+        <parameter name="payload_type" transfer-ownership="none">
+          <type name="uint8" c:type="guint8"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_ext_timestamp"
+              c:identifier="gst_rtp_buffer_ext_timestamp"
+              doc="Update the @exttimestamp field with @timestamp. For the first call of the
+method, @exttimestamp should point to a location with a value of -1.
+This function makes sure that the returned value is a constantly increasing
+value even in the case where there is a timestamp wraparound."
+              version="0.10.15">
+      <return-value transfer-ownership="none">
+        <type name="uint64" c:type="guint64"/>
+      </return-value>
+      <parameters>
+        <parameter name="exttimestamp"
+                   direction="out"
+                   transfer-ownership="full">
+          <type name="uint64" c:type="guint64*"/>
+        </parameter>
+        <parameter name="timestamp" transfer-ownership="none">
+          <type name="uint32" c:type="guint32"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_get_csrc"
+              c:identifier="gst_rtp_buffer_get_csrc"
+              doc="Get the CSRC at index @idx in @buffer.">
+      <return-value transfer-ownership="none">
+        <type name="uint32" c:type="guint32"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none">
+          <type name="Gst.Buffer" c:type="GstBuffer*"/>
+        </parameter>
+        <parameter name="idx" transfer-ownership="none">
+          <type name="uint8" c:type="guint8"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_get_csrc_count"
+              c:identifier="gst_rtp_buffer_get_csrc_count"
+              doc="Get the CSRC count of the RTP packet in @buffer.">
+      <return-value transfer-ownership="none">
+        <type name="uint8" c:type="guint8"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none">
+          <type name="Gst.Buffer" c:type="GstBuffer*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_get_extension"
+              c:identifier="gst_rtp_buffer_get_extension"
+              doc="Check if the extension bit is set on the RTP packet in @buffer.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none">
+          <type name="Gst.Buffer" c:type="GstBuffer*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_get_extension_data"
+              c:identifier="gst_rtp_buffer_get_extension_data"
+              doc="Get the extension data. @bits will contain the extension 16 bits of custom
+data. @data will point to the data in the extension and @wordlen will contain
+the length of @data in 32 bits words.
+If @buffer did not contain an extension, this function will return %FALSE
+with @bits, @data and @wordlen unchanged."
+              version="0.10.15">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none">
+          <type name="Gst.Buffer" c:type="GstBuffer*"/>
+        </parameter>
+        <parameter name="bits" direction="out" transfer-ownership="full">
+          <type name="uint16" c:type="guint16*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gpointer*"/>
+        </parameter>
+        <parameter name="wordlen" direction="out" transfer-ownership="full">
+          <type name="uint" c:type="guint*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_get_header_len"
+              c:identifier="gst_rtp_buffer_get_header_len"
+              doc="Return the total length of the header in @buffer. This include the length of
+the fixed header, the CSRC list and the extension header.">
+      <return-value transfer-ownership="none">
+        <type name="uint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none">
+          <type name="Gst.Buffer" c:type="GstBuffer*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_get_marker"
+              c:identifier="gst_rtp_buffer_get_marker"
+              doc="Check if the marker bit is set on the RTP packet in @buffer.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none">
+          <type name="Gst.Buffer" c:type="GstBuffer*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_get_packet_len"
+              c:identifier="gst_rtp_buffer_get_packet_len"
+              doc="Return the total length of the packet in @buffer.">
+      <return-value transfer-ownership="none">
+        <type name="uint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none">
+          <type name="Gst.Buffer" c:type="GstBuffer*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_get_padding"
+              c:identifier="gst_rtp_buffer_get_padding"
+              doc="Check if the padding bit is set on the RTP packet in @buffer.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none">
+          <type name="Gst.Buffer" c:type="GstBuffer*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_get_payload"
+              c:identifier="gst_rtp_buffer_get_payload"
+              doc="Get a pointer to the payload data in @buffer. This pointer is valid as long
+as a reference to @buffer is held.">
+      <return-value transfer-ownership="none">
+        <type name="any" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none">
+          <type name="Gst.Buffer" c:type="GstBuffer*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_get_payload_buffer"
+              c:identifier="gst_rtp_buffer_get_payload_buffer"
+              doc="Create a buffer of the payload of the RTP packet in @buffer. This function
+will internally create a subbuffer of @buffer so that a memcpy can be
+avoided.">
+      <return-value transfer-ownership="full">
+        <type name="Gst.Buffer" c:type="GstBuffer*"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none">
+          <type name="Gst.Buffer" c:type="GstBuffer*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_get_payload_len"
+              c:identifier="gst_rtp_buffer_get_payload_len"
+              doc="Get the length of the payload of the RTP packet in @buffer.">
+      <return-value transfer-ownership="none">
+        <type name="uint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none">
+          <type name="Gst.Buffer" c:type="GstBuffer*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_get_payload_subbuffer"
+              c:identifier="gst_rtp_buffer_get_payload_subbuffer"
+              doc="Create a subbuffer of the payload of the RTP packet in @buffer. @offset bytes
+are skipped in the payload and the subbuffer will be of size @len.
+If @len is -1 the total payload starting from @offset if subbuffered."
+              version="0.10.10">
+      <return-value transfer-ownership="full">
+        <type name="Gst.Buffer" c:type="GstBuffer*"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none">
+          <type name="Gst.Buffer" c:type="GstBuffer*"/>
+        </parameter>
+        <parameter name="offset" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="len" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_get_payload_type"
+              c:identifier="gst_rtp_buffer_get_payload_type"
+              doc="Get the payload type of the RTP packet in @buffer.">
+      <return-value transfer-ownership="none">
+        <type name="uint8" c:type="guint8"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none">
+          <type name="Gst.Buffer" c:type="GstBuffer*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_get_seq"
+              c:identifier="gst_rtp_buffer_get_seq"
+              doc="Get the sequence number of the RTP packet in @buffer.">
+      <return-value transfer-ownership="none">
+        <type name="uint16" c:type="guint16"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none">
+          <type name="Gst.Buffer" c:type="GstBuffer*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_get_ssrc"
+              c:identifier="gst_rtp_buffer_get_ssrc"
+              doc="Get the SSRC of the RTP packet in @buffer.">
+      <return-value transfer-ownership="none">
+        <type name="uint32" c:type="guint32"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none">
+          <type name="Gst.Buffer" c:type="GstBuffer*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_get_timestamp"
+              c:identifier="gst_rtp_buffer_get_timestamp"
+              doc="Get the timestamp of the RTP packet in @buffer.">
+      <return-value transfer-ownership="none">
+        <type name="uint32" c:type="guint32"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none">
+          <type name="Gst.Buffer" c:type="GstBuffer*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_get_version"
+              c:identifier="gst_rtp_buffer_get_version"
+              doc="Get the version number of the RTP packet in @buffer.">
+      <return-value transfer-ownership="none">
+        <type name="uint8" c:type="guint8"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none">
+          <type name="Gst.Buffer" c:type="GstBuffer*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_list_get_payload_len"
+              c:identifier="gst_rtp_buffer_list_get_payload_len"
+              doc="Get the length of the payload of the RTP packet in @list."
+              version="0.10.24">
+      <return-value transfer-ownership="none">
+        <type name="uint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="list" transfer-ownership="none">
+          <type name="Gst.BufferList" c:type="GstBufferList*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_list_get_payload_type"
+              c:identifier="gst_rtp_buffer_list_get_payload_type"
+              doc="Get the payload type of the first RTP packet in @list.
+All packets in @list should have the same payload type."
+              version="0.10.24">
+      <return-value transfer-ownership="none">
+        <type name="uint8" c:type="guint8"/>
+      </return-value>
+      <parameters>
+        <parameter name="list" transfer-ownership="none">
+          <type name="Gst.BufferList" c:type="GstBufferList*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_list_get_seq"
+              c:identifier="gst_rtp_buffer_list_get_seq"
+              doc="Get the sequence number of the first RTP packet in @list.
+All packets within @list have the same sequence number."
+              version="0.10.24">
+      <return-value transfer-ownership="none">
+        <type name="uint16" c:type="guint16"/>
+      </return-value>
+      <parameters>
+        <parameter name="list" transfer-ownership="none">
+          <type name="Gst.BufferList" c:type="GstBufferList*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_list_get_ssrc"
+              c:identifier="gst_rtp_buffer_list_get_ssrc"
+              doc="Get the SSRC of the first RTP packet in @list.
+All RTP packets within @list have the same SSRC."
+              version="0.10.24">
+      <return-value transfer-ownership="none">
+        <type name="uint32" c:type="guint32"/>
+      </return-value>
+      <parameters>
+        <parameter name="list" transfer-ownership="none">
+          <type name="Gst.BufferList" c:type="GstBufferList*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_list_get_timestamp"
+              c:identifier="gst_rtp_buffer_list_get_timestamp"
+              doc="Get the timestamp of the first RTP packet in @list.
+All packets within @list have the same timestamp."
+              version="0.10.24">
+      <return-value transfer-ownership="none">
+        <type name="uint32" c:type="guint32"/>
+      </return-value>
+      <parameters>
+        <parameter name="list" transfer-ownership="none">
+          <type name="Gst.BufferList" c:type="GstBufferList*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_list_set_payload_type"
+              c:identifier="gst_rtp_buffer_list_set_payload_type"
+              doc="Set the payload type of each RTP packet in @list to @payload_type."
+              version="0.10.24">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="list" transfer-ownership="none">
+          <type name="Gst.BufferList" c:type="GstBufferList*"/>
+        </parameter>
+        <parameter name="payload_type" transfer-ownership="none">
+          <type name="uint8" c:type="guint8"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_list_set_seq"
+              c:identifier="gst_rtp_buffer_list_set_seq"
+              doc="Set the sequence number of each RTP packet in @list to @seq."
+              version="0.10.24">
+      <return-value transfer-ownership="none">
+        <type name="uint16" c:type="guint16"/>
+      </return-value>
+      <parameters>
+        <parameter name="list" transfer-ownership="none">
+          <type name="Gst.BufferList" c:type="GstBufferList*"/>
+        </parameter>
+        <parameter name="seq" transfer-ownership="none">
+          <type name="uint16" c:type="guint16"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_list_set_ssrc"
+              c:identifier="gst_rtp_buffer_list_set_ssrc"
+              doc="Set the SSRC on each RTP packet in @list to @ssrc."
+              version="0.10.24">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="list" transfer-ownership="none">
+          <type name="Gst.BufferList" c:type="GstBufferList*"/>
+        </parameter>
+        <parameter name="ssrc" transfer-ownership="none">
+          <type name="uint32" c:type="guint32"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_list_set_timestamp"
+              c:identifier="gst_rtp_buffer_list_set_timestamp"
+              doc="Set the timestamp of each RTP packet in @list to @timestamp."
+              version="0.10.24">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="list" transfer-ownership="none">
+          <type name="Gst.BufferList" c:type="GstBufferList*"/>
+        </parameter>
+        <parameter name="timestamp" transfer-ownership="none">
+          <type name="uint32" c:type="guint32"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_list_validate"
+              c:identifier="gst_rtp_buffer_list_validate"
+              doc="Check if all RTP packets in the @list are valid using validate_data().
+Use this function to validate an list before using the other functions in
+this module."
+              version="0.10.24">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="list" transfer-ownership="none">
+          <type name="Gst.BufferList" c:type="GstBufferList*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_new_allocate"
+              c:identifier="gst_rtp_buffer_new_allocate"
+              doc="Allocate a new #GstBuffer with enough data to hold an RTP packet with
+All other RTP header fields will be set to 0/FALSE.
+parameters.">
+      <return-value transfer-ownership="full">
+        <type name="Gst.Buffer" c:type="GstBuffer*"/>
+      </return-value>
+      <parameters>
+        <parameter name="payload_len" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="pad_len" transfer-ownership="none">
+          <type name="uint8" c:type="guint8"/>
+        </parameter>
+        <parameter name="csrc_count" transfer-ownership="none">
+          <type name="uint8" c:type="guint8"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_new_allocate_len"
+              c:identifier="gst_rtp_buffer_new_allocate_len"
+              doc="Create a new #GstBuffer that can hold an RTP packet that is exactly
+All RTP header fields will be set to 0/FALSE.">
+      <return-value transfer-ownership="full">
+        <type name="Gst.Buffer" c:type="GstBuffer*"/>
+      </return-value>
+      <parameters>
+        <parameter name="packet_len" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="pad_len" transfer-ownership="none">
+          <type name="uint8" c:type="guint8"/>
+        </parameter>
+        <parameter name="csrc_count" transfer-ownership="none">
+          <type name="uint8" c:type="guint8"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_new_copy_data"
+              c:identifier="gst_rtp_buffer_new_copy_data"
+              doc="Create a new buffer and set the data to a copy of @len
+bytes of @data and the size to @len. The data will be freed when the buffer
+is freed.">
+      <return-value transfer-ownership="full">
+        <type name="Gst.Buffer" c:type="GstBuffer*"/>
+      </return-value>
+      <parameters>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="len" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_new_take_data"
+              c:identifier="gst_rtp_buffer_new_take_data"
+              doc="Create a new buffer and set the data and size of the buffer to @data and @len
+respectively. @data will be freed when the buffer is unreffed, so this
+function transfers ownership of @data to the new buffer.">
+      <return-value transfer-ownership="full">
+        <type name="Gst.Buffer" c:type="GstBuffer*"/>
+      </return-value>
+      <parameters>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="len" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_pad_to"
+              c:identifier="gst_rtp_buffer_pad_to"
+              doc="Set the amount of padding in the RTP packet in @buffer to">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none">
+          <type name="Gst.Buffer" c:type="GstBuffer*"/>
+        </parameter>
+        <parameter name="len" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_set_csrc"
+              c:identifier="gst_rtp_buffer_set_csrc"
+              doc="Modify the CSRC at index @idx in @buffer to @csrc.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none">
+          <type name="Gst.Buffer" c:type="GstBuffer*"/>
+        </parameter>
+        <parameter name="idx" transfer-ownership="none">
+          <type name="uint8" c:type="guint8"/>
+        </parameter>
+        <parameter name="csrc" transfer-ownership="none">
+          <type name="uint32" c:type="guint32"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_set_extension"
+              c:identifier="gst_rtp_buffer_set_extension"
+              doc="Set the extension bit on the RTP packet in @buffer to @extension.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none">
+          <type name="Gst.Buffer" c:type="GstBuffer*"/>
+        </parameter>
+        <parameter name="extension" transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_set_extension_data"
+              c:identifier="gst_rtp_buffer_set_extension_data"
+              doc="the extension, excluding the extension header ( therefore zero is a valid length)
+Set the extension bit of the rtp buffer and fill in the @bits and @length of the
+extension header. It will refuse to set the extension data if the buffer is not
+large enough.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none">
+          <type name="Gst.Buffer" c:type="GstBuffer*"/>
+        </parameter>
+        <parameter name="bits" transfer-ownership="none">
+          <type name="uint16" c:type="guint16"/>
+        </parameter>
+        <parameter name="length" transfer-ownership="none">
+          <type name="uint16" c:type="guint16"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_set_marker"
+              c:identifier="gst_rtp_buffer_set_marker"
+              doc="Set the marker bit on the RTP packet in @buffer to @marker.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none">
+          <type name="Gst.Buffer" c:type="GstBuffer*"/>
+        </parameter>
+        <parameter name="marker" transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_set_packet_len"
+              c:identifier="gst_rtp_buffer_set_packet_len"
+              doc="Set the total @buffer size to @len. The data in the buffer will be made
+larger if needed. Any padding will be removed from the packet.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none">
+          <type name="Gst.Buffer" c:type="GstBuffer*"/>
+        </parameter>
+        <parameter name="len" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_set_padding"
+              c:identifier="gst_rtp_buffer_set_padding"
+              doc="Set the padding bit on the RTP packet in @buffer to @padding.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none">
+          <type name="Gst.Buffer" c:type="GstBuffer*"/>
+        </parameter>
+        <parameter name="padding" transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_set_payload_type"
+              c:identifier="gst_rtp_buffer_set_payload_type"
+              doc="Set the payload type of the RTP packet in @buffer to @payload_type.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none">
+          <type name="Gst.Buffer" c:type="GstBuffer*"/>
+        </parameter>
+        <parameter name="payload_type" transfer-ownership="none">
+          <type name="uint8" c:type="guint8"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_set_seq"
+              c:identifier="gst_rtp_buffer_set_seq"
+              doc="Set the sequence number of the RTP packet in @buffer to @seq.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none">
+          <type name="Gst.Buffer" c:type="GstBuffer*"/>
+        </parameter>
+        <parameter name="seq" transfer-ownership="none">
+          <type name="uint16" c:type="guint16"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_set_ssrc"
+              c:identifier="gst_rtp_buffer_set_ssrc"
+              doc="Set the SSRC on the RTP packet in @buffer to @ssrc.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none">
+          <type name="Gst.Buffer" c:type="GstBuffer*"/>
+        </parameter>
+        <parameter name="ssrc" transfer-ownership="none">
+          <type name="uint32" c:type="guint32"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_set_timestamp"
+              c:identifier="gst_rtp_buffer_set_timestamp"
+              doc="Set the timestamp of the RTP packet in @buffer to @timestamp.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none">
+          <type name="Gst.Buffer" c:type="GstBuffer*"/>
+        </parameter>
+        <parameter name="timestamp" transfer-ownership="none">
+          <type name="uint32" c:type="guint32"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_set_version"
+              c:identifier="gst_rtp_buffer_set_version"
+              doc="Set the version of the RTP packet in @buffer to @version.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none">
+          <type name="Gst.Buffer" c:type="GstBuffer*"/>
+        </parameter>
+        <parameter name="version" transfer-ownership="none">
+          <type name="uint8" c:type="guint8"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_validate"
+              c:identifier="gst_rtp_buffer_validate"
+              doc="Check if the data pointed to by @buffer is a valid RTP packet using
+validate_data().
+Use this function to validate a packet before using the other functions in
+this module.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none">
+          <type name="Gst.Buffer" c:type="GstBuffer*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_validate_data"
+              c:identifier="gst_rtp_buffer_validate_data"
+              doc="Check if the @data and @size point to the data of a valid RTP packet.
+This function checks the length, version and padding of the packet data.
+Use this function to validate a packet before using the other functions in
+this module.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="data" transfer-ownership="none">
+          <array c:type="guint8*">
+            <type name="uint8"/>
+          </array>
+        </parameter>
+        <parameter name="len" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="payload_info_for_name"
+              c:identifier="gst_rtp_payload_info_for_name"
+              doc="Get the #GstRTPPayloadInfo for @media and @encoding_name. This function is
+mostly used to get the default clock-rate and bandwidth for dynamic payload
+types specified with @media and @encoding name.
+The search for @encoding_name will be performed in a case insensitve way.">
+      <return-value transfer-ownership="none">
+        <type name="RTPPayloadInfo" c:type="GstRTPPayloadInfo*"/>
+      </return-value>
+      <parameters>
+        <parameter name="media" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="encoding_name" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="payload_info_for_pt"
+              c:identifier="gst_rtp_payload_info_for_pt"
+              doc="Get the #GstRTPPayloadInfo for @payload_type. This function is
+mostly used to get the default clock-rate and bandwidth for static payload
+types specified with @payload_type.">
+      <return-value transfer-ownership="none">
+        <type name="RTPPayloadInfo" c:type="GstRTPPayloadInfo*"/>
+      </return-value>
+      <parameters>
+        <parameter name="payload_type" transfer-ownership="none">
+          <type name="uint8" c:type="guint8"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="rtcp_buffer_add_packet"
+              c:identifier="gst_rtcp_buffer_add_packet"
+              doc="Add a new packet of @type to @buffer. @packet will point to the newly created
+packet.
+if the max mtu is exceeded for the buffer.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none">
+          <type name="Gst.Buffer" c:type="GstBuffer*"/>
+        </parameter>
+        <parameter name="type" transfer-ownership="none">
+          <type name="RTCPType" c:type="GstRTCPType"/>
+        </parameter>
+        <parameter name="packet" transfer-ownership="none">
+          <type name="RTCPPacket" c:type="GstRTCPPacket*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="rtcp_buffer_end"
+              c:identifier="gst_rtcp_buffer_end"
+              doc="Finish @buffer after being constructured. This function is usually called
+after gst_rtcp_buffer_new() and after adding the RTCP items to the new buffer.
+The function adjusts the size of @buffer with the total length of all the
+added packets.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none">
+          <type name="Gst.Buffer" c:type="GstBuffer*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="rtcp_buffer_get_first_packet"
+              c:identifier="gst_rtcp_buffer_get_first_packet"
+              doc="Initialize a new #GstRTCPPacket pointer that points to the first packet in">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none">
+          <type name="Gst.Buffer" c:type="GstBuffer*"/>
+        </parameter>
+        <parameter name="packet" transfer-ownership="none">
+          <type name="RTCPPacket" c:type="GstRTCPPacket*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="rtcp_buffer_get_packet_count"
+              c:identifier="gst_rtcp_buffer_get_packet_count"
+              doc="Get the number of RTCP packets in @buffer.">
+      <return-value transfer-ownership="none">
+        <type name="uint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none">
+          <type name="Gst.Buffer" c:type="GstBuffer*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="rtcp_buffer_new"
+              c:identifier="gst_rtcp_buffer_new"
+              doc="Create a new buffer for constructing RTCP packets. The packet will have a
+maximum size of @mtu.">
+      <return-value transfer-ownership="full">
+        <type name="Gst.Buffer" c:type="GstBuffer*"/>
+      </return-value>
+      <parameters>
+        <parameter name="mtu" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="rtcp_buffer_new_copy_data"
+              c:identifier="gst_rtcp_buffer_new_copy_data"
+              doc="Create a new buffer and set the data to a copy of @len
+bytes of @data and the size to @len. The data will be freed when the buffer
+is freed.">
+      <return-value transfer-ownership="full">
+        <type name="Gst.Buffer" c:type="GstBuffer*"/>
+      </return-value>
+      <parameters>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="len" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="rtcp_buffer_new_take_data"
+              c:identifier="gst_rtcp_buffer_new_take_data"
+              doc="Create a new buffer and set the data and size of the buffer to @data and @len
+respectively. @data will be freed when the buffer is unreffed, so this
+function transfers ownership of @data to the new buffer.">
+      <return-value transfer-ownership="full">
+        <type name="Gst.Buffer" c:type="GstBuffer*"/>
+      </return-value>
+      <parameters>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="len" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="rtcp_buffer_validate"
+              c:identifier="gst_rtcp_buffer_validate"
+              doc="Check if the data pointed to by @buffer is a valid RTCP packet using
+gst_rtcp_buffer_validate_data().">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none">
+          <type name="Gst.Buffer" c:type="GstBuffer*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="rtcp_buffer_validate_data"
+              c:identifier="gst_rtcp_buffer_validate_data"
+              doc="Check if the @data and @size point to the data of a valid RTCP (compound)
+packet.
+Use this function to validate a packet before using the other functions in
+this module.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="data" transfer-ownership="none">
+          <array c:type="guint8*">
+            <type name="uint8"/>
+          </array>
+        </parameter>
+        <parameter name="len" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="rtcp_ntp_to_unix"
+              c:identifier="gst_rtcp_ntp_to_unix"
+              doc="Converts an NTP time to UNIX nanoseconds. @ntptime can typically be
+the NTP time of an SR RTCP message and contains, in the upper 32 bits, the
+number of seconds since 1900 and, in the lower 32 bits, the fractional
+seconds. The resulting value will be the number of nanoseconds since 1970.">
+      <return-value transfer-ownership="none">
+        <type name="uint64" c:type="guint64"/>
+      </return-value>
+      <parameters>
+        <parameter name="ntptime" transfer-ownership="none">
+          <type name="uint64" c:type="guint64"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="rtcp_packet_fb_get_type"
+              c:identifier="gst_rtcp_packet_fb_get_type"
+              doc="Get the feedback message type of the FB @packet."
+              version="0.10.23">
+      <return-value transfer-ownership="full">
+        <type name="RTCPFBType" c:type="GstRTCPFBType"/>
+      </return-value>
+      <parameters>
+        <parameter name="packet" transfer-ownership="none">
+          <type name="RTCPPacket" c:type="GstRTCPPacket*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="rtcp_packet_get_type"
+              c:identifier="gst_rtcp_packet_get_type"
+              doc="Get the packet type of the packet pointed to by @packet.
+pointing to a valid packet.">
+      <return-value transfer-ownership="full">
+        <type name="RTCPType" c:type="GstRTCPType"/>
+      </return-value>
+      <parameters>
+        <parameter name="packet" transfer-ownership="none">
+          <type name="RTCPPacket" c:type="GstRTCPPacket*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="rtcp_sdes_name_to_type"
+              c:identifier="gst_rtcp_sdes_name_to_type"
+              doc="Convert @name into a @GstRTCPSDESType. @name is typically a key in a
+#GstStructure containing SDES items.
+is a private sdes item."
+              version="0.10.26">
+      <return-value transfer-ownership="full">
+        <type name="RTCPSDESType" c:type="GstRTCPSDESType"/>
+      </return-value>
+      <parameters>
+        <parameter name="name" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="rtcp_sdes_type_to_name"
+              c:identifier="gst_rtcp_sdes_type_to_name"
+              doc="Converts @type to the string equivalent. The string is typically used as a
+key in a #GstStructure containing SDES items."
+              version="0.10.26">
+      <return-value transfer-ownership="none">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="type" transfer-ownership="none">
+          <type name="RTCPSDESType" c:type="GstRTCPSDESType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="rtcp_unix_to_ntp"
+              c:identifier="gst_rtcp_unix_to_ntp"
+              doc="Converts a UNIX timestamp in nanoseconds to an NTP time. The caller should
+pass a value with nanoseconds since 1970. The NTP time will, in the upper
+32 bits, contain the number of seconds since 1900 and, in the lower 32
+bits, the fractional seconds. The resulting value can be used as an ntptime
+for constructing SR RTCP packets.">
+      <return-value transfer-ownership="none">
+        <type name="uint64" c:type="guint64"/>
+      </return-value>
+      <parameters>
+        <parameter name="unixtime" transfer-ownership="none">
+          <type name="uint64" c:type="guint64"/>
+        </parameter>
+      </parameters>
+    </function>
+  </namespace>
+</repository>
diff --git a/extra/gstreamer/rtp/ffi/ffi.factor b/extra/gstreamer/rtp/ffi/ffi.factor
new file mode 100644 (file)
index 0000000..28f8605
--- /dev/null
@@ -0,0 +1,16 @@
+! Copyright (C) 2010 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: alien alien.libraries combinators kernel system
+gobject-introspection glib.ffi gstreamer.base.ffi gstreamer.ffi ;
+IN: gstreamer.rtp.ffi
+
+<<
+"gstreamer.rtp" {
+    { [ os winnt? ] [ drop ] }
+    { [ os macosx? ] [ drop ] }
+    { [ os unix? ] [ "libgstrtp-0.10.so" cdecl add-library ] }
+} cond
+>>
+
+GIR: vocab:gstreamer/rtp/GstRtp-0.10.gir
+
diff --git a/extra/gstreamer/rtp/rtp.factor b/extra/gstreamer/rtp/rtp.factor
new file mode 100644 (file)
index 0000000..7e928c1
--- /dev/null
@@ -0,0 +1,5 @@
+! Copyright (C) 2010 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: gstreamer.rtp.ffi ;
+IN: gstreamer.rtp
+
diff --git a/extra/gstreamer/rtsp/GstRtsp-0.10.gir b/extra/gstreamer/rtsp/GstRtsp-0.10.gir
new file mode 100644 (file)
index 0000000..b0cf681
--- /dev/null
@@ -0,0 +1,2761 @@
+<?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.0"
+            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="GLib" version="2.0"/>
+  <include name="GModule" version="2.0"/>
+  <include name="GObject" version="2.0"/>
+  <include name="Gst" version="0.10"/>
+  <include name="GstSdp" version="0.10"/>
+  <include name="libxml2" version="2.0"/>
+  <package name="gstreamer-0.10"/>
+  <package name="gstreamer-sdp-0.10"/>
+  <c:include name="gst/audio/gstrtsp-enumtypes.h"/>
+  <c:include name="gst/audio/gstrtspbase64.h"/>
+  <c:include name="gst/audio/gstrtspconnection.h"/>
+  <c:include name="gst/audio/gstrtspdefs.h"/>
+  <c:include name="gst/audio/gstrtspextension.h"/>
+  <c:include name="gst/audio/gstrtspmessage.h"/>
+  <c:include name="gst/audio/gstrtsprange.h"/>
+  <c:include name="gst/audio/gstrtsptransport.h"/>
+  <c:include name="gst/audio/gstrtspurl.h"/>
+  <namespace name="GstRtsp"
+             version="0.10"
+             shared-library="libgstrtsp-0.10.so.0"
+             c:prefix="Gst">
+    <constant name="DEFAULT_PORT" value="554">
+      <type name="int"/>
+    </constant>
+    <enumeration name="RTSPAuthMethod"
+                 doc="Authentication methods, ordered by strength"
+                 glib:type-name="GstRTSPAuthMethod"
+                 glib:get-type="gst_rtsp_auth_method_get_type"
+                 c:type="GstRTSPAuthMethod">
+      <member name="none"
+              value="0"
+              c:identifier="GST_RTSP_AUTH_NONE"
+              glib:nick="none"/>
+      <member name="basic"
+              value="1"
+              c:identifier="GST_RTSP_AUTH_BASIC"
+              glib:nick="basic"/>
+      <member name="digest"
+              value="2"
+              c:identifier="GST_RTSP_AUTH_DIGEST"
+              glib:nick="digest"/>
+    </enumeration>
+    <record name="RTSPConnection"
+            c:type="GstRTSPConnection"
+            doc="Opaque RTSP connection object.">
+      <method name="connect"
+              c:identifier="gst_rtsp_connection_connect"
+              doc="Attempt to connect to the url of @conn made with
+gst_rtsp_connection_create(). If @timeout is #NULL this function can block
+forever. If @timeout contains a valid timeout, this function will return
+#GST_RTSP_ETIMEOUT after the timeout expired.
+This function can be cancelled with gst_rtsp_connection_flush().">
+        <return-value transfer-ownership="full">
+          <type name="RTSPResult" c:type="GstRTSPResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="timeout" transfer-ownership="none">
+            <type name="GLib.TimeVal" c:type="GTimeVal*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="close"
+              c:identifier="gst_rtsp_connection_close"
+              doc="Close the connected @conn. After this call, the connection is in the same
+state as when it was first created.">
+        <return-value transfer-ownership="full">
+          <type name="RTSPResult" c:type="GstRTSPResult"/>
+        </return-value>
+      </method>
+      <method name="free"
+              c:identifier="gst_rtsp_connection_free"
+              doc="Close and free @conn.">
+        <return-value transfer-ownership="full">
+          <type name="RTSPResult" c:type="GstRTSPResult"/>
+        </return-value>
+      </method>
+      <method name="read"
+              c:identifier="gst_rtsp_connection_read"
+              doc="Attempt to read @size bytes into @data from the connected @conn, blocking up to
+the specified @timeout. @timeout can be #NULL, in which case this function
+might block forever.
+This function can be cancelled with gst_rtsp_connection_flush().">
+        <return-value transfer-ownership="full">
+          <type name="RTSPResult" c:type="GstRTSPResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <array c:type="guint8*">
+              <type name="uint8"/>
+            </array>
+          </parameter>
+          <parameter name="size" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="timeout" transfer-ownership="none">
+            <type name="GLib.TimeVal" c:type="GTimeVal*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="write"
+              c:identifier="gst_rtsp_connection_write"
+              doc="Attempt to write @size bytes of @data to the connected @conn, blocking up to
+the specified @timeout. @timeout can be #NULL, in which case this function
+might block forever.
+This function can be cancelled with gst_rtsp_connection_flush().">
+        <return-value transfer-ownership="full">
+          <type name="RTSPResult" c:type="GstRTSPResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <array c:type="guint8*">
+              <type name="uint8"/>
+            </array>
+          </parameter>
+          <parameter name="size" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="timeout" transfer-ownership="none">
+            <type name="GLib.TimeVal" c:type="GTimeVal*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="send"
+              c:identifier="gst_rtsp_connection_send"
+              doc="Attempt to send @message to the connected @conn, blocking up to
+the specified @timeout. @timeout can be #NULL, in which case this function
+might block forever.
+This function can be cancelled with gst_rtsp_connection_flush().">
+        <return-value transfer-ownership="full">
+          <type name="RTSPResult" c:type="GstRTSPResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="message" transfer-ownership="none">
+            <type name="RTSPMessage" c:type="GstRTSPMessage*"/>
+          </parameter>
+          <parameter name="timeout" transfer-ownership="none">
+            <type name="GLib.TimeVal" c:type="GTimeVal*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="receive"
+              c:identifier="gst_rtsp_connection_receive"
+              doc="Attempt to read into @message from the connected @conn, blocking up to
+the specified @timeout. @timeout can be #NULL, in which case this function
+might block forever.
+This function can be cancelled with gst_rtsp_connection_flush().">
+        <return-value transfer-ownership="full">
+          <type name="RTSPResult" c:type="GstRTSPResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="message" transfer-ownership="none">
+            <type name="RTSPMessage" c:type="GstRTSPMessage*"/>
+          </parameter>
+          <parameter name="timeout" transfer-ownership="none">
+            <type name="GLib.TimeVal" c:type="GTimeVal*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="poll"
+              c:identifier="gst_rtsp_connection_poll"
+              doc="Wait up to the specified @timeout for the connection to become available for
+at least one of the operations specified in @events. When the function returns
+with #GST_RTSP_OK, @revents will contain a bitmask of available operations on
+This function can be cancelled with gst_rtsp_connection_flush()."
+              version="0.10.15">
+        <return-value transfer-ownership="full">
+          <type name="RTSPResult" c:type="GstRTSPResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="events" transfer-ownership="none">
+            <type name="RTSPEvent" c:type="GstRTSPEvent"/>
+          </parameter>
+          <parameter name="revents" transfer-ownership="none">
+            <type name="RTSPEvent" c:type="GstRTSPEvent*"/>
+          </parameter>
+          <parameter name="timeout" transfer-ownership="none">
+            <type name="GLib.TimeVal" c:type="GTimeVal*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="next_timeout"
+              c:identifier="gst_rtsp_connection_next_timeout"
+              doc="Calculate the next timeout for @conn, storing the result in @timeout.">
+        <return-value transfer-ownership="full">
+          <type name="RTSPResult" c:type="GstRTSPResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="timeout" transfer-ownership="none">
+            <type name="GLib.TimeVal" c:type="GTimeVal*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="reset_timeout"
+              c:identifier="gst_rtsp_connection_reset_timeout"
+              doc="Reset the timeout of @conn.">
+        <return-value transfer-ownership="full">
+          <type name="RTSPResult" c:type="GstRTSPResult"/>
+        </return-value>
+      </method>
+      <method name="flush"
+              c:identifier="gst_rtsp_connection_flush"
+              doc="Start or stop the flushing action on @conn. When flushing, all current
+and future actions on @conn will return #GST_RTSP_EINTR until the connection
+is set to non-flushing mode again.">
+        <return-value transfer-ownership="full">
+          <type name="RTSPResult" c:type="GstRTSPResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="flush" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_proxy"
+              c:identifier="gst_rtsp_connection_set_proxy"
+              doc="Set the proxy host and port."
+              version="0.10.23">
+        <return-value transfer-ownership="full">
+          <type name="RTSPResult" c:type="GstRTSPResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="host" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="port" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_auth"
+              c:identifier="gst_rtsp_connection_set_auth"
+              doc="Configure @conn for authentication mode @method with @user and @pass as the
+user and password respectively.">
+        <return-value transfer-ownership="full">
+          <type name="RTSPResult" c:type="GstRTSPResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="method" transfer-ownership="none">
+            <type name="RTSPAuthMethod" c:type="GstRTSPAuthMethod"/>
+          </parameter>
+          <parameter name="user" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="pass" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_auth_param"
+              c:identifier="gst_rtsp_connection_set_auth_param"
+              doc="Setup @conn with authentication directives. This is not necesary for
+methods #GST_RTSP_AUTH_NONE and #GST_RTSP_AUTH_BASIC. For
+#GST_RTSP_AUTH_DIGEST, directives should be taken from the digest challenge
+in the WWW-Authenticate response header and can include realm, domain,
+nonce, opaque, stale, algorithm, qop as per RFC2617."
+              version="0.10.20">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="param" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="clear_auth_params"
+              c:identifier="gst_rtsp_connection_clear_auth_params"
+              doc="Clear the list of authentication directives stored in @conn."
+              version="0.10.20">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="set_qos_dscp"
+              c:identifier="gst_rtsp_connection_set_qos_dscp"
+              doc="Configure @conn to use the specified DSCP value."
+              version="0.10.20">
+        <return-value transfer-ownership="full">
+          <type name="RTSPResult" c:type="GstRTSPResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="qos_dscp" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_url"
+              c:identifier="gst_rtsp_connection_get_url"
+              doc="Retrieve the URL of the other end of @conn.
+connection is freed."
+              version="0.10.23">
+        <return-value transfer-ownership="full">
+          <type name="RTSPUrl" c:type="GstRTSPUrl*"/>
+        </return-value>
+      </method>
+      <method name="get_ip"
+              c:identifier="gst_rtsp_connection_get_ip"
+              doc="Retrieve the IP address of the other end of @conn.
+connection is closed."
+              version="0.10.20">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="set_ip"
+              c:identifier="gst_rtsp_connection_set_ip"
+              doc="Set the IP address of the server."
+              version="0.10.23">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="ip" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_readfd"
+              c:identifier="gst_rtsp_connection_get_readfd"
+              doc="Get the file descriptor for reading.
+descriptor remains valid until the connection is closed."
+              version="0.10.23">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_writefd"
+              c:identifier="gst_rtsp_connection_get_writefd"
+              doc="Get the file descriptor for writing.
+descriptor remains valid until the connection is closed."
+              version="0.10.23">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="set_http_mode"
+              c:identifier="gst_rtsp_connection_set_http_mode"
+              doc="By setting the HTTP mode to %TRUE the message parsing will support HTTP
+messages in addition to the RTSP messages. It will also disable the
+automatic handling of setting up an HTTP tunnel."
+              version="0.10.25">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="enable" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_tunneled"
+              c:identifier="gst_rtsp_connection_set_tunneled"
+              doc="Set the HTTP tunneling state of the connection. This must be configured before
+the @conn is connected."
+              version="0.10.23">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="tunneled" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="is_tunneled"
+              c:identifier="gst_rtsp_connection_is_tunneled"
+              doc="Get the tunneling state of the connection."
+              version="0.10.23">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_tunnelid"
+              c:identifier="gst_rtsp_connection_get_tunnelid"
+              doc="Get the tunnel session id the connection."
+              version="0.10.23">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="do_tunnel"
+              c:identifier="gst_rtsp_connection_do_tunnel"
+              doc="If @conn received the first tunnel connection and @conn2 received
+the second tunnel connection, link the two connections together so that
+After this call, @conn2 cannot be used anymore and must be freed with
+gst_rtsp_connection_free().
+If @conn2 is %NULL then only the base64 decoding context will be setup for"
+              version="0.10.23">
+        <return-value transfer-ownership="full">
+          <type name="RTSPResult" c:type="GstRTSPResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="conn2" transfer-ownership="none">
+            <type name="RTSPConnection" c:type="GstRTSPConnection*"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <bitfield name="RTSPEvent"
+              doc="The possible events for the connection."
+              glib:type-name="GstRTSPEvent"
+              glib:get-type="gst_rtsp_event_get_type"
+              c:type="GstRTSPEvent">
+      <member name="read"
+              value="1"
+              c:identifier="GST_RTSP_EV_READ"
+              glib:nick="read"/>
+      <member name="write"
+              value="2"
+              c:identifier="GST_RTSP_EV_WRITE"
+              glib:nick="write"/>
+    </bitfield>
+    <interface name="RTSPExtension"
+               c:type="GstRTSPExtension"
+               glib:type-name="GstRTSPExtension"
+               glib:get-type="gst_rtsp_extension_get_type"
+               glib:type-struct="RTSPExtensionInterface">
+      <virtual-method name="detect_server" invoker="detect_server">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="resp" transfer-ownership="none">
+            <type name="RTSPMessage" c:type="GstRTSPMessage*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="before_send" invoker="before_send">
+        <return-value transfer-ownership="full">
+          <type name="RTSPResult" c:type="GstRTSPResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="req" transfer-ownership="none">
+            <type name="RTSPMessage" c:type="GstRTSPMessage*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="after_send" invoker="after_send">
+        <return-value transfer-ownership="full">
+          <type name="RTSPResult" c:type="GstRTSPResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="req" transfer-ownership="none">
+            <type name="RTSPMessage" c:type="GstRTSPMessage*"/>
+          </parameter>
+          <parameter name="resp" transfer-ownership="none">
+            <type name="RTSPMessage" c:type="GstRTSPMessage*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="parse_sdp" invoker="parse_sdp">
+        <return-value transfer-ownership="full">
+          <type name="RTSPResult" c:type="GstRTSPResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="sdp" transfer-ownership="none">
+            <type name="GstSdp.SDPMessage" c:type="GstSDPMessage*"/>
+          </parameter>
+          <parameter name="s" transfer-ownership="none">
+            <type name="Gst.Structure" c:type="GstStructure*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="setup_media" invoker="setup_media">
+        <return-value transfer-ownership="full">
+          <type name="RTSPResult" c:type="GstRTSPResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="media" transfer-ownership="none">
+            <type name="GstSdp.SDPMedia" c:type="GstSDPMedia*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="configure_stream" invoker="configure_stream">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="caps" transfer-ownership="none">
+            <type name="Gst.Caps" c:type="GstCaps*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_transports" invoker="get_transports">
+        <return-value transfer-ownership="full">
+          <type name="RTSPResult" c:type="GstRTSPResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="protocols" transfer-ownership="none">
+            <type name="RTSPLowerTrans" c:type="GstRTSPLowerTrans"/>
+          </parameter>
+          <parameter name="transport" transfer-ownership="none">
+            <array c:type="gchar**">
+              <type name="utf8"/>
+            </array>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="stream_select" invoker="stream_select">
+        <return-value transfer-ownership="full">
+          <type name="RTSPResult" c:type="GstRTSPResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="url" transfer-ownership="none">
+            <type name="RTSPUrl" c:type="GstRTSPUrl*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="receive_request" invoker="receive_request">
+        <return-value transfer-ownership="full">
+          <type name="RTSPResult" c:type="GstRTSPResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="req" transfer-ownership="none">
+            <type name="RTSPMessage" c:type="GstRTSPMessage*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="detect_server"
+              c:identifier="gst_rtsp_extension_detect_server">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="resp" transfer-ownership="none">
+            <type name="RTSPMessage" c:type="GstRTSPMessage*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="before_send" c:identifier="gst_rtsp_extension_before_send">
+        <return-value transfer-ownership="full">
+          <type name="RTSPResult" c:type="GstRTSPResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="req" transfer-ownership="none">
+            <type name="RTSPMessage" c:type="GstRTSPMessage*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="after_send" c:identifier="gst_rtsp_extension_after_send">
+        <return-value transfer-ownership="full">
+          <type name="RTSPResult" c:type="GstRTSPResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="req" transfer-ownership="none">
+            <type name="RTSPMessage" c:type="GstRTSPMessage*"/>
+          </parameter>
+          <parameter name="resp" transfer-ownership="none">
+            <type name="RTSPMessage" c:type="GstRTSPMessage*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_sdp" c:identifier="gst_rtsp_extension_parse_sdp">
+        <return-value transfer-ownership="full">
+          <type name="RTSPResult" c:type="GstRTSPResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="sdp" transfer-ownership="none">
+            <type name="GstSdp.SDPMessage" c:type="GstSDPMessage*"/>
+          </parameter>
+          <parameter name="s" transfer-ownership="none">
+            <type name="Gst.Structure" c:type="GstStructure*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="setup_media" c:identifier="gst_rtsp_extension_setup_media">
+        <return-value transfer-ownership="full">
+          <type name="RTSPResult" c:type="GstRTSPResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="media" transfer-ownership="none">
+            <type name="GstSdp.SDPMedia" c:type="GstSDPMedia*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="configure_stream"
+              c:identifier="gst_rtsp_extension_configure_stream">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="caps" transfer-ownership="none">
+            <type name="Gst.Caps" c:type="GstCaps*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_transports"
+              c:identifier="gst_rtsp_extension_get_transports">
+        <return-value transfer-ownership="full">
+          <type name="RTSPResult" c:type="GstRTSPResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="protocols" transfer-ownership="none">
+            <type name="RTSPLowerTrans" c:type="GstRTSPLowerTrans"/>
+          </parameter>
+          <parameter name="transport" transfer-ownership="none">
+            <array c:type="gchar**">
+              <type name="utf8"/>
+            </array>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="stream_select"
+              c:identifier="gst_rtsp_extension_stream_select">
+        <return-value transfer-ownership="full">
+          <type name="RTSPResult" c:type="GstRTSPResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="url" transfer-ownership="none">
+            <type name="RTSPUrl" c:type="GstRTSPUrl*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="receive_request"
+              c:identifier="gst_rtsp_extension_receive_request">
+        <return-value transfer-ownership="full">
+          <type name="RTSPResult" c:type="GstRTSPResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="req" transfer-ownership="none">
+            <type name="RTSPMessage" c:type="GstRTSPMessage*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="send" c:identifier="gst_rtsp_extension_send">
+        <return-value transfer-ownership="full">
+          <type name="RTSPResult" c:type="GstRTSPResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="req" transfer-ownership="none">
+            <type name="RTSPMessage" c:type="GstRTSPMessage*"/>
+          </parameter>
+          <parameter name="resp" transfer-ownership="none">
+            <type name="RTSPMessage" c:type="GstRTSPMessage*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <glib:signal name="send">
+        <return-value transfer-ownership="full">
+          <type name="RTSPResult" c:type="GstRTSPResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </interface>
+    <record name="RTSPExtensionInterface"
+            c:type="GstRTSPExtensionInterface"
+            glib:is-gtype-struct-for="RTSPExtension">
+      <field name="parent">
+        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+      </field>
+      <field name="detect_server">
+        <callback name="detect_server" c:type="detect_server">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="ext" transfer-ownership="none">
+              <type name="RTSPExtension" c:type="GstRTSPExtension*"/>
+            </parameter>
+            <parameter name="resp" transfer-ownership="none">
+              <type name="RTSPMessage" c:type="GstRTSPMessage*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="before_send">
+        <callback name="before_send" c:type="before_send">
+          <return-value transfer-ownership="full">
+            <type name="RTSPResult" c:type="GstRTSPResult"/>
+          </return-value>
+          <parameters>
+            <parameter name="ext" transfer-ownership="none">
+              <type name="RTSPExtension" c:type="GstRTSPExtension*"/>
+            </parameter>
+            <parameter name="req" transfer-ownership="none">
+              <type name="RTSPMessage" c:type="GstRTSPMessage*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="after_send">
+        <callback name="after_send" c:type="after_send">
+          <return-value transfer-ownership="full">
+            <type name="RTSPResult" c:type="GstRTSPResult"/>
+          </return-value>
+          <parameters>
+            <parameter name="ext" transfer-ownership="none">
+              <type name="RTSPExtension" c:type="GstRTSPExtension*"/>
+            </parameter>
+            <parameter name="req" transfer-ownership="none">
+              <type name="RTSPMessage" c:type="GstRTSPMessage*"/>
+            </parameter>
+            <parameter name="resp" transfer-ownership="none">
+              <type name="RTSPMessage" c:type="GstRTSPMessage*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="parse_sdp">
+        <callback name="parse_sdp" c:type="parse_sdp">
+          <return-value transfer-ownership="full">
+            <type name="RTSPResult" c:type="GstRTSPResult"/>
+          </return-value>
+          <parameters>
+            <parameter name="ext" transfer-ownership="none">
+              <type name="RTSPExtension" c:type="GstRTSPExtension*"/>
+            </parameter>
+            <parameter name="sdp" transfer-ownership="none">
+              <type name="GstSdp.SDPMessage" c:type="GstSDPMessage*"/>
+            </parameter>
+            <parameter name="s" transfer-ownership="none">
+              <type name="Gst.Structure" c:type="GstStructure*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="setup_media">
+        <callback name="setup_media" c:type="setup_media">
+          <return-value transfer-ownership="full">
+            <type name="RTSPResult" c:type="GstRTSPResult"/>
+          </return-value>
+          <parameters>
+            <parameter name="ext" transfer-ownership="none">
+              <type name="RTSPExtension" c:type="GstRTSPExtension*"/>
+            </parameter>
+            <parameter name="media" transfer-ownership="none">
+              <type name="GstSdp.SDPMedia" c:type="GstSDPMedia*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="configure_stream">
+        <callback name="configure_stream" c:type="configure_stream">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="ext" transfer-ownership="none">
+              <type name="RTSPExtension" c:type="GstRTSPExtension*"/>
+            </parameter>
+            <parameter name="caps" transfer-ownership="none">
+              <type name="Gst.Caps" c:type="GstCaps*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_transports">
+        <callback name="get_transports" c:type="get_transports">
+          <return-value transfer-ownership="full">
+            <type name="RTSPResult" c:type="GstRTSPResult"/>
+          </return-value>
+          <parameters>
+            <parameter name="ext" transfer-ownership="none">
+              <type name="RTSPExtension" c:type="GstRTSPExtension*"/>
+            </parameter>
+            <parameter name="protocols" transfer-ownership="none">
+              <type name="RTSPLowerTrans" c:type="GstRTSPLowerTrans"/>
+            </parameter>
+            <parameter name="transport" transfer-ownership="none">
+              <array c:type="gchar**">
+                <type name="utf8"/>
+              </array>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="stream_select">
+        <callback name="stream_select" c:type="stream_select">
+          <return-value transfer-ownership="full">
+            <type name="RTSPResult" c:type="GstRTSPResult"/>
+          </return-value>
+          <parameters>
+            <parameter name="ext" transfer-ownership="none">
+              <type name="RTSPExtension" c:type="GstRTSPExtension*"/>
+            </parameter>
+            <parameter name="url" transfer-ownership="none">
+              <type name="RTSPUrl" c:type="GstRTSPUrl*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="send">
+        <callback name="send" c:type="send">
+          <return-value transfer-ownership="full">
+            <type name="RTSPResult" c:type="GstRTSPResult"/>
+          </return-value>
+          <parameters>
+            <parameter name="ext" transfer-ownership="none">
+              <type name="RTSPExtension" c:type="GstRTSPExtension*"/>
+            </parameter>
+            <parameter name="req" transfer-ownership="none">
+              <type name="RTSPMessage" c:type="GstRTSPMessage*"/>
+            </parameter>
+            <parameter name="resp" transfer-ownership="none">
+              <type name="RTSPMessage" c:type="GstRTSPMessage*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="receive_request">
+        <callback name="receive_request" c:type="receive_request">
+          <return-value transfer-ownership="full">
+            <type name="RTSPResult" c:type="GstRTSPResult"/>
+          </return-value>
+          <parameters>
+            <parameter name="ext" transfer-ownership="none">
+              <type name="RTSPExtension" c:type="GstRTSPExtension*"/>
+            </parameter>
+            <parameter name="req" transfer-ownership="none">
+              <type name="RTSPMessage" c:type="GstRTSPMessage*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="3">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <enumeration name="RTSPFamily"
+                 doc="The possible network families."
+                 glib:type-name="GstRTSPFamily"
+                 glib:get-type="gst_rtsp_family_get_type"
+                 c:type="GstRTSPFamily">
+      <member name="none"
+              value="0"
+              c:identifier="GST_RTSP_FAM_NONE"
+              glib:nick="none"/>
+      <member name="inet"
+              value="1"
+              c:identifier="GST_RTSP_FAM_INET"
+              glib:nick="inet"/>
+      <member name="inet6"
+              value="2"
+              c:identifier="GST_RTSP_FAM_INET6"
+              glib:nick="inet6"/>
+    </enumeration>
+    <enumeration name="RTSPHeaderField"
+                 glib:type-name="GstRTSPHeaderField"
+                 glib:get-type="gst_rtsp_header_field_get_type"
+                 c:type="GstRTSPHeaderField">
+      <member name="invalid"
+              value="0"
+              c:identifier="GST_RTSP_HDR_INVALID"
+              glib:nick="invalid"/>
+      <member name="accept"
+              value="1"
+              c:identifier="GST_RTSP_HDR_ACCEPT"
+              glib:nick="accept"/>
+      <member name="accept_encoding"
+              value="2"
+              c:identifier="GST_RTSP_HDR_ACCEPT_ENCODING"
+              glib:nick="accept-encoding"/>
+      <member name="accept_language"
+              value="3"
+              c:identifier="GST_RTSP_HDR_ACCEPT_LANGUAGE"
+              glib:nick="accept-language"/>
+      <member name="allow"
+              value="4"
+              c:identifier="GST_RTSP_HDR_ALLOW"
+              glib:nick="allow"/>
+      <member name="authorization"
+              value="5"
+              c:identifier="GST_RTSP_HDR_AUTHORIZATION"
+              glib:nick="authorization"/>
+      <member name="bandwidth"
+              value="6"
+              c:identifier="GST_RTSP_HDR_BANDWIDTH"
+              glib:nick="bandwidth"/>
+      <member name="blocksize"
+              value="7"
+              c:identifier="GST_RTSP_HDR_BLOCKSIZE"
+              glib:nick="blocksize"/>
+      <member name="cache_control"
+              value="8"
+              c:identifier="GST_RTSP_HDR_CACHE_CONTROL"
+              glib:nick="cache-control"/>
+      <member name="conference"
+              value="9"
+              c:identifier="GST_RTSP_HDR_CONFERENCE"
+              glib:nick="conference"/>
+      <member name="connection"
+              value="10"
+              c:identifier="GST_RTSP_HDR_CONNECTION"
+              glib:nick="connection"/>
+      <member name="content_base"
+              value="11"
+              c:identifier="GST_RTSP_HDR_CONTENT_BASE"
+              glib:nick="content-base"/>
+      <member name="content_encoding"
+              value="12"
+              c:identifier="GST_RTSP_HDR_CONTENT_ENCODING"
+              glib:nick="content-encoding"/>
+      <member name="content_language"
+              value="13"
+              c:identifier="GST_RTSP_HDR_CONTENT_LANGUAGE"
+              glib:nick="content-language"/>
+      <member name="content_length"
+              value="14"
+              c:identifier="GST_RTSP_HDR_CONTENT_LENGTH"
+              glib:nick="content-length"/>
+      <member name="content_location"
+              value="15"
+              c:identifier="GST_RTSP_HDR_CONTENT_LOCATION"
+              glib:nick="content-location"/>
+      <member name="content_type"
+              value="16"
+              c:identifier="GST_RTSP_HDR_CONTENT_TYPE"
+              glib:nick="content-type"/>
+      <member name="cseq"
+              value="17"
+              c:identifier="GST_RTSP_HDR_CSEQ"
+              glib:nick="cseq"/>
+      <member name="date"
+              value="18"
+              c:identifier="GST_RTSP_HDR_DATE"
+              glib:nick="date"/>
+      <member name="expires"
+              value="19"
+              c:identifier="GST_RTSP_HDR_EXPIRES"
+              glib:nick="expires"/>
+      <member name="from"
+              value="20"
+              c:identifier="GST_RTSP_HDR_FROM"
+              glib:nick="from"/>
+      <member name="if_modified_since"
+              value="21"
+              c:identifier="GST_RTSP_HDR_IF_MODIFIED_SINCE"
+              glib:nick="if-modified-since"/>
+      <member name="last_modified"
+              value="22"
+              c:identifier="GST_RTSP_HDR_LAST_MODIFIED"
+              glib:nick="last-modified"/>
+      <member name="proxy_authenticate"
+              value="23"
+              c:identifier="GST_RTSP_HDR_PROXY_AUTHENTICATE"
+              glib:nick="proxy-authenticate"/>
+      <member name="proxy_require"
+              value="24"
+              c:identifier="GST_RTSP_HDR_PROXY_REQUIRE"
+              glib:nick="proxy-require"/>
+      <member name="public"
+              value="25"
+              c:identifier="GST_RTSP_HDR_PUBLIC"
+              glib:nick="public"/>
+      <member name="range"
+              value="26"
+              c:identifier="GST_RTSP_HDR_RANGE"
+              glib:nick="range"/>
+      <member name="referer"
+              value="27"
+              c:identifier="GST_RTSP_HDR_REFERER"
+              glib:nick="referer"/>
+      <member name="require"
+              value="28"
+              c:identifier="GST_RTSP_HDR_REQUIRE"
+              glib:nick="require"/>
+      <member name="retry_after"
+              value="29"
+              c:identifier="GST_RTSP_HDR_RETRY_AFTER"
+              glib:nick="retry-after"/>
+      <member name="rtp_info"
+              value="30"
+              c:identifier="GST_RTSP_HDR_RTP_INFO"
+              glib:nick="rtp-info"/>
+      <member name="scale"
+              value="31"
+              c:identifier="GST_RTSP_HDR_SCALE"
+              glib:nick="scale"/>
+      <member name="session"
+              value="32"
+              c:identifier="GST_RTSP_HDR_SESSION"
+              glib:nick="session"/>
+      <member name="server"
+              value="33"
+              c:identifier="GST_RTSP_HDR_SERVER"
+              glib:nick="server"/>
+      <member name="speed"
+              value="34"
+              c:identifier="GST_RTSP_HDR_SPEED"
+              glib:nick="speed"/>
+      <member name="transport"
+              value="35"
+              c:identifier="GST_RTSP_HDR_TRANSPORT"
+              glib:nick="transport"/>
+      <member name="unsupported"
+              value="36"
+              c:identifier="GST_RTSP_HDR_UNSUPPORTED"
+              glib:nick="unsupported"/>
+      <member name="user_agent"
+              value="37"
+              c:identifier="GST_RTSP_HDR_USER_AGENT"
+              glib:nick="user-agent"/>
+      <member name="via"
+              value="38"
+              c:identifier="GST_RTSP_HDR_VIA"
+              glib:nick="via"/>
+      <member name="www_authenticate"
+              value="39"
+              c:identifier="GST_RTSP_HDR_WWW_AUTHENTICATE"
+              glib:nick="www-authenticate"/>
+      <member name="client_challenge"
+              value="40"
+              c:identifier="GST_RTSP_HDR_CLIENT_CHALLENGE"
+              glib:nick="client-challenge"/>
+      <member name="real_challenge1"
+              value="41"
+              c:identifier="GST_RTSP_HDR_REAL_CHALLENGE1"
+              glib:nick="real-challenge1"/>
+      <member name="real_challenge2"
+              value="42"
+              c:identifier="GST_RTSP_HDR_REAL_CHALLENGE2"
+              glib:nick="real-challenge2"/>
+      <member name="real_challenge3"
+              value="43"
+              c:identifier="GST_RTSP_HDR_REAL_CHALLENGE3"
+              glib:nick="real-challenge3"/>
+      <member name="subscribe"
+              value="44"
+              c:identifier="GST_RTSP_HDR_SUBSCRIBE"
+              glib:nick="subscribe"/>
+      <member name="alert"
+              value="45"
+              c:identifier="GST_RTSP_HDR_ALERT"
+              glib:nick="alert"/>
+      <member name="client_id"
+              value="46"
+              c:identifier="GST_RTSP_HDR_CLIENT_ID"
+              glib:nick="client-id"/>
+      <member name="company_id"
+              value="47"
+              c:identifier="GST_RTSP_HDR_COMPANY_ID"
+              glib:nick="company-id"/>
+      <member name="guid"
+              value="48"
+              c:identifier="GST_RTSP_HDR_GUID"
+              glib:nick="guid"/>
+      <member name="region_data"
+              value="49"
+              c:identifier="GST_RTSP_HDR_REGION_DATA"
+              glib:nick="region-data"/>
+      <member name="max_asm_width"
+              value="50"
+              c:identifier="GST_RTSP_HDR_MAX_ASM_WIDTH"
+              glib:nick="max-asm-width"/>
+      <member name="language"
+              value="51"
+              c:identifier="GST_RTSP_HDR_LANGUAGE"
+              glib:nick="language"/>
+      <member name="player_start_time"
+              value="52"
+              c:identifier="GST_RTSP_HDR_PLAYER_START_TIME"
+              glib:nick="player-start-time"/>
+      <member name="location"
+              value="53"
+              c:identifier="GST_RTSP_HDR_LOCATION"
+              glib:nick="location"/>
+      <member name="etag"
+              value="54"
+              c:identifier="GST_RTSP_HDR_ETAG"
+              glib:nick="etag"/>
+      <member name="if_match"
+              value="55"
+              c:identifier="GST_RTSP_HDR_IF_MATCH"
+              glib:nick="if-match"/>
+      <member name="accept_charset"
+              value="56"
+              c:identifier="GST_RTSP_HDR_ACCEPT_CHARSET"
+              glib:nick="accept-charset"/>
+      <member name="supported"
+              value="57"
+              c:identifier="GST_RTSP_HDR_SUPPORTED"
+              glib:nick="supported"/>
+      <member name="vary"
+              value="58"
+              c:identifier="GST_RTSP_HDR_VARY"
+              glib:nick="vary"/>
+      <member name="x_accelerate_streaming"
+              value="59"
+              c:identifier="GST_RTSP_HDR_X_ACCELERATE_STREAMING"
+              glib:nick="x-accelerate-streaming"/>
+      <member name="x_accept_authent"
+              value="60"
+              c:identifier="GST_RTSP_HDR_X_ACCEPT_AUTHENT"
+              glib:nick="x-accept-authent"/>
+      <member name="x_accept_proxy_authent"
+              value="61"
+              c:identifier="GST_RTSP_HDR_X_ACCEPT_PROXY_AUTHENT"
+              glib:nick="x-accept-proxy-authent"/>
+      <member name="x_broadcast_id"
+              value="62"
+              c:identifier="GST_RTSP_HDR_X_BROADCAST_ID"
+              glib:nick="x-broadcast-id"/>
+      <member name="x_burst_streaming"
+              value="63"
+              c:identifier="GST_RTSP_HDR_X_BURST_STREAMING"
+              glib:nick="x-burst-streaming"/>
+      <member name="x_notice"
+              value="64"
+              c:identifier="GST_RTSP_HDR_X_NOTICE"
+              glib:nick="x-notice"/>
+      <member name="x_player_lag_time"
+              value="65"
+              c:identifier="GST_RTSP_HDR_X_PLAYER_LAG_TIME"
+              glib:nick="x-player-lag-time"/>
+      <member name="x_playlist"
+              value="66"
+              c:identifier="GST_RTSP_HDR_X_PLAYLIST"
+              glib:nick="x-playlist"/>
+      <member name="x_playlist_change_notice"
+              value="67"
+              c:identifier="GST_RTSP_HDR_X_PLAYLIST_CHANGE_NOTICE"
+              glib:nick="x-playlist-change-notice"/>
+      <member name="x_playlist_gen_id"
+              value="68"
+              c:identifier="GST_RTSP_HDR_X_PLAYLIST_GEN_ID"
+              glib:nick="x-playlist-gen-id"/>
+      <member name="x_playlist_seek_id"
+              value="69"
+              c:identifier="GST_RTSP_HDR_X_PLAYLIST_SEEK_ID"
+              glib:nick="x-playlist-seek-id"/>
+      <member name="x_proxy_client_agent"
+              value="70"
+              c:identifier="GST_RTSP_HDR_X_PROXY_CLIENT_AGENT"
+              glib:nick="x-proxy-client-agent"/>
+      <member name="x_proxy_client_verb"
+              value="71"
+              c:identifier="GST_RTSP_HDR_X_PROXY_CLIENT_VERB"
+              glib:nick="x-proxy-client-verb"/>
+      <member name="x_receding_playlistchange"
+              value="72"
+              c:identifier="GST_RTSP_HDR_X_RECEDING_PLAYLISTCHANGE"
+              glib:nick="x-receding-playlistchange"/>
+      <member name="x_rtp_info"
+              value="73"
+              c:identifier="GST_RTSP_HDR_X_RTP_INFO"
+              glib:nick="x-rtp-info"/>
+      <member name="x_startupprofile"
+              value="74"
+              c:identifier="GST_RTSP_HDR_X_STARTUPPROFILE"
+              glib:nick="x-startupprofile"/>
+      <member name="timestamp"
+              value="75"
+              c:identifier="GST_RTSP_HDR_TIMESTAMP"
+              glib:nick="timestamp"/>
+      <member name="authentication_info"
+              value="76"
+              c:identifier="GST_RTSP_HDR_AUTHENTICATION_INFO"
+              glib:nick="authentication-info"/>
+      <member name="host"
+              value="77"
+              c:identifier="GST_RTSP_HDR_HOST"
+              glib:nick="host"/>
+      <member name="pragma"
+              value="78"
+              c:identifier="GST_RTSP_HDR_PRAGMA"
+              glib:nick="pragma"/>
+      <member name="x_server_ip_address"
+              value="79"
+              c:identifier="GST_RTSP_HDR_X_SERVER_IP_ADDRESS"
+              glib:nick="x-server-ip-address"/>
+      <member name="x_sessioncookie"
+              value="80"
+              c:identifier="GST_RTSP_HDR_X_SESSIONCOOKIE"
+              glib:nick="x-sessioncookie"/>
+      <member name="last"
+              value="81"
+              c:identifier="GST_RTSP_HDR_LAST"
+              glib:nick="last"/>
+    </enumeration>
+    <bitfield name="RTSPLowerTrans"
+              doc="The different transport methods."
+              glib:type-name="GstRTSPLowerTrans"
+              glib:get-type="gst_rtsp_lower_trans_get_type"
+              c:type="GstRTSPLowerTrans">
+      <member name="udp_unicast"
+              value="1"
+              c:identifier="UDP Unicast Mode"
+              glib:nick="udp-unicast"/>
+      <member name="udp_multicast"
+              value="2"
+              c:identifier="UDP Multicast Mode"
+              glib:nick="udp-multicast"/>
+      <member name="tcp"
+              value="4"
+              c:identifier="TCP interleaved mode"
+              glib:nick="tcp"/>
+      <member name="http"
+              value="16"
+              c:identifier="HTTP tunneled mode"
+              glib:nick="http"/>
+    </bitfield>
+    <record name="RTSPMessage"
+            c:type="GstRTSPMessage"
+            doc="An RTSP message containing request, response or data messages. Depending on
+the @type, the appropriate structure may be accessed.">
+      <field name="type" writable="1">
+        <type name="RTSPMsgType" c:type="GstRTSPMsgType"/>
+      </field>
+      <union name="type_data" c:type="type_data">
+        <record name="request" c:type="request">
+          <field name="method" writable="1">
+            <type name="RTSPMethod" c:type="GstRTSPMethod"/>
+          </field>
+          <field name="uri" writable="1">
+            <type name="utf8" c:type="gchar*"/>
+          </field>
+          <field name="version" writable="1">
+            <type name="RTSPVersion" c:type="GstRTSPVersion"/>
+          </field>
+        </record>
+        <record name="response" c:type="response">
+          <field name="code" writable="1">
+            <type name="RTSPStatusCode" c:type="GstRTSPStatusCode"/>
+          </field>
+          <field name="reason" writable="1">
+            <type name="utf8" c:type="gchar*"/>
+          </field>
+          <field name="version" writable="1">
+            <type name="RTSPVersion" c:type="GstRTSPVersion"/>
+          </field>
+        </record>
+        <record name="data" c:type="data">
+          <field name="channel" writable="1">
+            <type name="uint8" c:type="guint8"/>
+          </field>
+        </record>
+      </union>
+      <field name="hdr_fields" writable="1">
+        <type name="GLib.Array" c:type="GArray*"/>
+      </field>
+      <field name="body" writable="1">
+        <type name="any" c:type="guint8*"/>
+      </field>
+      <field name="body_size" writable="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <constructor name="new"
+                   c:identifier="gst_rtsp_message_new"
+                   doc="Create a new initialized #GstRTSPMessage. Free with gst_rtsp_message_free().">
+        <return-value transfer-ownership="full">
+          <type name="RTSPMessage" c:type="GstRTSPResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="msg" transfer-ownership="none">
+            <type name="RTSPMessage" c:type="GstRTSPMessage**"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_request"
+                   c:identifier="gst_rtsp_message_new_request"
+                   doc="Create a new #GstRTSPMessage with @method and @uri and store the result
+request message in @msg. Free with gst_rtsp_message_free().">
+        <return-value transfer-ownership="full">
+          <type name="RTSPMessage" c:type="GstRTSPResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="msg" transfer-ownership="none">
+            <type name="RTSPMessage" c:type="GstRTSPMessage**"/>
+          </parameter>
+          <parameter name="method" transfer-ownership="none">
+            <type name="RTSPMethod" c:type="GstRTSPMethod"/>
+          </parameter>
+          <parameter name="uri" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_response"
+                   c:identifier="gst_rtsp_message_new_response"
+                   doc="Create a new response #GstRTSPMessage with @code and @reason and store the
+result message in @msg. Free with gst_rtsp_message_free().
+When @reason is #NULL, the default reason for @code will be used.
+When @request is not #NULL, the relevant headers will be copied to the new
+response message.">
+        <return-value transfer-ownership="full">
+          <type name="RTSPMessage" c:type="GstRTSPResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="msg" transfer-ownership="none">
+            <type name="RTSPMessage" c:type="GstRTSPMessage**"/>
+          </parameter>
+          <parameter name="code" transfer-ownership="none">
+            <type name="RTSPStatusCode" c:type="GstRTSPStatusCode"/>
+          </parameter>
+          <parameter name="reason" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="request" transfer-ownership="none">
+            <type name="RTSPMessage" c:type="GstRTSPMessage*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_data"
+                   c:identifier="gst_rtsp_message_new_data"
+                   doc="Create a new data #GstRTSPMessage with @channel and store the
+result message in @msg. Free with gst_rtsp_message_free().">
+        <return-value transfer-ownership="full">
+          <type name="RTSPMessage" c:type="GstRTSPResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="msg" transfer-ownership="none">
+            <type name="RTSPMessage" c:type="GstRTSPMessage**"/>
+          </parameter>
+          <parameter name="channel" transfer-ownership="none">
+            <type name="uint8" c:type="guint8"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="init"
+              c:identifier="gst_rtsp_message_init"
+              doc="Initialize @msg. This function is mostly used when @msg is allocated on the
+stack. The reverse operation of this is gst_rtsp_message_unset().">
+        <return-value transfer-ownership="full">
+          <type name="RTSPResult" c:type="GstRTSPResult"/>
+        </return-value>
+      </method>
+      <method name="unset"
+              c:identifier="gst_rtsp_message_unset"
+              doc="Unset the contents of @msg so that it becomes an uninitialized
+#GstRTSPMessage again. This function is mostly used in combination with
+gst_rtsp_message_init_request(), gst_rtsp_message_init_response() and
+gst_rtsp_message_init_data() on stack allocated #GstRTSPMessage structures.">
+        <return-value transfer-ownership="full">
+          <type name="RTSPResult" c:type="GstRTSPResult"/>
+        </return-value>
+      </method>
+      <method name="free"
+              c:identifier="gst_rtsp_message_free"
+              doc="Free the memory used by @msg.">
+        <return-value transfer-ownership="full">
+          <type name="RTSPResult" c:type="GstRTSPResult"/>
+        </return-value>
+      </method>
+      <method name="init_request"
+              c:identifier="gst_rtsp_message_init_request"
+              doc="Initialize @msg as a request message with @method and @uri. To clear @msg
+again, use gst_rtsp_message_unset().">
+        <return-value transfer-ownership="full">
+          <type name="RTSPResult" c:type="GstRTSPResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="method" transfer-ownership="none">
+            <type name="RTSPMethod" c:type="GstRTSPMethod"/>
+          </parameter>
+          <parameter name="uri" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_request"
+              c:identifier="gst_rtsp_message_parse_request"
+              doc="Parse the request message @msg and store the values @method, @uri and
+value.">
+        <return-value transfer-ownership="full">
+          <type name="RTSPResult" c:type="GstRTSPResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="method" transfer-ownership="none">
+            <type name="RTSPMethod" c:type="GstRTSPMethod*"/>
+          </parameter>
+          <parameter name="uri" transfer-ownership="none">
+            <array c:type="gchar**">
+              <type name="utf8"/>
+            </array>
+          </parameter>
+          <parameter name="version" transfer-ownership="none">
+            <type name="RTSPVersion" c:type="GstRTSPVersion*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="init_response"
+              c:identifier="gst_rtsp_message_init_response"
+              doc="Initialize @msg with @code and @reason.
+When @reason is #NULL, the default reason for @code will be used.
+When @request is not #NULL, the relevant headers will be copied to the new
+response message.">
+        <return-value transfer-ownership="full">
+          <type name="RTSPResult" c:type="GstRTSPResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="code" transfer-ownership="none">
+            <type name="RTSPStatusCode" c:type="GstRTSPStatusCode"/>
+          </parameter>
+          <parameter name="reason" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="request" transfer-ownership="none">
+            <type name="RTSPMessage" c:type="GstRTSPMessage*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_response"
+              c:identifier="gst_rtsp_message_parse_response"
+              doc="Parse the response message @msg and store the values @code, @reason and
+value.">
+        <return-value transfer-ownership="full">
+          <type name="RTSPResult" c:type="GstRTSPResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="code" transfer-ownership="none">
+            <type name="RTSPStatusCode" c:type="GstRTSPStatusCode*"/>
+          </parameter>
+          <parameter name="reason" transfer-ownership="none">
+            <array c:type="gchar**">
+              <type name="utf8"/>
+            </array>
+          </parameter>
+          <parameter name="version" transfer-ownership="none">
+            <type name="RTSPVersion" c:type="GstRTSPVersion*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="init_data"
+              c:identifier="gst_rtsp_message_init_data"
+              doc="Initialize a new data #GstRTSPMessage for @channel.">
+        <return-value transfer-ownership="full">
+          <type name="RTSPResult" c:type="GstRTSPResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="channel" transfer-ownership="none">
+            <type name="uint8" c:type="guint8"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_data"
+              c:identifier="gst_rtsp_message_parse_data"
+              doc="Parse the data message @msg and store the channel in @channel.">
+        <return-value transfer-ownership="full">
+          <type name="RTSPResult" c:type="GstRTSPResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="channel" transfer-ownership="none">
+            <array c:type="guint8*">
+              <type name="uint8"/>
+            </array>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_header"
+              c:identifier="gst_rtsp_message_add_header"
+              doc="Add a header with key @field and @value to @msg. This function takes a copy
+of @value.">
+        <return-value transfer-ownership="full">
+          <type name="RTSPResult" c:type="GstRTSPResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="field" transfer-ownership="none">
+            <type name="RTSPHeaderField" c:type="GstRTSPHeaderField"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="take_header"
+              c:identifier="gst_rtsp_message_take_header"
+              doc="Add a header with key @field and @value to @msg. This function takes
+ownership of @value."
+              version="0.10.23">
+        <return-value transfer-ownership="full">
+          <type name="RTSPResult" c:type="GstRTSPResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="field" transfer-ownership="none">
+            <type name="RTSPHeaderField" c:type="GstRTSPHeaderField"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="full">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_header"
+              c:identifier="gst_rtsp_message_remove_header"
+              doc="Remove the @indx header with key @field from @msg. If @indx equals -1, all
+headers will be removed.">
+        <return-value transfer-ownership="full">
+          <type name="RTSPResult" c:type="GstRTSPResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="field" transfer-ownership="none">
+            <type name="RTSPHeaderField" c:type="GstRTSPHeaderField"/>
+          </parameter>
+          <parameter name="indx" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_header"
+              c:identifier="gst_rtsp_message_get_header"
+              doc="Get the @indx header value with key @field from @msg. The result in @value
+stays valid as long as it remains present in @msg.
+was not found.">
+        <return-value transfer-ownership="full">
+          <type name="RTSPResult" c:type="GstRTSPResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="field" transfer-ownership="none">
+            <type name="RTSPHeaderField" c:type="GstRTSPHeaderField"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <array c:type="gchar**">
+              <type name="utf8"/>
+            </array>
+          </parameter>
+          <parameter name="indx" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="append_headers"
+              c:identifier="gst_rtsp_message_append_headers"
+              doc="Append the currently configured headers in @msg to the #GString @str suitable
+for transmission.">
+        <return-value transfer-ownership="full">
+          <type name="RTSPResult" c:type="GstRTSPResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="str" transfer-ownership="none">
+            <type name="GLib.String" c:type="GString*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_body"
+              c:identifier="gst_rtsp_message_set_body"
+              doc="Set the body of @msg to a copy of @data.">
+        <return-value transfer-ownership="full">
+          <type name="RTSPResult" c:type="GstRTSPResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <array c:type="guint8*">
+              <type name="uint8"/>
+            </array>
+          </parameter>
+          <parameter name="size" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="take_body"
+              c:identifier="gst_rtsp_message_take_body"
+              doc="Set the body of @msg to @data and @size. This method takes ownership of">
+        <return-value transfer-ownership="full">
+          <type name="RTSPResult" c:type="GstRTSPResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <array c:type="guint8*">
+              <type name="uint8"/>
+            </array>
+          </parameter>
+          <parameter name="size" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_body"
+              c:identifier="gst_rtsp_message_get_body"
+              doc="Get the body of @msg. @data remains valid for as long as @msg is valid and
+unchanged.">
+        <return-value transfer-ownership="full">
+          <type name="RTSPResult" c:type="GstRTSPResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" direction="out" transfer-ownership="full">
+            <type name="uint8" c:type="guint8**"/>
+          </parameter>
+          <parameter name="size" direction="out" transfer-ownership="full">
+            <type name="uint" c:type="guint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="steal_body"
+              c:identifier="gst_rtsp_message_steal_body"
+              doc="Take the body of @msg and store it in @data and @size. After this method,
+the body and size of @msg will be set to #NULL and 0 respectively.">
+        <return-value transfer-ownership="full">
+          <type name="RTSPResult" c:type="GstRTSPResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" direction="out" transfer-ownership="full">
+            <type name="uint8" c:type="guint8**"/>
+          </parameter>
+          <parameter name="size" direction="out" transfer-ownership="full">
+            <type name="uint" c:type="guint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="dump"
+              c:identifier="gst_rtsp_message_dump"
+              doc="Dump the contents of @msg to stdout.">
+        <return-value transfer-ownership="full">
+          <type name="RTSPResult" c:type="GstRTSPResult"/>
+        </return-value>
+      </method>
+    </record>
+    <bitfield name="RTSPMethod"
+              doc="The different supported RTSP methods."
+              glib:type-name="GstRTSPMethod"
+              glib:get-type="gst_rtsp_method_get_type"
+              c:type="GstRTSPMethod">
+      <member name="invalid"
+              value="0"
+              c:identifier="GST_RTSP_INVALID"
+              glib:nick="invalid"/>
+      <member name="describe"
+              value="1"
+              c:identifier="GST_RTSP_DESCRIBE"
+              glib:nick="describe"/>
+      <member name="announce"
+              value="2"
+              c:identifier="GST_RTSP_ANNOUNCE"
+              glib:nick="announce"/>
+      <member name="get_parameter"
+              value="4"
+              c:identifier="GST_RTSP_GET_PARAMETER"
+              glib:nick="get-parameter"/>
+      <member name="options"
+              value="8"
+              c:identifier="GST_RTSP_OPTIONS"
+              glib:nick="options"/>
+      <member name="pause"
+              value="16"
+              c:identifier="GST_RTSP_PAUSE"
+              glib:nick="pause"/>
+      <member name="play"
+              value="32"
+              c:identifier="GST_RTSP_PLAY"
+              glib:nick="play"/>
+      <member name="record"
+              value="64"
+              c:identifier="GST_RTSP_RECORD"
+              glib:nick="record"/>
+      <member name="redirect"
+              value="128"
+              c:identifier="GST_RTSP_REDIRECT"
+              glib:nick="redirect"/>
+      <member name="setup"
+              value="256"
+              c:identifier="GST_RTSP_SETUP"
+              glib:nick="setup"/>
+      <member name="set_parameter"
+              value="512"
+              c:identifier="GST_RTSP_SET_PARAMETER"
+              glib:nick="set-parameter"/>
+      <member name="teardown"
+              value="1024"
+              c:identifier="GST_RTSP_TEARDOWN"
+              glib:nick="teardown"/>
+      <member name="get"
+              value="2048"
+              c:identifier="GST_RTSP_GET"
+              glib:nick="get"/>
+      <member name="post"
+              value="4096"
+              c:identifier="GST_RTSP_POST"
+              glib:nick="post"/>
+    </bitfield>
+    <enumeration name="RTSPMsgType"
+                 doc="The type of a message."
+                 c:type="GstRTSPMsgType">
+      <member name="invalid"
+              value="0"
+              c:identifier="GST_RTSP_MESSAGE_INVALID"/>
+      <member name="request"
+              value="1"
+              c:identifier="GST_RTSP_MESSAGE_REQUEST"/>
+      <member name="response"
+              value="2"
+              c:identifier="GST_RTSP_MESSAGE_RESPONSE"/>
+      <member name="http_request"
+              value="3"
+              c:identifier="GST_RTSP_MESSAGE_HTTP_REQUEST"/>
+      <member name="http_response"
+              value="4"
+              c:identifier="GST_RTSP_MESSAGE_HTTP_RESPONSE"/>
+      <member name="data" value="5" c:identifier="GST_RTSP_MESSAGE_DATA"/>
+    </enumeration>
+    <bitfield name="RTSPProfile"
+              doc="The transfer profile to use."
+              c:type="GstRTSPProfile">
+      <member name="unknown"
+              value="0"
+              c:identifier="GST_RTSP_PROFILE_UNKNOWN"/>
+      <member name="avp" value="1" c:identifier="GST_RTSP_PROFILE_AVP"/>
+      <member name="savp" value="2" c:identifier="GST_RTSP_PROFILE_SAVP"/>
+    </bitfield>
+    <record name="RTSPRange"
+            c:type="GstRTSPRange"
+            doc="A type to specify a range.">
+      <field name="min" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="max" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+    </record>
+    <enumeration name="RTSPRangeUnit"
+                 doc="Different possible time range units."
+                 c:type="GstRTSPRangeUnit">
+      <member name="smpte" value="0" c:identifier="GST_RTSP_RANGE_SMPTE"/>
+      <member name="smpte_30_drop"
+              value="1"
+              c:identifier="GST_RTSP_RANGE_SMPTE_30_DROP"/>
+      <member name="smpte_25"
+              value="2"
+              c:identifier="GST_RTSP_RANGE_SMPTE_25"/>
+      <member name="npt" value="3" c:identifier="GST_RTSP_RANGE_NPT"/>
+      <member name="clock" value="4" c:identifier="GST_RTSP_RANGE_CLOCK"/>
+    </enumeration>
+    <enumeration name="RTSPResult"
+                 doc="Result codes from the RTSP functions."
+                 glib:type-name="GstRTSPResult"
+                 glib:get-type="gst_rtsp_result_get_type"
+                 c:type="GstRTSPResult">
+      <member name="ok" value="0" c:identifier="GST_RTSP_OK" glib:nick="ok"/>
+      <member name="error"
+              value="-1"
+              c:identifier="GST_RTSP_ERROR"
+              glib:nick="error"/>
+      <member name="einval"
+              value="-2"
+              c:identifier="GST_RTSP_EINVAL"
+              glib:nick="einval"/>
+      <member name="eintr"
+              value="-3"
+              c:identifier="GST_RTSP_EINTR"
+              glib:nick="eintr"/>
+      <member name="enomem"
+              value="-4"
+              c:identifier="GST_RTSP_ENOMEM"
+              glib:nick="enomem"/>
+      <member name="eresolv"
+              value="-5"
+              c:identifier="GST_RTSP_ERESOLV"
+              glib:nick="eresolv"/>
+      <member name="enotimpl"
+              value="-6"
+              c:identifier="GST_RTSP_ENOTIMPL"
+              glib:nick="enotimpl"/>
+      <member name="esys"
+              value="-7"
+              c:identifier="GST_RTSP_ESYS"
+              glib:nick="esys"/>
+      <member name="eparse"
+              value="-8"
+              c:identifier="GST_RTSP_EPARSE"
+              glib:nick="eparse"/>
+      <member name="ewsastart"
+              value="-9"
+              c:identifier="GST_RTSP_EWSASTART"
+              glib:nick="ewsastart"/>
+      <member name="ewsaversion"
+              value="-10"
+              c:identifier="GST_RTSP_EWSAVERSION"
+              glib:nick="ewsaversion"/>
+      <member name="eeof"
+              value="-11"
+              c:identifier="GST_RTSP_EEOF"
+              glib:nick="eeof"/>
+      <member name="enet"
+              value="-12"
+              c:identifier="GST_RTSP_ENET"
+              glib:nick="enet"/>
+      <member name="enotip"
+              value="-13"
+              c:identifier="GST_RTSP_ENOTIP"
+              glib:nick="enotip"/>
+      <member name="etimeout"
+              value="-14"
+              c:identifier="GST_RTSP_ETIMEOUT"
+              glib:nick="etimeout"/>
+      <member name="etget"
+              value="-15"
+              c:identifier="GST_RTSP_ETGET"
+              glib:nick="etget"/>
+      <member name="etpost"
+              value="-16"
+              c:identifier="GST_RTSP_ETPOST"
+              glib:nick="etpost"/>
+      <member name="elast"
+              value="-17"
+              c:identifier="GST_RTSP_ELAST"
+              glib:nick="elast"/>
+    </enumeration>
+    <enumeration name="RTSPState"
+                 doc="The different RTSP states."
+                 glib:type-name="GstRTSPState"
+                 glib:get-type="gst_rtsp_state_get_type"
+                 c:type="GstRTSPState">
+      <member name="invalid"
+              value="0"
+              c:identifier="GST_RTSP_STATE_INVALID"
+              glib:nick="invalid"/>
+      <member name="init"
+              value="1"
+              c:identifier="GST_RTSP_STATE_INIT"
+              glib:nick="init"/>
+      <member name="ready"
+              value="2"
+              c:identifier="GST_RTSP_STATE_READY"
+              glib:nick="ready"/>
+      <member name="seeking"
+              value="3"
+              c:identifier="GST_RTSP_STATE_SEEKING"
+              glib:nick="seeking"/>
+      <member name="playing"
+              value="4"
+              c:identifier="GST_RTSP_STATE_PLAYING"
+              glib:nick="playing"/>
+      <member name="recording"
+              value="5"
+              c:identifier="GST_RTSP_STATE_RECORDING"
+              glib:nick="recording"/>
+    </enumeration>
+    <enumeration name="RTSPStatusCode"
+                 glib:type-name="GstRTSPStatusCode"
+                 glib:get-type="gst_rtsp_status_code_get_type"
+                 c:type="GstRTSPStatusCode">
+      <member name="invalid"
+              value="0"
+              c:identifier="GST_RTSP_STS_INVALID"
+              glib:nick="invalid"/>
+      <member name="continue"
+              value="100"
+              c:identifier="GST_RTSP_STS_CONTINUE"
+              glib:nick="continue"/>
+      <member name="ok"
+              value="200"
+              c:identifier="GST_RTSP_STS_OK"
+              glib:nick="ok"/>
+      <member name="created"
+              value="201"
+              c:identifier="GST_RTSP_STS_CREATED"
+              glib:nick="created"/>
+      <member name="low_on_storage"
+              value="250"
+              c:identifier="GST_RTSP_STS_LOW_ON_STORAGE"
+              glib:nick="low-on-storage"/>
+      <member name="multiple_choices"
+              value="300"
+              c:identifier="GST_RTSP_STS_MULTIPLE_CHOICES"
+              glib:nick="multiple-choices"/>
+      <member name="moved_permanently"
+              value="301"
+              c:identifier="GST_RTSP_STS_MOVED_PERMANENTLY"
+              glib:nick="moved-permanently"/>
+      <member name="move_temporarily"
+              value="302"
+              c:identifier="GST_RTSP_STS_MOVE_TEMPORARILY"
+              glib:nick="move-temporarily"/>
+      <member name="see_other"
+              value="303"
+              c:identifier="GST_RTSP_STS_SEE_OTHER"
+              glib:nick="see-other"/>
+      <member name="not_modified"
+              value="304"
+              c:identifier="GST_RTSP_STS_NOT_MODIFIED"
+              glib:nick="not-modified"/>
+      <member name="use_proxy"
+              value="305"
+              c:identifier="GST_RTSP_STS_USE_PROXY"
+              glib:nick="use-proxy"/>
+      <member name="bad_request"
+              value="400"
+              c:identifier="GST_RTSP_STS_BAD_REQUEST"
+              glib:nick="bad-request"/>
+      <member name="unauthorized"
+              value="401"
+              c:identifier="GST_RTSP_STS_UNAUTHORIZED"
+              glib:nick="unauthorized"/>
+      <member name="payment_required"
+              value="402"
+              c:identifier="GST_RTSP_STS_PAYMENT_REQUIRED"
+              glib:nick="payment-required"/>
+      <member name="forbidden"
+              value="403"
+              c:identifier="GST_RTSP_STS_FORBIDDEN"
+              glib:nick="forbidden"/>
+      <member name="not_found"
+              value="404"
+              c:identifier="GST_RTSP_STS_NOT_FOUND"
+              glib:nick="not-found"/>
+      <member name="method_not_allowed"
+              value="405"
+              c:identifier="GST_RTSP_STS_METHOD_NOT_ALLOWED"
+              glib:nick="method-not-allowed"/>
+      <member name="not_acceptable"
+              value="406"
+              c:identifier="GST_RTSP_STS_NOT_ACCEPTABLE"
+              glib:nick="not-acceptable"/>
+      <member name="proxy_auth_required"
+              value="407"
+              c:identifier="GST_RTSP_STS_PROXY_AUTH_REQUIRED"
+              glib:nick="proxy-auth-required"/>
+      <member name="request_timeout"
+              value="408"
+              c:identifier="GST_RTSP_STS_REQUEST_TIMEOUT"
+              glib:nick="request-timeout"/>
+      <member name="gone"
+              value="410"
+              c:identifier="GST_RTSP_STS_GONE"
+              glib:nick="gone"/>
+      <member name="length_required"
+              value="411"
+              c:identifier="GST_RTSP_STS_LENGTH_REQUIRED"
+              glib:nick="length-required"/>
+      <member name="precondition_failed"
+              value="412"
+              c:identifier="GST_RTSP_STS_PRECONDITION_FAILED"
+              glib:nick="precondition-failed"/>
+      <member name="request_entity_too_large"
+              value="413"
+              c:identifier="GST_RTSP_STS_REQUEST_ENTITY_TOO_LARGE"
+              glib:nick="request-entity-too-large"/>
+      <member name="request_uri_too_large"
+              value="414"
+              c:identifier="GST_RTSP_STS_REQUEST_URI_TOO_LARGE"
+              glib:nick="request-uri-too-large"/>
+      <member name="unsupported_media_type"
+              value="415"
+              c:identifier="GST_RTSP_STS_UNSUPPORTED_MEDIA_TYPE"
+              glib:nick="unsupported-media-type"/>
+      <member name="parameter_not_understood"
+              value="451"
+              c:identifier="GST_RTSP_STS_PARAMETER_NOT_UNDERSTOOD"
+              glib:nick="parameter-not-understood"/>
+      <member name="conference_not_found"
+              value="452"
+              c:identifier="GST_RTSP_STS_CONFERENCE_NOT_FOUND"
+              glib:nick="conference-not-found"/>
+      <member name="not_enough_bandwidth"
+              value="453"
+              c:identifier="GST_RTSP_STS_NOT_ENOUGH_BANDWIDTH"
+              glib:nick="not-enough-bandwidth"/>
+      <member name="session_not_found"
+              value="454"
+              c:identifier="GST_RTSP_STS_SESSION_NOT_FOUND"
+              glib:nick="session-not-found"/>
+      <member name="method_not_valid_in_this_state"
+              value="455"
+              c:identifier="GST_RTSP_STS_METHOD_NOT_VALID_IN_THIS_STATE"
+              glib:nick="method-not-valid-in-this-state"/>
+      <member name="header_field_not_valid_for_resource"
+              value="456"
+              c:identifier="GST_RTSP_STS_HEADER_FIELD_NOT_VALID_FOR_RESOURCE"
+              glib:nick="header-field-not-valid-for-resource"/>
+      <member name="invalid_range"
+              value="457"
+              c:identifier="GST_RTSP_STS_INVALID_RANGE"
+              glib:nick="invalid-range"/>
+      <member name="parameter_is_readonly"
+              value="458"
+              c:identifier="GST_RTSP_STS_PARAMETER_IS_READONLY"
+              glib:nick="parameter-is-readonly"/>
+      <member name="aggregate_operation_not_allowed"
+              value="459"
+              c:identifier="GST_RTSP_STS_AGGREGATE_OPERATION_NOT_ALLOWED"
+              glib:nick="aggregate-operation-not-allowed"/>
+      <member name="only_aggregate_operation_allowed"
+              value="460"
+              c:identifier="GST_RTSP_STS_ONLY_AGGREGATE_OPERATION_ALLOWED"
+              glib:nick="only-aggregate-operation-allowed"/>
+      <member name="unsupported_transport"
+              value="461"
+              c:identifier="GST_RTSP_STS_UNSUPPORTED_TRANSPORT"
+              glib:nick="unsupported-transport"/>
+      <member name="destination_unreachable"
+              value="462"
+              c:identifier="GST_RTSP_STS_DESTINATION_UNREACHABLE"
+              glib:nick="destination-unreachable"/>
+      <member name="internal_server_error"
+              value="500"
+              c:identifier="GST_RTSP_STS_INTERNAL_SERVER_ERROR"
+              glib:nick="internal-server-error"/>
+      <member name="not_implemented"
+              value="501"
+              c:identifier="GST_RTSP_STS_NOT_IMPLEMENTED"
+              glib:nick="not-implemented"/>
+      <member name="bad_gateway"
+              value="502"
+              c:identifier="GST_RTSP_STS_BAD_GATEWAY"
+              glib:nick="bad-gateway"/>
+      <member name="service_unavailable"
+              value="503"
+              c:identifier="GST_RTSP_STS_SERVICE_UNAVAILABLE"
+              glib:nick="service-unavailable"/>
+      <member name="gateway_timeout"
+              value="504"
+              c:identifier="GST_RTSP_STS_GATEWAY_TIMEOUT"
+              glib:nick="gateway-timeout"/>
+      <member name="rtsp_version_not_supported"
+              value="505"
+              c:identifier="GST_RTSP_STS_RTSP_VERSION_NOT_SUPPORTED"
+              glib:nick="rtsp-version-not-supported"/>
+      <member name="option_not_supported"
+              value="551"
+              c:identifier="GST_RTSP_STS_OPTION_NOT_SUPPORTED"
+              glib:nick="option-not-supported"/>
+    </enumeration>
+    <record name="RTSPTime" c:type="GstRTSPTime" doc="A time indication.">
+      <field name="type" writable="1">
+        <type name="RTSPTimeType" c:type="GstRTSPTimeType"/>
+      </field>
+      <field name="seconds" writable="1">
+        <type name="double" c:type="gdouble"/>
+      </field>
+    </record>
+    <record name="RTSPTimeRange" c:type="GstRTSPTimeRange" doc="A time range.">
+      <field name="unit" writable="1">
+        <type name="RTSPRangeUnit" c:type="GstRTSPRangeUnit"/>
+      </field>
+      <field name="min" writable="1">
+        <type name="RTSPTime" c:type="GstRTSPTime"/>
+      </field>
+      <field name="max" writable="1">
+        <type name="RTSPTime" c:type="GstRTSPTime"/>
+      </field>
+    </record>
+    <enumeration name="RTSPTimeType"
+                 doc="Possible time types."
+                 c:type="GstRTSPTimeType">
+      <member name="seconds" value="0" c:identifier="GST_RTSP_TIME_SECONDS"/>
+      <member name="now" value="1" c:identifier="GST_RTSP_TIME_NOW"/>
+      <member name="end" value="2" c:identifier="GST_RTSP_TIME_END"/>
+    </enumeration>
+    <bitfield name="RTSPTransMode"
+              doc="The transfer mode to use."
+              c:type="GstRTSPTransMode">
+      <member name="unknown" value="0" c:identifier="GST_RTSP_TRANS_UNKNOWN"/>
+      <member name="rtp" value="1" c:identifier="GST_RTSP_TRANS_RTP"/>
+      <member name="rdt" value="2" c:identifier="GST_RTSP_TRANS_RDT"/>
+    </bitfield>
+    <record name="RTSPTransport" c:type="_GstRTSPTransport">
+      <field name="trans" writable="1">
+        <type name="RTSPTransMode" c:type="GstRTSPTransMode"/>
+      </field>
+      <field name="profile" writable="1">
+        <type name="RTSPProfile" c:type="GstRTSPProfile"/>
+      </field>
+      <field name="lower_transport" writable="1">
+        <type name="RTSPLowerTrans" c:type="GstRTSPLowerTrans"/>
+      </field>
+      <field name="destination" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="source" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="layers" writable="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="mode_play" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </field>
+      <field name="mode_record" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </field>
+      <field name="append" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </field>
+      <field name="interleaved" writable="1">
+        <type name="RTSPRange" c:type="GstRTSPRange"/>
+      </field>
+      <field name="ttl" writable="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="port" writable="1">
+        <type name="RTSPRange" c:type="GstRTSPRange"/>
+      </field>
+      <field name="client_port" writable="1">
+        <type name="RTSPRange" c:type="GstRTSPRange"/>
+      </field>
+      <field name="server_port" writable="1">
+        <type name="RTSPRange" c:type="GstRTSPRange"/>
+      </field>
+      <field name="ssrc" writable="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+    </record>
+    <record name="RTSPUrl"
+            c:type="GstRTSPUrl"
+            doc="This structure contains the result of a parsed RTSP URL"
+            glib:type-name="GstRTSPUrl"
+            glib:get-type="gst_rtsp_url_get_type">
+      <field name="transports" writable="1">
+        <type name="RTSPLowerTrans" c:type="GstRTSPLowerTrans"/>
+      </field>
+      <field name="family" writable="1">
+        <type name="RTSPFamily" c:type="GstRTSPFamily"/>
+      </field>
+      <field name="user" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="passwd" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="host" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="port" writable="1">
+        <type name="uint16" c:type="guint16"/>
+      </field>
+      <field name="abspath" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="query" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <method name="copy"
+              c:identifier="gst_rtsp_url_copy"
+              doc="Make a copy of @url."
+              version="0.10.22">
+        <return-value transfer-ownership="full" doc="after usage.">
+          <type name="RTSPUrl" c:type="GstRTSPUrl*"/>
+        </return-value>
+      </method>
+      <method name="free"
+              c:identifier="gst_rtsp_url_free"
+              doc="Free the memory used by @url.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_request_uri"
+              c:identifier="gst_rtsp_url_get_request_uri"
+              doc="Get a newly allocated string describing the request URI for @url.">
+        <return-value transfer-ownership="full" doc="after usage.">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="set_port"
+              c:identifier="gst_rtsp_url_set_port"
+              doc="Set the port number in @url to @port.">
+        <return-value transfer-ownership="full">
+          <type name="RTSPResult" c:type="GstRTSPResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="port" transfer-ownership="none">
+            <type name="uint16" c:type="guint16"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_port"
+              c:identifier="gst_rtsp_url_get_port"
+              doc="Get the port number of @url.">
+        <return-value transfer-ownership="full">
+          <type name="RTSPResult" c:type="GstRTSPResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="port" direction="out" transfer-ownership="full">
+            <type name="uint16" c:type="guint16*"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <enumeration name="RTSPVersion"
+                 doc="The supported RTSP versions."
+                 glib:type-name="GstRTSPVersion"
+                 glib:get-type="gst_rtsp_version_get_type"
+                 c:type="GstRTSPVersion">
+      <member name="invalid"
+              value="0"
+              c:identifier="GST_RTSP_VERSION_INVALID"
+              glib:nick="invalid"/>
+      <member name="1_0"
+              value="16"
+              c:identifier="GST_RTSP_VERSION_1_0"
+              glib:nick="1-0"/>
+      <member name="1_1"
+              value="17"
+              c:identifier="GST_RTSP_VERSION_1_1"
+              glib:nick="1-1"/>
+    </enumeration>
+    <record name="RTSPWatch"
+            c:type="GstRTSPWatch"
+            doc="Opaque RTSP watch object that can be used for asynchronous RTSP
+operations.">
+      <constructor name="new"
+                   c:identifier="gst_rtsp_watch_new"
+                   doc="Create a watch object for @conn. The functions provided in @funcs will be
+called with @user_data when activity happened on the watch.
+The new watch is usually created so that it can be attached to a
+maincontext with gst_rtsp_watch_attach().
+communication. Free with gst_rtsp_watch_unref () after usage."
+                   version="0.10.23">
+        <return-value transfer-ownership="full">
+          <type name="RTSPWatch" c:type="GstRTSPWatch*"/>
+        </return-value>
+        <parameters>
+          <parameter name="conn" transfer-ownership="none">
+            <type name="RTSPConnection" c:type="GstRTSPConnection*"/>
+          </parameter>
+          <parameter name="funcs" transfer-ownership="none">
+            <type name="RTSPWatchFuncs" c:type="GstRTSPWatchFuncs*"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+          <parameter name="notify" transfer-ownership="none" scope="call">
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="reset"
+              c:identifier="gst_rtsp_watch_reset"
+              doc="Reset @watch, this is usually called after gst_rtsp_connection_do_tunnel()
+when the file descriptors of the connection might have changed."
+              version="0.10.23">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="unref"
+              c:identifier="gst_rtsp_watch_unref"
+              doc="Decreases the reference count of @watch by one. If the resulting reference
+count is zero the watch and associated memory will be destroyed."
+              version="0.10.23">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="attach"
+              c:identifier="gst_rtsp_watch_attach"
+              doc="Adds a #GstRTSPWatch to a context so that it will be executed within that context."
+              version="0.10.23">
+        <return-value transfer-ownership="none"
+                      doc="for the watch within the GMainContext.">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+        <parameters>
+          <parameter name="context" transfer-ownership="none">
+            <type name="GLib.MainContext" c:type="GMainContext*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="write_data"
+              c:identifier="gst_rtsp_watch_write_data"
+              doc="Write @data using the connection of the @watch. If it cannot be sent
+immediately, it will be queued for transmission in @watch. The contents of
+callback.
+This function will take ownership of @data and g_free() it after use."
+              version="0.10.25">
+        <return-value transfer-ownership="full">
+          <type name="RTSPResult" c:type="GstRTSPResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <array c:type="guint8*">
+              <type name="uint8"/>
+            </array>
+          </parameter>
+          <parameter name="size" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="id" direction="out" transfer-ownership="full">
+            <type name="uint" c:type="guint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="send_message"
+              c:identifier="gst_rtsp_watch_send_message"
+              doc="Send a @message using the connection of the @watch. If it cannot be sent
+immediately, it will be queued for transmission in @watch. The contents of
+callback."
+              version="0.10.25">
+        <return-value transfer-ownership="full">
+          <type name="RTSPResult" c:type="GstRTSPResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="message" transfer-ownership="none">
+            <type name="RTSPMessage" c:type="GstRTSPMessage*"/>
+          </parameter>
+          <parameter name="id" direction="out" transfer-ownership="full">
+            <type name="uint" c:type="guint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="queue_data"
+              c:identifier="gst_rtsp_watch_queue_data"
+              doc="Queue @data for transmission in @watch. It will be transmitted when the
+connection of the @watch becomes writable.
+This function will take ownership of @data and g_free() it after use.
+The return value of this function will be used as the id argument in the
+message_sent callback."
+              version="0.10.24"
+              deprecated="Use gst_rtsp_watch_write_data()">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <array c:type="guint8*">
+              <type name="uint8"/>
+            </array>
+          </parameter>
+          <parameter name="size" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="queue_message"
+              c:identifier="gst_rtsp_watch_queue_message"
+              doc="Queue a @message for transmission in @watch. The contents of this
+message will be serialized and transmitted when the connection of the
+The return value of this function will be used as the id argument in the
+message_sent callback."
+              version="0.10.23"
+              deprecated="Use gst_rtsp_watch_send_message()">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+        <parameters>
+          <parameter name="message" transfer-ownership="none">
+            <type name="RTSPMessage" c:type="GstRTSPMessage*"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <record name="RTSPWatchFuncs"
+            c:type="GstRTSPWatchFuncs"
+            doc="connection must be saved.
+you usually pair the tunnelid of this connection with the saved one using
+gst_rtsp_connection_do_tunnel().
+the @error callback. Since 0.10.25
+Since 0.10.29
+Callback functions from a #GstRTSPWatch."
+            version="0.10.23">
+      <field name="message_received">
+        <type name="any" c:type="pointer"/>
+      </field>
+      <field name="message_sent">
+        <type name="any" c:type="pointer"/>
+      </field>
+      <field name="closed">
+        <type name="any" c:type="pointer"/>
+      </field>
+      <field name="error">
+        <type name="any" c:type="pointer"/>
+      </field>
+      <field name="tunnel_start">
+        <type name="any" c:type="pointer"/>
+      </field>
+      <field name="tunnel_complete">
+        <type name="any" c:type="pointer"/>
+      </field>
+      <field name="error_full">
+        <type name="any" c:type="pointer"/>
+      </field>
+      <field name="tunnel_lost">
+        <type name="any" c:type="pointer"/>
+      </field>
+      <field name="_gst_reserved" writable="1">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="2">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <function name="base64_decode_ip"
+              c:identifier="gst_rtsp_base64_decode_ip"
+              doc="Decode the base64 string pointed to by @data in-place. When @len is not #NULL
+it will contain the length of the decoded data.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="data" transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="len" direction="out" transfer-ownership="full">
+          <type name="size_t" c:type="gsize*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="base64_encode"
+              c:identifier="gst_rtsp_base64_encode"
+              doc="Encode a sequence of binary data into its Base-64 stringified representation.
+representing @data."
+              deprecated="Use g_base64_encode()">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="data" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="len" transfer-ownership="none">
+          <type name="size_t" c:type="gsize"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="connection_accept"
+              c:identifier="gst_rtsp_connection_accept"
+              doc="Accept a new connection on @sock and create a new #GstRTSPConnection for
+handling communication on new socket."
+              version="0.10.23">
+      <return-value transfer-ownership="full">
+        <type name="RTSPResult" c:type="GstRTSPResult"/>
+      </return-value>
+      <parameters>
+        <parameter name="sock" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="conn" transfer-ownership="none">
+          <type name="RTSPConnection" c:type="GstRTSPConnection**"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="connection_create"
+              c:identifier="gst_rtsp_connection_create"
+              doc="Create a newly allocated #GstRTSPConnection from @url and store it in @conn.
+The connection will not yet attempt to connect to @url, use
+gst_rtsp_connection_connect().
+A copy of @url will be made.">
+      <return-value transfer-ownership="full">
+        <type name="RTSPResult" c:type="GstRTSPResult"/>
+      </return-value>
+      <parameters>
+        <parameter name="url" transfer-ownership="none">
+          <type name="RTSPUrl" c:type="GstRTSPUrl*"/>
+        </parameter>
+        <parameter name="conn" transfer-ownership="none">
+          <type name="RTSPConnection" c:type="GstRTSPConnection**"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="connection_create_from_fd"
+              c:identifier="gst_rtsp_connection_create_from_fd"
+              doc="Create a new #GstRTSPConnection for handling communication on the existing
+file descriptor @fd. The @initial_buffer contains any data already read from"
+              version="0.10.25">
+      <return-value transfer-ownership="full">
+        <type name="RTSPResult" c:type="GstRTSPResult"/>
+      </return-value>
+      <parameters>
+        <parameter name="fd" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="ip" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="port" transfer-ownership="none">
+          <type name="uint16" c:type="guint16"/>
+        </parameter>
+        <parameter name="initial_buffer" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="conn" transfer-ownership="none">
+          <type name="RTSPConnection" c:type="GstRTSPConnection**"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="find_header_field"
+              c:identifier="gst_rtsp_find_header_field"
+              doc="Convert @header to a #GstRTSPHeaderField.
+header field is unknown.">
+      <return-value transfer-ownership="full">
+        <type name="RTSPHeaderField" c:type="GstRTSPHeaderField"/>
+      </return-value>
+      <parameters>
+        <parameter name="header" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="find_method"
+              c:identifier="gst_rtsp_find_method"
+              doc="Convert @method to a #GstRTSPMethod.
+method is unknown.">
+      <return-value transfer-ownership="full">
+        <type name="RTSPMethod" c:type="GstRTSPMethod"/>
+      </return-value>
+      <parameters>
+        <parameter name="method" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="header_allow_multiple"
+              c:identifier="gst_rtsp_header_allow_multiple"
+              doc="Check whether @field may appear multiple times in a message."
+              version="0.10.25">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="field" transfer-ownership="none">
+          <type name="RTSPHeaderField" c:type="GstRTSPHeaderField"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="header_as_text"
+              c:identifier="gst_rtsp_header_as_text"
+              doc="Convert @field to a string.">
+      <return-value transfer-ownership="none">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="field" transfer-ownership="none">
+          <type name="RTSPHeaderField" c:type="GstRTSPHeaderField"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="message_get_type"
+              c:identifier="gst_rtsp_message_get_type"
+              doc="Get the message type of @msg.">
+      <return-value transfer-ownership="full">
+        <type name="RTSPMsgType" c:type="GstRTSPMsgType"/>
+      </return-value>
+      <parameters>
+        <parameter name="msg" transfer-ownership="none">
+          <type name="RTSPMessage" c:type="GstRTSPMessage*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="method_as_text"
+              c:identifier="gst_rtsp_method_as_text"
+              doc="Convert @method to a string.">
+      <return-value transfer-ownership="none">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="method" transfer-ownership="none">
+          <type name="RTSPMethod" c:type="GstRTSPMethod"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="options_as_text"
+              c:identifier="gst_rtsp_options_as_text"
+              doc="Convert @options to a string."
+              version="0.10.23">
+      <return-value transfer-ownership="full" doc="after usage.">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="options" transfer-ownership="none">
+          <type name="RTSPMethod" c:type="GstRTSPMethod"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="range_free"
+              c:identifier="gst_rtsp_range_free"
+              doc="Free the memory alocated by @range.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="range" transfer-ownership="none">
+          <type name="RTSPTimeRange" c:type="GstRTSPTimeRange*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="range_parse"
+              c:identifier="gst_rtsp_range_parse"
+              doc="Parse @rangestr to a #GstRTSPTimeRange.">
+      <return-value transfer-ownership="full">
+        <type name="RTSPResult" c:type="GstRTSPResult"/>
+      </return-value>
+      <parameters>
+        <parameter name="rangestr" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="range" transfer-ownership="none">
+          <type name="RTSPTimeRange" c:type="GstRTSPTimeRange**"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="range_to_string"
+              c:identifier="gst_rtsp_range_to_string"
+              doc="Convert @range into a string representation."
+              version="0.10.23">
+      <return-value transfer-ownership="full" doc="after usage.">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="range" transfer-ownership="none">
+          <type name="RTSPTimeRange" c:type="GstRTSPTimeRange*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="status_as_text"
+              c:identifier="gst_rtsp_status_as_text"
+              doc="Convert @code to a string.">
+      <return-value transfer-ownership="none">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="code" transfer-ownership="none">
+          <type name="RTSPStatusCode" c:type="GstRTSPStatusCode"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="strresult"
+              c:identifier="gst_rtsp_strresult"
+              doc="Convert @result in a human readable string.">
+      <return-value transfer-ownership="full" doc="after usage.">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="result" transfer-ownership="none">
+          <type name="RTSPResult" c:type="GstRTSPResult"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="transport_as_text"
+              c:identifier="gst_rtsp_transport_as_text"
+              doc="Convert @transport into a string that can be used to signal the transport in
+an RTSP SETUP response.
+is invalid.">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="transport" transfer-ownership="none">
+          <type name="RTSPTransport" c:type="GstRTSPTransport*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="transport_free"
+              c:identifier="gst_rtsp_transport_free"
+              doc="Free the memory used by @transport.">
+      <return-value transfer-ownership="full">
+        <type name="RTSPResult" c:type="GstRTSPResult"/>
+      </return-value>
+      <parameters>
+        <parameter name="transport" transfer-ownership="none">
+          <type name="RTSPTransport" c:type="GstRTSPTransport*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="transport_get_manager"
+              c:identifier="gst_rtsp_transport_get_manager"
+              doc="Get the #GStreamer element that can handle the buffers transported over
+It is possible that there are several managers available, use @option to
+selected one.
+needed/available for @trans.">
+      <return-value transfer-ownership="full">
+        <type name="RTSPResult" c:type="GstRTSPResult"/>
+      </return-value>
+      <parameters>
+        <parameter name="trans" transfer-ownership="none">
+          <type name="RTSPTransMode" c:type="GstRTSPTransMode"/>
+        </parameter>
+        <parameter name="manager" transfer-ownership="none">
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </parameter>
+        <parameter name="option" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="transport_get_mime"
+              c:identifier="gst_rtsp_transport_get_mime"
+              doc="Get the mime type of the transport mode @trans. This mime type is typically
+used to generate #GstCaps on buffers.">
+      <return-value transfer-ownership="full">
+        <type name="RTSPResult" c:type="GstRTSPResult"/>
+      </return-value>
+      <parameters>
+        <parameter name="trans" transfer-ownership="none">
+          <type name="RTSPTransMode" c:type="GstRTSPTransMode"/>
+        </parameter>
+        <parameter name="mime" transfer-ownership="none">
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="transport_init"
+              c:identifier="gst_rtsp_transport_init"
+              doc="Initialize @transport so that it can be used.">
+      <return-value transfer-ownership="full">
+        <type name="RTSPResult" c:type="GstRTSPResult"/>
+      </return-value>
+      <parameters>
+        <parameter name="transport" transfer-ownership="none">
+          <type name="RTSPTransport" c:type="GstRTSPTransport*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="transport_new"
+              c:identifier="gst_rtsp_transport_new"
+              doc="Allocate a new initialized #GstRTSPTransport. Use gst_rtsp_transport_free()
+after usage.">
+      <return-value transfer-ownership="full">
+        <type name="RTSPResult" c:type="GstRTSPResult"/>
+      </return-value>
+      <parameters>
+        <parameter name="transport" transfer-ownership="none">
+          <type name="RTSPTransport" c:type="GstRTSPTransport**"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="transport_parse"
+              c:identifier="gst_rtsp_transport_parse"
+              doc="Parse the RTSP transport string @str into @transport.">
+      <return-value transfer-ownership="full">
+        <type name="RTSPResult" c:type="GstRTSPResult"/>
+      </return-value>
+      <parameters>
+        <parameter name="str" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="transport" transfer-ownership="none">
+          <type name="RTSPTransport" c:type="GstRTSPTransport*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="url_parse"
+              c:identifier="gst_rtsp_url_parse"
+              doc="Parse the RTSP @urlstr into a newly allocated #GstRTSPUrl. Free after usage
+with gst_rtsp_url_free().">
+      <return-value transfer-ownership="full">
+        <type name="RTSPResult" c:type="GstRTSPResult"/>
+      </return-value>
+      <parameters>
+        <parameter name="urlstr" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="url" transfer-ownership="none">
+          <type name="RTSPUrl" c:type="GstRTSPUrl**"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="version_as_text"
+              c:identifier="gst_rtsp_version_as_text"
+              doc="Convert @version to a string.">
+      <return-value transfer-ownership="none">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="version" transfer-ownership="none">
+          <type name="RTSPVersion" c:type="GstRTSPVersion"/>
+        </parameter>
+      </parameters>
+    </function>
+  </namespace>
+</repository>
diff --git a/extra/gstreamer/rtsp/ffi/ffi.factor b/extra/gstreamer/rtsp/ffi/ffi.factor
new file mode 100644 (file)
index 0000000..a3989d7
--- /dev/null
@@ -0,0 +1,20 @@
+! Copyright (C) 2010 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: alien alien.syntax alien.libraries combinators kernel
+system
+gobject-introspection glib.ffi gstreamer.ffi gstreamer.sdp.ffi ;
+IN: gstreamer.rtsp.ffi
+
+<<
+"gstreamer.rtsp" {
+    { [ os winnt? ] [ drop ] }
+    { [ os macosx? ] [ drop ] }
+    { [ os unix? ] [ "libgstrtsp-0.10.so" cdecl add-library ] }
+} cond
+>>
+
+! git error (there is _GstRTSPTransport only in .gir)
+C-TYPE: GstRTSPTransport
+
+GIR: vocab:gstreamer/rtsp/GstRtsp-0.10.gir
+
diff --git a/extra/gstreamer/rtsp/rtsp.factor b/extra/gstreamer/rtsp/rtsp.factor
new file mode 100644 (file)
index 0000000..72069f6
--- /dev/null
@@ -0,0 +1,5 @@
+! Copyright (C) 2010 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: gstreamer.rtsp.ffi ;
+IN: gstreamer.rtsp
+
diff --git a/extra/gstreamer/sdp/GstSdp-0.10.gir b/extra/gstreamer/sdp/GstSdp-0.10.gir
new file mode 100644 (file)
index 0000000..16f62f6
--- /dev/null
@@ -0,0 +1,1056 @@
+<?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.0"
+            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="GLib" version="2.0"/>
+  <include name="GModule" version="2.0"/>
+  <include name="GObject" version="2.0"/>
+  <include name="Gst" version="0.10"/>
+  <include name="libxml2" version="2.0"/>
+  <package name="gstreamer-0.10"/>
+  <c:include name="gst/audio/gstsdp.h"/>
+  <c:include name="gst/audio/gstsdpmessage.h"/>
+  <namespace name="GstSdp"
+             version="0.10"
+             shared-library="libgstsdp-0.10.so.0"
+             c:prefix="Gst">
+    <constant name="BWTYPE_AS" value="AS">
+      <type name="utf8"/>
+    </constant>
+    <constant name="BWTYPE_CT" value="CT">
+      <type name="utf8"/>
+    </constant>
+    <constant name="BWTYPE_EXT_PREFIX" value="X-">
+      <type name="utf8"/>
+    </constant>
+    <constant name="BWTYPE_RS" value="RS">
+      <type name="utf8"/>
+    </constant>
+    <record name="SDPAttribute"
+            c:type="GstSDPAttribute"
+            doc="The contents of the SDP &quot;a=&quot; field which contains a key/value pair.">
+      <field name="key" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="value" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+    </record>
+    <record name="SDPBandwidth"
+            c:type="GstSDPBandwidth"
+            doc="The contents of the SDP &quot;b=&quot; field which specifies the proposed bandwidth to
+be used by the session or media.">
+      <field name="bwtype" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="bandwidth" writable="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+    </record>
+    <record name="SDPConnection"
+            c:type="GstSDPConnection"
+            doc="&quot;Internet&quot;.
+The contents of the SDP &quot;c=&quot; field which contains connection data.">
+      <field name="nettype" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="addrtype" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="address" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="ttl" writable="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="addr_number" writable="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+    </record>
+    <record name="SDPKey"
+            c:type="GstSDPKey"
+            doc="The contents of the SDP &quot;k=&quot; field which is used to convey encryption
+keys.">
+      <field name="type" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="data" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+    </record>
+    <record name="SDPMedia"
+            c:type="GstSDPMedia"
+            doc="The contents of the SDP &quot;m=&quot; field with all related fields.">
+      <field name="media" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="port" writable="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="num_ports" writable="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="proto" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="fmts" writable="1">
+        <type name="GLib.Array" c:type="GArray*"/>
+      </field>
+      <field name="information" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="connections" writable="1">
+        <type name="GLib.Array" c:type="GArray*"/>
+      </field>
+      <field name="bandwidths" writable="1">
+        <type name="GLib.Array" c:type="GArray*"/>
+      </field>
+      <field name="key" writable="1">
+        <type name="SDPKey" c:type="GstSDPKey"/>
+      </field>
+      <field name="attributes" writable="1">
+        <type name="GLib.Array" c:type="GArray*"/>
+      </field>
+      <constructor name="new"
+                   c:identifier="gst_sdp_media_new"
+                   doc="Allocate a new GstSDPMedia and store the result in @media.">
+        <return-value transfer-ownership="full">
+          <type name="SDPMedia" c:type="GstSDPResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="media" transfer-ownership="none">
+            <type name="SDPMedia" c:type="GstSDPMedia**"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="init"
+              c:identifier="gst_sdp_media_init"
+              doc="Initialize @media so that its contents are as if it was freshly allocated
+with gst_sdp_media_new(). This function is mostly used to initialize a media
+allocated on the stack. gst_sdp_media_uninit() undoes this operation.
+When this function is invoked on newly allocated data (with malloc or on the
+stack), its contents should be set to 0 before calling this function.">
+        <return-value transfer-ownership="full">
+          <type name="SDPResult" c:type="GstSDPResult"/>
+        </return-value>
+      </method>
+      <method name="uninit"
+              c:identifier="gst_sdp_media_uninit"
+              doc="Free all resources allocated in @media. @media should not be used anymore after
+this function. This function should be used when @media was allocated on the
+stack and initialized with gst_sdp_media_init().">
+        <return-value transfer-ownership="full">
+          <type name="SDPResult" c:type="GstSDPResult"/>
+        </return-value>
+      </method>
+      <method name="free"
+              c:identifier="gst_sdp_media_free"
+              doc="Free all resources allocated by @media. @media should not be used anymore after
+this function. This function should be used when @media was dynamically
+allocated with gst_sdp_media_new().">
+        <return-value transfer-ownership="full">
+          <type name="SDPResult" c:type="GstSDPResult"/>
+        </return-value>
+      </method>
+      <method name="as_text"
+              c:identifier="gst_sdp_media_as_text"
+              doc="Convert the contents of @media to a text string.">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_media"
+              c:identifier="gst_sdp_media_get_media"
+              doc="Get the media description of @media.">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="set_media"
+              c:identifier="gst_sdp_media_set_media"
+              doc="Set the media description of @media to @med.">
+        <return-value transfer-ownership="full">
+          <type name="SDPResult" c:type="GstSDPResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="med" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_port"
+              c:identifier="gst_sdp_media_get_port"
+              doc="Get the port number for @media.">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="get_num_ports"
+              c:identifier="gst_sdp_media_get_num_ports"
+              doc="Get the number of ports for @media.">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="set_port_info"
+              c:identifier="gst_sdp_media_set_port_info"
+              doc="Set the port information in @media.">
+        <return-value transfer-ownership="full">
+          <type name="SDPResult" c:type="GstSDPResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="port" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="num_ports" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_proto"
+              c:identifier="gst_sdp_media_get_proto"
+              doc="Get the transport protocol of @media">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="set_proto"
+              c:identifier="gst_sdp_media_set_proto"
+              doc="Set the media transport protocol of @media to @proto.">
+        <return-value transfer-ownership="full">
+          <type name="SDPResult" c:type="GstSDPResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="proto" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="formats_len"
+              c:identifier="gst_sdp_media_formats_len"
+              doc="Get the number of formats in @media.">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="get_format"
+              c:identifier="gst_sdp_media_get_format"
+              doc="Get the format information at position @idx in @media.">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="idx" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_format"
+              c:identifier="gst_sdp_media_add_format"
+              doc="Add the format information to @media.">
+        <return-value transfer-ownership="full">
+          <type name="SDPResult" c:type="GstSDPResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_information"
+              c:identifier="gst_sdp_media_get_information"
+              doc="Get the information of @media">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="set_information"
+              c:identifier="gst_sdp_media_set_information"
+              doc="Set the media information of @media to @information.">
+        <return-value transfer-ownership="full">
+          <type name="SDPResult" c:type="GstSDPResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="information" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="connections_len"
+              c:identifier="gst_sdp_media_connections_len"
+              doc="Get the number of connection fields in @media.">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="get_connection"
+              c:identifier="gst_sdp_media_get_connection"
+              doc="Get the connection at position @idx in @media.">
+        <return-value transfer-ownership="none">
+          <type name="SDPConnection" c:type="GstSDPConnection*"/>
+        </return-value>
+        <parameters>
+          <parameter name="idx" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_connection"
+              c:identifier="gst_sdp_media_add_connection"
+              doc="&quot;Internet&quot;.
+Add the given connection parameters to @media.">
+        <return-value transfer-ownership="full">
+          <type name="SDPResult" c:type="GstSDPResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="nettype" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="addrtype" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="address" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="ttl" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="addr_number" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="bandwidths_len"
+              c:identifier="gst_sdp_media_bandwidths_len"
+              doc="Get the number of bandwidth fields in @media.">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="get_bandwidth"
+              c:identifier="gst_sdp_media_get_bandwidth"
+              doc="Get the bandwidth at position @idx in @media.">
+        <return-value transfer-ownership="none">
+          <type name="SDPBandwidth" c:type="GstSDPBandwidth*"/>
+        </return-value>
+        <parameters>
+          <parameter name="idx" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_bandwidth"
+              c:identifier="gst_sdp_media_add_bandwidth"
+              doc="Add the bandwidth information with @bwtype and @bandwidth to @media.">
+        <return-value transfer-ownership="full">
+          <type name="SDPResult" c:type="GstSDPResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="bwtype" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="bandwidth" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_key"
+              c:identifier="gst_sdp_media_get_key"
+              doc="Get the encryption information from @media.">
+        <return-value transfer-ownership="none">
+          <type name="SDPKey" c:type="GstSDPKey*"/>
+        </return-value>
+      </method>
+      <method name="set_key"
+              c:identifier="gst_sdp_media_set_key"
+              doc="Adds the encryption information to @media.">
+        <return-value transfer-ownership="full">
+          <type name="SDPResult" c:type="GstSDPResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="type" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="attributes_len"
+              c:identifier="gst_sdp_media_attributes_len"
+              doc="Get the number of attribute fields in @media.">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="get_attribute"
+              c:identifier="gst_sdp_media_get_attribute"
+              doc="Get the attribute at position @idx in @media.">
+        <return-value transfer-ownership="none">
+          <type name="SDPAttribute" c:type="GstSDPAttribute*"/>
+        </return-value>
+        <parameters>
+          <parameter name="idx" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_attribute_val"
+              c:identifier="gst_sdp_media_get_attribute_val"
+              doc="Get the first attribute value for @key in @media.">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="key" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_attribute_val_n"
+              c:identifier="gst_sdp_media_get_attribute_val_n"
+              doc="Get the @nth attribute value for @key in @media.">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="key" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="nth" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_attribute"
+              c:identifier="gst_sdp_media_add_attribute"
+              doc="Add the attribute with @key and @value to @media.">
+        <return-value transfer-ownership="full">
+          <type name="SDPResult" c:type="GstSDPResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="key" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <record name="SDPMessage"
+            c:type="GstSDPMessage"
+            doc="The contents of the SDP message.">
+      <field name="version" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="origin" writable="1">
+        <type name="SDPOrigin" c:type="GstSDPOrigin"/>
+      </field>
+      <field name="session_name" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="information" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="uri" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="emails" writable="1">
+        <type name="GLib.Array" c:type="GArray*"/>
+      </field>
+      <field name="phones" writable="1">
+        <type name="GLib.Array" c:type="GArray*"/>
+      </field>
+      <field name="connection" writable="1">
+        <type name="SDPConnection" c:type="GstSDPConnection"/>
+      </field>
+      <field name="bandwidths" writable="1">
+        <type name="GLib.Array" c:type="GArray*"/>
+      </field>
+      <field name="times" writable="1">
+        <type name="GLib.Array" c:type="GArray*"/>
+      </field>
+      <field name="zones" writable="1">
+        <type name="GLib.Array" c:type="GArray*"/>
+      </field>
+      <field name="key" writable="1">
+        <type name="SDPKey" c:type="GstSDPKey"/>
+      </field>
+      <field name="attributes" writable="1">
+        <type name="GLib.Array" c:type="GArray*"/>
+      </field>
+      <field name="medias" writable="1">
+        <type name="GLib.Array" c:type="GArray*"/>
+      </field>
+      <constructor name="new"
+                   c:identifier="gst_sdp_message_new"
+                   doc="Allocate a new GstSDPMessage and store the result in @msg.">
+        <return-value transfer-ownership="full">
+          <type name="SDPMessage" c:type="GstSDPResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="msg" transfer-ownership="none">
+            <type name="SDPMessage" c:type="GstSDPMessage**"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="init"
+              c:identifier="gst_sdp_message_init"
+              doc="Initialize @msg so that its contents are as if it was freshly allocated
+with gst_sdp_message_new(). This function is mostly used to initialize a message
+allocated on the stack. gst_sdp_message_uninit() undoes this operation.
+When this function is invoked on newly allocated data (with malloc or on the
+stack), its contents should be set to 0 before calling this function.">
+        <return-value transfer-ownership="full">
+          <type name="SDPResult" c:type="GstSDPResult"/>
+        </return-value>
+      </method>
+      <method name="uninit"
+              c:identifier="gst_sdp_message_uninit"
+              doc="Free all resources allocated in @msg. @msg should not be used anymore after
+this function. This function should be used when @msg was allocated on the
+stack and initialized with gst_sdp_message_init().">
+        <return-value transfer-ownership="full">
+          <type name="SDPResult" c:type="GstSDPResult"/>
+        </return-value>
+      </method>
+      <method name="free"
+              c:identifier="gst_sdp_message_free"
+              doc="Free all resources allocated by @msg. @msg should not be used anymore after
+this function. This function should be used when @msg was dynamically
+allocated with gst_sdp_message_new().">
+        <return-value transfer-ownership="full">
+          <type name="SDPResult" c:type="GstSDPResult"/>
+        </return-value>
+      </method>
+      <method name="as_text"
+              c:identifier="gst_sdp_message_as_text"
+              doc="Convert the contents of @msg to a text string.">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_version"
+              c:identifier="gst_sdp_message_get_version"
+              doc="Get the version in @msg.">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="set_version"
+              c:identifier="gst_sdp_message_set_version"
+              doc="Set the version in @msg.">
+        <return-value transfer-ownership="full">
+          <type name="SDPResult" c:type="GstSDPResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="version" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_origin"
+              c:identifier="gst_sdp_message_get_origin"
+              doc="Get the origin of @msg.">
+        <return-value transfer-ownership="none">
+          <type name="SDPOrigin" c:type="GstSDPOrigin*"/>
+        </return-value>
+      </method>
+      <method name="set_origin"
+              c:identifier="gst_sdp_message_set_origin"
+              doc="Configure the SDP origin in @msg with the given parameters.">
+        <return-value transfer-ownership="full">
+          <type name="SDPResult" c:type="GstSDPResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="username" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="sess_id" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="sess_version" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="nettype" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="addrtype" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="addr" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_session_name"
+              c:identifier="gst_sdp_message_get_session_name"
+              doc="Get the session name in @msg.">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="set_session_name"
+              c:identifier="gst_sdp_message_set_session_name"
+              doc="Set the session name in @msg.">
+        <return-value transfer-ownership="full">
+          <type name="SDPResult" c:type="GstSDPResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="session_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_information"
+              c:identifier="gst_sdp_message_get_information"
+              doc="Get the information in @msg.">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="set_information"
+              c:identifier="gst_sdp_message_set_information"
+              doc="Set the information in @msg.">
+        <return-value transfer-ownership="full">
+          <type name="SDPResult" c:type="GstSDPResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="information" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_uri"
+              c:identifier="gst_sdp_message_get_uri"
+              doc="Get the URI in @msg.">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="set_uri"
+              c:identifier="gst_sdp_message_set_uri"
+              doc="Set the URI in @msg.">
+        <return-value transfer-ownership="full">
+          <type name="SDPResult" c:type="GstSDPResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="uri" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="emails_len"
+              c:identifier="gst_sdp_message_emails_len"
+              doc="Get the number of emails in @msg.">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="get_email"
+              c:identifier="gst_sdp_message_get_email"
+              doc="Get the email with number @idx from @msg.">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="idx" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_email"
+              c:identifier="gst_sdp_message_add_email"
+              doc="Add @email to the list of emails in @msg.">
+        <return-value transfer-ownership="full">
+          <type name="SDPResult" c:type="GstSDPResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="email" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="phones_len"
+              c:identifier="gst_sdp_message_phones_len"
+              doc="Get the number of phones in @msg.">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="get_phone"
+              c:identifier="gst_sdp_message_get_phone"
+              doc="Get the phone with number @idx from @msg.">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="idx" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_phone"
+              c:identifier="gst_sdp_message_add_phone"
+              doc="Add @phone to the list of phones in @msg.">
+        <return-value transfer-ownership="full">
+          <type name="SDPResult" c:type="GstSDPResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="phone" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_connection"
+              c:identifier="gst_sdp_message_get_connection"
+              doc="Get the connection of @msg.">
+        <return-value transfer-ownership="none">
+          <type name="SDPConnection" c:type="GstSDPConnection*"/>
+        </return-value>
+      </method>
+      <method name="set_connection"
+              c:identifier="gst_sdp_message_set_connection"
+              doc="&quot;Internet&quot;.
+Configure the SDP connection in @msg with the given parameters.">
+        <return-value transfer-ownership="full">
+          <type name="SDPResult" c:type="GstSDPResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="nettype" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="addrtype" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="address" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="ttl" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="addr_number" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="bandwidths_len"
+              c:identifier="gst_sdp_message_bandwidths_len"
+              doc="Get the number of bandwidth information in @msg.">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="get_bandwidth"
+              c:identifier="gst_sdp_message_get_bandwidth"
+              doc="Get the bandwidth at index @idx from @msg.">
+        <return-value transfer-ownership="none">
+          <type name="SDPBandwidth" c:type="GstSDPBandwidth*"/>
+        </return-value>
+        <parameters>
+          <parameter name="idx" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_bandwidth"
+              c:identifier="gst_sdp_message_add_bandwidth"
+              doc="Add the specified bandwidth information to @msg.">
+        <return-value transfer-ownership="full">
+          <type name="SDPResult" c:type="GstSDPResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="bwtype" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="bandwidth" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="times_len"
+              c:identifier="gst_sdp_message_times_len"
+              doc="Get the number of time information entries in @msg.">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="get_time"
+              c:identifier="gst_sdp_message_get_time"
+              doc="Get time information with index @idx from @msg.">
+        <return-value transfer-ownership="none">
+          <type name="SDPTime" c:type="GstSDPTime*"/>
+        </return-value>
+        <parameters>
+          <parameter name="idx" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_time"
+              c:identifier="gst_sdp_message_add_time"
+              doc="Add time information @start and @stop to @msg.">
+        <return-value transfer-ownership="full">
+          <type name="SDPResult" c:type="GstSDPResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="start" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="stop" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="repeat" transfer-ownership="none">
+            <array c:type="gchar**">
+              <type name="utf8"/>
+            </array>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="zones_len"
+              c:identifier="gst_sdp_message_zones_len"
+              doc="Get the number of time zone information entries in @msg.">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="get_zone"
+              c:identifier="gst_sdp_message_get_zone"
+              doc="Get time zone information with index @idx from @msg.">
+        <return-value transfer-ownership="none">
+          <type name="SDPZone" c:type="GstSDPZone*"/>
+        </return-value>
+        <parameters>
+          <parameter name="idx" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_zone"
+              c:identifier="gst_sdp_message_add_zone"
+              doc="Add time zone information to @msg.">
+        <return-value transfer-ownership="full">
+          <type name="SDPResult" c:type="GstSDPResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="adj_time" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="typed_time" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_key"
+              c:identifier="gst_sdp_message_get_key"
+              doc="Get the encryption information from @msg.">
+        <return-value transfer-ownership="none">
+          <type name="SDPKey" c:type="GstSDPKey*"/>
+        </return-value>
+      </method>
+      <method name="set_key"
+              c:identifier="gst_sdp_message_set_key"
+              doc="Adds the encryption information to @msg.">
+        <return-value transfer-ownership="full">
+          <type name="SDPResult" c:type="GstSDPResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="type" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="attributes_len"
+              c:identifier="gst_sdp_message_attributes_len"
+              doc="Get the number of attributes in @msg.">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="get_attribute"
+              c:identifier="gst_sdp_message_get_attribute"
+              doc="Get the attribute at position @idx in @msg.">
+        <return-value transfer-ownership="none">
+          <type name="SDPAttribute" c:type="GstSDPAttribute*"/>
+        </return-value>
+        <parameters>
+          <parameter name="idx" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_attribute_val"
+              c:identifier="gst_sdp_message_get_attribute_val"
+              doc="Get the first attribute with key @key in @msg.">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="key" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_attribute_val_n"
+              c:identifier="gst_sdp_message_get_attribute_val_n"
+              doc="Get the @nth attribute with key @key in @msg.">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="key" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="nth" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_attribute"
+              c:identifier="gst_sdp_message_add_attribute"
+              doc="Add the attribute with @key and @value to @msg.">
+        <return-value transfer-ownership="full">
+          <type name="SDPResult" c:type="GstSDPResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="key" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="medias_len"
+              c:identifier="gst_sdp_message_medias_len"
+              doc="Get the number of media descriptions in @msg.">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="get_media"
+              c:identifier="gst_sdp_message_get_media"
+              doc="Get the media description at index @idx in @msg.">
+        <return-value transfer-ownership="none">
+          <type name="SDPMedia" c:type="GstSDPMedia*"/>
+        </return-value>
+        <parameters>
+          <parameter name="idx" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_media"
+              c:identifier="gst_sdp_message_add_media"
+              doc="Adds @media to the array of medias in @msg. This function takes ownership of
+the contents of @media so that @media will have to be reinitialized with
+gst_media_init() before it can be used again.">
+        <return-value transfer-ownership="full">
+          <type name="SDPResult" c:type="GstSDPResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="media" transfer-ownership="none">
+            <type name="SDPMedia" c:type="GstSDPMedia*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="dump"
+              c:identifier="gst_sdp_message_dump"
+              doc="Dump the parsed contents of @msg to stdout.">
+        <return-value transfer-ownership="full">
+          <type name="SDPResult" c:type="GstSDPResult"/>
+        </return-value>
+      </method>
+    </record>
+    <record name="SDPOrigin"
+            c:type="GstSDPOrigin"
+            doc="if the originating host does not support the concept of user ids.
+session.
+&quot;Internet&quot;.
+created.
+The contents of the SDP &quot;o=&quot; field which gives the originator of the session
+(their username and the address of the user&apos;s host) plus a session id and
+session version number.">
+      <field name="username" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="sess_id" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="sess_version" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="nettype" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="addrtype" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="addr" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+    </record>
+    <enumeration name="SDPResult"
+                 doc="Return values for the SDP functions."
+                 c:type="GstSDPResult">
+      <member name="ok" value="0" c:identifier="GST_SDP_OK"/>
+      <member name="einval" value="-1" c:identifier="GST_SDP_EINVAL"/>
+    </enumeration>
+    <record name="SDPTime"
+            c:type="GstSDPTime"
+            doc="representation of Network Time Protocol (NTP) time values in seconds
+representation of Network Time Protocol (NTP) time values in seconds
+The contents of the SDP &quot;t=&quot; field which specify the start and stop times for
+a conference session.">
+      <field name="start" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="stop" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="repeat" writable="1">
+        <type name="GLib.Array" c:type="GArray*"/>
+      </field>
+    </record>
+    <record name="SDPZone"
+            c:type="GstSDPZone"
+            doc="The contents of the SDP &quot;z=&quot; field which allows the sender to
+specify a list of time zone adjustments and offsets from the base
+time.">
+      <field name="time" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="typed_time" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+    </record>
+    <function name="message_parse_buffer"
+              c:identifier="gst_sdp_message_parse_buffer"
+              doc="Parse the contents of @size bytes pointed to by @data and store the result in">
+      <return-value transfer-ownership="full">
+        <type name="SDPResult" c:type="GstSDPResult"/>
+      </return-value>
+      <parameters>
+        <parameter name="data" transfer-ownership="none">
+          <array c:type="guint8*">
+            <type name="uint8"/>
+          </array>
+        </parameter>
+        <parameter name="size" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="msg" transfer-ownership="none">
+          <type name="SDPMessage" c:type="GstSDPMessage*"/>
+        </parameter>
+      </parameters>
+    </function>
+  </namespace>
+</repository>
diff --git a/extra/gstreamer/sdp/ffi/ffi.factor b/extra/gstreamer/sdp/ffi/ffi.factor
new file mode 100644 (file)
index 0000000..f023bb2
--- /dev/null
@@ -0,0 +1,16 @@
+! Copyright (C) 2010 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: alien alien.libraries combinators kernel system
+gobject-introspection glib.ffi ;
+IN: gstreamer.sdp.ffi
+
+<<
+"gstreamer.sdp" {
+    { [ os winnt? ] [ drop ] }
+    { [ os macosx? ] [ drop ] }
+    { [ os unix? ] [ "libgstsdp-0.10.so" cdecl add-library ] }
+} cond
+>>
+
+GIR: vocab:gstreamer/sdp/GstSdp-0.10.gir
+
diff --git a/extra/gstreamer/sdp/sdp.factor b/extra/gstreamer/sdp/sdp.factor
new file mode 100644 (file)
index 0000000..1cfdbfe
--- /dev/null
@@ -0,0 +1,5 @@
+! Copyright (C) 2010 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: gstreamer.sdp.ffi ;
+IN: gstreamer.sdp
+
diff --git a/extra/gstreamer/summary.txt b/extra/gstreamer/summary.txt
new file mode 100644 (file)
index 0000000..4094ff9
--- /dev/null
@@ -0,0 +1 @@
+GStreamer binding
diff --git a/extra/gstreamer/tag/GstTag-0.10.gir b/extra/gstreamer/tag/GstTag-0.10.gir
new file mode 100644 (file)
index 0000000..f571459
--- /dev/null
@@ -0,0 +1,797 @@
+<?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.0"
+            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="GLib" version="2.0"/>
+  <include name="GModule" version="2.0"/>
+  <include name="GObject" version="2.0"/>
+  <include name="Gst" version="0.10"/>
+  <include name="GstBase" version="0.10"/>
+  <include name="libxml2" version="2.0"/>
+  <package name="gstreamer-0.10"/>
+  <package name="gstreamer-base-0.10"/>
+  <namespace name="GstTag"
+             version="0.10"
+             shared-library="libgsttag-0.10.so.0"
+             c:prefix="Gst">
+    <constant name="CDDA_CDDB_DISCID" value="discid">
+      <type name="utf8"/>
+    </constant>
+    <constant name="CDDA_CDDB_DISCID_FULL" value="discid-full">
+      <type name="utf8"/>
+    </constant>
+    <constant name="CDDA_MUSICBRAINZ_DISCID" value="musicbrainz-discid">
+      <type name="utf8"/>
+    </constant>
+    <constant name="CDDA_MUSICBRAINZ_DISCID_FULL"
+              value="musicbrainz-discid-full">
+      <type name="utf8"/>
+    </constant>
+    <constant name="CMML_CLIP" value="cmml-clip">
+      <type name="utf8"/>
+    </constant>
+    <constant name="CMML_HEAD" value="cmml-head">
+      <type name="utf8"/>
+    </constant>
+    <constant name="CMML_STREAM" value="cmml-stream">
+      <type name="utf8"/>
+    </constant>
+    <constant name="MUSICBRAINZ_ALBUMARTISTID"
+              value="musicbrainz-albumartistid">
+      <type name="utf8"/>
+    </constant>
+    <constant name="MUSICBRAINZ_ALBUMID" value="musicbrainz-albumid">
+      <type name="utf8"/>
+    </constant>
+    <constant name="MUSICBRAINZ_ARTISTID" value="musicbrainz-artistid">
+      <type name="utf8"/>
+    </constant>
+    <constant name="MUSICBRAINZ_TRACKID" value="musicbrainz-trackid">
+      <type name="utf8"/>
+    </constant>
+    <constant name="MUSICBRAINZ_TRMID" value="musicbrainz-trmid">
+      <type name="utf8"/>
+    </constant>
+    <class name="TagDemux"
+           c:type="GstTagDemux"
+           doc="Opaque #GstTagDemux structure."
+           version="0.10.15"
+           parent="Gst.Element"
+           abstract="1"
+           glib:type-name="GstTagDemux"
+           glib:get-type="gst_tag_demux_get_type"
+           glib:type-struct="TagDemuxClass">
+      <virtual-method name="identify_tag">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="buffer" transfer-ownership="none">
+            <type name="Gst.Buffer" c:type="GstBuffer*"/>
+          </parameter>
+          <parameter name="start_tag" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="tag_size" direction="out" transfer-ownership="full">
+            <type name="uint" c:type="guint*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="parse_tag">
+        <return-value transfer-ownership="full">
+          <type name="TagDemuxResult" c:type="GstTagDemuxResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="buffer" transfer-ownership="none">
+            <type name="Gst.Buffer" c:type="GstBuffer*"/>
+          </parameter>
+          <parameter name="start_tag" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="tag_size" direction="out" transfer-ownership="full">
+            <type name="uint" c:type="guint*"/>
+          </parameter>
+          <parameter name="tags" transfer-ownership="none">
+            <type name="Gst.TagList" c:type="GstTagList**"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="merge_tags">
+        <return-value transfer-ownership="full">
+          <type name="Gst.TagList" c:type="GstTagList*"/>
+        </return-value>
+        <parameters>
+          <parameter name="start_tags" transfer-ownership="none">
+            <type name="Gst.TagList" c:type="GstTagList*"/>
+          </parameter>
+          <parameter name="end_tags" transfer-ownership="none">
+            <type name="Gst.TagList" c:type="GstTagList*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <field name="element">
+        <type name="Gst.Element" c:type="GstElement"/>
+      </field>
+      <field name="priv">
+        <type name="TagDemuxPrivate" c:type="GstTagDemuxPrivate*"/>
+      </field>
+      <field name="reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </class>
+    <record name="TagDemuxClass"
+            c:type="GstTagDemuxClass"
+            glib:is-gtype-struct-for="TagDemux"
+            doc="determine its total size. Set to 0 if not interested in start tags.
+Subclasses should set this in their class_init function.
+determine its total size. Set to 0 if not interested in end tags.
+Subclasses should set this in their class_init function.
+tag. Buffer may be larger than the specified minimum size.
+Subclassed MUST override this vfunc in their class_init function.
+the identify_tag vfunc before. The parse_tag vfunc may change the size
+stored in *tag_size and return GST_TAG_DEMUX_RESULT_AGAIN to request a
+larger or smaller buffer. It is also permitted to adjust the tag_size to a
+smaller value and then return GST_TAG_DEMUX_RESULT_OK in one go.
+Subclassed MUST override the parse_tag vfunc in their class_init function.
+vfunc to allow prioritising of start or end tag according to user
+preference.  Note that both start_tags and end_tags may be NULL. By default
+start tags are prefered over end tags.
+The #GstTagDemuxClass structure.  See documentation at beginning of section
+for details about what subclasses need to override and do."
+            version="0.10.15">
+      <field name="parent_class">
+        <type name="Gst.ElementClass" c:type="GstElementClass"/>
+      </field>
+      <field name="min_start_size">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="min_end_size">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="identify_tag">
+        <callback name="identify_tag" c:type="identify_tag">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="demux" transfer-ownership="none">
+              <type name="TagDemux" c:type="GstTagDemux*"/>
+            </parameter>
+            <parameter name="buffer" transfer-ownership="none">
+              <type name="Gst.Buffer" c:type="GstBuffer*"/>
+            </parameter>
+            <parameter name="start_tag" transfer-ownership="none">
+              <type name="boolean" c:type="gboolean"/>
+            </parameter>
+            <parameter name="tag_size"
+                       direction="out"
+                       transfer-ownership="full">
+              <type name="uint" c:type="guint*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="parse_tag">
+        <callback name="parse_tag" c:type="parse_tag">
+          <return-value transfer-ownership="full">
+            <type name="TagDemuxResult" c:type="GstTagDemuxResult"/>
+          </return-value>
+          <parameters>
+            <parameter name="demux" transfer-ownership="none">
+              <type name="TagDemux" c:type="GstTagDemux*"/>
+            </parameter>
+            <parameter name="buffer" transfer-ownership="none">
+              <type name="Gst.Buffer" c:type="GstBuffer*"/>
+            </parameter>
+            <parameter name="start_tag" transfer-ownership="none">
+              <type name="boolean" c:type="gboolean"/>
+            </parameter>
+            <parameter name="tag_size"
+                       direction="out"
+                       transfer-ownership="full">
+              <type name="uint" c:type="guint*"/>
+            </parameter>
+            <parameter name="tags" transfer-ownership="none">
+              <type name="Gst.TagList" c:type="GstTagList**"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="merge_tags">
+        <callback name="merge_tags" c:type="merge_tags">
+          <return-value transfer-ownership="full">
+            <type name="Gst.TagList" c:type="GstTagList*"/>
+          </return-value>
+          <parameters>
+            <parameter name="demux" transfer-ownership="none">
+              <type name="TagDemux" c:type="GstTagDemux*"/>
+            </parameter>
+            <parameter name="start_tags" transfer-ownership="none">
+              <type name="Gst.TagList" c:type="GstTagList*"/>
+            </parameter>
+            <parameter name="end_tags" transfer-ownership="none">
+              <type name="Gst.TagList" c:type="GstTagList*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <record name="TagDemuxPrivate" c:type="GstTagDemuxPrivate">
+    </record>
+    <enumeration name="TagDemuxResult"
+                 doc="Result values from the parse_tag virtual function."
+                 version="0.10.15"
+                 glib:type-name="GstTagDemuxResult"
+                 glib:get-type="gst_tag_demux_result_get_type"
+                 c:type="GstTagDemuxResult">
+      <member name="broken_tag"
+              value="0"
+              c:identifier="GST_TAG_DEMUX_RESULT_BROKEN_TAG"
+              glib:nick="broken-tag"/>
+      <member name="again"
+              value="1"
+              c:identifier="GST_TAG_DEMUX_RESULT_AGAIN"
+              glib:nick="again"/>
+      <member name="ok"
+              value="2"
+              c:identifier="GST_TAG_DEMUX_RESULT_OK"
+              glib:nick="ok"/>
+    </enumeration>
+    <enumeration name="TagImageType"
+                 doc="tell functions such as gst_tag_image_data_to_image_buffer() that no
+Type of image contained in an image tag (specified as field in
+the image buffer&apos;s caps structure)"
+                 version="0.10.9"
+                 glib:type-name="GstTagImageType"
+                 glib:get-type="gst_tag_image_type_get_type"
+                 c:type="GstTagImageType">
+      <member name="none"
+              value="-1"
+              c:identifier="GST_TAG_IMAGE_TYPE_NONE"
+              glib:nick="none"/>
+      <member name="undefined"
+              value="0"
+              c:identifier="GST_TAG_IMAGE_TYPE_UNDEFINED"
+              glib:nick="undefined"/>
+      <member name="front_cover"
+              value="1"
+              c:identifier="GST_TAG_IMAGE_TYPE_FRONT_COVER"
+              glib:nick="front-cover"/>
+      <member name="back_cover"
+              value="2"
+              c:identifier="GST_TAG_IMAGE_TYPE_BACK_COVER"
+              glib:nick="back-cover"/>
+      <member name="leaflet_page"
+              value="3"
+              c:identifier="GST_TAG_IMAGE_TYPE_LEAFLET_PAGE"
+              glib:nick="leaflet-page"/>
+      <member name="medium"
+              value="4"
+              c:identifier="GST_TAG_IMAGE_TYPE_MEDIUM"
+              glib:nick="medium"/>
+      <member name="lead_artist"
+              value="5"
+              c:identifier="GST_TAG_IMAGE_TYPE_LEAD_ARTIST"
+              glib:nick="lead-artist"/>
+      <member name="artist"
+              value="6"
+              c:identifier="GST_TAG_IMAGE_TYPE_ARTIST"
+              glib:nick="artist"/>
+      <member name="conductor"
+              value="7"
+              c:identifier="GST_TAG_IMAGE_TYPE_CONDUCTOR"
+              glib:nick="conductor"/>
+      <member name="band_orchestra"
+              value="8"
+              c:identifier="GST_TAG_IMAGE_TYPE_BAND_ORCHESTRA"
+              glib:nick="band-orchestra"/>
+      <member name="composer"
+              value="9"
+              c:identifier="GST_TAG_IMAGE_TYPE_COMPOSER"
+              glib:nick="composer"/>
+      <member name="lyricist"
+              value="10"
+              c:identifier="GST_TAG_IMAGE_TYPE_LYRICIST"
+              glib:nick="lyricist"/>
+      <member name="recording_location"
+              value="11"
+              c:identifier="GST_TAG_IMAGE_TYPE_RECORDING_LOCATION"
+              glib:nick="recording-location"/>
+      <member name="during_recording"
+              value="12"
+              c:identifier="GST_TAG_IMAGE_TYPE_DURING_RECORDING"
+              glib:nick="during-recording"/>
+      <member name="during_performance"
+              value="13"
+              c:identifier="GST_TAG_IMAGE_TYPE_DURING_PERFORMANCE"
+              glib:nick="during-performance"/>
+      <member name="video_capture"
+              value="14"
+              c:identifier="GST_TAG_IMAGE_TYPE_VIDEO_CAPTURE"
+              glib:nick="video-capture"/>
+      <member name="fish"
+              value="15"
+              c:identifier="GST_TAG_IMAGE_TYPE_FISH"
+              glib:nick="fish"/>
+      <member name="illustration"
+              value="16"
+              c:identifier="GST_TAG_IMAGE_TYPE_ILLUSTRATION"
+              glib:nick="illustration"/>
+      <member name="artist_logo"
+              value="17"
+              c:identifier="GST_TAG_IMAGE_TYPE_BAND_ARTIST_LOGO"
+              glib:nick="artist-logo"/>
+      <member name="publisher_studio_logo"
+              value="18"
+              c:identifier="GST_TAG_IMAGE_TYPE_PUBLISHER_STUDIO_LOGO"
+              glib:nick="publisher-studio-logo"/>
+    </enumeration>
+    <function name="freeform_string_to_utf8"
+              c:identifier="gst_tag_freeform_string_to_utf8"
+              doc="or NULL
+Convenience function to read a string with unknown character encoding. If
+the string is already in UTF-8 encoding, it will be returned right away.
+If not it tries to detect byte-order-mark for UTF-16/32 cases and use that.
+Otherwise, the environment will be searched for a number of environment
+variables (whose names are specified in the NULL-terminated string array
+are specified, the current locale will be tried. If that also doesn&apos;t work,
+ISO-8859-1 is assumed (which will almost always succeed)."
+              version="0.10.13">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="data" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="size" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="env_vars" transfer-ownership="none">
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="from_id3_tag"
+              c:identifier="gst_tag_from_id3_tag"
+              doc="Looks up the GStreamer tag for a ID3v2 tag.">
+      <return-value transfer-ownership="none">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="id3_tag" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="from_id3_user_tag"
+              c:identifier="gst_tag_from_id3_user_tag"
+              doc="Looks up the GStreamer tag for an ID3v2 user tag (e.g. description in
+TXXX frame or owner in UFID frame).">
+      <return-value transfer-ownership="none">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="type" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="id3_user_tag" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="from_vorbis_tag"
+              c:identifier="gst_tag_from_vorbis_tag"
+              doc="Looks up the GStreamer tag for a vorbiscomment tag.">
+      <return-value transfer-ownership="none">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="vorbis_tag" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="get_language_code_iso_639_1"
+              c:identifier="gst_tag_get_language_code_iso_639_1"
+              doc="Returns two-letter ISO-639-1 language code given a three-letter ISO-639-2
+language code or two-letter ISO-639-1 language code (both are accepted for
+convenience).
+Language codes are case-sensitive and expected to be lower case.
+or NULL if no mapping is known. The returned string must not be
+modified or freed."
+              version="0.10.26">
+      <return-value transfer-ownership="none">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="lang_code" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="get_language_code_iso_639_2B"
+              c:identifier="gst_tag_get_language_code_iso_639_2B"
+              doc="Returns three-letter ISO-639-2 &quot;bibliographic&quot; language code given a
+two-letter ISO-639-1 language code or a three-letter ISO-639-2 language
+code (both are accepted for convenience).
+The &quot;bibliographic&quot; code is derived from the English name of the language
+(e.g. &quot;ger&quot; for German instead of &quot;de&quot; or &quot;deu&quot;). In most scenarios, the
+&quot;terminological&quot; codes are prefered.
+Language codes are case-sensitive and expected to be lower case.
+or NULL if no mapping is known. The returned string must not be
+modified or freed."
+              version="0.10.26">
+      <return-value transfer-ownership="none">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="lang_code" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="get_language_code_iso_639_2T"
+              c:identifier="gst_tag_get_language_code_iso_639_2T"
+              doc="Returns three-letter ISO-639-2 &quot;terminological&quot; language code given a
+two-letter ISO-639-1 language code or a three-letter ISO-639-2 language
+code (both are accepted for convenience).
+The &quot;terminological&quot; code is derived from the local name of the language
+(e.g. &quot;deu&quot; for German instead of &quot;ger&quot;). In most scenarios, the
+&quot;terminological&quot; codes are prefered over the &quot;bibliographic&quot; ones.
+Language codes are case-sensitive and expected to be lower case.
+or NULL if no mapping is known. The returned string must not be
+modified or freed."
+              version="0.10.26">
+      <return-value transfer-ownership="none">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="lang_code" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="get_language_codes"
+              c:identifier="gst_tag_get_language_codes"
+              doc="Returns a list of known language codes (in form of two-letter ISO-639-1
+codes). This is useful for UIs to build a list of available languages for
+tagging purposes (e.g. to tag an audio track appropriately in a video or
+audio editor).
+with g_strfreev() when no longer needed."
+              version="0.10.26">
+      <return-value transfer-ownership="full">
+        <array c:type="gchar**">
+          <type name="utf8"/>
+        </array>
+      </return-value>
+    </function>
+    <function name="get_language_name"
+              c:identifier="gst_tag_get_language_name"
+              doc="Returns the name of the language given an ISO-639 language code, such
+as often found in a GST_TAG_LANGUAGE tag. The name will be translated
+according to the current locale (if the library was built against the
+iso-codes package, otherwise the English name will be returned).
+Language codes are case-sensitive and expected to be lower case.
+not be mapped to a language name. The returned string must not be
+modified and does not need to freed; it will stay valid until the
+application is terminated."
+              version="0.10.26">
+      <return-value transfer-ownership="none">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="language_code" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="id3_genre_count"
+              c:identifier="gst_tag_id3_genre_count"
+              doc="Gets the number of ID3v1 genres that can be identified. Winamp genres are
+included.">
+      <return-value transfer-ownership="none">
+        <type name="uint" c:type="guint"/>
+      </return-value>
+    </function>
+    <function name="id3_genre_get"
+              c:identifier="gst_tag_id3_genre_get"
+              doc="Gets the ID3v1 genre name for a given ID.">
+      <return-value transfer-ownership="none">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="id" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="image_data_to_image_buffer"
+              c:identifier="gst_tag_image_data_to_image_buffer"
+              doc="#GST_TAG_IMAGE_TYPE_NONE if no image type should be set at all (e.g.
+for preview images)
+Helper function for tag-reading plugins to create a #GstBuffer suitable to
+add to a #GstTagList as an image tag (such as #GST_TAG_IMAGE or
+#GST_TAG_PREVIEW_IMAGE) from the encoded image data and an (optional) image
+type.
+blob of binary image data, often accompanied by a MIME type or some other
+content type string (e.g. &apos;png&apos;, &apos;jpeg&apos;, &apos;jpg&apos;). Sometimes there is also an
+&apos;image type&apos; to indicate what kind of image this is (e.g. front cover,
+back cover, artist, etc.). The image data may also be an URI to the image
+rather than the image itself.
+In GStreamer, image tags are #GstBuffer&lt;!-- --&gt;s containing the raw image
+data, with the buffer caps describing the content type of the image
+(e.g. image/jpeg, image/png, text/uri-list). The buffer caps may contain
+an additional &apos;image-type&apos; field of #GST_TYPE_TAG_IMAGE_TYPE to describe
+the type of image (front cover, back cover etc.). #GST_TAG_PREVIEW_IMAGE
+tags should not carry an image type, their type is already indicated via
+the special tag name.
+This function will do various checks and typefind the encoded image
+data (we can&apos;t trust the declared mime type)."
+              version="0.10.20">
+      <return-value transfer-ownership="full">
+        <type name="Gst.Buffer" c:type="GstBuffer*"/>
+      </return-value>
+      <parameters>
+        <parameter name="image_data" transfer-ownership="none" doc="image">
+          <array c:type="guint8*">
+            <type name="uint8"/>
+          </array>
+        </parameter>
+        <parameter name="image_data_len" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="image_type" transfer-ownership="none">
+          <type name="TagImageType" c:type="GstTagImageType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="list_add_id3_image"
+              c:identifier="gst_tag_list_add_id3_image"
+              doc="the APIC frame (0 = unknown/other)
+Adds an image from an ID3 APIC frame (or similar, such as used in FLAC)
+to the given tag list. Also see gst_tag_image_data_to_image_buffer() for
+more information on image tags in GStreamer."
+              version="0.10.20">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="tag_list" transfer-ownership="none">
+          <type name="Gst.TagList" c:type="GstTagList*"/>
+        </parameter>
+        <parameter name="image_data" transfer-ownership="none" doc="image">
+          <array c:type="guint8*">
+            <type name="uint8"/>
+          </array>
+        </parameter>
+        <parameter name="image_data_len" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="id3_picture_type"
+                   transfer-ownership="none"
+                   doc="specification for">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="list_from_vorbiscomment_buffer"
+              c:identifier="gst_tag_list_from_vorbiscomment_buffer"
+              doc="of this vorbis comment or NULL if you don&apos;t need it.
+Creates a new tag list that contains the information parsed out of a
+vorbiscomment packet.
+given vorbiscomment buffer or NULL on error.">
+      <return-value transfer-ownership="full">
+        <type name="Gst.TagList" c:type="GstTagList*"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none">
+          <type name="Gst.Buffer" c:type="GstBuffer*"/>
+        </parameter>
+        <parameter name="id_data" transfer-ownership="none">
+          <array c:type="guint8*">
+            <type name="uint8"/>
+          </array>
+        </parameter>
+        <parameter name="id_data_length" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="vendor_string" transfer-ownership="none">
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="list_from_xmp_buffer"
+              c:identifier="gst_tag_list_from_xmp_buffer"
+              doc="Parse a xmp packet into a taglist."
+              version="0.10.29">
+      <return-value transfer-ownership="full">
+        <type name="Gst.TagList" c:type="GstTagList*"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none">
+          <type name="Gst.Buffer" c:type="GstBuffer*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="list_new_from_id3v1"
+              c:identifier="gst_tag_list_new_from_id3v1"
+              doc="Parses the data containing an ID3v1 tag and returns a #GstTagList from the
+parsed data.">
+      <return-value transfer-ownership="full">
+        <type name="Gst.TagList" c:type="GstTagList*"/>
+      </return-value>
+      <parameters>
+        <parameter name="data" transfer-ownership="none">
+          <array c:type="guint8*">
+            <type name="uint8"/>
+          </array>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="list_to_vorbiscomment_buffer"
+              c:identifier="gst_tag_list_to_vorbiscomment_buffer"
+              doc="Creates a new vorbiscomment buffer from a tag list.
+that could be converted from the given tag list.">
+      <return-value transfer-ownership="full">
+        <type name="Gst.Buffer" c:type="GstBuffer*"/>
+      </return-value>
+      <parameters>
+        <parameter name="list" transfer-ownership="none">
+          <type name="Gst.TagList" c:type="GstTagList*"/>
+        </parameter>
+        <parameter name="id_data" transfer-ownership="none">
+          <array c:type="guint8*">
+            <type name="uint8"/>
+          </array>
+        </parameter>
+        <parameter name="id_data_length" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="vendor_string" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="list_to_xmp_buffer"
+              c:identifier="gst_tag_list_to_xmp_buffer"
+              doc="Formats a taglist as a xmp packet."
+              version="0.10.29">
+      <return-value transfer-ownership="full">
+        <type name="Gst.Buffer" c:type="GstBuffer*"/>
+      </return-value>
+      <parameters>
+        <parameter name="list" transfer-ownership="none">
+          <type name="Gst.TagList" c:type="GstTagList*"/>
+        </parameter>
+        <parameter name="read_only" transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="parse_extended_comment"
+              c:identifier="gst_tag_parse_extended_comment"
+              doc="Convenience function to parse a GST_TAG_EXTENDED_COMMENT string and
+separate it into its components.
+If successful, @key, @lang and/or @value will be set to newly allocated
+strings that you need to free with g_free() when done. @key and @lang
+may also be set to NULL by this function if there is no key or no language
+code in the extended comment string."
+              version="0.10.10">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="ext_comment" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="key" transfer-ownership="none">
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </parameter>
+        <parameter name="lang" transfer-ownership="none">
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </parameter>
+        <parameter name="value" transfer-ownership="none">
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </parameter>
+        <parameter name="fail_if_no_key" transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="register_musicbrainz_tags"
+              c:identifier="gst_tag_register_musicbrainz_tags">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="to_id3_tag"
+              c:identifier="gst_tag_to_id3_tag"
+              doc="Looks up the ID3v2 tag for a GStreamer tag.">
+      <return-value transfer-ownership="none">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="gst_tag" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="to_vorbis_comments"
+              c:identifier="gst_tag_to_vorbis_comments"
+              doc="Creates a new tag list that contains the information parsed out of a
+vorbiscomment packet.
+g_list_foreach (list, (GFunc) g_free, NULL) plus g_list_free (list)">
+      <return-value transfer-ownership="full">
+        <type name="GLib.List" c:type="GList*"/>
+      </return-value>
+      <parameters>
+        <parameter name="list" transfer-ownership="none">
+          <type name="Gst.TagList" c:type="GstTagList*"/>
+        </parameter>
+        <parameter name="tag" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="to_vorbis_tag"
+              c:identifier="gst_tag_to_vorbis_tag"
+              doc="Looks up the vorbiscomment tag for a GStreamer tag.">
+      <return-value transfer-ownership="none">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="gst_tag" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="vorbis_tag_add"
+              c:identifier="gst_vorbis_tag_add"
+              doc="Convenience function using gst_tag_from_vorbis_tag(), parsing
+a vorbis comment string into the right type and adding it to the
+given taglist @list.
+Unknown vorbiscomment tags will be added to the tag list in form
+of a #GST_TAG_EXTENDED_COMMENT (since 0.10.10 at least).">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="list" transfer-ownership="none">
+          <type name="Gst.TagList" c:type="GstTagList*"/>
+        </parameter>
+        <parameter name="tag"
+                   transfer-ownership="none"
+                   doc="must be valid UTF-8">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="value"
+                   transfer-ownership="none"
+                   doc="must be valid UTF-8">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+  </namespace>
+</repository>
diff --git a/extra/gstreamer/tag/ffi/ffi.factor b/extra/gstreamer/tag/ffi/ffi.factor
new file mode 100644 (file)
index 0000000..28eda35
--- /dev/null
@@ -0,0 +1,16 @@
+! Copyright (C) 2010 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: alien alien.libraries combinators kernel system
+gobject-introspection glib.ffi gstreamer.ffi ;
+IN: gstreamer.tag.ffi
+
+<<
+"gstreamer.tag" {
+    { [ os winnt? ] [ drop ] }
+    { [ os macosx? ] [ drop ] }
+    { [ os unix? ] [ "libgsttag-0.10.so" cdecl add-library ] }
+} cond
+>>
+
+GIR: vocab:gstreamer/tag/GstTag-0.10.gir
+
diff --git a/extra/gstreamer/tag/tag.factor b/extra/gstreamer/tag/tag.factor
new file mode 100644 (file)
index 0000000..30c6c97
--- /dev/null
@@ -0,0 +1,5 @@
+! Copyright (C) 2010 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: gstreamer.tag.ffi ;
+IN: gstreamer.tag
+
diff --git a/extra/gstreamer/tags.txt b/extra/gstreamer/tags.txt
new file mode 100755 (executable)
index 0000000..be30e2c
--- /dev/null
@@ -0,0 +1,3 @@
+bindings
+audio
+video
diff --git a/extra/gstreamer/video/GstVideo-0.10.gir b/extra/gstreamer/video/GstVideo-0.10.gir
new file mode 100644 (file)
index 0000000..ff905a0
--- /dev/null
@@ -0,0 +1,925 @@
+<?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.0"
+            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="GLib" version="2.0"/>
+  <include name="GModule" version="2.0"/>
+  <include name="GObject" version="2.0"/>
+  <include name="Gst" version="0.10"/>
+  <include name="GstBase" version="0.10"/>
+  <include name="libxml2" version="2.0"/>
+  <package name="gstreamer-0.10"/>
+  <package name="gstreamer-base-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.h"/>
+  <namespace name="GstVideo"
+             version="0.10"
+             shared-library="libgstvideo-0.10.so.0"
+             c:prefix="Gst">
+    <constant name="BLUE_MASK_15" value="0x001f">
+      <type name="utf8"/>
+    </constant>
+    <constant name="BLUE_MASK_15_INT" value="31">
+      <type name="int"/>
+    </constant>
+    <constant name="BLUE_MASK_16" value="0x001f">
+      <type name="utf8"/>
+    </constant>
+    <constant name="BLUE_MASK_16_INT" value="31">
+      <type name="int"/>
+    </constant>
+    <constant name="BYTE1_MASK_24" value="0x00FF0000">
+      <type name="utf8"/>
+    </constant>
+    <constant name="BYTE1_MASK_24_INT" value="16711680">
+      <type name="int"/>
+    </constant>
+    <constant name="BYTE1_MASK_32" value="0xFF000000">
+      <type name="utf8"/>
+    </constant>
+    <constant name="BYTE1_MASK_32_INT" value="-16777216">
+      <type name="int"/>
+    </constant>
+    <constant name="BYTE2_MASK_24" value="0x0000FF00">
+      <type name="utf8"/>
+    </constant>
+    <constant name="BYTE2_MASK_24_INT" value="65280">
+      <type name="int"/>
+    </constant>
+    <constant name="BYTE2_MASK_32" value="0x00FF0000">
+      <type name="utf8"/>
+    </constant>
+    <constant name="BYTE2_MASK_32_INT" value="16711680">
+      <type name="int"/>
+    </constant>
+    <constant name="BYTE3_MASK_24" value="0x000000FF">
+      <type name="utf8"/>
+    </constant>
+    <constant name="BYTE3_MASK_24_INT" value="255">
+      <type name="int"/>
+    </constant>
+    <constant name="BYTE3_MASK_32" value="0x0000FF00">
+      <type name="utf8"/>
+    </constant>
+    <constant name="BYTE3_MASK_32_INT" value="65280">
+      <type name="int"/>
+    </constant>
+    <constant name="BYTE4_MASK_32" value="0x000000FF">
+      <type name="utf8"/>
+    </constant>
+    <constant name="BYTE4_MASK_32_INT" value="255">
+      <type name="int"/>
+    </constant>
+    <constant name="CAPS_GRAY8"
+              value="video/x-raw-gray, bpp = (int) 8, depth = (int) 8, width = ">
+      <type name="utf8"/>
+    </constant>
+    <constant name="CAPS_RGB_15"
+              value="video/x-raw-rgb, bpp = (int) 16, depth = (int) 15, endianness = (int) BYTE_ORDER, red_mask = (int) ">
+      <type name="utf8"/>
+    </constant>
+    <constant name="CAPS_RGB_16"
+              value="video/x-raw-rgb, bpp = (int) 16, depth = (int) 16, endianness = (int) BYTE_ORDER, red_mask = (int) ">
+      <type name="utf8"/>
+    </constant>
+    <constant name="FPS_RANGE" value="(fraction) [ 0, max ]">
+      <type name="utf8"/>
+    </constant>
+    <constant name="GREEN_MASK_15" value="0x03e0">
+      <type name="utf8"/>
+    </constant>
+    <constant name="GREEN_MASK_15_INT" value="992">
+      <type name="int"/>
+    </constant>
+    <constant name="GREEN_MASK_16" value="0x07e0">
+      <type name="utf8"/>
+    </constant>
+    <constant name="GREEN_MASK_16_INT" value="2016">
+      <type name="int"/>
+    </constant>
+    <constant name="RED_MASK_15" value="0x7c00">
+      <type name="utf8"/>
+    </constant>
+    <constant name="RED_MASK_15_INT" value="31744">
+      <type name="int"/>
+    </constant>
+    <constant name="RED_MASK_16" value="0xf800">
+      <type name="utf8"/>
+    </constant>
+    <constant name="RED_MASK_16_INT" value="63488">
+      <type name="int"/>
+    </constant>
+    <constant name="SIZE_RANGE" value="(int) [ 1, max ]">
+      <type name="utf8"/>
+    </constant>
+    <class name="VideoFilter"
+           c:type="GstVideoFilter"
+           parent="GstBase.BaseTransform"
+           abstract="1"
+           glib:type-name="GstVideoFilter"
+           glib:get-type="gst_video_filter_get_type"
+           glib:type-struct="VideoFilterClass">
+      <field name="element">
+        <type name="GstBase.BaseTransform" c:type="GstBaseTransform"/>
+      </field>
+      <field name="inited">
+        <type name="boolean" c:type="gboolean"/>
+      </field>
+    </class>
+    <record name="VideoFilterClass"
+            c:type="GstVideoFilterClass"
+            glib:is-gtype-struct-for="VideoFilter">
+      <field name="parent_class">
+        <type name="GstBase.BaseTransformClass"
+              c:type="GstBaseTransformClass"/>
+      </field>
+    </record>
+    <enumeration name="VideoFormat"
+                 doc="Enum value describing the most common video formats."
+                 glib:type-name="GstVideoFormat"
+                 glib:get-type="gst_video_format_get_type"
+                 c:type="GstVideoFormat">
+      <member name="unknown"
+              value="0"
+              c:identifier="GST_VIDEO_FORMAT_UNKNOWN"
+              glib:nick="unknown"/>
+      <member name="i420"
+              value="1"
+              c:identifier="GST_VIDEO_FORMAT_I420"
+              glib:nick="i420"/>
+      <member name="yv12"
+              value="2"
+              c:identifier="GST_VIDEO_FORMAT_YV12"
+              glib:nick="yv12"/>
+      <member name="yuy2"
+              value="3"
+              c:identifier="GST_VIDEO_FORMAT_YUY2"
+              glib:nick="yuy2"/>
+      <member name="uyvy"
+              value="4"
+              c:identifier="GST_VIDEO_FORMAT_UYVY"
+              glib:nick="uyvy"/>
+      <member name="ayuv"
+              value="5"
+              c:identifier="GST_VIDEO_FORMAT_AYUV"
+              glib:nick="ayuv"/>
+      <member name="rgbx"
+              value="6"
+              c:identifier="GST_VIDEO_FORMAT_RGBx"
+              glib:nick="rgbx"/>
+      <member name="bgrx"
+              value="7"
+              c:identifier="GST_VIDEO_FORMAT_BGRx"
+              glib:nick="bgrx"/>
+      <member name="xrgb"
+              value="8"
+              c:identifier="GST_VIDEO_FORMAT_xRGB"
+              glib:nick="xrgb"/>
+      <member name="xbgr"
+              value="9"
+              c:identifier="GST_VIDEO_FORMAT_xBGR"
+              glib:nick="xbgr"/>
+      <member name="rgba"
+              value="10"
+              c:identifier="GST_VIDEO_FORMAT_RGBA"
+              glib:nick="rgba"/>
+      <member name="bgra"
+              value="11"
+              c:identifier="GST_VIDEO_FORMAT_BGRA"
+              glib:nick="bgra"/>
+      <member name="argb"
+              value="12"
+              c:identifier="GST_VIDEO_FORMAT_ARGB"
+              glib:nick="argb"/>
+      <member name="abgr"
+              value="13"
+              c:identifier="GST_VIDEO_FORMAT_ABGR"
+              glib:nick="abgr"/>
+      <member name="rgb"
+              value="14"
+              c:identifier="GST_VIDEO_FORMAT_RGB"
+              glib:nick="rgb"/>
+      <member name="bgr"
+              value="15"
+              c:identifier="GST_VIDEO_FORMAT_BGR"
+              glib:nick="bgr"/>
+      <member name="y41b"
+              value="16"
+              c:identifier="GST_VIDEO_FORMAT_Y41B"
+              glib:nick="y41b"/>
+      <member name="y42b"
+              value="17"
+              c:identifier="GST_VIDEO_FORMAT_Y42B"
+              glib:nick="y42b"/>
+      <member name="yvyu"
+              value="18"
+              c:identifier="GST_VIDEO_FORMAT_YVYU"
+              glib:nick="yvyu"/>
+      <member name="y444"
+              value="19"
+              c:identifier="GST_VIDEO_FORMAT_Y444"
+              glib:nick="y444"/>
+      <member name="v210"
+              value="20"
+              c:identifier="GST_VIDEO_FORMAT_v210"
+              glib:nick="v210"/>
+      <member name="v216"
+              value="21"
+              c:identifier="GST_VIDEO_FORMAT_v216"
+              glib:nick="v216"/>
+      <member name="nv12"
+              value="22"
+              c:identifier="GST_VIDEO_FORMAT_NV12"
+              glib:nick="nv12"/>
+      <member name="nv21"
+              value="23"
+              c:identifier="GST_VIDEO_FORMAT_NV21"
+              glib:nick="nv21"/>
+      <member name="gray8"
+              value="24"
+              c:identifier="GST_VIDEO_FORMAT_GRAY8"
+              glib:nick="gray8"/>
+      <member name="gray16_be"
+              value="25"
+              c:identifier="GST_VIDEO_FORMAT_GRAY16_BE"
+              glib:nick="gray16-be"/>
+      <member name="gray16_le"
+              value="26"
+              c:identifier="GST_VIDEO_FORMAT_GRAY16_LE"
+              glib:nick="gray16-le"/>
+    </enumeration>
+    <record name="VideoRectangle"
+            c:type="GstVideoRectangle"
+            doc="Helper structure representing a rectangular area.">
+      <field name="x" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="y" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="w" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="h" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+    </record>
+    <class name="VideoSink"
+           c:type="GstVideoSink"
+           doc="The video sink instance structure. Derived video sinks should set the"
+           parent="GstBase.BaseSink"
+           glib:type-name="GstVideoSink"
+           glib:get-type="gst_video_sink_get_type"
+           glib:type-struct="VideoSinkClass">
+      <function name="center_rect"
+                c:identifier="gst_video_sink_center_rect"
+                doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="src" transfer-ownership="none">
+            <type name="VideoRectangle" c:type="GstVideoRectangle"/>
+          </parameter>
+          <parameter name="dst" transfer-ownership="none">
+            <type name="VideoRectangle" c:type="GstVideoRectangle"/>
+          </parameter>
+          <parameter name="result" transfer-ownership="none">
+            <type name="VideoRectangle" c:type="GstVideoRectangle*"/>
+          </parameter>
+          <parameter name="scaling" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </function>
+      <virtual-method name="show_frame">
+        <return-value transfer-ownership="full">
+          <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+        </return-value>
+        <parameters>
+          <parameter name="buf" transfer-ownership="none">
+            <type name="Gst.Buffer" c:type="GstBuffer*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <property name="show-preroll-frame" writable="1" construct="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <field name="element">
+        <type name="GstBase.BaseSink" c:type="GstBaseSink"/>
+      </field>
+      <field name="width">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="height">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="priv">
+        <type name="VideoSinkPrivate" c:type="GstVideoSinkPrivate*"/>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="3">
+          <type name="any"/>
+        </array>
+      </field>
+    </class>
+    <record name="VideoSinkClass"
+            c:type="GstVideoSinkClass"
+            glib:is-gtype-struct-for="VideoSink"
+            doc="#GstBaseSink::preroll vfuncs. Rendering during preroll will be
+suppressed if the &apos;show-preroll-frame&apos; property is set to #FALSE.
+The video sink class structure. Derived classes should override the"
+            version="0.10.25">
+      <field name="parent_class">
+        <type name="GstBase.BaseSinkClass" c:type="GstBaseSinkClass"/>
+      </field>
+      <field name="show_frame">
+        <callback name="show_frame" c:type="show_frame">
+          <return-value transfer-ownership="full">
+            <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">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="3">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <record name="VideoSinkPrivate" c:type="GstVideoSinkPrivate">
+    </record>
+    <function name="calculate_display_ratio"
+              c:identifier="gst_video_calculate_display_ratio"
+              doc="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.
+dar_n and dar_d parameters.
+The return value is FALSE in the case of integer overflow or other error."
+              version="0.10.7">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="dar_n" direction="out" transfer-ownership="full">
+          <type name="uint" c:type="guint*"/>
+        </parameter>
+        <parameter name="dar_d" direction="out" transfer-ownership="full">
+          <type name="uint" c:type="guint*"/>
+        </parameter>
+        <parameter name="video_width" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="video_height" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="video_par_n" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="video_par_d" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="display_par_n" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="display_par_d" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="event_new_still_frame"
+              c:identifier="gst_video_event_new_still_frame"
+              doc="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()."
+              version="0.10.26">
+      <return-value transfer-ownership="full">
+        <type name="Gst.Event" c:type="GstEvent*"/>
+      </return-value>
+      <parameters>
+        <parameter name="in_still" transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="event_parse_still_frame"
+              c:identifier="gst_video_event_parse_still_frame"
+              doc="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()"
+              version="0.10.26">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="event" transfer-ownership="none">
+          <type name="Gst.Event" c:type="GstEvent*"/>
+        </parameter>
+        <parameter name="in_still" direction="out" transfer-ownership="full">
+          <type name="boolean" c:type="gboolean*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="format_convert"
+              c:identifier="gst_video_format_convert"
+              doc="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."
+              version="0.10.16">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="format" transfer-ownership="none">
+          <type name="VideoFormat" c:type="GstVideoFormat"/>
+        </parameter>
+        <parameter name="width" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="height" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="fps_n" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="fps_d" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="src_format" transfer-ownership="none">
+          <type name="Gst.Format" c:type="GstFormat"/>
+        </parameter>
+        <parameter name="src_value" transfer-ownership="none">
+          <type name="int64" c:type="gint64"/>
+        </parameter>
+        <parameter name="dest_format" transfer-ownership="none">
+          <type name="Gst.Format" c:type="GstFormat"/>
+        </parameter>
+        <parameter name="dest_value" direction="out" transfer-ownership="full">
+          <type name="int64" c:type="gint64*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="format_from_fourcc"
+              c:identifier="gst_video_format_from_fourcc"
+              doc="Converts a FOURCC value into the corresponding #GstVideoFormat.
+If the FOURCC cannot be represented by #GstVideoFormat,
+#GST_VIDEO_FORMAT_UNKNOWN is returned."
+              version="0.10.16">
+      <return-value transfer-ownership="full">
+        <type name="VideoFormat" c:type="GstVideoFormat"/>
+      </return-value>
+      <parameters>
+        <parameter name="fourcc" transfer-ownership="none">
+          <type name="uint32" c:type="guint32"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="format_get_component_height"
+              c:identifier="gst_video_format_get_component_height"
+              doc="Calculates the height of the component.  See
+of the component index."
+              version="0.10.16">
+      <return-value transfer-ownership="none">
+        <type name="int" c:type="int"/>
+      </return-value>
+      <parameters>
+        <parameter name="format" transfer-ownership="none">
+          <type name="VideoFormat" c:type="GstVideoFormat"/>
+        </parameter>
+        <parameter name="component" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="height" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="format_get_component_offset"
+              c:identifier="gst_video_format_get_component_offset"
+              doc="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."
+              version="0.10.16">
+      <return-value transfer-ownership="none">
+        <type name="int" c:type="int"/>
+      </return-value>
+      <parameters>
+        <parameter name="format" transfer-ownership="none">
+          <type name="VideoFormat" c:type="GstVideoFormat"/>
+        </parameter>
+        <parameter name="component" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="width" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="height" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="format_get_component_width"
+              c:identifier="gst_video_format_get_component_width"
+              doc="Calculates the width of the component.  See
+of the component index."
+              version="0.10.16">
+      <return-value transfer-ownership="none">
+        <type name="int" c:type="int"/>
+      </return-value>
+      <parameters>
+        <parameter name="format" transfer-ownership="none">
+          <type name="VideoFormat" c:type="GstVideoFormat"/>
+        </parameter>
+        <parameter name="component" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="width" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="format_get_pixel_stride"
+              c:identifier="gst_video_format_get_pixel_stride"
+              doc="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."
+              version="0.10.16">
+      <return-value transfer-ownership="none">
+        <type name="int" c:type="int"/>
+      </return-value>
+      <parameters>
+        <parameter name="format" transfer-ownership="none">
+          <type name="VideoFormat" c:type="GstVideoFormat"/>
+        </parameter>
+        <parameter name="component" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="format_get_row_stride"
+              c:identifier="gst_video_format_get_row_stride"
+              doc="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."
+              version="0.10.16">
+      <return-value transfer-ownership="none">
+        <type name="int" c:type="int"/>
+      </return-value>
+      <parameters>
+        <parameter name="format" transfer-ownership="none">
+          <type name="VideoFormat" c:type="GstVideoFormat"/>
+        </parameter>
+        <parameter name="component" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="width" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="format_get_size"
+              c:identifier="gst_video_format_get_size"
+              doc="Calculates the total number of bytes in the raw video format.  This
+number should be used when allocating a buffer for raw video."
+              version="0.10.16">
+      <return-value transfer-ownership="none" doc="of raw video format">
+        <type name="int" c:type="int"/>
+      </return-value>
+      <parameters>
+        <parameter name="format" transfer-ownership="none">
+          <type name="VideoFormat" c:type="GstVideoFormat"/>
+        </parameter>
+        <parameter name="width" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="height" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="format_has_alpha"
+              c:identifier="gst_video_format_has_alpha"
+              doc="Returns TRUE or FALSE depending on if the video format provides an
+alpha channel."
+              version="0.10.16">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="format" transfer-ownership="none">
+          <type name="VideoFormat" c:type="GstVideoFormat"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="format_is_gray"
+              c:identifier="gst_video_format_is_gray"
+              doc="Determine whether the video format is a grayscale format."
+              version="0.10.29">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="format" transfer-ownership="none">
+          <type name="VideoFormat" c:type="GstVideoFormat"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="format_is_rgb"
+              c:identifier="gst_video_format_is_rgb"
+              doc="Determine whether the video format is an RGB format."
+              version="0.10.16">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="format" transfer-ownership="none">
+          <type name="VideoFormat" c:type="GstVideoFormat"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="format_is_yuv"
+              c:identifier="gst_video_format_is_yuv"
+              doc="Determine whether the video format is a YUV format."
+              version="0.10.16">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="format" transfer-ownership="none">
+          <type name="VideoFormat" c:type="GstVideoFormat"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="format_new_caps"
+              c:identifier="gst_video_format_new_caps"
+              doc="Creates a new #GstCaps object based on the parameters provided."
+              version="0.10.16">
+      <return-value transfer-ownership="full">
+        <type name="Gst.Caps" c:type="GstCaps*"/>
+      </return-value>
+      <parameters>
+        <parameter name="format" transfer-ownership="none">
+          <type name="VideoFormat" c:type="GstVideoFormat"/>
+        </parameter>
+        <parameter name="width" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="height" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="framerate_n" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="framerate_d" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="par_n" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="par_d" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="format_new_caps_interlaced"
+              c:identifier="gst_video_format_new_caps_interlaced"
+              doc="Creates a new #GstCaps object based on the parameters provided."
+              version="0.10.23">
+      <return-value transfer-ownership="full">
+        <type name="Gst.Caps" c:type="GstCaps*"/>
+      </return-value>
+      <parameters>
+        <parameter name="format" transfer-ownership="none">
+          <type name="VideoFormat" c:type="GstVideoFormat"/>
+        </parameter>
+        <parameter name="width" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="height" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="framerate_n" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="framerate_d" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="par_n" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="par_d" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="interlaced" transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="format_parse_caps"
+              c:identifier="gst_video_format_parse_caps"
+              doc="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 one of the raw video formats listed in #GstVideoFormat, the
+function will fail and return FALSE."
+              version="0.10.16">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="caps" transfer-ownership="none">
+          <type name="Gst.Caps" c:type="GstCaps*"/>
+        </parameter>
+        <parameter name="format" transfer-ownership="none">
+          <type name="VideoFormat" c:type="GstVideoFormat*"/>
+        </parameter>
+        <parameter name="width" direction="out" transfer-ownership="full">
+          <type name="int" c:type="int*"/>
+        </parameter>
+        <parameter name="height" direction="out" transfer-ownership="full">
+          <type name="int" c:type="int*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="format_parse_caps_interlaced"
+              c:identifier="gst_video_format_parse_caps_interlaced"
+              doc="Extracts whether the caps represents interlaced content or not and places it
+in @interlaced."
+              version="0.10.23">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="caps" transfer-ownership="none">
+          <type name="Gst.Caps" c:type="GstCaps*"/>
+        </parameter>
+        <parameter name="interlaced" direction="out" transfer-ownership="full">
+          <type name="boolean" c:type="gboolean*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="format_to_fourcc"
+              c:identifier="gst_video_format_to_fourcc"
+              doc="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."
+              version="0.10.16">
+      <return-value transfer-ownership="none">
+        <type name="uint32" c:type="guint32"/>
+      </return-value>
+      <parameters>
+        <parameter name="format" transfer-ownership="none">
+          <type name="VideoFormat" c:type="GstVideoFormat"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="frame_rate"
+              c:identifier="gst_video_frame_rate"
+              doc="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.
+do not contain a framerate.">
+      <return-value transfer-ownership="none">
+        <type name="GObject.Value" c:type="GValue*"/>
+      </return-value>
+      <parameters>
+        <parameter name="pad" transfer-ownership="none">
+          <type name="Gst.Pad" c:type="GstPad*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="get_size"
+              c:identifier="gst_video_get_size"
+              doc="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.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="pad" transfer-ownership="none">
+          <type name="Gst.Pad" c:type="GstPad*"/>
+        </parameter>
+        <parameter name="width" direction="out" transfer-ownership="full">
+          <type name="int" c:type="gint*"/>
+        </parameter>
+        <parameter name="height" direction="out" transfer-ownership="full">
+          <type name="int" c:type="gint*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="parse_caps_chroma_site"
+              c:identifier="gst_video_parse_caps_chroma_site"
+              doc="Extracts the chroma site used by the caps.  Possible values are
+&quot;mpeg2&quot; for MPEG-2 style chroma siting (co-sited horizontally,
+halfway-sited vertically), &quot;jpeg&quot; 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 &quot;mpeg2&quot;.
+determined."
+              version="0.10.29">
+      <return-value transfer-ownership="none">
+        <type name="utf8" c:type="char*"/>
+      </return-value>
+      <parameters>
+        <parameter name="caps" transfer-ownership="none">
+          <type name="Gst.Caps" c:type="GstCaps*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="parse_caps_color_matrix"
+              c:identifier="gst_video_parse_caps_color_matrix"
+              doc="Extracts the color matrix used by the caps.  Possible values are
+&quot;sdtv&quot; for the standard definition color matrix (as specified in
+Rec. ITU-R BT.470-6) or &quot;hdtv&quot; for the high definition color
+matrix (as specified in Rec. ITU-R BT.709)
+determined."
+              version="0.10.29">
+      <return-value transfer-ownership="none">
+        <type name="utf8" c:type="char*"/>
+      </return-value>
+      <parameters>
+        <parameter name="caps" transfer-ownership="none">
+          <type name="Gst.Caps" c:type="GstCaps*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="parse_caps_framerate"
+              c:identifier="gst_video_parse_caps_framerate"
+              doc="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."
+              version="0.10.16">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="caps" transfer-ownership="none">
+          <type name="Gst.Caps" c:type="GstCaps*"/>
+        </parameter>
+        <parameter name="fps_n" direction="out" transfer-ownership="full">
+          <type name="int" c:type="int*"/>
+        </parameter>
+        <parameter name="fps_d" direction="out" transfer-ownership="full">
+          <type name="int" c:type="int*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="parse_caps_pixel_aspect_ratio"
+              c:identifier="gst_video_parse_caps_pixel_aspect_ratio"
+              doc="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."
+              version="0.10.16">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="caps" transfer-ownership="none">
+          <type name="Gst.Caps" c:type="GstCaps*"/>
+        </parameter>
+        <parameter name="par_n" direction="out" transfer-ownership="full">
+          <type name="int" c:type="int*"/>
+        </parameter>
+        <parameter name="par_d" direction="out" transfer-ownership="full">
+          <type name="int" c:type="int*"/>
+        </parameter>
+      </parameters>
+    </function>
+  </namespace>
+</repository>
diff --git a/extra/gstreamer/video/ffi/ffi.factor b/extra/gstreamer/video/ffi/ffi.factor
new file mode 100644 (file)
index 0000000..474c48b
--- /dev/null
@@ -0,0 +1,19 @@
+! Copyright (C) 2010 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: alien alien.c-types alien.libraries combinators kernel
+system
+gobject-introspection glib.ffi gobject.ffi gstreamer.ffi ;
+IN: gstreamer.video.ffi
+
+<<
+"gstreamer.video" {
+    { [ os winnt? ] [ drop ] }
+    { [ os macosx? ] [ drop ] }
+    { [ os unix? ] [ "libgstvideo-0.10.so" cdecl add-library ] }
+} cond
+>>
+
+IMPLEMENT-STRUCTS: GstVideoRectangle ;
+
+GIR: vocab:gstreamer/video/GstVideo-0.10.gir
+
diff --git a/extra/gstreamer/video/video.factor b/extra/gstreamer/video/video.factor
new file mode 100644 (file)
index 0000000..fde33e9
--- /dev/null
@@ -0,0 +1,5 @@
+! Copyright (C) 2010 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: gstreamer.video.ffi ;
+IN: gstreamer.video
+
index cf851f5a95e9f7c9201607a437f72dfa93212d86..ceff9857cb4b9e77e1af419521a67526281b7a4e 100644 (file)
@@ -5,7 +5,7 @@ H{
     { deploy-c-types? f }
     { deploy-unicode? f }
     { "stop-after-last-window?" t }
-    { deploy-io 2 }
+    { deploy-io 1 }
     { deploy-reflection 1 }
     { deploy-word-props? f }
     { deploy-math? t }
index 1fa86389a12b7c6ab7f8064378b19a63f3f82bca..71708a5fa1938f220bfb8abe70c750567bd3af80 100755 (executable)
@@ -27,11 +27,6 @@ char *factor_vm::pinned_alien_offset(cell obj)
        }
 }
 
-VM_C_API char *pinned_alien_offset(cell obj, factor_vm *parent)
-{
-       return parent->pinned_alien_offset(obj);
-}
-
 /* make an alien */
 cell factor_vm::allot_alien(cell delegate_, cell displacement)
 {
@@ -62,11 +57,6 @@ cell factor_vm::allot_alien(void *address)
        return allot_alien(false_object,(cell)address);
 }
 
-VM_C_API cell allot_alien(void *address, factor_vm *vm)
-{
-       return vm->allot_alien(address);
-}
-
 /* make an alien pointing at an offset of another alien */
 void factor_vm::primitive_displaced_alien()
 {
@@ -90,7 +80,7 @@ void factor_vm::primitive_displaced_alien()
 if the object is a byte array, as a sanity check. */
 void factor_vm::primitive_alien_address()
 {
-       ctx->push(allot_cell((cell)pinned_alien_offset(ctx->pop())));
+       ctx->push(from_unsigned_cell((cell)pinned_alien_offset(ctx->pop())));
 }
 
 /* pop ( alien n ) from datastack, return alien's address plus n */
@@ -182,9 +172,4 @@ char *factor_vm::alien_offset(cell obj)
        }
 }
 
-VM_C_API char *alien_offset(cell obj, factor_vm *parent)
-{
-       return parent->alien_offset(obj);
-}
-
 }
index cd0120db6f010784116c8c5f6530f84c2080456c..412ef35bb4403ee39e5aa0ef975114ad79a07a9b 100755 (executable)
@@ -1,8 +1,4 @@
 namespace factor
 {
 
-VM_C_API char *alien_offset(cell object, factor_vm *vm);
-VM_C_API char *pinned_alien_offset(cell object, factor_vm *vm);
-VM_C_API cell allot_alien(void *address, factor_vm *vm);
-
 }
index 96d95416655ccb4af9251b28890fc46b637b9fcc..b42261619be79dd0fb391fdcc0407098d1b467ff 100755 (executable)
@@ -222,9 +222,10 @@ struct code_block_accumulator {
 
                /* Note: the entry point is always a multiple of the heap
                alignment (16 bytes). We cannot allocate while iterating
-               through the code heap, so it is not possible to call allot_cell()
-               here. It is OK, however, to add it as if it were a fixnum, and
-               have library code shift it to the left by 4. */
+               through the code heap, so it is not possible to call
+               from_unsigned_cell() here. It is OK, however, to add it as
+               if it were a fixnum, and have library code shift it to the
+               left by 4. */
                cell entry_point = (cell)compiled->entry_point();
                assert((entry_point & (data_alignment - 1)) == 0);
                assert((entry_point & TAG_MASK) == FIXNUM_TYPE);
index 1867965108e04be7676cf9f5586e30bdc8bbb986..61d4a73194015e3821ca2c4fae39648a17b37ab5 100755 (executable)
@@ -102,12 +102,12 @@ void factor_vm::memory_protection_error(cell addr, stack_frame *stack)
        else if(ctx->callstack_seg->overflow_p(addr))
                general_error(ERROR_CALLSTACK_UNDERFLOW,false_object,false_object,stack);
        else
-               general_error(ERROR_MEMORY,allot_cell(addr),false_object,stack);
+               general_error(ERROR_MEMORY,from_unsigned_cell(addr),false_object,stack);
 }
 
 void factor_vm::signal_error(cell signal, stack_frame *stack)
 {
-       general_error(ERROR_SIGNAL,allot_cell(signal),false_object,stack);
+       general_error(ERROR_SIGNAL,from_unsigned_cell(signal),false_object,stack);
 }
 
 void factor_vm::divide_by_zero_error()
index e64db2690ed43e58da2fca01da78a6606a316b2b..b872e7057ffa81cc9518c14a44193853d985ae19 100755 (executable)
@@ -21,7 +21,7 @@ void factor_vm::primitive_fixnum_divint()
        fixnum x = untag_fixnum(ctx->peek());
        fixnum result = x / y;
        if(result == -fixnum_min)
-               ctx->replace(allot_integer(-fixnum_min));
+               ctx->replace(from_signed_cell(-fixnum_min));
        else
                ctx->replace(tag_fixnum(result));
 }
@@ -32,7 +32,7 @@ void factor_vm::primitive_fixnum_divmod()
        cell x = ((cell *)ctx->datastack)[-1];
        if(y == tag_fixnum(-1) && x == tag_fixnum(fixnum_min))
        {
-               ((cell *)ctx->datastack)[-1] = allot_integer(-fixnum_min);
+               ((cell *)ctx->datastack)[-1] = from_signed_cell(-fixnum_min);
                ((cell *)ctx->datastack)[0] = tag_fixnum(0);
        }
        else
@@ -335,7 +335,7 @@ void factor_vm::primitive_float_greatereq()
 
 void factor_vm::primitive_float_bits()
 {
-       ctx->push(from_unsigned_4(float_bits((float)untag_float_check(ctx->pop()))));
+       ctx->push(from_unsigned_cell(float_bits((float)untag_float_check(ctx->pop()))));
 }
 
 void factor_vm::primitive_bits_float()
@@ -383,76 +383,6 @@ VM_C_API cell to_cell(cell tagged, factor_vm *parent)
        return parent->to_cell(tagged);
 }
 
-cell factor_vm::from_signed_1(s8 n)
-{
-       return tag_fixnum(n);
-}
-
-VM_C_API cell from_signed_1(s8 n, factor_vm *parent)
-{
-       return parent->from_signed_1(n);
-}
-
-cell factor_vm::from_unsigned_1(u8 n)
-{
-       return tag_fixnum(n);
-}
-
-VM_C_API cell from_unsigned_1(u8 n, factor_vm *parent)
-{
-       return parent->from_unsigned_1(n);
-}
-
-cell factor_vm::from_signed_2(s16 n)
-{
-       return tag_fixnum(n);
-}
-
-VM_C_API cell from_signed_2(s16 n, factor_vm *parent)
-{
-       return parent->from_signed_2(n);
-}
-
-cell factor_vm::from_unsigned_2(u16 n)
-{
-       return tag_fixnum(n);
-}
-
-VM_C_API cell from_unsigned_2(u16 n, factor_vm *parent)
-{
-       return parent->from_unsigned_2(n);
-}
-
-cell factor_vm::from_signed_4(s32 n)
-{
-       return allot_integer(n);
-}
-
-VM_C_API cell from_signed_4(s32 n, factor_vm *parent)
-{
-       return parent->from_signed_4(n);
-}
-
-cell factor_vm::from_unsigned_4(u32 n)
-{
-       return allot_cell(n);
-}
-
-VM_C_API cell from_unsigned_4(u32 n, factor_vm *parent)
-{
-       return parent->from_unsigned_4(n);
-}
-
-cell factor_vm::from_signed_cell(fixnum integer)
-{
-       return allot_integer(integer);
-}
-
-cell factor_vm::from_unsigned_cell(cell integer)
-{
-       return allot_cell(integer);
-}
-
 VM_C_API cell from_signed_cell(fixnum integer, factor_vm *parent)
 {
        return parent->from_signed_cell(integer);
@@ -529,38 +459,18 @@ VM_C_API u64 to_unsigned_8(cell obj, factor_vm *parent)
        return parent->to_unsigned_8(obj);
 }
  
-VM_C_API cell from_float(float flo, factor_vm *parent)
-{
-       return parent->allot_float(flo);
-}
-
 /* Cannot allocate */
 float factor_vm::to_float(cell value)
 {
        return (float)untag_float_check(value);
 }
 
-VM_C_API float to_float(cell value, factor_vm *parent)
-{
-       return parent->to_float(value);
-}
-
-VM_C_API cell from_double(double flo, factor_vm *parent)
-{
-       return parent->allot_float(flo);
-}
-
 /* Cannot allocate */
 double factor_vm::to_double(cell value)
 {
        return untag_float_check(value);
 }
 
-VM_C_API double to_double(cell value, factor_vm *parent)
-{
-       return parent->to_double(value);
-}
-
 /* The fixnum+, fixnum- and fixnum* primitives are defined in cpu_*.S. On
 overflow, they call these functions. */
 inline void factor_vm::overflow_fixnum_add(fixnum x, fixnum y)
index dc6d37bcfdfb645d1d39f90cb375e4c9cbf3c5b6..ffe60dced5f0f0e0c04e198dedea7588d1a10ff0 100644 (file)
@@ -5,7 +5,7 @@ static const fixnum fixnum_max = (((fixnum)1 << (WORD_SIZE - TAG_BITS - 1)) - 1)
 static const fixnum fixnum_min = (-((fixnum)1 << (WORD_SIZE - TAG_BITS - 1)));
 static const fixnum array_size_max = ((cell)1 << (WORD_SIZE - TAG_BITS - 2));
 
-inline cell factor_vm::allot_integer(fixnum x)
+inline cell factor_vm::from_signed_cell(fixnum x)
 {
        if(x < fixnum_min || x > fixnum_max)
                return tag<bignum>(fixnum_to_bignum(x));
@@ -13,7 +13,7 @@ inline cell factor_vm::allot_integer(fixnum x)
                return tag_fixnum(x);
 }
 
-inline cell factor_vm::allot_cell(cell x)
+inline cell factor_vm::from_unsigned_cell(cell x)
 {
        if(x > (cell)fixnum_max)
                return tag<bignum>(cell_to_bignum(x));
@@ -74,17 +74,6 @@ inline cell factor_vm::unbox_array_size()
        return unbox_array_size_slow();
 }
 
-VM_C_API cell from_float(float flo, factor_vm *vm);
-VM_C_API float to_float(cell value, factor_vm *vm);
-VM_C_API cell from_double(double flo, factor_vm *vm);
-VM_C_API double to_double(cell value, factor_vm *vm);
-
-VM_C_API cell from_signed_1(s8 n, factor_vm *vm);
-VM_C_API cell from_unsigned_1(u8 n, factor_vm *vm);
-VM_C_API cell from_signed_2(s16 n, factor_vm *vm);
-VM_C_API cell from_unsigned_2(u16 n, factor_vm *vm);
-VM_C_API cell from_signed_4(s32 n, factor_vm *vm);
-VM_C_API cell from_unsigned_4(u32 n, factor_vm *vm);
 VM_C_API cell from_signed_cell(fixnum integer, factor_vm *vm);
 VM_C_API cell from_unsigned_cell(cell integer, factor_vm *vm);
 VM_C_API cell from_signed_8(s64 n, factor_vm *vm);
index a370e3f7129d4447e87c4afbf9ece1d04d00bcd6..98368a6f83ac130fffd3a43e5af64e02e23676e9 100644 (file)
@@ -79,7 +79,7 @@ cell factor_vm::object_size(cell tagged)
 
 void factor_vm::primitive_size()
 {
-       ctx->push(allot_cell(object_size(ctx->pop())));
+       ctx->push(from_unsigned_cell(object_size(ctx->pop())));
 }
 
 struct slot_become_fixup : no_fixup {
index 5df73f5fac2066988e302667992f69917621f28f..77c255afd593551c8561fcb83844c7fed581db5b 100644 (file)
@@ -138,12 +138,12 @@ namespace factor
        _(unsigned_cell,cell,from_unsigned_cell,to_cell) \
        _(signed_8,s64,from_signed_8,to_signed_8) \
        _(unsigned_8,u64,from_unsigned_8,to_unsigned_8) \
-       _(signed_4,s32,from_signed_4,to_fixnum) \
-       _(unsigned_4,u32,from_unsigned_4,to_cell) \
-       _(signed_2,s16,from_signed_2,to_fixnum) \
-       _(unsigned_2,u16,from_unsigned_2,to_cell) \
-       _(signed_1,s8,from_signed_1,to_fixnum) \
-       _(unsigned_1,u8,from_unsigned_1,to_cell) \
+       _(signed_4,s32,from_signed_cell,to_fixnum) \
+       _(unsigned_4,u32,from_unsigned_cell,to_cell) \
+       _(signed_2,s16,from_signed_cell,to_fixnum) \
+       _(unsigned_2,u16,from_unsigned_cell,to_cell) \
+       _(signed_1,s8,from_signed_cell,to_fixnum) \
+       _(unsigned_1,u8,from_unsigned_cell,to_cell) \
        _(float,float,allot_float,to_float) \
        _(double,double,allot_float,to_double) \
        _(cell,void *,allot_alien,pinned_alien_offset)
index faa770c5122432f0a5d3016f0716aa1df1462e8c..b3c4f148879766b53433fc76e953a8c41806476d 100755 (executable)
@@ -328,8 +328,8 @@ void factor_vm::primitive_quotation_code()
 {
        quotation *quot = untag_check<quotation>(ctx->pop());
 
-       ctx->push(allot_cell((cell)quot->code->entry_point()));
-       ctx->push(allot_cell((cell)quot->code + quot->code->size()));
+       ctx->push(from_unsigned_cell((cell)quot->code->entry_point()));
+       ctx->push(from_unsigned_cell((cell)quot->code + quot->code->size()));
 }
 
 /* Allocates memory */
index 40b3df5ecf1bb43bdb592b12f59d23b41032b284..90e1184c7cb18f0575ca6ad5db186f89d19a1bf6 100755 (executable)
--- a/vm/vm.hpp
+++ b/vm/vm.hpp
@@ -475,14 +475,6 @@ struct factor_vm
        void primitive_bits_double();
        fixnum to_fixnum(cell tagged);
        cell to_cell(cell tagged);
-       cell from_signed_1(s8 n);
-       cell from_unsigned_1(u8 n);
-       cell from_signed_2(s16 n);
-       cell from_unsigned_2(u16 n);
-       cell from_signed_4(s32 n);
-       cell from_unsigned_4(u32 n);
-       cell from_signed_cell(fixnum integer);
-       cell from_unsigned_cell(cell integer);
        cell from_signed_8(s64 n);
        s64 to_signed_8(cell obj);
        cell from_unsigned_8(u64 n);
@@ -492,8 +484,8 @@ struct factor_vm
        inline void overflow_fixnum_add(fixnum x, fixnum y);
        inline void overflow_fixnum_subtract(fixnum x, fixnum y);
        inline void overflow_fixnum_multiply(fixnum x, fixnum y);
-       inline cell allot_integer(fixnum x);
-       inline cell allot_cell(cell x);
+       inline cell from_signed_cell(fixnum x);
+       inline cell from_unsigned_cell(cell x);
        inline cell allot_float(double n);
        inline bignum *float_to_bignum(cell tagged);
        inline double bignum_to_float(cell tagged);
index 31041a6a1964a8871a2df5663748b1ebe7ac3afa..243e476f948a57c1ab6446fc61d39366c918e2a7 100644 (file)
@@ -91,13 +91,13 @@ void factor_vm::primitive_word_code()
 
        if(profiling_p)
        {
-               ctx->push(allot_cell((cell)w->profiling->entry_point()));
-               ctx->push(allot_cell((cell)w->profiling + w->profiling->size()));
+               ctx->push(from_unsigned_cell((cell)w->profiling->entry_point()));
+               ctx->push(from_unsigned_cell((cell)w->profiling + w->profiling->size()));
        }
        else
        {
-               ctx->push(allot_cell((cell)w->code->entry_point()));
-               ctx->push(allot_cell((cell)w->code + w->code->size()));
+               ctx->push(from_unsigned_cell((cell)w->code->entry_point()));
+               ctx->push(from_unsigned_cell((cell)w->code + w->code->size()));
        }
 }