;; Apply gst_enums.defs.patch after regenerating.

;; From gstallocator.h

;; Original typedef:
;; typedef enum {
;;   GST_ALLOCATOR_FLAG_CUSTOM_ALLOC  = (GST_OBJECT_FLAG_LAST << 0),
;; 
;;   GST_ALLOCATOR_FLAG_LAST          = (GST_OBJECT_FLAG_LAST << 16)
;; } GstAllocatorFlags;

(define-flags-extended AllocatorFlags
  (in-module "Gst")
  (c-name "GstAllocatorFlags")
  (values
    '("custom-alloc" "GST_ALLOCATOR_FLAG_CUSTOM_ALLOC" "(GST_OBJECT_FLAG_LAST << 0)")
    '("last" "GST_ALLOCATOR_FLAG_LAST" "(GST_OBJECT_FLAG_LAST << 16)")
  )
)

;; From gstbin.h

;; Original typedef:
;; typedef enum {
;;   GST_BIN_FLAG_NO_RESYNC	= (GST_ELEMENT_FLAG_LAST << 0),
;;   /* padding */
;;   GST_BIN_FLAG_LAST		= (GST_ELEMENT_FLAG_LAST << 5)
;; } GstBinFlags;

(define-flags-extended BinFlags
  (in-module "Gst")
  (c-name "GstBinFlags")
  (values
    '("no-resync" "GST_BIN_FLAG_NO_RESYNC" "(GST_ELEMENT_FLAG_LAST << 0)")
    '("last" "GST_BIN_FLAG_LAST" "(GST_ELEMENT_FLAG_LAST << 5)")
  )
)

;; From gstbuffer.h

;; Original typedef:
;; typedef enum {
;;   GST_BUFFER_FLAG_LIVE        = (GST_MINI_OBJECT_FLAG_LAST << 0),
;;   GST_BUFFER_FLAG_DECODE_ONLY = (GST_MINI_OBJECT_FLAG_LAST << 1),
;;   GST_BUFFER_FLAG_DISCONT     = (GST_MINI_OBJECT_FLAG_LAST << 2),
;;   GST_BUFFER_FLAG_RESYNC      = (GST_MINI_OBJECT_FLAG_LAST << 3),
;;   GST_BUFFER_FLAG_CORRUPTED   = (GST_MINI_OBJECT_FLAG_LAST << 4),
;;   GST_BUFFER_FLAG_MARKER      = (GST_MINI_OBJECT_FLAG_LAST << 5),
;;   GST_BUFFER_FLAG_HEADER      = (GST_MINI_OBJECT_FLAG_LAST << 6),
;;   GST_BUFFER_FLAG_GAP         = (GST_MINI_OBJECT_FLAG_LAST << 7),
;;   GST_BUFFER_FLAG_DROPPABLE   = (GST_MINI_OBJECT_FLAG_LAST << 8),
;;   GST_BUFFER_FLAG_DELTA_UNIT  = (GST_MINI_OBJECT_FLAG_LAST << 9),
;; 
;;   GST_BUFFER_FLAG_LAST        = (GST_MINI_OBJECT_FLAG_LAST << 16)
;; } GstBufferFlags;

(define-flags-extended BufferFlags
  (in-module "Gst")
  (c-name "GstBufferFlags")
  (values
    '("live" "GST_BUFFER_FLAG_LIVE" "(GST_MINI_OBJECT_FLAG_LAST << 0)")
    '("decode-only" "GST_BUFFER_FLAG_DECODE_ONLY" "(GST_MINI_OBJECT_FLAG_LAST << 1)")
    '("discont" "GST_BUFFER_FLAG_DISCONT" "(GST_MINI_OBJECT_FLAG_LAST << 2)")
    '("resync" "GST_BUFFER_FLAG_RESYNC" "(GST_MINI_OBJECT_FLAG_LAST << 3)")
    '("corrupted" "GST_BUFFER_FLAG_CORRUPTED" "(GST_MINI_OBJECT_FLAG_LAST << 4)")
    '("marker" "GST_BUFFER_FLAG_MARKER" "(GST_MINI_OBJECT_FLAG_LAST << 5)")
    '("header" "GST_BUFFER_FLAG_HEADER" "(GST_MINI_OBJECT_FLAG_LAST << 6)")
    '("gap" "GST_BUFFER_FLAG_GAP" "(GST_MINI_OBJECT_FLAG_LAST << 7)")
    '("droppable" "GST_BUFFER_FLAG_DROPPABLE" "(GST_MINI_OBJECT_FLAG_LAST << 8)")
    '("delta-unit" "GST_BUFFER_FLAG_DELTA_UNIT" "(GST_MINI_OBJECT_FLAG_LAST << 9)")
    '("last" "GST_BUFFER_FLAG_LAST" "(GST_MINI_OBJECT_FLAG_LAST << 16)")
  )
)

;; Original typedef:
;; typedef enum {
;;   GST_BUFFER_COPY_NONE           = 0,
;;   GST_BUFFER_COPY_FLAGS          = (1 << 0),
;;   GST_BUFFER_COPY_TIMESTAMPS     = (1 << 1),
;;   GST_BUFFER_COPY_META           = (1 << 2),
;;   GST_BUFFER_COPY_MEMORY         = (1 << 3),
;;   GST_BUFFER_COPY_MERGE          = (1 << 4)
;; } GstBufferCopyFlags;

(define-flags-extended BufferCopyFlags
  (in-module "Gst")
  (c-name "GstBufferCopyFlags")
  (values
    '("none" "GST_BUFFER_COPY_NONE" "0x0")
    '("flags" "GST_BUFFER_COPY_FLAGS" "(1 << 0)")
    '("timestamps" "GST_BUFFER_COPY_TIMESTAMPS" "(1 << 1)")
    '("meta" "GST_BUFFER_COPY_META" "(1 << 2)")
    '("memory" "GST_BUFFER_COPY_MEMORY" "(1 << 3)")
    '("merge" "GST_BUFFER_COPY_MERGE" "(1 << 4)")
  )
)

;; From gstbufferpool.h

;; Original typedef:
;; typedef enum {
;;   GST_BUFFER_POOL_ACQUIRE_FLAG_NONE     = 0,
;;   GST_BUFFER_POOL_ACQUIRE_FLAG_KEY_UNIT = (1 << 0),
;;   GST_BUFFER_POOL_ACQUIRE_FLAG_DONTWAIT = (1 << 1),
;;   GST_BUFFER_POOL_ACQUIRE_FLAG_DISCONT  = (1 << 2),
;;   GST_BUFFER_POOL_ACQUIRE_FLAG_LAST     = (1 << 16),
;; } GstBufferPoolAcquireFlags;

(define-flags-extended BufferPoolAcquireFlags
  (in-module "Gst")
  (c-name "GstBufferPoolAcquireFlags")
  (values
    '("none" "GST_BUFFER_POOL_ACQUIRE_FLAG_NONE" "0x0")
    '("key-unit" "GST_BUFFER_POOL_ACQUIRE_FLAG_KEY_UNIT" "(1 << 0)")
    '("dontwait" "GST_BUFFER_POOL_ACQUIRE_FLAG_DONTWAIT" "(1 << 1)")
    '("discont" "GST_BUFFER_POOL_ACQUIRE_FLAG_DISCONT" "(1 << 2)")
    '("last" "GST_BUFFER_POOL_ACQUIRE_FLAG_LAST" "(1 << 16)")
  )
)

;; From gstbus.h

;; Original typedef:
;; typedef enum {
;;   GST_BUS_FLUSHING      = (GST_OBJECT_FLAG_LAST << 0),
;;   /* padding */
;;   GST_BUS_FLAG_LAST     = (GST_OBJECT_FLAG_LAST << 1)
;; } GstBusFlags;

(define-flags-extended BusFlags
  (in-module "Gst")
  (c-name "GstBusFlags")
  (values
    '("flushing" "GST_BUS_FLUSHING" "(GST_OBJECT_FLAG_LAST << 0)")
    '("flag-last" "GST_BUS_FLAG_LAST" "(GST_OBJECT_FLAG_LAST << 1)")
  )
)

;; Original typedef:
;; typedef enum
;; {
;;   GST_BUS_DROP = 0,
;;   GST_BUS_PASS = 1,
;;   GST_BUS_ASYNC = 2
;; } GstBusSyncReply;

(define-enum-extended BusSyncReply
  (in-module "Gst")
  (c-name "GstBusSyncReply")
  (values
    '("drop" "GST_BUS_DROP" "0")
    '("pass" "GST_BUS_PASS" "1")
    '("async" "GST_BUS_ASYNC" "2")
  )
)

;; From gstcaps.h

;; Original typedef:
;; typedef enum {
;;   GST_CAPS_FLAG_ANY	= (GST_MINI_OBJECT_FLAG_LAST << 0)
;; } GstCapsFlags;

(define-flags-extended CapsFlags
  (in-module "Gst")
  (c-name "GstCapsFlags")
  (values
    '("any" "GST_CAPS_FLAG_ANY" "(GST_MINI_OBJECT_FLAG_LAST << 0)")
  )
)

;; Original typedef:
;; typedef enum {
;;   GST_CAPS_INTERSECT_ZIG_ZAG            =  0,
;;   GST_CAPS_INTERSECT_FIRST              =  1
;; } GstCapsIntersectMode;

(define-enum-extended CapsIntersectMode
  (in-module "Gst")
  (c-name "GstCapsIntersectMode")
  (values
    '("zig-zag" "GST_CAPS_INTERSECT_ZIG_ZAG" "0")
    '("first" "GST_CAPS_INTERSECT_FIRST" "1")
  )
)

;; From gstclock.h

;; Original typedef:
;; typedef enum
;; {
;;   GST_CLOCK_OK          =  0,
;;   GST_CLOCK_EARLY       =  1,
;;   GST_CLOCK_UNSCHEDULED =  2,
;;   GST_CLOCK_BUSY        =  3,
;;   GST_CLOCK_BADTIME     =  4,
;;   GST_CLOCK_ERROR       =  5,
;;   GST_CLOCK_UNSUPPORTED =  6,
;;   GST_CLOCK_DONE        =  7
;; } GstClockReturn;

(define-enum-extended ClockReturn
  (in-module "Gst")
  (c-name "GstClockReturn")
  (values
    '("ok" "GST_CLOCK_OK" "0")
    '("early" "GST_CLOCK_EARLY" "1")
    '("unscheduled" "GST_CLOCK_UNSCHEDULED" "2")
    '("busy" "GST_CLOCK_BUSY" "3")
    '("badtime" "GST_CLOCK_BADTIME" "4")
    '("error" "GST_CLOCK_ERROR" "5")
    '("unsupported" "GST_CLOCK_UNSUPPORTED" "6")
    '("done" "GST_CLOCK_DONE" "7")
  )
)

;; Original typedef:
;; typedef enum {
;;   GST_CLOCK_ENTRY_SINGLE,
;;   GST_CLOCK_ENTRY_PERIODIC
;; } GstClockEntryType;

(define-enum-extended ClockEntryType
  (in-module "Gst")
  (c-name "GstClockEntryType")
  (values
    '("single" "GST_CLOCK_ENTRY_SINGLE" "0")
    '("periodic" "GST_CLOCK_ENTRY_PERIODIC" "1")
  )
)

;; Original typedef:
;; typedef enum {
;;   GST_CLOCK_FLAG_CAN_DO_SINGLE_SYNC     = (GST_OBJECT_FLAG_LAST << 0),
;;   GST_CLOCK_FLAG_CAN_DO_SINGLE_ASYNC    = (GST_OBJECT_FLAG_LAST << 1),
;;   GST_CLOCK_FLAG_CAN_DO_PERIODIC_SYNC   = (GST_OBJECT_FLAG_LAST << 2),
;;   GST_CLOCK_FLAG_CAN_DO_PERIODIC_ASYNC  = (GST_OBJECT_FLAG_LAST << 3),
;;   GST_CLOCK_FLAG_CAN_SET_RESOLUTION     = (GST_OBJECT_FLAG_LAST << 4),
;;   GST_CLOCK_FLAG_CAN_SET_MASTER         = (GST_OBJECT_FLAG_LAST << 5),
;;   /* padding */
;;   GST_CLOCK_FLAG_LAST                   = (GST_OBJECT_FLAG_LAST << 8)
;; } GstClockFlags;

(define-flags-extended ClockFlags
  (in-module "Gst")
  (c-name "GstClockFlags")
  (values
    '("can-do-single-sync" "GST_CLOCK_FLAG_CAN_DO_SINGLE_SYNC" "(GST_OBJECT_FLAG_LAST << 0)")
    '("can-do-single-async" "GST_CLOCK_FLAG_CAN_DO_SINGLE_ASYNC" "(GST_OBJECT_FLAG_LAST << 1)")
    '("can-do-periodic-sync" "GST_CLOCK_FLAG_CAN_DO_PERIODIC_SYNC" "(GST_OBJECT_FLAG_LAST << 2)")
    '("can-do-periodic-async" "GST_CLOCK_FLAG_CAN_DO_PERIODIC_ASYNC" "(GST_OBJECT_FLAG_LAST << 3)")
    '("can-set-resolution" "GST_CLOCK_FLAG_CAN_SET_RESOLUTION" "(GST_OBJECT_FLAG_LAST << 4)")
    '("can-set-master" "GST_CLOCK_FLAG_CAN_SET_MASTER" "(GST_OBJECT_FLAG_LAST << 5)")
    '("last" "GST_CLOCK_FLAG_LAST" "(GST_OBJECT_FLAG_LAST << 8)")
  )
)

;; From gstdebugutils.h

;; Original typedef:
;; typedef enum {
;;   GST_DEBUG_GRAPH_SHOW_MEDIA_TYPE         = (1<<0),
;;   GST_DEBUG_GRAPH_SHOW_CAPS_DETAILS       = (1<<1),
;;   GST_DEBUG_GRAPH_SHOW_NON_DEFAULT_PARAMS = (1<<2),
;;   GST_DEBUG_GRAPH_SHOW_STATES             = (1<<3),
;;   GST_DEBUG_GRAPH_SHOW_ALL                = ((1<<4)-1)
;; } GstDebugGraphDetails;

(define-flags-extended DebugGraphDetails
  (in-module "Gst")
  (c-name "GstDebugGraphDetails")
  (values
    '("media-type" "GST_DEBUG_GRAPH_SHOW_MEDIA_TYPE" "(1<<0)")
    '("caps-details" "GST_DEBUG_GRAPH_SHOW_CAPS_DETAILS" "(1<<1)")
    '("non-default-params" "GST_DEBUG_GRAPH_SHOW_NON_DEFAULT_PARAMS" "(1<<2)")
    '("states" "GST_DEBUG_GRAPH_SHOW_STATES" "(1<<3)")
  )
)

;; From gstelement.h

;; Original typedef:
;; typedef enum {
;;   GST_STATE_VOID_PENDING        = 0,
;;   GST_STATE_NULL                = 1,
;;   GST_STATE_READY               = 2,
;;   GST_STATE_PAUSED              = 3,
;;   GST_STATE_PLAYING             = 4
;; } GstState;

(define-enum-extended State
  (in-module "Gst")
  (c-name "GstState")
  (values
    '("void-pending" "GST_STATE_VOID_PENDING" "0")
    '("null" "GST_STATE_NULL" "1")
    '("ready" "GST_STATE_READY" "2")
    '("paused" "GST_STATE_PAUSED" "3")
    '("playing" "GST_STATE_PLAYING" "4")
  )
)

;; Original typedef:
;; typedef enum {
;;   GST_STATE_CHANGE_FAILURE             = 0,
;;   GST_STATE_CHANGE_SUCCESS             = 1,
;;   GST_STATE_CHANGE_ASYNC               = 2,
;;   GST_STATE_CHANGE_NO_PREROLL          = 3
;; } GstStateChangeReturn;

(define-enum-extended StateChangeReturn
  (in-module "Gst")
  (c-name "GstStateChangeReturn")
  (values
    '("failure" "GST_STATE_CHANGE_FAILURE" "0")
    '("success" "GST_STATE_CHANGE_SUCCESS" "1")
    '("async" "GST_STATE_CHANGE_ASYNC" "2")
    '("no-preroll" "GST_STATE_CHANGE_NO_PREROLL" "3")
  )
)

;; Original typedef:
;; typedef enum /*< flags=0 >*/
;; {
;;   GST_STATE_CHANGE_NULL_TO_READY        = (GST_STATE_NULL<<3) | GST_STATE_READY,
;;   GST_STATE_CHANGE_READY_TO_PAUSED      = (GST_STATE_READY<<3) | GST_STATE_PAUSED,
;;   GST_STATE_CHANGE_PAUSED_TO_PLAYING    = (GST_STATE_PAUSED<<3) | GST_STATE_PLAYING,
;;   GST_STATE_CHANGE_PLAYING_TO_PAUSED    = (GST_STATE_PLAYING<<3) | GST_STATE_PAUSED,
;;   GST_STATE_CHANGE_PAUSED_TO_READY      = (GST_STATE_PAUSED<<3) | GST_STATE_READY,
;;   GST_STATE_CHANGE_READY_TO_NULL        = (GST_STATE_READY<<3) | GST_STATE_NULL
;; } GstStateChange;

(define-flags-extended StateChange
  (in-module "Gst")
  (c-name "GstStateChange")
  (values
    '("null-to-ready" "GST_STATE_CHANGE_NULL_TO_READY" "0xA")
    '("ready-to-paused" "GST_STATE_CHANGE_READY_TO_PAUSED" "0x13")
    '("paused-to-playing" "GST_STATE_CHANGE_PAUSED_TO_PLAYING" "0x1C")
    '("playing-to-paused" "GST_STATE_CHANGE_PLAYING_TO_PAUSED" "0x23")
    '("paused-to-ready" "GST_STATE_CHANGE_PAUSED_TO_READY" "0x1A")
    '("ready-to-null" "GST_STATE_CHANGE_READY_TO_NULL" "0x11")
  )
)

;; Original typedef:
;; typedef enum
;; {
;;   GST_ELEMENT_FLAG_LOCKED_STATE   = (GST_OBJECT_FLAG_LAST << 0),
;;   GST_ELEMENT_FLAG_SINK           = (GST_OBJECT_FLAG_LAST << 1),
;;   GST_ELEMENT_FLAG_SOURCE         = (GST_OBJECT_FLAG_LAST << 2),
;;   GST_ELEMENT_FLAG_PROVIDE_CLOCK  = (GST_OBJECT_FLAG_LAST << 3),
;;   GST_ELEMENT_FLAG_REQUIRE_CLOCK  = (GST_OBJECT_FLAG_LAST << 4),
;;   GST_ELEMENT_FLAG_INDEXABLE      = (GST_OBJECT_FLAG_LAST << 5),
;;   /* padding */
;;   GST_ELEMENT_FLAG_LAST           = (GST_OBJECT_FLAG_LAST << 10)
;; } GstElementFlags;

(define-flags-extended ElementFlags
  (in-module "Gst")
  (c-name "GstElementFlags")
  (values
    '("locked-state" "GST_ELEMENT_FLAG_LOCKED_STATE" "(GST_OBJECT_FLAG_LAST << 0)")
    '("sink" "GST_ELEMENT_FLAG_SINK" "(GST_OBJECT_FLAG_LAST << 1)")
    '("source" "GST_ELEMENT_FLAG_SOURCE" "(GST_OBJECT_FLAG_LAST << 2)")
    '("provide-clock" "GST_ELEMENT_FLAG_PROVIDE_CLOCK" "(GST_OBJECT_FLAG_LAST << 3)")
    '("require-clock" "GST_ELEMENT_FLAG_REQUIRE_CLOCK" "(GST_OBJECT_FLAG_LAST << 4)")
    '("indexable" "GST_ELEMENT_FLAG_INDEXABLE" "(GST_OBJECT_FLAG_LAST << 5)")
    '("last" "GST_ELEMENT_FLAG_LAST" "(GST_OBJECT_FLAG_LAST << 10)")
  )
)

;; From gsterror.h

;; Original typedef:
;; typedef enum
;; {
;;   GST_CORE_ERROR_FAILED = 1,
;;   GST_CORE_ERROR_TOO_LAZY,
;;   GST_CORE_ERROR_NOT_IMPLEMENTED,
;;   GST_CORE_ERROR_STATE_CHANGE,
;;   GST_CORE_ERROR_PAD,
;;   GST_CORE_ERROR_THREAD,
;;   GST_CORE_ERROR_NEGOTIATION,
;;   GST_CORE_ERROR_EVENT,
;;   GST_CORE_ERROR_SEEK,
;;   GST_CORE_ERROR_CAPS,
;;   GST_CORE_ERROR_TAG,
;;   GST_CORE_ERROR_MISSING_PLUGIN,
;;   GST_CORE_ERROR_CLOCK,
;;   GST_CORE_ERROR_DISABLED,
;;   GST_CORE_ERROR_NUM_ERRORS
;; } GstCoreError;

(define-enum-extended CoreError
  (in-module "Gst")
  (c-name "GstCoreError")
  (values
    '("failed" "GST_CORE_ERROR_FAILED" "1")
    '("too-lazy" "GST_CORE_ERROR_TOO_LAZY" "2")
    '("not-implemented" "GST_CORE_ERROR_NOT_IMPLEMENTED" "3")
    '("state-change" "GST_CORE_ERROR_STATE_CHANGE" "4")
    '("pad" "GST_CORE_ERROR_PAD" "5")
    '("thread" "GST_CORE_ERROR_THREAD" "6")
    '("negotiation" "GST_CORE_ERROR_NEGOTIATION" "7")
    '("event" "GST_CORE_ERROR_EVENT" "8")
    '("seek" "GST_CORE_ERROR_SEEK" "9")
    '("caps" "GST_CORE_ERROR_CAPS" "10")
    '("tag" "GST_CORE_ERROR_TAG" "11")
    '("missing-plugin" "GST_CORE_ERROR_MISSING_PLUGIN" "12")
    '("clock" "GST_CORE_ERROR_CLOCK" "13")
    '("disabled" "GST_CORE_ERROR_DISABLED" "14")
    '("num-errors" "GST_CORE_ERROR_NUM_ERRORS" "15")
  )
)

;; Original typedef:
;; typedef enum
;; {
;;   GST_LIBRARY_ERROR_FAILED = 1,
;;   GST_LIBRARY_ERROR_TOO_LAZY,
;;   GST_LIBRARY_ERROR_INIT,
;;   GST_LIBRARY_ERROR_SHUTDOWN,
;;   GST_LIBRARY_ERROR_SETTINGS,
;;   GST_LIBRARY_ERROR_ENCODE,
;;   GST_LIBRARY_ERROR_NUM_ERRORS
;; } GstLibraryError;

(define-enum-extended LibraryError
  (in-module "Gst")
  (c-name "GstLibraryError")
  (values
    '("failed" "GST_LIBRARY_ERROR_FAILED" "1")
    '("too-lazy" "GST_LIBRARY_ERROR_TOO_LAZY" "2")
    '("init" "GST_LIBRARY_ERROR_INIT" "3")
    '("shutdown" "GST_LIBRARY_ERROR_SHUTDOWN" "4")
    '("settings" "GST_LIBRARY_ERROR_SETTINGS" "5")
    '("encode" "GST_LIBRARY_ERROR_ENCODE" "6")
    '("num-errors" "GST_LIBRARY_ERROR_NUM_ERRORS" "7")
  )
)

;; Original typedef:
;; typedef enum
;; {
;;   GST_RESOURCE_ERROR_FAILED = 1,
;;   GST_RESOURCE_ERROR_TOO_LAZY,
;;   GST_RESOURCE_ERROR_NOT_FOUND,
;;   GST_RESOURCE_ERROR_BUSY,
;;   GST_RESOURCE_ERROR_OPEN_READ,
;;   GST_RESOURCE_ERROR_OPEN_WRITE,
;;   GST_RESOURCE_ERROR_OPEN_READ_WRITE,
;;   GST_RESOURCE_ERROR_CLOSE,
;;   GST_RESOURCE_ERROR_READ,
;;   GST_RESOURCE_ERROR_WRITE,
;;   GST_RESOURCE_ERROR_SEEK,
;;   GST_RESOURCE_ERROR_SYNC,
;;   GST_RESOURCE_ERROR_SETTINGS,
;;   GST_RESOURCE_ERROR_NO_SPACE_LEFT,
;;   GST_RESOURCE_ERROR_NUM_ERRORS
;; } GstResourceError;

(define-enum-extended ResourceError
  (in-module "Gst")
  (c-name "GstResourceError")
  (values
    '("failed" "GST_RESOURCE_ERROR_FAILED" "1")
    '("too-lazy" "GST_RESOURCE_ERROR_TOO_LAZY" "2")
    '("not-found" "GST_RESOURCE_ERROR_NOT_FOUND" "3")
    '("busy" "GST_RESOURCE_ERROR_BUSY" "4")
    '("open-read" "GST_RESOURCE_ERROR_OPEN_READ" "5")
    '("open-write" "GST_RESOURCE_ERROR_OPEN_WRITE" "6")
    '("open-read-write" "GST_RESOURCE_ERROR_OPEN_READ_WRITE" "7")
    '("close" "GST_RESOURCE_ERROR_CLOSE" "8")
    '("read" "GST_RESOURCE_ERROR_READ" "9")
    '("write" "GST_RESOURCE_ERROR_WRITE" "10")
    '("seek" "GST_RESOURCE_ERROR_SEEK" "11")
    '("sync" "GST_RESOURCE_ERROR_SYNC" "12")
    '("settings" "GST_RESOURCE_ERROR_SETTINGS" "13")
    '("no-space-left" "GST_RESOURCE_ERROR_NO_SPACE_LEFT" "14")
    '("num-errors" "GST_RESOURCE_ERROR_NUM_ERRORS" "15")
  )
)

;; Original typedef:
;; typedef enum
;; {
;;   GST_STREAM_ERROR_FAILED = 1,
;;   GST_STREAM_ERROR_TOO_LAZY,
;;   GST_STREAM_ERROR_NOT_IMPLEMENTED,
;;   GST_STREAM_ERROR_TYPE_NOT_FOUND,
;;   GST_STREAM_ERROR_WRONG_TYPE,
;;   GST_STREAM_ERROR_CODEC_NOT_FOUND,
;;   GST_STREAM_ERROR_DECODE,
;;   GST_STREAM_ERROR_ENCODE,
;;   GST_STREAM_ERROR_DEMUX,
;;   GST_STREAM_ERROR_MUX,
;;   GST_STREAM_ERROR_FORMAT,
;;   GST_STREAM_ERROR_DECRYPT,
;;   GST_STREAM_ERROR_DECRYPT_NOKEY,
;;   GST_STREAM_ERROR_NUM_ERRORS
;; } GstStreamError;

(define-enum-extended StreamError
  (in-module "Gst")
  (c-name "GstStreamError")
  (values
    '("failed" "GST_STREAM_ERROR_FAILED" "1")
    '("too-lazy" "GST_STREAM_ERROR_TOO_LAZY" "2")
    '("not-implemented" "GST_STREAM_ERROR_NOT_IMPLEMENTED" "3")
    '("type-not-found" "GST_STREAM_ERROR_TYPE_NOT_FOUND" "4")
    '("wrong-type" "GST_STREAM_ERROR_WRONG_TYPE" "5")
    '("codec-not-found" "GST_STREAM_ERROR_CODEC_NOT_FOUND" "6")
    '("decode" "GST_STREAM_ERROR_DECODE" "7")
    '("encode" "GST_STREAM_ERROR_ENCODE" "8")
    '("demux" "GST_STREAM_ERROR_DEMUX" "9")
    '("mux" "GST_STREAM_ERROR_MUX" "10")
    '("format" "GST_STREAM_ERROR_FORMAT" "11")
    '("decrypt" "GST_STREAM_ERROR_DECRYPT" "12")
    '("decrypt-nokey" "GST_STREAM_ERROR_DECRYPT_NOKEY" "13")
    '("num-errors" "GST_STREAM_ERROR_NUM_ERRORS" "14")
  )
)

;; From gstevent.h

;; Original typedef:
;; typedef enum {
;;   GST_EVENT_TYPE_UPSTREAM       = 1 << 0,
;;   GST_EVENT_TYPE_DOWNSTREAM     = 1 << 1,
;;   GST_EVENT_TYPE_SERIALIZED     = 1 << 2,
;;   GST_EVENT_TYPE_STICKY         = 1 << 3,
;;   GST_EVENT_TYPE_STICKY_MULTI   = 1 << 4
;; } GstEventTypeFlags;

(define-flags-extended EventTypeFlags
  (in-module "Gst")
  (c-name "GstEventTypeFlags")
  (values
    '("upstream" "GST_EVENT_TYPE_UPSTREAM" "1 << 0")
    '("downstream" "GST_EVENT_TYPE_DOWNSTREAM" "1 << 1")
    '("serialized" "GST_EVENT_TYPE_SERIALIZED" "1 << 2")
    '("sticky" "GST_EVENT_TYPE_STICKY" "1 << 3")
    '("sticky-multi" "GST_EVENT_TYPE_STICKY_MULTI" "1 << 4")
  )
)

;; Original typedef:
;; typedef enum {
;;   GST_EVENT_UNKNOWN               = GST_EVENT_MAKE_TYPE (0, 0),
;; 
;;   /* bidirectional events */
;;   GST_EVENT_FLUSH_START           = GST_EVENT_MAKE_TYPE (10, FLAG(BOTH)),
;;   GST_EVENT_FLUSH_STOP            = GST_EVENT_MAKE_TYPE (20, FLAG(BOTH) | FLAG(SERIALIZED)),
;; 
;;   /* downstream serialized events */
;;   GST_EVENT_STREAM_START          = GST_EVENT_MAKE_TYPE (40, FLAG(DOWNSTREAM) | FLAG(SERIALIZED) | FLAG(STICKY)),
;;   GST_EVENT_CAPS                  = GST_EVENT_MAKE_TYPE (50, FLAG(DOWNSTREAM) | FLAG(SERIALIZED) | FLAG(STICKY)),
;;   GST_EVENT_SEGMENT               = GST_EVENT_MAKE_TYPE (70, FLAG(DOWNSTREAM) | FLAG(SERIALIZED) | FLAG(STICKY)),
;;   GST_EVENT_TAG                   = GST_EVENT_MAKE_TYPE (80, FLAG(DOWNSTREAM) | FLAG(SERIALIZED) | FLAG(STICKY) | FLAG(STICKY_MULTI)),
;;   GST_EVENT_BUFFERSIZE            = GST_EVENT_MAKE_TYPE (90, FLAG(DOWNSTREAM) | FLAG(SERIALIZED) | FLAG(STICKY)),
;;   GST_EVENT_SINK_MESSAGE          = GST_EVENT_MAKE_TYPE (100, FLAG(DOWNSTREAM) | FLAG(SERIALIZED) | FLAG(STICKY) | FLAG(STICKY_MULTI)),
;;   GST_EVENT_EOS                   = GST_EVENT_MAKE_TYPE (110, FLAG(DOWNSTREAM) | FLAG(SERIALIZED) | FLAG(STICKY)),
;;   GST_EVENT_TOC                   = GST_EVENT_MAKE_TYPE (120, FLAG(DOWNSTREAM) | FLAG(SERIALIZED) | FLAG(STICKY) | FLAG(STICKY_MULTI)),
;; 
;;   /* non-sticky downstream serialized */
;;   GST_EVENT_SEGMENT_DONE          = GST_EVENT_MAKE_TYPE (150, FLAG(DOWNSTREAM) | FLAG(SERIALIZED)),
;;   GST_EVENT_GAP                   = GST_EVENT_MAKE_TYPE (160, FLAG(DOWNSTREAM) | FLAG(SERIALIZED)),
;; 
;;   /* upstream events */
;;   GST_EVENT_QOS                   = GST_EVENT_MAKE_TYPE (190, FLAG(UPSTREAM)),
;;   GST_EVENT_SEEK                  = GST_EVENT_MAKE_TYPE (200, FLAG(UPSTREAM)),
;;   GST_EVENT_NAVIGATION            = GST_EVENT_MAKE_TYPE (210, FLAG(UPSTREAM)),
;;   GST_EVENT_LATENCY               = GST_EVENT_MAKE_TYPE (220, FLAG(UPSTREAM)),
;;   GST_EVENT_STEP                  = GST_EVENT_MAKE_TYPE (230, FLAG(UPSTREAM)),
;;   GST_EVENT_RECONFIGURE           = GST_EVENT_MAKE_TYPE (240, FLAG(UPSTREAM)),
;;   GST_EVENT_TOC_SELECT            = GST_EVENT_MAKE_TYPE (250, FLAG(UPSTREAM)),
;; 
;;   /* custom events start here */
;;   GST_EVENT_CUSTOM_UPSTREAM          = GST_EVENT_MAKE_TYPE (270, FLAG(UPSTREAM)),
;;   GST_EVENT_CUSTOM_DOWNSTREAM        = GST_EVENT_MAKE_TYPE (280, FLAG(DOWNSTREAM) | FLAG(SERIALIZED)),
;;   GST_EVENT_CUSTOM_DOWNSTREAM_OOB    = GST_EVENT_MAKE_TYPE (290, FLAG(DOWNSTREAM)),
;;   GST_EVENT_CUSTOM_DOWNSTREAM_STICKY = GST_EVENT_MAKE_TYPE (300, FLAG(DOWNSTREAM) | FLAG(SERIALIZED) | FLAG(STICKY) | FLAG(STICKY_MULTI)),
;;   GST_EVENT_CUSTOM_BOTH              = GST_EVENT_MAKE_TYPE (310, FLAG(BOTH) | FLAG(SERIALIZED)),
;;   GST_EVENT_CUSTOM_BOTH_OOB          = GST_EVENT_MAKE_TYPE (320, FLAG(BOTH))
;; } GstEventType;

(define-flags-extended EventType
  (in-module "Gst")
  (c-name "GstEventType")
  (values
    '("unknown" "GST_EVENT_UNKNOWN" "GST_EVENT_MAKE_TYPE (0,  0)")
    '("flush-start" "GST_EVENT_FLUSH_START" "GST_EVENT_MAKE_TYPE (10,  FLAG(BOTH))")
    '("flush-stop" "GST_EVENT_FLUSH_STOP" "GST_EVENT_MAKE_TYPE (20,  FLAG(BOTH) | FLAG(SERIALIZED))")
    '("stream-start" "GST_EVENT_STREAM_START" "GST_EVENT_MAKE_TYPE (40,  FLAG(DOWNSTREAM) | FLAG(SERIALIZED) | FLAG(STICKY))")
    '("caps" "GST_EVENT_CAPS" "GST_EVENT_MAKE_TYPE (50,  FLAG(DOWNSTREAM) | FLAG(SERIALIZED) | FLAG(STICKY))")
    '("segment" "GST_EVENT_SEGMENT" "GST_EVENT_MAKE_TYPE (70,  FLAG(DOWNSTREAM) | FLAG(SERIALIZED) | FLAG(STICKY))")
    '("tag" "GST_EVENT_TAG" "GST_EVENT_MAKE_TYPE (80,  FLAG(DOWNSTREAM) | FLAG(SERIALIZED) | FLAG(STICKY) | FLAG(STICKY_MULTI))")
    '("buffersize" "GST_EVENT_BUFFERSIZE" "GST_EVENT_MAKE_TYPE (90,  FLAG(DOWNSTREAM) | FLAG(SERIALIZED) | FLAG(STICKY))")
    '("sink-message" "GST_EVENT_SINK_MESSAGE" "GST_EVENT_MAKE_TYPE (100,  FLAG(DOWNSTREAM) | FLAG(SERIALIZED) | FLAG(STICKY) | FLAG(STICKY_MULTI))")
    '("eos" "GST_EVENT_EOS" "GST_EVENT_MAKE_TYPE (110,  FLAG(DOWNSTREAM) | FLAG(SERIALIZED) | FLAG(STICKY))")
    '("toc" "GST_EVENT_TOC" "GST_EVENT_MAKE_TYPE (120,  FLAG(DOWNSTREAM) | FLAG(SERIALIZED) | FLAG(STICKY) | FLAG(STICKY_MULTI))")
    '("segment-done" "GST_EVENT_SEGMENT_DONE" "GST_EVENT_MAKE_TYPE (150,  FLAG(DOWNSTREAM) | FLAG(SERIALIZED))")
    '("gap" "GST_EVENT_GAP" "GST_EVENT_MAKE_TYPE (160,  FLAG(DOWNSTREAM) | FLAG(SERIALIZED))")
    '("qos" "GST_EVENT_QOS" "GST_EVENT_MAKE_TYPE (190,  FLAG(UPSTREAM))")
    '("seek" "GST_EVENT_SEEK" "GST_EVENT_MAKE_TYPE (200,  FLAG(UPSTREAM))")
    '("navigation" "GST_EVENT_NAVIGATION" "GST_EVENT_MAKE_TYPE (210,  FLAG(UPSTREAM))")
    '("latency" "GST_EVENT_LATENCY" "GST_EVENT_MAKE_TYPE (220,  FLAG(UPSTREAM))")
    '("step" "GST_EVENT_STEP" "GST_EVENT_MAKE_TYPE (230,  FLAG(UPSTREAM))")
    '("reconfigure" "GST_EVENT_RECONFIGURE" "GST_EVENT_MAKE_TYPE (240,  FLAG(UPSTREAM))")
    '("toc-select" "GST_EVENT_TOC_SELECT" "GST_EVENT_MAKE_TYPE (250,  FLAG(UPSTREAM))")
    '("custom-upstream" "GST_EVENT_CUSTOM_UPSTREAM" "GST_EVENT_MAKE_TYPE (270,  FLAG(UPSTREAM))")
    '("custom-downstream" "GST_EVENT_CUSTOM_DOWNSTREAM" "GST_EVENT_MAKE_TYPE (280,  FLAG(DOWNSTREAM) | FLAG(SERIALIZED))")
    '("custom-downstream-oob" "GST_EVENT_CUSTOM_DOWNSTREAM_OOB" "GST_EVENT_MAKE_TYPE (290,  FLAG(DOWNSTREAM))")
    '("custom-downstream-sticky" "GST_EVENT_CUSTOM_DOWNSTREAM_STICKY" "GST_EVENT_MAKE_TYPE (300,  FLAG(DOWNSTREAM) | FLAG(SERIALIZED) | FLAG(STICKY) | FLAG(STICKY_MULTI))")
    '("custom-both" "GST_EVENT_CUSTOM_BOTH" "GST_EVENT_MAKE_TYPE (310,  FLAG(BOTH) | FLAG(SERIALIZED))")
    '("custom-both-oob" "GST_EVENT_CUSTOM_BOTH_OOB" "GST_EVENT_MAKE_TYPE (320,  FLAG(BOTH))")
  )
)

;; Original typedef:
;; typedef enum {
;;   GST_QOS_TYPE_OVERFLOW        = 0,
;;   GST_QOS_TYPE_UNDERFLOW       = 1,
;;   GST_QOS_TYPE_THROTTLE        = 2
;; } GstQOSType;

(define-enum-extended QOSType
  (in-module "Gst")
  (c-name "GstQOSType")
  (values
    '("overflow" "GST_QOS_TYPE_OVERFLOW" "0")
    '("underflow" "GST_QOS_TYPE_UNDERFLOW" "1")
    '("throttle" "GST_QOS_TYPE_THROTTLE" "2")
  )
)

;; From gstformat.h

;; Original typedef:
;; typedef enum {
;;   GST_FORMAT_UNDEFINED  =  0, /* must be first in list */
;;   GST_FORMAT_DEFAULT    =  1,
;;   GST_FORMAT_BYTES      =  2,
;;   GST_FORMAT_TIME       =  3,
;;   GST_FORMAT_BUFFERS    =  4,
;;   GST_FORMAT_PERCENT    =  5
;; } GstFormat;

(define-enum-extended Format
  (in-module "Gst")
  (c-name "GstFormat")
  (values
    '("undefined" "GST_FORMAT_UNDEFINED" "0")
    '("default" "GST_FORMAT_DEFAULT" "1")
    '("bytes" "GST_FORMAT_BYTES" "2")
    '("time" "GST_FORMAT_TIME" "3")
    '("buffers" "GST_FORMAT_BUFFERS" "4")
    '("percent" "GST_FORMAT_PERCENT" "5")
  )
)

;; From gstinfo.h

;; Original typedef:
;; typedef enum {
;;   GST_LEVEL_NONE = 0,
;;   GST_LEVEL_ERROR = 1,
;;   GST_LEVEL_WARNING = 2,
;;   GST_LEVEL_FIXME = 3,
;;   GST_LEVEL_INFO = 4,
;;   GST_LEVEL_DEBUG = 5,
;;   GST_LEVEL_LOG = 6,
;;   GST_LEVEL_TRACE = 7,
;;   /* add more */
;;   GST_LEVEL_MEMDUMP = 9,
;;   /* add more */
;;   GST_LEVEL_COUNT
;; } GstDebugLevel;

(define-enum-extended DebugLevel
  (in-module "Gst")
  (c-name "GstDebugLevel")
  (values
    '("none" "GST_LEVEL_NONE" "0")
    '("error" "GST_LEVEL_ERROR" "1")
    '("warning" "GST_LEVEL_WARNING" "2")
    '("fixme" "GST_LEVEL_FIXME" "3")
    '("info" "GST_LEVEL_INFO" "4")
    '("debug" "GST_LEVEL_DEBUG" "5")
    '("log" "GST_LEVEL_LOG" "6")
    '("trace" "GST_LEVEL_TRACE" "7")
    '("memdump" "GST_LEVEL_MEMDUMP" "9")
    '("count" "GST_LEVEL_COUNT" "10")
  )
)

;; Original typedef:
;; typedef enum {
;;   /* colors */
;;   GST_DEBUG_FG_BLACK		= 0x0000,
;;   GST_DEBUG_FG_RED		= 0x0001,
;;   GST_DEBUG_FG_GREEN		= 0x0002,
;;   GST_DEBUG_FG_YELLOW		= 0x0003,
;;   GST_DEBUG_FG_BLUE		= 0x0004,
;;   GST_DEBUG_FG_MAGENTA		= 0x0005,
;;   GST_DEBUG_FG_CYAN		= 0x0006,
;;   GST_DEBUG_FG_WHITE		= 0x0007,
;;   /* background colors */
;;   GST_DEBUG_BG_BLACK		= 0x0000,
;;   GST_DEBUG_BG_RED		= 0x0010,
;;   GST_DEBUG_BG_GREEN		= 0x0020,
;;   GST_DEBUG_BG_YELLOW		= 0x0030,
;;   GST_DEBUG_BG_BLUE		= 0x0040,
;;   GST_DEBUG_BG_MAGENTA		= 0x0050,
;;   GST_DEBUG_BG_CYAN		= 0x0060,
;;   GST_DEBUG_BG_WHITE		= 0x0070,
;;   /* other formats */
;;   GST_DEBUG_BOLD		= 0x0100,
;;   GST_DEBUG_UNDERLINE		= 0x0200
;; } GstDebugColorFlags;

(define-flags-extended DebugColorFlags
  (in-module "Gst")
  (c-name "GstDebugColorFlags")
  (values
    '("fg-black" "GST_DEBUG_FG_BLACK" "0x0000")
    '("fg-red" "GST_DEBUG_FG_RED" "0x0001")
    '("fg-green" "GST_DEBUG_FG_GREEN" "0x0002")
    '("fg-yellow" "GST_DEBUG_FG_YELLOW" "0x0003")
    '("fg-blue" "GST_DEBUG_FG_BLUE" "0x0004")
    '("fg-magenta" "GST_DEBUG_FG_MAGENTA" "0x0005")
    '("fg-cyan" "GST_DEBUG_FG_CYAN" "0x0006")
    '("fg-white" "GST_DEBUG_FG_WHITE" "0x0007")
    '("bg-black" "GST_DEBUG_BG_BLACK" "0x0000")
    '("bg-red" "GST_DEBUG_BG_RED" "0x0010")
    '("bg-green" "GST_DEBUG_BG_GREEN" "0x0020")
    '("bg-yellow" "GST_DEBUG_BG_YELLOW" "0x0030")
    '("bg-blue" "GST_DEBUG_BG_BLUE" "0x0040")
    '("bg-magenta" "GST_DEBUG_BG_MAGENTA" "0x0050")
    '("bg-cyan" "GST_DEBUG_BG_CYAN" "0x0060")
    '("bg-white" "GST_DEBUG_BG_WHITE" "0x0070")
    '("bold" "GST_DEBUG_BOLD" "0x0100")
    '("underline" "GST_DEBUG_UNDERLINE" "0x0200")
  )
)

;; From gstiterator.h

;; Original typedef:
;; typedef enum {
;;   GST_ITERATOR_DONE     = 0,
;;   GST_ITERATOR_OK       = 1,
;;   GST_ITERATOR_RESYNC   = 2,
;;   GST_ITERATOR_ERROR    = 3
;; } GstIteratorResult;

(define-enum-extended IteratorResult
  (in-module "Gst")
  (c-name "GstIteratorResult")
  (values
    '("done" "GST_ITERATOR_DONE" "0")
    '("ok" "GST_ITERATOR_OK" "1")
    '("resync" "GST_ITERATOR_RESYNC" "2")
    '("error" "GST_ITERATOR_ERROR" "3")
  )
)

;; Original typedef:
;; typedef enum {
;;   GST_ITERATOR_ITEM_SKIP        = 0,
;;   GST_ITERATOR_ITEM_PASS        = 1,
;;   GST_ITERATOR_ITEM_END         = 2
;; } GstIteratorItem;

(define-enum-extended IteratorItem
  (in-module "Gst")
  (c-name "GstIteratorItem")
  (values
    '("skip" "GST_ITERATOR_ITEM_SKIP" "0")
    '("pass" "GST_ITERATOR_ITEM_PASS" "1")
    '("end" "GST_ITERATOR_ITEM_END" "2")
  )
)

;; From gstmemory.h

;; Original typedef:
;; typedef enum {
;;   GST_MEMORY_FLAG_READONLY      = GST_MINI_OBJECT_FLAG_LOCK_READONLY,
;;   GST_MEMORY_FLAG_NO_SHARE      = (GST_MINI_OBJECT_FLAG_LAST << 0),
;;   GST_MEMORY_FLAG_ZERO_PREFIXED = (GST_MINI_OBJECT_FLAG_LAST << 1),
;;   GST_MEMORY_FLAG_ZERO_PADDED   = (GST_MINI_OBJECT_FLAG_LAST << 2),
;; 
;;   GST_MEMORY_FLAG_LAST          = (GST_MINI_OBJECT_FLAG_LAST << 16)
;; } GstMemoryFlags;

(define-flags-extended MemoryFlags
  (in-module "Gst")
  (c-name "GstMemoryFlags")
  (values
    '("readonly" "GST_MEMORY_FLAG_READONLY" "GST_MINI_OBJECT_FLAG_LOCK_READONLY")
    '("no-share" "GST_MEMORY_FLAG_NO_SHARE" "(GST_MINI_OBJECT_FLAG_LAST << 0)")
    '("zero-prefixed" "GST_MEMORY_FLAG_ZERO_PREFIXED" "(GST_MINI_OBJECT_FLAG_LAST << 1)")
    '("zero-padded" "GST_MEMORY_FLAG_ZERO_PADDED" "(GST_MINI_OBJECT_FLAG_LAST << 2)")
    '("last" "GST_MEMORY_FLAG_LAST" "(GST_MINI_OBJECT_FLAG_LAST << 16)")
  )
)

;; Original typedef:
;; typedef enum {
;;   GST_MAP_READ      = GST_LOCK_FLAG_READ,
;;   GST_MAP_WRITE     = GST_LOCK_FLAG_WRITE,
;; 
;;   GST_MAP_FLAG_LAST = (1 << 16)
;; } GstMapFlags;

(define-flags-extended MapFlags
  (in-module "Gst")
  (c-name "GstMapFlags")
  (values
    '("read" "GST_MAP_READ" "GST_LOCK_FLAG_READ")
    '("write" "GST_MAP_WRITE" "GST_LOCK_FLAG_WRITE")
    '("flag-last" "GST_MAP_FLAG_LAST" "(1 << 16)")
  )
)

;; From gstmessage.h

;; Original typedef:
;; typedef enum
;; {
;;   GST_MESSAGE_UNKNOWN           = 0,
;;   GST_MESSAGE_EOS               = (1 << 0),
;;   GST_MESSAGE_ERROR             = (1 << 1),
;;   GST_MESSAGE_WARNING           = (1 << 2),
;;   GST_MESSAGE_INFO              = (1 << 3),
;;   GST_MESSAGE_TAG               = (1 << 4),
;;   GST_MESSAGE_BUFFERING         = (1 << 5),
;;   GST_MESSAGE_STATE_CHANGED     = (1 << 6),
;;   GST_MESSAGE_STATE_DIRTY       = (1 << 7),
;;   GST_MESSAGE_STEP_DONE         = (1 << 8),
;;   GST_MESSAGE_CLOCK_PROVIDE     = (1 << 9),
;;   GST_MESSAGE_CLOCK_LOST        = (1 << 10),
;;   GST_MESSAGE_NEW_CLOCK         = (1 << 11),
;;   GST_MESSAGE_STRUCTURE_CHANGE  = (1 << 12),
;;   GST_MESSAGE_STREAM_STATUS     = (1 << 13),
;;   GST_MESSAGE_APPLICATION       = (1 << 14),
;;   GST_MESSAGE_ELEMENT           = (1 << 15),
;;   GST_MESSAGE_SEGMENT_START     = (1 << 16),
;;   GST_MESSAGE_SEGMENT_DONE      = (1 << 17),
;;   GST_MESSAGE_DURATION_CHANGED  = (1 << 18),
;;   GST_MESSAGE_LATENCY           = (1 << 19),
;;   GST_MESSAGE_ASYNC_START       = (1 << 20),
;;   GST_MESSAGE_ASYNC_DONE        = (1 << 21),
;;   GST_MESSAGE_REQUEST_STATE     = (1 << 22),
;;   GST_MESSAGE_STEP_START        = (1 << 23),
;;   GST_MESSAGE_QOS               = (1 << 24),
;;   GST_MESSAGE_PROGRESS          = (1 << 25),
;;   GST_MESSAGE_TOC               = (1 << 26),
;;   GST_MESSAGE_RESET_TIME        = (1 << 27),
;;   GST_MESSAGE_STREAM_START      = (1 << 28),
;;   GST_MESSAGE_ANY               = ~0
;; } GstMessageType;

(define-flags-extended MessageType
  (in-module "Gst")
  (c-name "GstMessageType")
  (values
    '("unknown" "GST_MESSAGE_UNKNOWN" "0x0")
    '("eos" "GST_MESSAGE_EOS" "(1 << 0)")
    '("error" "GST_MESSAGE_ERROR" "(1 << 1)")
    '("warning" "GST_MESSAGE_WARNING" "(1 << 2)")
    '("info" "GST_MESSAGE_INFO" "(1 << 3)")
    '("tag" "GST_MESSAGE_TAG" "(1 << 4)")
    '("buffering" "GST_MESSAGE_BUFFERING" "(1 << 5)")
    '("state-changed" "GST_MESSAGE_STATE_CHANGED" "(1 << 6)")
    '("state-dirty" "GST_MESSAGE_STATE_DIRTY" "(1 << 7)")
    '("step-done" "GST_MESSAGE_STEP_DONE" "(1 << 8)")
    '("clock-provide" "GST_MESSAGE_CLOCK_PROVIDE" "(1 << 9)")
    '("clock-lost" "GST_MESSAGE_CLOCK_LOST" "(1 << 10)")
    '("new-clock" "GST_MESSAGE_NEW_CLOCK" "(1 << 11)")
    '("structure-change" "GST_MESSAGE_STRUCTURE_CHANGE" "(1 << 12)")
    '("stream-status" "GST_MESSAGE_STREAM_STATUS" "(1 << 13)")
    '("application" "GST_MESSAGE_APPLICATION" "(1 << 14)")
    '("element" "GST_MESSAGE_ELEMENT" "(1 << 15)")
    '("segment-start" "GST_MESSAGE_SEGMENT_START" "(1 << 16)")
    '("segment-done" "GST_MESSAGE_SEGMENT_DONE" "(1 << 17)")
    '("duration-changed" "GST_MESSAGE_DURATION_CHANGED" "(1 << 18)")
    '("latency" "GST_MESSAGE_LATENCY" "(1 << 19)")
    '("async-start" "GST_MESSAGE_ASYNC_START" "(1 << 20)")
    '("async-done" "GST_MESSAGE_ASYNC_DONE" "(1 << 21)")
    '("request-state" "GST_MESSAGE_REQUEST_STATE" "(1 << 22)")
    '("step-start" "GST_MESSAGE_STEP_START" "(1 << 23)")
    '("qos" "GST_MESSAGE_QOS" "(1 << 24)")
    '("progress" "GST_MESSAGE_PROGRESS" "(1 << 25)")
    '("toc" "GST_MESSAGE_TOC" "(1 << 26)")
    '("reset-time" "GST_MESSAGE_RESET_TIME" "(1 << 27)")
    '("stream-start" "GST_MESSAGE_STREAM_START" "(1 << 28)")
    '("any" "GST_MESSAGE_ANY" "0x0")
  )
)

;; Original typedef:
;; typedef enum {
;;   GST_STRUCTURE_CHANGE_TYPE_PAD_LINK   = 0,
;;   GST_STRUCTURE_CHANGE_TYPE_PAD_UNLINK = 1
;; } GstStructureChangeType;

(define-enum-extended StructureChangeType
  (in-module "Gst")
  (c-name "GstStructureChangeType")
  (values
    '("link" "GST_STRUCTURE_CHANGE_TYPE_PAD_LINK" "0")
    '("unlink" "GST_STRUCTURE_CHANGE_TYPE_PAD_UNLINK" "1")
  )
)

;; Original typedef:
;; typedef enum {
;;   GST_STREAM_STATUS_TYPE_CREATE   = 0,
;;   GST_STREAM_STATUS_TYPE_ENTER    = 1,
;;   GST_STREAM_STATUS_TYPE_LEAVE    = 2,
;;   GST_STREAM_STATUS_TYPE_DESTROY  = 3,
;; 
;;   GST_STREAM_STATUS_TYPE_START    = 8,
;;   GST_STREAM_STATUS_TYPE_PAUSE    = 9,
;;   GST_STREAM_STATUS_TYPE_STOP     = 10
;; } GstStreamStatusType;

(define-enum-extended StreamStatusType
  (in-module "Gst")
  (c-name "GstStreamStatusType")
  (values
    '("create" "GST_STREAM_STATUS_TYPE_CREATE" "0")
    '("enter" "GST_STREAM_STATUS_TYPE_ENTER" "1")
    '("leave" "GST_STREAM_STATUS_TYPE_LEAVE" "2")
    '("destroy" "GST_STREAM_STATUS_TYPE_DESTROY" "3")
    '("start" "GST_STREAM_STATUS_TYPE_START" "8")
    '("pause" "GST_STREAM_STATUS_TYPE_PAUSE" "9")
    '("stop" "GST_STREAM_STATUS_TYPE_STOP" "10")
  )
)

;; Original typedef:
;; typedef enum {
;;   GST_PROGRESS_TYPE_START    = 0,
;;   GST_PROGRESS_TYPE_CONTINUE = 1,
;;   GST_PROGRESS_TYPE_COMPLETE = 2,
;;   GST_PROGRESS_TYPE_CANCELED = 3,
;;   GST_PROGRESS_TYPE_ERROR    = 4
;; } GstProgressType;

(define-enum-extended ProgressType
  (in-module "Gst")
  (c-name "GstProgressType")
  (values
    '("start" "GST_PROGRESS_TYPE_START" "0")
    '("continue" "GST_PROGRESS_TYPE_CONTINUE" "1")
    '("complete" "GST_PROGRESS_TYPE_COMPLETE" "2")
    '("canceled" "GST_PROGRESS_TYPE_CANCELED" "3")
    '("error" "GST_PROGRESS_TYPE_ERROR" "4")
  )
)

;; From gstmeta.h

;; Original typedef:
;; typedef enum {
;;   GST_META_FLAG_NONE        = 0,
;;   GST_META_FLAG_READONLY    = (1 << 0),
;;   GST_META_FLAG_POOLED      = (1 << 1),
;;   GST_META_FLAG_LOCKED      = (1 << 2),
;; 
;;   GST_META_FLAG_LAST        = (1 << 16)
;; } GstMetaFlags;

(define-flags-extended MetaFlags
  (in-module "Gst")
  (c-name "GstMetaFlags")
  (values
    '("none" "GST_META_FLAG_NONE" "0x0")
    '("readonly" "GST_META_FLAG_READONLY" "(1 << 0)")
    '("pooled" "GST_META_FLAG_POOLED" "(1 << 1)")
    '("locked" "GST_META_FLAG_LOCKED" "(1 << 2)")
    '("last" "GST_META_FLAG_LAST" "(1 << 16)")
  )
)

;; From gstminiobject.h

;; Original typedef:
;; typedef enum
;; {
;;   GST_MINI_OBJECT_FLAG_LOCKABLE      = (1 << 0),
;;   GST_MINI_OBJECT_FLAG_LOCK_READONLY = (1 << 1),
;;   /* padding */
;;   GST_MINI_OBJECT_FLAG_LAST          = (1 << 4)
;; } GstMiniObjectFlags;

(define-flags-extended MiniObjectFlags
  (in-module "Gst")
  (c-name "GstMiniObjectFlags")
  (values
    '("lockable" "GST_MINI_OBJECT_FLAG_LOCKABLE" "(1 << 0)")
    '("lock-readonly" "GST_MINI_OBJECT_FLAG_LOCK_READONLY" "(1 << 1)")
    '("last" "GST_MINI_OBJECT_FLAG_LAST" "(1 << 4)")
  )
)

;; Original typedef:
;; typedef enum {
;;   GST_LOCK_FLAG_READ      = (1 << 0),
;;   GST_LOCK_FLAG_WRITE     = (1 << 1),
;;   GST_LOCK_FLAG_EXCLUSIVE = (1 << 2),
;; 
;;   GST_LOCK_FLAG_LAST      = (1 << 8)
;; } GstLockFlags;

(define-flags-extended LockFlags
  (in-module "Gst")
  (c-name "GstLockFlags")
  (values
    '("read" "GST_LOCK_FLAG_READ" "(1 << 0)")
    '("write" "GST_LOCK_FLAG_WRITE" "(1 << 1)")
    '("exclusive" "GST_LOCK_FLAG_EXCLUSIVE" "(1 << 2)")
    '("last" "GST_LOCK_FLAG_LAST" "(1 << 8)")
  )
)

;; From gstobject.h

;; Original typedef:
;; typedef enum
;; {
;;   /* padding */
;;   GST_OBJECT_FLAG_LAST = (1<<4)
;; } GstObjectFlags;

(define-flags-extended ObjectFlags
  (in-module "Gst")
  (c-name "GstObjectFlags")
  (values
    '("last" "GST_OBJECT_FLAG_LAST" "(1<<4)")
  )
)

;; From gstpad.h

;; Original typedef:
;; typedef enum {
;;   GST_PAD_UNKNOWN,
;;   GST_PAD_SRC,
;;   GST_PAD_SINK
;; } GstPadDirection;

(define-enum-extended PadDirection
  (in-module "Gst")
  (c-name "GstPadDirection")
  (values
    '("unknown" "GST_PAD_UNKNOWN" "0")
    '("src" "GST_PAD_SRC" "1")
    '("sink" "GST_PAD_SINK" "2")
  )
)

;; Original typedef:
;; typedef enum {
;;   GST_PAD_MODE_NONE,
;;   GST_PAD_MODE_PUSH,
;;   GST_PAD_MODE_PULL
;; } GstPadMode;

(define-enum-extended PadMode
  (in-module "Gst")
  (c-name "GstPadMode")
  (values
    '("none" "GST_PAD_MODE_NONE" "0")
    '("push" "GST_PAD_MODE_PUSH" "1")
    '("pull" "GST_PAD_MODE_PULL" "2")
  )
)

;; Original typedef:
;; typedef enum {
;;   GST_PAD_LINK_OK               =  0,
;;   GST_PAD_LINK_WRONG_HIERARCHY  = -1,
;;   GST_PAD_LINK_WAS_LINKED       = -2,
;;   GST_PAD_LINK_WRONG_DIRECTION  = -3,
;;   GST_PAD_LINK_NOFORMAT         = -4,
;;   GST_PAD_LINK_NOSCHED          = -5,
;;   GST_PAD_LINK_REFUSED          = -6
;; } GstPadLinkReturn;

(define-enum-extended PadLinkReturn
  (in-module "Gst")
  (c-name "GstPadLinkReturn")
  (values
    '("ok" "GST_PAD_LINK_OK" "0")
    '("wrong-hierarchy" "GST_PAD_LINK_WRONG_HIERARCHY" "-1")
    '("was-linked" "GST_PAD_LINK_WAS_LINKED" "-2")
    '("wrong-direction" "GST_PAD_LINK_WRONG_DIRECTION" "-3")
    '("noformat" "GST_PAD_LINK_NOFORMAT" "-4")
    '("nosched" "GST_PAD_LINK_NOSCHED" "-5")
    '("refused" "GST_PAD_LINK_REFUSED" "-6")
  )
)

;; Original typedef:
;; typedef enum {
;;   /* custom success starts here */
;;   GST_FLOW_CUSTOM_SUCCESS_2 = 102,
;;   GST_FLOW_CUSTOM_SUCCESS_1 = 101,
;;   GST_FLOW_CUSTOM_SUCCESS = 100,
;; 
;;   /* core predefined */
;;   GST_FLOW_OK		  =  0,
;;   /* expected failures */
;;   GST_FLOW_NOT_LINKED     = -1,
;;   GST_FLOW_FLUSHING       = -2,
;;   /* error cases */
;;   GST_FLOW_EOS            = -3,
;;   GST_FLOW_NOT_NEGOTIATED = -4,
;;   GST_FLOW_ERROR	  = -5,
;;   GST_FLOW_NOT_SUPPORTED  = -6,
;; 
;;   /* custom error starts here */
;;   GST_FLOW_CUSTOM_ERROR   = -100,
;;   GST_FLOW_CUSTOM_ERROR_1 = -101,
;;   GST_FLOW_CUSTOM_ERROR_2 = -102
;; } GstFlowReturn;

(define-enum-extended FlowReturn
  (in-module "Gst")
  (c-name "GstFlowReturn")
  (values
    '("custom-success-2" "GST_FLOW_CUSTOM_SUCCESS_2" "102")
    '("custom-success-1" "GST_FLOW_CUSTOM_SUCCESS_1" "101")
    '("custom-success" "GST_FLOW_CUSTOM_SUCCESS" "100")
    '("ok" "GST_FLOW_OK" "0")
    '("not-linked" "GST_FLOW_NOT_LINKED" "-1")
    '("flushing" "GST_FLOW_FLUSHING" "-2")
    '("eos" "GST_FLOW_EOS" "-3")
    '("not-negotiated" "GST_FLOW_NOT_NEGOTIATED" "-4")
    '("error" "GST_FLOW_ERROR" "-5")
    '("not-supported" "GST_FLOW_NOT_SUPPORTED" "-6")
    '("custom-error" "GST_FLOW_CUSTOM_ERROR" "-100")
    '("custom-error-1" "GST_FLOW_CUSTOM_ERROR_1" "-101")
    '("custom-error-2" "GST_FLOW_CUSTOM_ERROR_2" "-102")
  )
)

;; Original typedef:
;; typedef enum {
;;   GST_PAD_LINK_CHECK_NOTHING       = 0,
;;   GST_PAD_LINK_CHECK_HIERARCHY     = 1 << 0,
;;   GST_PAD_LINK_CHECK_TEMPLATE_CAPS = 1 << 1,
;;   GST_PAD_LINK_CHECK_CAPS          = 1 << 2,
;; 
;;   GST_PAD_LINK_CHECK_DEFAULT       = GST_PAD_LINK_CHECK_HIERARCHY | GST_PAD_LINK_CHECK_CAPS
;; } GstPadLinkCheck;

(define-flags-extended PadLinkCheck
  (in-module "Gst")
  (c-name "GstPadLinkCheck")
  (values
    '("nothing" "GST_PAD_LINK_CHECK_NOTHING" "0x0")
    '("hierarchy" "GST_PAD_LINK_CHECK_HIERARCHY" "1 << 0")
    '("template-caps" "GST_PAD_LINK_CHECK_TEMPLATE_CAPS" "1 << 1")
    '("caps" "GST_PAD_LINK_CHECK_CAPS" "1 << 2")
    '("default" "GST_PAD_LINK_CHECK_DEFAULT" "0x5")
  )
)

;; Original typedef:
;; typedef enum
;; {
;;   GST_PAD_PROBE_TYPE_INVALID          = 0,
;;   /* flags to control blocking */
;;   GST_PAD_PROBE_TYPE_IDLE             = (1 << 0),
;;   GST_PAD_PROBE_TYPE_BLOCK            = (1 << 1),
;;   /* flags to select datatypes */
;;   GST_PAD_PROBE_TYPE_BUFFER           = (1 << 4),
;;   GST_PAD_PROBE_TYPE_BUFFER_LIST      = (1 << 5),
;;   GST_PAD_PROBE_TYPE_EVENT_DOWNSTREAM = (1 << 6),
;;   GST_PAD_PROBE_TYPE_EVENT_UPSTREAM   = (1 << 7),
;;   GST_PAD_PROBE_TYPE_EVENT_FLUSH      = (1 << 8),
;;   GST_PAD_PROBE_TYPE_QUERY_DOWNSTREAM = (1 << 9),
;;   GST_PAD_PROBE_TYPE_QUERY_UPSTREAM   = (1 << 10),
;;   /* flags to select scheduling mode */
;;   GST_PAD_PROBE_TYPE_PUSH             = (1 << 12),
;;   GST_PAD_PROBE_TYPE_PULL             = (1 << 13),
;; 
;;   /* flag combinations */
;;   GST_PAD_PROBE_TYPE_BLOCKING         = GST_PAD_PROBE_TYPE_IDLE | GST_PAD_PROBE_TYPE_BLOCK,
;;   GST_PAD_PROBE_TYPE_DATA_DOWNSTREAM  = GST_PAD_PROBE_TYPE_BUFFER | GST_PAD_PROBE_TYPE_BUFFER_LIST | GST_PAD_PROBE_TYPE_EVENT_DOWNSTREAM,
;;   GST_PAD_PROBE_TYPE_DATA_UPSTREAM    = GST_PAD_PROBE_TYPE_EVENT_UPSTREAM,
;;   GST_PAD_PROBE_TYPE_DATA_BOTH        = GST_PAD_PROBE_TYPE_DATA_DOWNSTREAM | GST_PAD_PROBE_TYPE_DATA_UPSTREAM,
;;   GST_PAD_PROBE_TYPE_BLOCK_DOWNSTREAM = GST_PAD_PROBE_TYPE_BLOCK | GST_PAD_PROBE_TYPE_DATA_DOWNSTREAM,
;;   GST_PAD_PROBE_TYPE_BLOCK_UPSTREAM   = GST_PAD_PROBE_TYPE_BLOCK | GST_PAD_PROBE_TYPE_DATA_UPSTREAM,
;;   GST_PAD_PROBE_TYPE_EVENT_BOTH       = GST_PAD_PROBE_TYPE_EVENT_DOWNSTREAM | GST_PAD_PROBE_TYPE_EVENT_UPSTREAM,
;;   GST_PAD_PROBE_TYPE_QUERY_BOTH       = GST_PAD_PROBE_TYPE_QUERY_DOWNSTREAM | GST_PAD_PROBE_TYPE_QUERY_UPSTREAM,
;;   GST_PAD_PROBE_TYPE_ALL_BOTH         = GST_PAD_PROBE_TYPE_DATA_BOTH | GST_PAD_PROBE_TYPE_QUERY_BOTH,
;;   GST_PAD_PROBE_TYPE_SCHEDULING       = GST_PAD_PROBE_TYPE_PUSH | GST_PAD_PROBE_TYPE_PULL
;; } GstPadProbeType;

(define-flags-extended PadProbeType
  (in-module "Gst")
  (c-name "GstPadProbeType")
  (values
    '("invalid" "GST_PAD_PROBE_TYPE_INVALID" "0x0")
    '("idle" "GST_PAD_PROBE_TYPE_IDLE" "(1 << 0)")
    '("block" "GST_PAD_PROBE_TYPE_BLOCK" "(1 << 1)")
    '("buffer" "GST_PAD_PROBE_TYPE_BUFFER" "(1 << 4)")
    '("buffer-list" "GST_PAD_PROBE_TYPE_BUFFER_LIST" "(1 << 5)")
    '("event-downstream" "GST_PAD_PROBE_TYPE_EVENT_DOWNSTREAM" "(1 << 6)")
    '("event-upstream" "GST_PAD_PROBE_TYPE_EVENT_UPSTREAM" "(1 << 7)")
    '("event-flush" "GST_PAD_PROBE_TYPE_EVENT_FLUSH" "(1 << 8)")
    '("query-downstream" "GST_PAD_PROBE_TYPE_QUERY_DOWNSTREAM" "(1 << 9)")
    '("query-upstream" "GST_PAD_PROBE_TYPE_QUERY_UPSTREAM" "(1 << 10)")
    '("push" "GST_PAD_PROBE_TYPE_PUSH" "(1 << 12)")
    '("pull" "GST_PAD_PROBE_TYPE_PULL" "(1 << 13)")
    '("blocking" "GST_PAD_PROBE_TYPE_BLOCKING" "0x3")
    '("data-downstream" "GST_PAD_PROBE_TYPE_DATA_DOWNSTREAM" "0x70")
    '("data-upstream" "GST_PAD_PROBE_TYPE_DATA_UPSTREAM" "0x80")
    '("data-both" "GST_PAD_PROBE_TYPE_DATA_BOTH" "0xF0")
    '("block-downstream" "GST_PAD_PROBE_TYPE_BLOCK_DOWNSTREAM" "0x72")
    '("block-upstream" "GST_PAD_PROBE_TYPE_BLOCK_UPSTREAM" "0x82")
    '("event-both" "GST_PAD_PROBE_TYPE_EVENT_BOTH" "0xC0")
    '("query-both" "GST_PAD_PROBE_TYPE_QUERY_BOTH" "0x600")
    '("all-both" "GST_PAD_PROBE_TYPE_ALL_BOTH" "0x6F0")
    '("scheduling" "GST_PAD_PROBE_TYPE_SCHEDULING" "0x3000")
  )
)

;; Original typedef:
;; typedef enum
;; {
;;   GST_PAD_PROBE_DROP,
;;   GST_PAD_PROBE_OK,
;;   GST_PAD_PROBE_REMOVE,
;;   GST_PAD_PROBE_PASS,
;; } GstPadProbeReturn;

(define-enum-extended PadProbeReturn
  (in-module "Gst")
  (c-name "GstPadProbeReturn")
  (values
    '("drop" "GST_PAD_PROBE_DROP" "0")
    '("ok" "GST_PAD_PROBE_OK" "1")
    '("remove" "GST_PAD_PROBE_REMOVE" "2")
    '("pass" "GST_PAD_PROBE_PASS" "3")
  )
)

;; Original typedef:
;; typedef enum {
;;   GST_PAD_FLAG_BLOCKED          = (GST_OBJECT_FLAG_LAST << 0),
;;   GST_PAD_FLAG_FLUSHING         = (GST_OBJECT_FLAG_LAST << 1),
;;   GST_PAD_FLAG_EOS              = (GST_OBJECT_FLAG_LAST << 2),
;;   GST_PAD_FLAG_BLOCKING         = (GST_OBJECT_FLAG_LAST << 3),
;;   GST_PAD_FLAG_NEED_PARENT      = (GST_OBJECT_FLAG_LAST << 4),
;;   GST_PAD_FLAG_NEED_RECONFIGURE = (GST_OBJECT_FLAG_LAST << 5),
;;   GST_PAD_FLAG_PENDING_EVENTS   = (GST_OBJECT_FLAG_LAST << 6),
;;   GST_PAD_FLAG_FIXED_CAPS       = (GST_OBJECT_FLAG_LAST << 7),
;;   GST_PAD_FLAG_PROXY_CAPS       = (GST_OBJECT_FLAG_LAST << 8),
;;   GST_PAD_FLAG_PROXY_ALLOCATION = (GST_OBJECT_FLAG_LAST << 9),
;;   GST_PAD_FLAG_PROXY_SCHEDULING = (GST_OBJECT_FLAG_LAST << 10),
;;   /* padding */
;;   GST_PAD_FLAG_LAST        = (GST_OBJECT_FLAG_LAST << 16)
;; } GstPadFlags;

(define-flags-extended PadFlags
  (in-module "Gst")
  (c-name "GstPadFlags")
  (values
    '("blocked" "GST_PAD_FLAG_BLOCKED" "0x10")
    '("flushing" "GST_PAD_FLAG_FLUSHING" "0x20")
    '("eos" "GST_PAD_FLAG_EOS" "0x40")
    '("blocking" "GST_PAD_FLAG_BLOCKING" "0x80")
    '("need-parent" "GST_PAD_FLAG_NEED_PARENT" "0x100")
    '("need-reconfigure" "GST_PAD_FLAG_NEED_RECONFIGURE" "0x200")
    '("pending-events" "GST_PAD_FLAG_PENDING_EVENTS" "0x400")
    '("fixed-caps" "GST_PAD_FLAG_FIXED_CAPS" "0x800")
    '("proxy-caps" "GST_PAD_FLAG_PROXY_CAPS" "0x1000")
    '("proxy-allocation" "GST_PAD_FLAG_PROXY_ALLOCATION" "0x2000")
    '("proxy-scheduling" "GST_PAD_FLAG_PROXY_SCHEDULING" "0x4000")
    '("last" "GST_PAD_FLAG_LAST" "0x100000")
  )
)

;; From gstpadtemplate.h

;; Original typedef:
;; typedef enum {
;;   GST_PAD_ALWAYS,
;;   GST_PAD_SOMETIMES,
;;   GST_PAD_REQUEST
;; } GstPadPresence;

(define-enum-extended PadPresence
  (in-module "Gst")
  (c-name "GstPadPresence")
  (values
    '("always" "GST_PAD_ALWAYS" "0")
    '("sometimes" "GST_PAD_SOMETIMES" "1")
    '("request" "GST_PAD_REQUEST" "2")
  )
)

;; Original typedef:
;; typedef enum {
;;   /* padding */
;;   GST_PAD_TEMPLATE_FLAG_LAST    = (GST_OBJECT_FLAG_LAST << 4)
;; } GstPadTemplateFlags;

(define-flags-extended PadTemplateFlags
  (in-module "Gst")
  (c-name "GstPadTemplateFlags")
  (values
    '("last" "GST_PAD_TEMPLATE_FLAG_LAST" "0x100")
  )
)

;; From gstparse.h

;; Original typedef:
;; typedef enum
;; {
;;   GST_PARSE_ERROR_SYNTAX,
;;   GST_PARSE_ERROR_NO_SUCH_ELEMENT,
;;   GST_PARSE_ERROR_NO_SUCH_PROPERTY,
;;   GST_PARSE_ERROR_LINK,
;;   GST_PARSE_ERROR_COULD_NOT_SET_PROPERTY,
;;   GST_PARSE_ERROR_EMPTY_BIN,
;;   GST_PARSE_ERROR_EMPTY
;; } GstParseError;

(define-enum-extended ParseError
  (in-module "Gst")
  (c-name "GstParseError")
  (values
    '("syntax" "GST_PARSE_ERROR_SYNTAX" "0")
    '("no-such-element" "GST_PARSE_ERROR_NO_SUCH_ELEMENT" "1")
    '("no-such-property" "GST_PARSE_ERROR_NO_SUCH_PROPERTY" "2")
    '("link" "GST_PARSE_ERROR_LINK" "3")
    '("could-not-set-property" "GST_PARSE_ERROR_COULD_NOT_SET_PROPERTY" "4")
    '("empty-bin" "GST_PARSE_ERROR_EMPTY_BIN" "5")
    '("empty" "GST_PARSE_ERROR_EMPTY" "6")
  )
)

;; Original typedef:
;; typedef enum
;; {
;;   GST_PARSE_FLAG_NONE = 0,
;;   GST_PARSE_FLAG_FATAL_ERRORS = (1 << 0)
;; } GstParseFlags;

(define-flags-extended ParseFlags
  (in-module "Gst")
  (c-name "GstParseFlags")
  (values
    '("none" "GST_PARSE_FLAG_NONE" "0x0")
    '("fatal-errors" "GST_PARSE_FLAG_FATAL_ERRORS" "(1 << 0)")
  )
)

;; From gstpipeline.h

;; Original typedef:
;; typedef enum {
;;   GST_PIPELINE_FLAG_FIXED_CLOCK        = (GST_BIN_FLAG_LAST << 0),
;;   /* padding */
;;   GST_PIPELINE_FLAG_LAST               = (GST_BIN_FLAG_LAST << 4)
;; } GstPipelineFlags;

(define-flags-extended PipelineFlags
  (in-module "Gst")
  (c-name "GstPipelineFlags")
  (values
    '("fixed-clock" "GST_PIPELINE_FLAG_FIXED_CLOCK" "(((GST_ELEMENT_FLAG_LAST << 5)) << 0)")
    '("last" "GST_PIPELINE_FLAG_LAST" "(((GST_ELEMENT_FLAG_LAST << 5)) << 4)")
  )
)

;; From gstpluginfeature.h

;; Original typedef:
;; typedef enum {
;;   GST_RANK_NONE                 = 0,
;;   GST_RANK_MARGINAL             = 64,
;;   GST_RANK_SECONDARY            = 128,
;;   GST_RANK_PRIMARY              = 256
;; } GstRank;

(define-enum-extended Rank
  (in-module "Gst")
  (c-name "GstRank")
  (values
    '("none" "GST_RANK_NONE" "0")
    '("marginal" "GST_RANK_MARGINAL" "64")
    '("secondary" "GST_RANK_SECONDARY" "128")
    '("primary" "GST_RANK_PRIMARY" "256")
  )
)

;; From gstplugin.h

;; Original typedef:
;; typedef enum
;; {
;;   GST_PLUGIN_ERROR_MODULE,
;;   GST_PLUGIN_ERROR_DEPENDENCIES,
;;   GST_PLUGIN_ERROR_NAME_MISMATCH
;; } GstPluginError;

(define-enum-extended PluginError
  (in-module "Gst")
  (c-name "GstPluginError")
  (values
    '("module" "GST_PLUGIN_ERROR_MODULE" "0")
    '("dependencies" "GST_PLUGIN_ERROR_DEPENDENCIES" "1")
    '("name-mismatch" "GST_PLUGIN_ERROR_NAME_MISMATCH" "2")
  )
)

;; Original typedef:
;; typedef enum
;; {
;;   GST_PLUGIN_FLAG_CACHED      = (GST_OBJECT_FLAG_LAST << 0),
;;   GST_PLUGIN_FLAG_BLACKLISTED = (GST_OBJECT_FLAG_LAST << 1)
;; } GstPluginFlags;

(define-flags-extended PluginFlags
  (in-module "Gst")
  (c-name "GstPluginFlags")
  (values
    '("cached" "GST_PLUGIN_FLAG_CACHED" "0x10")
    '("blacklisted" "GST_PLUGIN_FLAG_BLACKLISTED" "0x20")
  )
)

;; Original typedef:
;; typedef enum {
;;   GST_PLUGIN_DEPENDENCY_FLAG_NONE = 0,
;;   GST_PLUGIN_DEPENDENCY_FLAG_RECURSE = (1 << 0),
;;   GST_PLUGIN_DEPENDENCY_FLAG_PATHS_ARE_DEFAULT_ONLY = (1 << 1),
;;   GST_PLUGIN_DEPENDENCY_FLAG_FILE_NAME_IS_SUFFIX = (1 << 2)
;; } GstPluginDependencyFlags;

(define-flags-extended PluginDependencyFlags
  (in-module "Gst")
  (c-name "GstPluginDependencyFlags")
  (values
    '("none" "GST_PLUGIN_DEPENDENCY_FLAG_NONE" "0x0")
    '("recurse" "GST_PLUGIN_DEPENDENCY_FLAG_RECURSE" "(1 << 0)")
    '("paths-are-default-only" "GST_PLUGIN_DEPENDENCY_FLAG_PATHS_ARE_DEFAULT_ONLY" "(1 << 1)")
    '("file-name-is-suffix" "GST_PLUGIN_DEPENDENCY_FLAG_FILE_NAME_IS_SUFFIX" "(1 << 2)")
  )
)

;; From gstquark.h

;; Original typedef:
;; typedef enum _GstQuarkId
;; {
;;   GST_QUARK_FORMAT = 0,
;;   GST_QUARK_CURRENT = 1,
;;   GST_QUARK_DURATION = 2,
;;   GST_QUARK_RATE = 3,
;;   GST_QUARK_SEEKABLE = 4,
;;   GST_QUARK_SEGMENT_START = 5,
;;   GST_QUARK_SEGMENT_END = 6,
;;   GST_QUARK_SRC_FORMAT = 7,
;;   GST_QUARK_SRC_VALUE = 8,
;;   GST_QUARK_DEST_FORMAT = 9,
;;   GST_QUARK_DEST_VALUE = 10,
;;   GST_QUARK_START_FORMAT = 11,
;;   GST_QUARK_START_VALUE = 12,
;;   GST_QUARK_STOP_FORMAT = 13,
;;   GST_QUARK_STOP_VALUE = 14,
;;   GST_QUARK_GERROR = 15,
;;   GST_QUARK_DEBUG = 16,
;;   GST_QUARK_BUFFER_PERCENT = 17,
;;   GST_QUARK_BUFFERING_MODE = 18,
;;   GST_QUARK_AVG_IN_RATE = 19,
;;   GST_QUARK_AVG_OUT_RATE = 20,
;;   GST_QUARK_BUFFERING_LEFT = 21,
;;   GST_QUARK_ESTIMATED_TOTAL = 22,
;;   GST_QUARK_OLD_STATE = 23,
;;   GST_QUARK_NEW_STATE = 24,
;;   GST_QUARK_PENDING_STATE = 25,
;;   GST_QUARK_CLOCK = 26,
;;   GST_QUARK_READY = 27,
;;   GST_QUARK_POSITION = 28,
;;   GST_QUARK_RESET_TIME = 29,
;;   GST_QUARK_LIVE = 30,
;;   GST_QUARK_MIN_LATENCY = 31,
;;   GST_QUARK_MAX_LATENCY = 32,
;;   GST_QUARK_BUSY = 33,
;;   GST_QUARK_TYPE = 34,
;;   GST_QUARK_OWNER = 35,
;;   GST_QUARK_UPDATE = 36,
;;   GST_QUARK_APPLIED_RATE = 37,
;;   GST_QUARK_START = 38,
;;   GST_QUARK_STOP = 39,
;;   GST_QUARK_MINSIZE = 40,
;;   GST_QUARK_MAXSIZE = 41,
;;   GST_QUARK_ASYNC = 42,
;;   GST_QUARK_PROPORTION = 43,
;;   GST_QUARK_DIFF = 44,
;;   GST_QUARK_TIMESTAMP = 45,
;;   GST_QUARK_FLAGS = 46,
;;   GST_QUARK_CUR_TYPE = 47,
;;   GST_QUARK_CUR = 48,
;;   GST_QUARK_STOP_TYPE = 49,
;;   GST_QUARK_LATENCY = 50,
;;   GST_QUARK_URI = 51,
;;   GST_QUARK_OBJECT = 52,
;;   GST_QUARK_TAGLIST = 53,
;;   GST_QUARK_EVENT_SEGMENT = 54,
;;   GST_QUARK_EVENT_BUFFER_SIZE = 55,
;;   GST_QUARK_EVENT_QOS = 56,
;;   GST_QUARK_EVENT_SEEK = 57,
;;   GST_QUARK_EVENT_LATENCY = 58,
;;   GST_QUARK_MESSAGE_ERROR = 59,
;;   GST_QUARK_MESSAGE_WARNING = 60,
;;   GST_QUARK_MESSAGE_INFO = 61,
;;   GST_QUARK_MESSAGE_BUFFERING = 62,
;;   GST_QUARK_MESSAGE_STATE_CHANGED = 63,
;;   GST_QUARK_MESSAGE_CLOCK_PROVIDE = 64,
;;   GST_QUARK_MESSAGE_CLOCK_LOST = 65,
;;   GST_QUARK_MESSAGE_NEW_CLOCK = 66,
;;   GST_QUARK_MESSAGE_STRUCTURE_CHANGE = 67,
;;   GST_QUARK_MESSAGE_SEGMENT_START = 68,
;;   GST_QUARK_MESSAGE_SEGMENT_DONE = 69,
;;   GST_QUARK_MESSAGE_DURATION_CHANGED = 70,
;;   GST_QUARK_MESSAGE_ASYNC_DONE = 71,
;;   GST_QUARK_MESSAGE_REQUEST_STATE = 72,
;;   GST_QUARK_MESSAGE_STREAM_STATUS = 73,
;;   GST_QUARK_QUERY_POSITION = 74,
;;   GST_QUARK_QUERY_DURATION = 75,
;;   GST_QUARK_QUERY_LATENCY = 76,
;;   GST_QUARK_QUERY_CONVERT = 77,
;;   GST_QUARK_QUERY_SEGMENT = 78,
;;   GST_QUARK_QUERY_SEEKING = 79,
;;   GST_QUARK_QUERY_FORMATS = 80,
;;   GST_QUARK_QUERY_BUFFERING = 81,
;;   GST_QUARK_QUERY_URI = 82,
;;   GST_QUARK_EVENT_STEP = 83,
;;   GST_QUARK_MESSAGE_STEP_DONE = 84,
;;   GST_QUARK_AMOUNT = 85,
;;   GST_QUARK_FLUSH = 86,
;;   GST_QUARK_INTERMEDIATE = 87,
;;   GST_QUARK_MESSAGE_STEP_START = 88,
;;   GST_QUARK_ACTIVE = 89,
;;   GST_QUARK_EOS = 90,
;;   GST_QUARK_EVENT_SINK_MESSAGE = 91,
;;   GST_QUARK_MESSAGE = 92,
;;   GST_QUARK_MESSAGE_QOS = 93,
;;   GST_QUARK_RUNNING_TIME = 94,
;;   GST_QUARK_STREAM_TIME = 95,
;;   GST_QUARK_JITTER = 96,
;;   GST_QUARK_QUALITY = 97,
;;   GST_QUARK_PROCESSED = 98,
;;   GST_QUARK_DROPPED = 99,
;;   GST_QUARK_BUFFERING_RANGES = 100,
;;   GST_QUARK_MESSAGE_PROGRESS = 101,
;;   GST_QUARK_CODE = 102,
;;   GST_QUARK_TEXT = 103,
;;   GST_QUARK_PERCENT = 104,
;;   GST_QUARK_TIMEOUT = 105,
;;   GST_QUARK_BUFFER_POOL_CONFIG = 106,
;;   GST_QUARK_CAPS = 107,
;;   GST_QUARK_SIZE = 108,
;;   GST_QUARK_MIN_BUFFERS = 109,
;;   GST_QUARK_MAX_BUFFERS = 110,
;;   GST_QUARK_PREFIX = 111,
;;   GST_QUARK_PADDING = 112,
;;   GST_QUARK_ALIGN = 113,
;;   GST_QUARK_TIME = 114,
;;   GST_QUARK_QUERY_ALLOCATION = 115,
;;   GST_QUARK_NEED_POOL = 116,
;;   GST_QUARK_META = 117,
;;   GST_QUARK_POOL = 118,
;;   GST_QUARK_EVENT_CAPS = 119,
;;   GST_QUARK_EVENT_RECONFIGURE = 120,
;;   GST_QUARK_SEGMENT = 121,
;;   GST_QUARK_QUERY_SCHEDULING = 122,
;;   GST_QUARK_PULL_MODE = 123,
;;   GST_QUARK_ALLOCATOR = 124,
;;   GST_QUARK_EVENT_FLUSH_STOP = 125,
;;   GST_QUARK_OPTIONS = 126,
;;   GST_QUARK_QUERY_ACCEPT_CAPS = 127,
;;   GST_QUARK_RESULT = 128,
;;   GST_QUARK_QUERY_CAPS = 129,
;;   GST_QUARK_FILTER = 130,
;;   GST_QUARK_MODES = 131,
;;   GST_QUARK_EVENT_STREAM_CONFIG = 132,
;;   GST_QUARK_SETUP_DATA = 133,
;;   GST_QUARK_STREAM_HEADERS = 134,
;;   GST_QUARK_EVENT_GAP = 135,
;;   GST_QUARK_QUERY_DRAIN = 136,
;;   GST_QUARK_PARAMS = 137,
;;   GST_QUARK_EVENT_TOC_SELECT = 138,
;;   GST_QUARK_UID = 139,
;;   GST_QUARK_QUERY_TOC = 140,
;;   GST_QUARK_ELEMENT_METADATA_LONGNAME = 141,
;;   GST_QUARK_ELEMENT_METADATA_KLASS = 142,
;;   GST_QUARK_ELEMENT_METADATA_DESCRIPTION = 143,
;;   GST_QUARK_ELEMENT_METADATA_AUTHOR = 144,
;;   GST_QUARK_TOC = 145,
;;   GST_QUARK_TOC_ENTRY = 146,
;;   GST_QUARK_UPDATED = 147,
;;   GST_QUARK_EXTEND_UID = 148,
;;   GST_QUARK_TOC_UID = 149,
;;   GST_QUARK_TAGS = 150,
;;   GST_QUARK_SUB_ENTRIES = 151,
;;   GST_QUARK_INFO = 152,
;;   GST_QUARK_MESSAGE_TAG = 153,
;;   GST_QUARK_EVENT_TAG = 154,
;;   GST_QUARK_MESSAGE_RESET_TIME = 155,
;;   GST_QUARK_MESSAGE_TOC = 156,
;;   GST_QUARK_EVENT_TOC_GLOBAL = 157,
;;   GST_QUARK_EVENT_TOC_CURRENT = 158,
;;   GST_QUARK_EVENT_SEGMENT_DONE = 159,
;;   GST_QUARK_EVENT_STREAM_START = 160,
;;   GST_QUARK_STREAM_ID = 161,
;;   GST_QUARK_MAX = 162
;; } GstQuarkId;

(define-enum-extended QuarkId
  (in-module "Gst")
  (c-name "GstQuarkId")
  (values
    '("format" "GST_QUARK_FORMAT" "0")
    '("current" "GST_QUARK_CURRENT" "1")
    '("duration" "GST_QUARK_DURATION" "2")
    '("rate" "GST_QUARK_RATE" "3")
    '("seekable" "GST_QUARK_SEEKABLE" "4")
    '("segment-start" "GST_QUARK_SEGMENT_START" "5")
    '("segment-end" "GST_QUARK_SEGMENT_END" "6")
    '("src-format" "GST_QUARK_SRC_FORMAT" "7")
    '("src-value" "GST_QUARK_SRC_VALUE" "8")
    '("dest-format" "GST_QUARK_DEST_FORMAT" "9")
    '("dest-value" "GST_QUARK_DEST_VALUE" "10")
    '("start-format" "GST_QUARK_START_FORMAT" "11")
    '("start-value" "GST_QUARK_START_VALUE" "12")
    '("stop-format" "GST_QUARK_STOP_FORMAT" "13")
    '("stop-value" "GST_QUARK_STOP_VALUE" "14")
    '("gerror" "GST_QUARK_GERROR" "15")
    '("debug" "GST_QUARK_DEBUG" "16")
    '("buffer-percent" "GST_QUARK_BUFFER_PERCENT" "17")
    '("buffering-mode" "GST_QUARK_BUFFERING_MODE" "18")
    '("avg-in-rate" "GST_QUARK_AVG_IN_RATE" "19")
    '("avg-out-rate" "GST_QUARK_AVG_OUT_RATE" "20")
    '("buffering-left" "GST_QUARK_BUFFERING_LEFT" "21")
    '("estimated-total" "GST_QUARK_ESTIMATED_TOTAL" "22")
    '("old-state" "GST_QUARK_OLD_STATE" "23")
    '("new-state" "GST_QUARK_NEW_STATE" "24")
    '("pending-state" "GST_QUARK_PENDING_STATE" "25")
    '("clock" "GST_QUARK_CLOCK" "26")
    '("ready" "GST_QUARK_READY" "27")
    '("position" "GST_QUARK_POSITION" "28")
    '("reset-time" "GST_QUARK_RESET_TIME" "29")
    '("live" "GST_QUARK_LIVE" "30")
    '("min-latency" "GST_QUARK_MIN_LATENCY" "31")
    '("max-latency" "GST_QUARK_MAX_LATENCY" "32")
    '("busy" "GST_QUARK_BUSY" "33")
    '("type" "GST_QUARK_TYPE" "34")
    '("owner" "GST_QUARK_OWNER" "35")
    '("update" "GST_QUARK_UPDATE" "36")
    '("applied-rate" "GST_QUARK_APPLIED_RATE" "37")
    '("start" "GST_QUARK_START" "38")
    '("stop" "GST_QUARK_STOP" "39")
    '("minsize" "GST_QUARK_MINSIZE" "40")
    '("maxsize" "GST_QUARK_MAXSIZE" "41")
    '("async" "GST_QUARK_ASYNC" "42")
    '("proportion" "GST_QUARK_PROPORTION" "43")
    '("diff" "GST_QUARK_DIFF" "44")
    '("timestamp" "GST_QUARK_TIMESTAMP" "45")
    '("flags" "GST_QUARK_FLAGS" "46")
    '("cur-type" "GST_QUARK_CUR_TYPE" "47")
    '("cur" "GST_QUARK_CUR" "48")
    '("stop-type" "GST_QUARK_STOP_TYPE" "49")
    '("latency" "GST_QUARK_LATENCY" "50")
    '("uri" "GST_QUARK_URI" "51")
    '("object" "GST_QUARK_OBJECT" "52")
    '("taglist" "GST_QUARK_TAGLIST" "53")
    '("event-segment" "GST_QUARK_EVENT_SEGMENT" "54")
    '("event-buffer-size" "GST_QUARK_EVENT_BUFFER_SIZE" "55")
    '("event-qos" "GST_QUARK_EVENT_QOS" "56")
    '("event-seek" "GST_QUARK_EVENT_SEEK" "57")
    '("event-latency" "GST_QUARK_EVENT_LATENCY" "58")
    '("message-error" "GST_QUARK_MESSAGE_ERROR" "59")
    '("message-warning" "GST_QUARK_MESSAGE_WARNING" "60")
    '("message-info" "GST_QUARK_MESSAGE_INFO" "61")
    '("message-buffering" "GST_QUARK_MESSAGE_BUFFERING" "62")
    '("message-state-changed" "GST_QUARK_MESSAGE_STATE_CHANGED" "63")
    '("message-clock-provide" "GST_QUARK_MESSAGE_CLOCK_PROVIDE" "64")
    '("message-clock-lost" "GST_QUARK_MESSAGE_CLOCK_LOST" "65")
    '("message-new-clock" "GST_QUARK_MESSAGE_NEW_CLOCK" "66")
    '("message-structure-change" "GST_QUARK_MESSAGE_STRUCTURE_CHANGE" "67")
    '("message-segment-start" "GST_QUARK_MESSAGE_SEGMENT_START" "68")
    '("message-segment-done" "GST_QUARK_MESSAGE_SEGMENT_DONE" "69")
    '("message-duration-changed" "GST_QUARK_MESSAGE_DURATION_CHANGED" "70")
    '("message-async-done" "GST_QUARK_MESSAGE_ASYNC_DONE" "71")
    '("message-request-state" "GST_QUARK_MESSAGE_REQUEST_STATE" "72")
    '("message-stream-status" "GST_QUARK_MESSAGE_STREAM_STATUS" "73")
    '("query-position" "GST_QUARK_QUERY_POSITION" "74")
    '("query-duration" "GST_QUARK_QUERY_DURATION" "75")
    '("query-latency" "GST_QUARK_QUERY_LATENCY" "76")
    '("query-convert" "GST_QUARK_QUERY_CONVERT" "77")
    '("query-segment" "GST_QUARK_QUERY_SEGMENT" "78")
    '("query-seeking" "GST_QUARK_QUERY_SEEKING" "79")
    '("query-formats" "GST_QUARK_QUERY_FORMATS" "80")
    '("query-buffering" "GST_QUARK_QUERY_BUFFERING" "81")
    '("query-uri" "GST_QUARK_QUERY_URI" "82")
    '("event-step" "GST_QUARK_EVENT_STEP" "83")
    '("message-step-done" "GST_QUARK_MESSAGE_STEP_DONE" "84")
    '("amount" "GST_QUARK_AMOUNT" "85")
    '("flush" "GST_QUARK_FLUSH" "86")
    '("intermediate" "GST_QUARK_INTERMEDIATE" "87")
    '("message-step-start" "GST_QUARK_MESSAGE_STEP_START" "88")
    '("active" "GST_QUARK_ACTIVE" "89")
    '("eos" "GST_QUARK_EOS" "90")
    '("event-sink-message" "GST_QUARK_EVENT_SINK_MESSAGE" "91")
    '("message" "GST_QUARK_MESSAGE" "92")
    '("message-qos" "GST_QUARK_MESSAGE_QOS" "93")
    '("running-time" "GST_QUARK_RUNNING_TIME" "94")
    '("stream-time" "GST_QUARK_STREAM_TIME" "95")
    '("jitter" "GST_QUARK_JITTER" "96")
    '("quality" "GST_QUARK_QUALITY" "97")
    '("processed" "GST_QUARK_PROCESSED" "98")
    '("dropped" "GST_QUARK_DROPPED" "99")
    '("buffering-ranges" "GST_QUARK_BUFFERING_RANGES" "100")
    '("message-progress" "GST_QUARK_MESSAGE_PROGRESS" "101")
    '("code" "GST_QUARK_CODE" "102")
    '("text" "GST_QUARK_TEXT" "103")
    '("percent" "GST_QUARK_PERCENT" "104")
    '("timeout" "GST_QUARK_TIMEOUT" "105")
    '("buffer-pool-config" "GST_QUARK_BUFFER_POOL_CONFIG" "106")
    '("caps" "GST_QUARK_CAPS" "107")
    '("size" "GST_QUARK_SIZE" "108")
    '("min-buffers" "GST_QUARK_MIN_BUFFERS" "109")
    '("max-buffers" "GST_QUARK_MAX_BUFFERS" "110")
    '("prefix" "GST_QUARK_PREFIX" "111")
    '("padding" "GST_QUARK_PADDING" "112")
    '("align" "GST_QUARK_ALIGN" "113")
    '("time" "GST_QUARK_TIME" "114")
    '("query-allocation" "GST_QUARK_QUERY_ALLOCATION" "115")
    '("need-pool" "GST_QUARK_NEED_POOL" "116")
    '("meta" "GST_QUARK_META" "117")
    '("pool" "GST_QUARK_POOL" "118")
    '("event-caps" "GST_QUARK_EVENT_CAPS" "119")
    '("event-reconfigure" "GST_QUARK_EVENT_RECONFIGURE" "120")
    '("segment" "GST_QUARK_SEGMENT" "121")
    '("query-scheduling" "GST_QUARK_QUERY_SCHEDULING" "122")
    '("pull-mode" "GST_QUARK_PULL_MODE" "123")
    '("allocator" "GST_QUARK_ALLOCATOR" "124")
    '("event-flush-stop" "GST_QUARK_EVENT_FLUSH_STOP" "125")
    '("options" "GST_QUARK_OPTIONS" "126")
    '("query-accept-caps" "GST_QUARK_QUERY_ACCEPT_CAPS" "127")
    '("result" "GST_QUARK_RESULT" "128")
    '("query-caps" "GST_QUARK_QUERY_CAPS" "129")
    '("filter" "GST_QUARK_FILTER" "130")
    '("modes" "GST_QUARK_MODES" "131")
    '("event-stream-config" "GST_QUARK_EVENT_STREAM_CONFIG" "132")
    '("setup-data" "GST_QUARK_SETUP_DATA" "133")
    '("stream-headers" "GST_QUARK_STREAM_HEADERS" "134")
    '("event-gap" "GST_QUARK_EVENT_GAP" "135")
    '("query-drain" "GST_QUARK_QUERY_DRAIN" "136")
    '("params" "GST_QUARK_PARAMS" "137")
    '("event-toc-select" "GST_QUARK_EVENT_TOC_SELECT" "138")
    '("uid" "GST_QUARK_UID" "139")
    '("query-toc" "GST_QUARK_QUERY_TOC" "140")
    '("element-metadata-longname" "GST_QUARK_ELEMENT_METADATA_LONGNAME" "141")
    '("element-metadata-klass" "GST_QUARK_ELEMENT_METADATA_KLASS" "142")
    '("element-metadata-description" "GST_QUARK_ELEMENT_METADATA_DESCRIPTION" "143")
    '("element-metadata-author" "GST_QUARK_ELEMENT_METADATA_AUTHOR" "144")
    '("toc" "GST_QUARK_TOC" "145")
    '("toc-entry" "GST_QUARK_TOC_ENTRY" "146")
    '("updated" "GST_QUARK_UPDATED" "147")
    '("extend-uid" "GST_QUARK_EXTEND_UID" "148")
    '("toc-uid" "GST_QUARK_TOC_UID" "149")
    '("tags" "GST_QUARK_TAGS" "150")
    '("sub-entries" "GST_QUARK_SUB_ENTRIES" "151")
    '("info" "GST_QUARK_INFO" "152")
    '("message-tag" "GST_QUARK_MESSAGE_TAG" "153")
    '("event-tag" "GST_QUARK_EVENT_TAG" "154")
    '("message-reset-time" "GST_QUARK_MESSAGE_RESET_TIME" "155")
    '("message-toc" "GST_QUARK_MESSAGE_TOC" "156")
    '("event-toc-global" "GST_QUARK_EVENT_TOC_GLOBAL" "157")
    '("event-toc-current" "GST_QUARK_EVENT_TOC_CURRENT" "158")
    '("event-segment-done" "GST_QUARK_EVENT_SEGMENT_DONE" "159")
    '("event-stream-start" "GST_QUARK_EVENT_STREAM_START" "160")
    '("stream-id" "GST_QUARK_STREAM_ID" "161")
    '("max" "GST_QUARK_MAX" "162")
  )
)

;; From gstquery.h

;; Original typedef:
;; typedef enum {
;;   GST_QUERY_TYPE_UPSTREAM       = 1 << 0,
;;   GST_QUERY_TYPE_DOWNSTREAM     = 1 << 1,
;;   GST_QUERY_TYPE_SERIALIZED     = 1 << 2
;; } GstQueryTypeFlags;

(define-flags-extended QueryTypeFlags
  (in-module "Gst")
  (c-name "GstQueryTypeFlags")
  (values
    '("upstream" "GST_QUERY_TYPE_UPSTREAM" "1 << 0")
    '("downstream" "GST_QUERY_TYPE_DOWNSTREAM" "1 << 1")
    '("serialized" "GST_QUERY_TYPE_SERIALIZED" "1 << 2")
  )
)

;; Original typedef:
;; typedef enum {
;;   GST_QUERY_UNKNOWN      = GST_QUERY_MAKE_TYPE (0, 0),
;;   GST_QUERY_POSITION     = GST_QUERY_MAKE_TYPE (10, FLAG(BOTH)),
;;   GST_QUERY_DURATION     = GST_QUERY_MAKE_TYPE (20, FLAG(BOTH)),
;;   GST_QUERY_LATENCY      = GST_QUERY_MAKE_TYPE (30, FLAG(BOTH)),
;;   GST_QUERY_JITTER       = GST_QUERY_MAKE_TYPE (40, FLAG(BOTH)),
;;   GST_QUERY_RATE         = GST_QUERY_MAKE_TYPE (50, FLAG(BOTH)),
;;   GST_QUERY_SEEKING      = GST_QUERY_MAKE_TYPE (60, FLAG(BOTH)),
;;   GST_QUERY_SEGMENT      = GST_QUERY_MAKE_TYPE (70, FLAG(BOTH)),
;;   GST_QUERY_CONVERT      = GST_QUERY_MAKE_TYPE (80, FLAG(BOTH)),
;;   GST_QUERY_FORMATS      = GST_QUERY_MAKE_TYPE (90, FLAG(BOTH)),
;;   GST_QUERY_BUFFERING    = GST_QUERY_MAKE_TYPE (110, FLAG(BOTH)),
;;   GST_QUERY_CUSTOM       = GST_QUERY_MAKE_TYPE (120, FLAG(BOTH)),
;;   GST_QUERY_URI          = GST_QUERY_MAKE_TYPE (130, FLAG(BOTH)),
;;   GST_QUERY_ALLOCATION   = GST_QUERY_MAKE_TYPE (140, FLAG(DOWNSTREAM) | FLAG(SERIALIZED)),
;;   GST_QUERY_SCHEDULING   = GST_QUERY_MAKE_TYPE (150, FLAG(UPSTREAM)),
;;   GST_QUERY_ACCEPT_CAPS  = GST_QUERY_MAKE_TYPE (160, FLAG(BOTH)),
;;   GST_QUERY_CAPS         = GST_QUERY_MAKE_TYPE (170, FLAG(BOTH)),
;;   GST_QUERY_DRAIN        = GST_QUERY_MAKE_TYPE (180, FLAG(DOWNSTREAM) | FLAG(SERIALIZED))
;; } GstQueryType;

(define-flags-extended QueryType
  (in-module "Gst")
  (c-name "GstQueryType")
  (values
    '("unknown" "GST_QUERY_UNKNOWN" "GST_QUERY_MAKE_TYPE (0,  0)")
    '("position" "GST_QUERY_POSITION" "GST_QUERY_MAKE_TYPE (10,  FLAG(BOTH))")
    '("duration" "GST_QUERY_DURATION" "GST_QUERY_MAKE_TYPE (20,  FLAG(BOTH))")
    '("latency" "GST_QUERY_LATENCY" "GST_QUERY_MAKE_TYPE (30,  FLAG(BOTH))")
    '("jitter" "GST_QUERY_JITTER" "GST_QUERY_MAKE_TYPE (40,  FLAG(BOTH))")
    '("rate" "GST_QUERY_RATE" "GST_QUERY_MAKE_TYPE (50,  FLAG(BOTH))")
    '("seeking" "GST_QUERY_SEEKING" "GST_QUERY_MAKE_TYPE (60,  FLAG(BOTH))")
    '("segment" "GST_QUERY_SEGMENT" "GST_QUERY_MAKE_TYPE (70,  FLAG(BOTH))")
    '("convert" "GST_QUERY_CONVERT" "GST_QUERY_MAKE_TYPE (80,  FLAG(BOTH))")
    '("formats" "GST_QUERY_FORMATS" "GST_QUERY_MAKE_TYPE (90,  FLAG(BOTH))")
    '("buffering" "GST_QUERY_BUFFERING" "GST_QUERY_MAKE_TYPE (110,  FLAG(BOTH))")
    '("custom" "GST_QUERY_CUSTOM" "GST_QUERY_MAKE_TYPE (120,  FLAG(BOTH))")
    '("uri" "GST_QUERY_URI" "GST_QUERY_MAKE_TYPE (130,  FLAG(BOTH))")
    '("allocation" "GST_QUERY_ALLOCATION" "GST_QUERY_MAKE_TYPE (140,  FLAG(DOWNSTREAM) | FLAG(SERIALIZED))")
    '("scheduling" "GST_QUERY_SCHEDULING" "GST_QUERY_MAKE_TYPE (150,  FLAG(UPSTREAM))")
    '("accept-caps" "GST_QUERY_ACCEPT_CAPS" "GST_QUERY_MAKE_TYPE (160,  FLAG(BOTH))")
    '("caps" "GST_QUERY_CAPS" "GST_QUERY_MAKE_TYPE (170,  FLAG(BOTH))")
    '("drain" "GST_QUERY_DRAIN" "GST_QUERY_MAKE_TYPE (180,  FLAG(DOWNSTREAM) | FLAG(SERIALIZED))")
  )
)

;; Original typedef:
;; typedef enum {
;;   GST_BUFFERING_STREAM,
;;   GST_BUFFERING_DOWNLOAD,
;;   GST_BUFFERING_TIMESHIFT,
;;   GST_BUFFERING_LIVE
;; } GstBufferingMode;

(define-enum-extended BufferingMode
  (in-module "Gst")
  (c-name "GstBufferingMode")
  (values
    '("stream" "GST_BUFFERING_STREAM" "0")
    '("download" "GST_BUFFERING_DOWNLOAD" "1")
    '("timeshift" "GST_BUFFERING_TIMESHIFT" "2")
    '("live" "GST_BUFFERING_LIVE" "3")
  )
)

;; Original typedef:
;; typedef enum {
;;   GST_SCHEDULING_FLAG_SEEKABLE      = (1 << 0),
;;   GST_SCHEDULING_FLAG_SEQUENTIAL    = (1 << 1)
;; } GstSchedulingFlags;

(define-flags-extended SchedulingFlags
  (in-module "Gst")
  (c-name "GstSchedulingFlags")
  (values
    '("seekable" "GST_SCHEDULING_FLAG_SEEKABLE" "(1 << 0)")
    '("sequential" "GST_SCHEDULING_FLAG_SEQUENTIAL" "(1 << 1)")
  )
)

;; From gstsegment.h

;; Original typedef:
;; typedef enum {
;;   /* one of these */
;;   GST_SEEK_TYPE_NONE            = 0,
;;   GST_SEEK_TYPE_SET             = 1,
;;   GST_SEEK_TYPE_END             = 2
;; } GstSeekType;

(define-enum-extended SeekType
  (in-module "Gst")
  (c-name "GstSeekType")
  (values
    '("none" "GST_SEEK_TYPE_NONE" "0")
    '("set" "GST_SEEK_TYPE_SET" "1")
    '("end" "GST_SEEK_TYPE_END" "2")
  )
)

;; Original typedef:
;; typedef enum {
;;   GST_SEEK_FLAG_NONE            = 0,
;;   GST_SEEK_FLAG_FLUSH           = (1 << 0),
;;   GST_SEEK_FLAG_ACCURATE        = (1 << 1),
;;   GST_SEEK_FLAG_KEY_UNIT        = (1 << 2),
;;   GST_SEEK_FLAG_SEGMENT         = (1 << 3),
;;   GST_SEEK_FLAG_SKIP            = (1 << 4),
;;   GST_SEEK_FLAG_SNAP_BEFORE     = (1 << 5),
;;   GST_SEEK_FLAG_SNAP_AFTER      = (1 << 6),
;;   GST_SEEK_FLAG_SNAP_NEAREST    = GST_SEEK_FLAG_SNAP_BEFORE | GST_SEEK_FLAG_SNAP_AFTER,
;;   /* Careful to restart next flag with 1<<7 here */
;; } GstSeekFlags;

(define-flags-extended SeekFlags
  (in-module "Gst")
  (c-name "GstSeekFlags")
  (values
    '("none" "GST_SEEK_FLAG_NONE" "0x0")
    '("flush" "GST_SEEK_FLAG_FLUSH" "(1 << 0)")
    '("accurate" "GST_SEEK_FLAG_ACCURATE" "(1 << 1)")
    '("key-unit" "GST_SEEK_FLAG_KEY_UNIT" "(1 << 2)")
    '("segment" "GST_SEEK_FLAG_SEGMENT" "(1 << 3)")
    '("skip" "GST_SEEK_FLAG_SKIP" "(1 << 4)")
    '("snap-before" "GST_SEEK_FLAG_SNAP_BEFORE" "(1 << 5)")
    '("snap-after" "GST_SEEK_FLAG_SNAP_AFTER" "(1 << 6)")
    '("snap-nearest" "GST_SEEK_FLAG_SNAP_NEAREST" "0x60")
  )
)

;; Original typedef:
;; typedef enum { /*< flags >*/
;;   GST_SEGMENT_FLAG_NONE            = GST_SEEK_FLAG_NONE,
;;   GST_SEGMENT_FLAG_RESET           = GST_SEEK_FLAG_FLUSH,
;;   GST_SEGMENT_FLAG_SKIP            = GST_SEEK_FLAG_SKIP,
;;   GST_SEGMENT_FLAG_SEGMENT         = GST_SEEK_FLAG_SEGMENT
;; } GstSegmentFlags;

(define-flags-extended SegmentFlags
  (in-module "Gst")
  (c-name "GstSegmentFlags")
  (values
    '("none" "GST_SEGMENT_FLAG_NONE" "0x0")
    '("reset" "GST_SEGMENT_FLAG_RESET" "0x1")
    '("skip" "GST_SEGMENT_FLAG_SKIP" "0x10")
    '("segment" "GST_SEGMENT_FLAG_SEGMENT" "0x8")
  )
)

;; From gstsystemclock.h

;; Original typedef:
;; typedef enum {
;;   GST_CLOCK_TYPE_REALTIME       = 0,
;;   GST_CLOCK_TYPE_MONOTONIC      = 1,
;;   GST_CLOCK_TYPE_OTHER          = 2
;; } GstClockType;

(define-enum-extended ClockType
  (in-module "Gst")
  (c-name "GstClockType")
  (values
    '("realtime" "GST_CLOCK_TYPE_REALTIME" "0")
    '("monotonic" "GST_CLOCK_TYPE_MONOTONIC" "1")
    '("other" "GST_CLOCK_TYPE_OTHER" "2")
  )
)

;; From gsttaglist.h

;; Original typedef:
;; typedef enum {
;;   GST_TAG_MERGE_UNDEFINED,
;;   GST_TAG_MERGE_REPLACE_ALL,
;;   GST_TAG_MERGE_REPLACE,
;;   GST_TAG_MERGE_APPEND,
;;   GST_TAG_MERGE_PREPEND,
;;   GST_TAG_MERGE_KEEP,
;;   GST_TAG_MERGE_KEEP_ALL,
;;   /* add more */
;;   GST_TAG_MERGE_COUNT
;; } GstTagMergeMode;

(define-enum-extended TagMergeMode
  (in-module "Gst")
  (c-name "GstTagMergeMode")
  (values
    '("undefined" "GST_TAG_MERGE_UNDEFINED" "0")
    '("replace-all" "GST_TAG_MERGE_REPLACE_ALL" "1")
    '("replace" "GST_TAG_MERGE_REPLACE" "2")
    '("append" "GST_TAG_MERGE_APPEND" "3")
    '("prepend" "GST_TAG_MERGE_PREPEND" "4")
    '("keep" "GST_TAG_MERGE_KEEP" "5")
    '("keep-all" "GST_TAG_MERGE_KEEP_ALL" "6")
    '("count" "GST_TAG_MERGE_COUNT" "7")
  )
)

;; Original typedef:
;; typedef enum {
;;   GST_TAG_FLAG_UNDEFINED,
;;   GST_TAG_FLAG_META,
;;   GST_TAG_FLAG_ENCODED,
;;   GST_TAG_FLAG_DECODED,
;;   GST_TAG_FLAG_COUNT
;; } GstTagFlag;

(define-enum-extended TagFlag
  (in-module "Gst")
  (c-name "GstTagFlag")
  (values
    '("undefined" "GST_TAG_FLAG_UNDEFINED" "0")
    '("meta" "GST_TAG_FLAG_META" "1")
    '("encoded" "GST_TAG_FLAG_ENCODED" "2")
    '("decoded" "GST_TAG_FLAG_DECODED" "3")
    '("count" "GST_TAG_FLAG_COUNT" "4")
  )
)

;; Original typedef:
;; typedef enum {
;;   GST_TAG_SCOPE_STREAM,
;;   GST_TAG_SCOPE_GLOBAL
;; } GstTagScope;

(define-enum-extended TagScope
  (in-module "Gst")
  (c-name "GstTagScope")
  (values
    '("stream" "GST_TAG_SCOPE_STREAM" "0")
    '("global" "GST_TAG_SCOPE_GLOBAL" "1")
  )
)

;; From gsttask.h

;; Original typedef:
;; typedef enum {
;;   GST_TASK_STARTED,
;;   GST_TASK_STOPPED,
;;   GST_TASK_PAUSED
;; } GstTaskState;

(define-enum-extended TaskState
  (in-module "Gst")
  (c-name "GstTaskState")
  (values
    '("started" "GST_TASK_STARTED" "0")
    '("stopped" "GST_TASK_STOPPED" "1")
    '("paused" "GST_TASK_PAUSED" "2")
  )
)

;; From gsttoc.h

;; Original typedef:
;; typedef enum {
;;   GST_TOC_SCOPE_GLOBAL = 1,
;;   GST_TOC_SCOPE_CURRENT = 2
;; } GstTocScope;

(define-enum-extended TocScope
  (in-module "Gst")
  (c-name "GstTocScope")
  (values
    '("global" "GST_TOC_SCOPE_GLOBAL" "1")
    '("current" "GST_TOC_SCOPE_CURRENT" "2")
  )
)

;; Original typedef:
;; typedef enum {
;;   GST_TOC_ENTRY_TYPE_ANGLE       = -3,
;;   GST_TOC_ENTRY_TYPE_VERSION     = -2,
;;   GST_TOC_ENTRY_TYPE_EDITION     = -1,
;;   GST_TOC_ENTRY_TYPE_INVALID     = 0,
;;   GST_TOC_ENTRY_TYPE_TITLE       = 1,
;;   GST_TOC_ENTRY_TYPE_TRACK       = 2,
;;   GST_TOC_ENTRY_TYPE_CHAPTER     = 3,
;; } GstTocEntryType;

(define-enum-extended TocEntryType
  (in-module "Gst")
  (c-name "GstTocEntryType")
  (values
    '("angle" "GST_TOC_ENTRY_TYPE_ANGLE" "-3")
    '("version" "GST_TOC_ENTRY_TYPE_VERSION" "-2")
    '("edition" "GST_TOC_ENTRY_TYPE_EDITION" "-1")
    '("invalid" "GST_TOC_ENTRY_TYPE_INVALID" "0")
    '("title" "GST_TOC_ENTRY_TYPE_TITLE" "1")
    '("track" "GST_TOC_ENTRY_TYPE_TRACK" "2")
    '("chapter" "GST_TOC_ENTRY_TYPE_CHAPTER" "3")
  )
)

;; From gsttrace.h

;; Original typedef:
;; typedef enum {
;;   GST_ALLOC_TRACE_NONE      = 0,
;;   GST_ALLOC_TRACE_LIVE      = (1 << 0),
;;   GST_ALLOC_TRACE_MEM_LIVE  = (1 << 1)
;; } GstAllocTraceFlags;

(define-flags-extended AllocTraceFlags
  (in-module "Gst")
  (c-name "GstAllocTraceFlags")
  (values
    '("none" "GST_ALLOC_TRACE_NONE" "0x0")
    '("live" "GST_ALLOC_TRACE_LIVE" "(1 << 0)")
    '("mem-live" "GST_ALLOC_TRACE_MEM_LIVE" "(1 << 1)")
  )
)

;; From gsttypefind.h

;; Original typedef:
;; typedef enum {
;;   GST_TYPE_FIND_NONE = 0,
;;   GST_TYPE_FIND_MINIMUM = 1,
;;   GST_TYPE_FIND_POSSIBLE = 50,
;;   GST_TYPE_FIND_LIKELY = 80,
;;   GST_TYPE_FIND_NEARLY_CERTAIN = 99,
;;   GST_TYPE_FIND_MAXIMUM = 100
;; } GstTypeFindProbability;

(define-enum-extended TypeFindProbability
  (in-module "Gst")
  (c-name "GstTypeFindProbability")
  (values
    '("none" "GST_TYPE_FIND_NONE" "0")
    '("minimum" "GST_TYPE_FIND_MINIMUM" "1")
    '("possible" "GST_TYPE_FIND_POSSIBLE" "50")
    '("likely" "GST_TYPE_FIND_LIKELY" "80")
    '("nearly-certain" "GST_TYPE_FIND_NEARLY_CERTAIN" "99")
    '("maximum" "GST_TYPE_FIND_MAXIMUM" "100")
  )
)

;; From gsturi.h

;; Original typedef:
;; typedef enum
;; {
;;   GST_URI_ERROR_UNSUPPORTED_PROTOCOL,
;;   GST_URI_ERROR_BAD_URI,
;;   GST_URI_ERROR_BAD_STATE,
;;   GST_URI_ERROR_BAD_REFERENCE
;; } GstURIError;

(define-enum-extended URIError
  (in-module "Gst")
  (c-name "GstURIError")
  (values
    '("unsupported-protocol" "GST_URI_ERROR_UNSUPPORTED_PROTOCOL" "0")
    '("bad-uri" "GST_URI_ERROR_BAD_URI" "1")
    '("bad-state" "GST_URI_ERROR_BAD_STATE" "2")
    '("bad-reference" "GST_URI_ERROR_BAD_REFERENCE" "3")
  )
)

;; Original typedef:
;; typedef enum {
;;   GST_URI_UNKNOWN,
;;   GST_URI_SINK,
;;   GST_URI_SRC
;; } GstURIType;

(define-enum-extended URIType
  (in-module "Gst")
  (c-name "GstURIType")
  (values
    '("unknown" "GST_URI_UNKNOWN" "0")
    '("sink" "GST_URI_SINK" "1")
    '("src" "GST_URI_SRC" "2")
  )
)

;; From gstutils.h

;; Original typedef:
;; typedef enum {
;;   GST_SEARCH_MODE_EXACT = 0,
;;   GST_SEARCH_MODE_BEFORE,
;;   GST_SEARCH_MODE_AFTER
;; } GstSearchMode;

(define-enum-extended SearchMode
  (in-module "Gst")
  (c-name "GstSearchMode")
  (values
    '("exact" "GST_SEARCH_MODE_EXACT" "0")
    '("before" "GST_SEARCH_MODE_BEFORE" "1")
    '("after" "GST_SEARCH_MODE_AFTER" "2")
  )
)

;; From gstbaseparse.h

;; Original typedef:
;; typedef enum {
;;   GST_BASE_PARSE_FRAME_FLAG_NONE         = 0,
;;   GST_BASE_PARSE_FRAME_FLAG_NEW_FRAME    = (1 << 0),
;;   GST_BASE_PARSE_FRAME_FLAG_NO_FRAME     = (1 << 1),
;;   GST_BASE_PARSE_FRAME_FLAG_CLIP         = (1 << 2),
;;   GST_BASE_PARSE_FRAME_FLAG_DROP         = (1 << 3),
;;   GST_BASE_PARSE_FRAME_FLAG_QUEUE        = (1 << 4)
;; } GstBaseParseFrameFlags;

(define-flags-extended BaseParseFrameFlags
  (in-module "Gst")
  (c-name "GstBaseParseFrameFlags")
  (values
    '("none" "GST_BASE_PARSE_FRAME_FLAG_NONE" "0x0")
    '("new-frame" "GST_BASE_PARSE_FRAME_FLAG_NEW_FRAME" "(1 << 0)")
    '("no-frame" "GST_BASE_PARSE_FRAME_FLAG_NO_FRAME" "(1 << 1)")
    '("clip" "GST_BASE_PARSE_FRAME_FLAG_CLIP" "(1 << 2)")
    '("drop" "GST_BASE_PARSE_FRAME_FLAG_DROP" "(1 << 3)")
    '("queue" "GST_BASE_PARSE_FRAME_FLAG_QUEUE" "(1 << 4)")
  )
)

;; From gstbasesrc.h

;; Original typedef:
;; typedef enum {
;;   GST_BASE_SRC_FLAG_STARTING     = (GST_ELEMENT_FLAG_LAST << 0),
;;   GST_BASE_SRC_FLAG_STARTED      = (GST_ELEMENT_FLAG_LAST << 1),
;;   /* padding */
;;   GST_BASE_SRC_FLAG_LAST         = (GST_ELEMENT_FLAG_LAST << 6)
;; } GstBaseSrcFlags;

(define-flags-extended BaseSrcFlags
  (in-module "Gst")
  (c-name "GstBaseSrcFlags")
  (values
    '("starting" "GST_BASE_SRC_FLAG_STARTING" "(((GST_OBJECT_FLAG_LAST << 10)) << 0)")
    '("started" "GST_BASE_SRC_FLAG_STARTED" "(((GST_OBJECT_FLAG_LAST << 10)) << 1)")
    '("last" "GST_BASE_SRC_FLAG_LAST" "(((GST_OBJECT_FLAG_LAST << 10)) << 6)")
  )
)

;; From gstcollectpads.h

;; Original typedef:
;; typedef enum {
;;   GST_COLLECT_PADS_STATE_EOS = 1 << 0,
;;   GST_COLLECT_PADS_STATE_FLUSHING = 1 << 1,
;;   GST_COLLECT_PADS_STATE_NEW_SEGMENT = 1 << 2,
;;   GST_COLLECT_PADS_STATE_WAITING = 1 << 3,
;;   GST_COLLECT_PADS_STATE_LOCKED = 1 << 4
;; } GstCollectPadsStateFlags;

(define-flags-extended CollectPadsStateFlags
  (in-module "Gst")
  (c-name "GstCollectPadsStateFlags")
  (values
    '("eos" "GST_COLLECT_PADS_STATE_EOS" "1 << 0")
    '("flushing" "GST_COLLECT_PADS_STATE_FLUSHING" "1 << 1")
    '("new-segment" "GST_COLLECT_PADS_STATE_NEW_SEGMENT" "1 << 2")
    '("waiting" "GST_COLLECT_PADS_STATE_WAITING" "1 << 3")
    '("locked" "GST_COLLECT_PADS_STATE_LOCKED" "1 << 4")
  )
)

;; From gstindex.h

;; Original typedef:
;; typedef enum {
;;   GST_INDEX_UNKNOWN,
;;   GST_INDEX_CERTAIN,
;;   GST_INDEX_FUZZY
;; } GstIndexCertainty;

(define-enum-extended IndexCertainty
  (in-module "Gst")
  (c-name "GstIndexCertainty")
  (values
    '("unknown" "GST_INDEX_UNKNOWN" "0")
    '("certain" "GST_INDEX_CERTAIN" "1")
    '("fuzzy" "GST_INDEX_FUZZY" "2")
  )
)

;; Original typedef:
;; typedef enum {
;;   GST_INDEX_ENTRY_ID,
;;   GST_INDEX_ENTRY_ASSOCIATION,
;;   GST_INDEX_ENTRY_OBJECT,
;;   GST_INDEX_ENTRY_FORMAT
;; } GstIndexEntryType;

(define-enum-extended IndexEntryType
  (in-module "Gst")
  (c-name "GstIndexEntryType")
  (values
    '("id" "GST_INDEX_ENTRY_ID" "0")
    '("association" "GST_INDEX_ENTRY_ASSOCIATION" "1")
    '("object" "GST_INDEX_ENTRY_OBJECT" "2")
    '("format" "GST_INDEX_ENTRY_FORMAT" "3")
  )
)

;; Original typedef:
;; typedef enum {
;;   GST_INDEX_LOOKUP_EXACT,
;;   GST_INDEX_LOOKUP_BEFORE,
;;   GST_INDEX_LOOKUP_AFTER
;; } GstIndexLookupMethod;

(define-enum-extended IndexLookupMethod
  (in-module "Gst")
  (c-name "GstIndexLookupMethod")
  (values
    '("exact" "GST_INDEX_LOOKUP_EXACT" "0")
    '("before" "GST_INDEX_LOOKUP_BEFORE" "1")
    '("after" "GST_INDEX_LOOKUP_AFTER" "2")
  )
)

;; Original typedef:
;; typedef enum {
;;   GST_INDEX_ASSOCIATION_FLAG_NONE       = 0,
;;   GST_INDEX_ASSOCIATION_FLAG_KEY_UNIT   = (1 << 0),
;;   GST_INDEX_ASSOCIATION_FLAG_DELTA_UNIT = (1 << 1),
;; 
;;   /* new flags should start here */
;;   GST_INDEX_ASSOCIATION_FLAG_LAST     = (1 << 8)
;; } GstIndexAssociationFlags;

(define-flags-extended IndexAssociationFlags
  (in-module "Gst")
  (c-name "GstIndexAssociationFlags")
  (values
    '("none" "GST_INDEX_ASSOCIATION_FLAG_NONE" "0x0")
    '("key-unit" "GST_INDEX_ASSOCIATION_FLAG_KEY_UNIT" "(1 << 0)")
    '("delta-unit" "GST_INDEX_ASSOCIATION_FLAG_DELTA_UNIT" "(1 << 1)")
    '("last" "GST_INDEX_ASSOCIATION_FLAG_LAST" "(1 << 8)")
  )
)

;; Original typedef:
;; typedef enum {
;;   GST_INDEX_RESOLVER_CUSTOM,
;;   GST_INDEX_RESOLVER_GTYPE,
;;   GST_INDEX_RESOLVER_PATH
;; } GstIndexResolverMethod;

(define-enum-extended IndexResolverMethod
  (in-module "Gst")
  (c-name "GstIndexResolverMethod")
  (values
    '("custom" "GST_INDEX_RESOLVER_CUSTOM" "0")
    '("gtype" "GST_INDEX_RESOLVER_GTYPE" "1")
    '("path" "GST_INDEX_RESOLVER_PATH" "2")
  )
)

;; Original typedef:
;; typedef enum {
;;   GST_INDEX_WRITABLE    = (GST_OBJECT_FLAG_LAST << 0),
;;   GST_INDEX_READABLE    = (GST_OBJECT_FLAG_LAST << 1),
;; 
;;   GST_INDEX_FLAG_LAST   = (GST_OBJECT_FLAG_LAST << 8)
;; } GstIndexFlags;

(define-flags-extended IndexFlags
  (in-module "Gst")
  (c-name "GstIndexFlags")
  (values
    '("writable" "GST_INDEX_WRITABLE" "0x10")
    '("readable" "GST_INDEX_READABLE" "0x20")
    '("flag-last" "GST_INDEX_FLAG_LAST" "0x1000")
  )
)

;; From gstinterpolationcontrolsource.h

;; Original typedef:
;; typedef enum
;; {
;;   GST_INTERPOLATION_MODE_NONE,
;;   GST_INTERPOLATION_MODE_LINEAR,
;;   GST_INTERPOLATION_MODE_CUBIC
;; } GstInterpolationMode;

(define-enum-extended InterpolationMode
  (in-module "Gst")
  (c-name "GstInterpolationMode")
  (values
    '("none" "GST_INTERPOLATION_MODE_NONE" "0")
    '("linear" "GST_INTERPOLATION_MODE_LINEAR" "1")
    '("cubic" "GST_INTERPOLATION_MODE_CUBIC" "2")
  )
)

;; From gstlfocontrolsource.h

;; Original typedef:
;; typedef enum
;; {
;;   GST_LFO_WAVEFORM_SINE,
;;   GST_LFO_WAVEFORM_SQUARE,
;;   GST_LFO_WAVEFORM_SAW,
;;   GST_LFO_WAVEFORM_REVERSE_SAW,
;;   GST_LFO_WAVEFORM_TRIANGLE
;; } GstLFOWaveform;

(define-enum-extended LFOWaveform
  (in-module "Gst")
  (c-name "GstLFOWaveform")
  (values
    '("sine" "GST_LFO_WAVEFORM_SINE" "0")
    '("square" "GST_LFO_WAVEFORM_SQUARE" "1")
    '("saw" "GST_LFO_WAVEFORM_SAW" "2")
    '("reverse-saw" "GST_LFO_WAVEFORM_REVERSE_SAW" "3")
    '("triangle" "GST_LFO_WAVEFORM_TRIANGLE" "4")
  )
)

;; From gstfakesink.h

;; Original typedef:
;; typedef enum {
;;   FAKE_SINK_STATE_ERROR_NONE = 0,
;;   FAKE_SINK_STATE_ERROR_NULL_READY,
;;   FAKE_SINK_STATE_ERROR_READY_PAUSED,
;;   FAKE_SINK_STATE_ERROR_PAUSED_PLAYING,
;;   FAKE_SINK_STATE_ERROR_PLAYING_PAUSED,
;;   FAKE_SINK_STATE_ERROR_PAUSED_READY,
;;   FAKE_SINK_STATE_ERROR_READY_NULL
;; } GstFakeSinkStateError;

(define-enum-extended FakeSinkStateError
  (in-module "Gst")
  (c-name "GstFakeSinkStateError")
  (values
    '("none" "GST_FAKE_SINK_STATE_ERROR_NONE" "0")
    '("null-ready" "GST_FAKE_SINK_STATE_ERROR_NULL_READY" "1")
    '("ready-paused" "GST_FAKE_SINK_STATE_ERROR_READY_PAUSED" "2")
    '("paused-playing" "GST_FAKE_SINK_STATE_ERROR_PAUSED_PLAYING" "3")
    '("playing-paused" "GST_FAKE_SINK_STATE_ERROR_PLAYING_PAUSED" "4")
    '("paused-ready" "GST_FAKE_SINK_STATE_ERROR_PAUSED_READY" "5")
    '("ready-null" "GST_FAKE_SINK_STATE_ERROR_READY_NULL" "6")
  )
)

;; From gstfakesrc.h

;; Original typedef:
;; typedef enum {
;;   FAKE_SRC_FIRST_LAST_LOOP = 1,
;;   FAKE_SRC_LAST_FIRST_LOOP,
;;   FAKE_SRC_PING_PONG,
;;   FAKE_SRC_ORDERED_RANDOM,
;;   FAKE_SRC_RANDOM,
;;   FAKE_SRC_PATTERN_LOOP,
;;   FAKE_SRC_PING_PONG_PATTERN,
;;   FAKE_SRC_GET_ALWAYS_SUCEEDS
;; } GstFakeSrcOutputType;

(define-enum-extended FakeSrcOutputType
  (in-module "Gst")
  (c-name "GstFakeSrcOutputType")
  (values
    '("first-last-loop" "GST_FAKE_SRC_FIRST_LAST_LOOP" "1")
    '("last-first-loop" "GST_FAKE_SRC_LAST_FIRST_LOOP" "2")
    '("ping-pong" "GST_FAKE_SRC_PING_PONG" "3")
    '("ordered-random" "GST_FAKE_SRC_ORDERED_RANDOM" "4")
    '("random" "GST_FAKE_SRC_RANDOM" "5")
    '("pattern-loop" "GST_FAKE_SRC_PATTERN_LOOP" "6")
    '("ping-pong-pattern" "GST_FAKE_SRC_PING_PONG_PATTERN" "7")
    '("get-always-suceeds" "GST_FAKE_SRC_GET_ALWAYS_SUCEEDS" "8")
  )
)

;; Original typedef:
;; typedef enum {
;;   FAKE_SRC_DATA_ALLOCATE = 1,
;;   FAKE_SRC_DATA_SUBBUFFER
;; } GstFakeSrcDataType;

(define-enum-extended FakeSrcDataType
  (in-module "Gst")
  (c-name "GstFakeSrcDataType")
  (values
    '("allocate" "GST_FAKE_SRC_DATA_ALLOCATE" "1")
    '("subbuffer" "GST_FAKE_SRC_DATA_SUBBUFFER" "2")
  )
)

;; Original typedef:
;; typedef enum {
;;   FAKE_SRC_SIZETYPE_EMPTY = 1,
;;   FAKE_SRC_SIZETYPE_FIXED,
;;   FAKE_SRC_SIZETYPE_RANDOM
;; } GstFakeSrcSizeType;

(define-enum-extended FakeSrcSizeType
  (in-module "Gst")
  (c-name "GstFakeSrcSizeType")
  (values
    '("empty" "GST_FAKE_SRC_SIZETYPE_EMPTY" "1")
    '("fixed" "GST_FAKE_SRC_SIZETYPE_FIXED" "2")
    '("random" "GST_FAKE_SRC_SIZETYPE_RANDOM" "3")
  )
)

;; Original typedef:
;; typedef enum {
;;   FAKE_SRC_FILLTYPE_NOTHING = 1,
;;   FAKE_SRC_FILLTYPE_ZERO,
;;   FAKE_SRC_FILLTYPE_RANDOM,
;;   FAKE_SRC_FILLTYPE_PATTERN,
;;   FAKE_SRC_FILLTYPE_PATTERN_CONT
;; } GstFakeSrcFillType;

(define-enum-extended FakeSrcFillType
  (in-module "Gst")
  (c-name "GstFakeSrcFillType")
  (values
    '("nothing" "GST_FAKE_SRC_FILLTYPE_NOTHING" "1")
    '("zero" "GST_FAKE_SRC_FILLTYPE_ZERO" "2")
    '("random" "GST_FAKE_SRC_FILLTYPE_RANDOM" "3")
    '("pattern" "GST_FAKE_SRC_FILLTYPE_PATTERN" "4")
    '("pattern-cont" "GST_FAKE_SRC_FILLTYPE_PATTERN_CONT" "5")
  )
)
;; Handwritten for the filesink plug-in (Gst::FileSink).
(define-enum-extended FileSinkBufferMode
  (in-module "Gst")
  (c-name "GstFileSinkBufferMode")
  (values
    '("default" "GST_FILE_SINK_BUFFER_MODE_DEFAULT" "-1")
    '("full" "GST_FILE_SINK_BUFFER_MODE_FULL" "0")
    '("line" "GST_FILE_SINK_BUFFER_MODE_LINE" "1")
    '("unbuffered" "GST_FILE_SINK_BUFFER_MODE_UNBUFFERED" "2")
  )
)

;; From gstinputselector.h

;; Original typedef:
;; typedef enum {
;;   GST_INPUT_SELECTOR_SYNC_MODE_ACTIVE_SEGMENT,
;;   GST_INPUT_SELECTOR_SYNC_MODE_CLOCK
;; } GstInputSelectorSyncMode;

(define-enum-extended InputSelectorSyncMode
  (in-module "Gst")
  (c-name "GstInputSelectorSyncMode")
  (values
    '("active-segment" "GST_INPUT_SELECTOR_SYNC_MODE_ACTIVE_SEGMENT" "0")
    '("clock" "GST_INPUT_SELECTOR_SYNC_MODE_CLOCK" "1")
  )
)

;; From gstqueue.h

;; Handwritten for the queue plug-in (Gst::Queue).
(define-enum-extended QueueLeaky
  (in-module "Gst")
  (c-name "GstQueueLeaky")
  (values
    '("no" "GST_QUEUE_LEAKY_NONE" "0")
    '("upstream" "GST_QUEUE_LEAKY_UPSTREAM" "1")
    '("downstream" "GST_QUEUE_LEAKY_DOWNSTREAM" "2")
  )
)

;; Original typedef:
;; typedef enum _GstQueueLeaky GstQueueLeaky;
;; typedef struct _GstQueueClass GstQueueClass;
;; 
;; /**
;;  * GstQueueLeaky:
;;  * @GST_QUEUE_NO_LEAK: Not Leaky
;;  * @GST_QUEUE_LEAK_UPSTREAM: Leaky on upstream (new buffers)
;;  * @GST_QUEUE_LEAK_DOWNSTREAM: Leaky on downstream (old buffers)
;;  *
;;  * Buffer dropping scheme to avoid the queue to block when full.
;;  */
;; enum _GstQueueLeaky {
;;   GST_QUEUE_NO_LEAK             = 0,
;;   GST_QUEUE_LEAK_UPSTREAM       = 1,
;;   GST_QUEUE_LEAK_DOWNSTREAM     = 2
;; };

(define-enum-extended QueueLeaky
  (in-module "Gst")
  (c-name "GstQueueLeaky")
  (values
    '("upstream" "GST_QUEUE_LEAK_NO_LEAK" "0")
    '("upstream" "GST_QUEUE_LEAK_UPSTREAM" "1")
    '("downstream" "GST_QUEUE_LEAK_DOWNSTREAM" "2")
  )
)

;; From gsttee.h

;; Original typedef:
;; typedef enum {
;;   GST_TEE_PULL_MODE_NEVER,
;;   GST_TEE_PULL_MODE_SINGLE,
;; } GstTeePullMode;

(define-enum-extended TeePullMode
  (in-module "Gst")
  (c-name "GstTeePullMode")
  (values
    '("never" "GST_TEE_PULL_MODE_NEVER" "0")
    '("single" "GST_TEE_PULL_MODE_SINGLE" "1")
  )
)

;; From gstappsrc.h

;; Original typedef:
;; typedef enum
;; {
;;   GST_APP_STREAM_TYPE_STREAM,
;;   GST_APP_STREAM_TYPE_SEEKABLE,
;;   GST_APP_STREAM_TYPE_RANDOM_ACCESS
;; } GstAppStreamType;

(define-enum-extended AppStreamType
  (in-module "Gst")
  (c-name "GstAppStreamType")
  (values
    '("stream" "GST_APP_STREAM_TYPE_STREAM" "0")
    '("seekable" "GST_APP_STREAM_TYPE_SEEKABLE" "1")
    '("random-access" "GST_APP_STREAM_TYPE_RANDOM_ACCESS" "2")
  )
)

;; From audio-channels.h

;; Original typedef:
;; typedef enum {
;;   /* These get negative indices to allow to use
;;    * the enum values of the normal cases for the
;;    * bit-mask position */
;;   GST_AUDIO_CHANNEL_POSITION_NONE = -3,
;;   GST_AUDIO_CHANNEL_POSITION_MONO = -2,
;;   GST_AUDIO_CHANNEL_POSITION_INVALID = -1,
;; 
;;   /* Normal cases */
;;   GST_AUDIO_CHANNEL_POSITION_FRONT_LEFT = 0,
;;   GST_AUDIO_CHANNEL_POSITION_FRONT_RIGHT,
;;   GST_AUDIO_CHANNEL_POSITION_FRONT_CENTER,
;;   GST_AUDIO_CHANNEL_POSITION_LFE1,
;;   GST_AUDIO_CHANNEL_POSITION_REAR_LEFT,
;;   GST_AUDIO_CHANNEL_POSITION_REAR_RIGHT,
;;   GST_AUDIO_CHANNEL_POSITION_FRONT_LEFT_OF_CENTER,
;;   GST_AUDIO_CHANNEL_POSITION_FRONT_RIGHT_OF_CENTER,
;;   GST_AUDIO_CHANNEL_POSITION_REAR_CENTER,
;;   GST_AUDIO_CHANNEL_POSITION_LFE2,
;;   GST_AUDIO_CHANNEL_POSITION_SIDE_LEFT,
;;   GST_AUDIO_CHANNEL_POSITION_SIDE_RIGHT,
;;   GST_AUDIO_CHANNEL_POSITION_TOP_FRONT_LEFT,
;;   GST_AUDIO_CHANNEL_POSITION_TOP_FRONT_RIGHT,
;;   GST_AUDIO_CHANNEL_POSITION_TOP_FRONT_CENTER,
;;   GST_AUDIO_CHANNEL_POSITION_TOP_CENTER,
;;   GST_AUDIO_CHANNEL_POSITION_TOP_REAR_LEFT,
;;   GST_AUDIO_CHANNEL_POSITION_TOP_REAR_RIGHT,
;;   GST_AUDIO_CHANNEL_POSITION_TOP_SIDE_LEFT,
;;   GST_AUDIO_CHANNEL_POSITION_TOP_SIDE_RIGHT,
;;   GST_AUDIO_CHANNEL_POSITION_TOP_REAR_CENTER,
;;   GST_AUDIO_CHANNEL_POSITION_BOTTOM_FRONT_CENTER,
;;   GST_AUDIO_CHANNEL_POSITION_BOTTOM_FRONT_LEFT,
;;   GST_AUDIO_CHANNEL_POSITION_BOTTOM_FRONT_RIGHT,
;;   GST_AUDIO_CHANNEL_POSITION_WIDE_LEFT,
;;   GST_AUDIO_CHANNEL_POSITION_WIDE_RIGHT,
;;   GST_AUDIO_CHANNEL_POSITION_SURROUND_LEFT,
;;   GST_AUDIO_CHANNEL_POSITION_SURROUND_RIGHT
;; } GstAudioChannelPosition;

(define-enum-extended AudioChannelPosition
  (in-module "Gst")
  (c-name "GstAudioChannelPosition")
  (values
    '("none" "GST_AUDIO_CHANNEL_POSITION_NONE" "-3")
    '("mono" "GST_AUDIO_CHANNEL_POSITION_MONO" "-2")
    '("invalid" "GST_AUDIO_CHANNEL_POSITION_INVALID" "-1")
    '("front-left" "GST_AUDIO_CHANNEL_POSITION_FRONT_LEFT" "0")
    '("front-right" "GST_AUDIO_CHANNEL_POSITION_FRONT_RIGHT" "1")
    '("front-center" "GST_AUDIO_CHANNEL_POSITION_FRONT_CENTER" "2")
    '("lfe1" "GST_AUDIO_CHANNEL_POSITION_LFE1" "3")
    '("rear-left" "GST_AUDIO_CHANNEL_POSITION_REAR_LEFT" "4")
    '("rear-right" "GST_AUDIO_CHANNEL_POSITION_REAR_RIGHT" "5")
    '("front-left-of-center" "GST_AUDIO_CHANNEL_POSITION_FRONT_LEFT_OF_CENTER" "6")
    '("front-right-of-center" "GST_AUDIO_CHANNEL_POSITION_FRONT_RIGHT_OF_CENTER" "7")
    '("rear-center" "GST_AUDIO_CHANNEL_POSITION_REAR_CENTER" "8")
    '("lfe2" "GST_AUDIO_CHANNEL_POSITION_LFE2" "9")
    '("side-left" "GST_AUDIO_CHANNEL_POSITION_SIDE_LEFT" "10")
    '("side-right" "GST_AUDIO_CHANNEL_POSITION_SIDE_RIGHT" "11")
    '("top-front-left" "GST_AUDIO_CHANNEL_POSITION_TOP_FRONT_LEFT" "12")
    '("top-front-right" "GST_AUDIO_CHANNEL_POSITION_TOP_FRONT_RIGHT" "13")
    '("top-front-center" "GST_AUDIO_CHANNEL_POSITION_TOP_FRONT_CENTER" "14")
    '("top-center" "GST_AUDIO_CHANNEL_POSITION_TOP_CENTER" "15")
    '("top-rear-left" "GST_AUDIO_CHANNEL_POSITION_TOP_REAR_LEFT" "16")
    '("top-rear-right" "GST_AUDIO_CHANNEL_POSITION_TOP_REAR_RIGHT" "17")
    '("top-side-left" "GST_AUDIO_CHANNEL_POSITION_TOP_SIDE_LEFT" "18")
    '("top-side-right" "GST_AUDIO_CHANNEL_POSITION_TOP_SIDE_RIGHT" "19")
    '("top-rear-center" "GST_AUDIO_CHANNEL_POSITION_TOP_REAR_CENTER" "20")
    '("bottom-front-center" "GST_AUDIO_CHANNEL_POSITION_BOTTOM_FRONT_CENTER" "21")
    '("bottom-front-left" "GST_AUDIO_CHANNEL_POSITION_BOTTOM_FRONT_LEFT" "22")
    '("bottom-front-right" "GST_AUDIO_CHANNEL_POSITION_BOTTOM_FRONT_RIGHT" "23")
    '("wide-left" "GST_AUDIO_CHANNEL_POSITION_WIDE_LEFT" "24")
    '("wide-right" "GST_AUDIO_CHANNEL_POSITION_WIDE_RIGHT" "25")
    '("surround-left" "GST_AUDIO_CHANNEL_POSITION_SURROUND_LEFT" "26")
    '("surround-right" "GST_AUDIO_CHANNEL_POSITION_SURROUND_RIGHT" "27")
  )
)

;; From audio-format.h

;; Original typedef:
;; typedef enum {
;;   GST_AUDIO_FORMAT_UNKNOWN,
;;   GST_AUDIO_FORMAT_ENCODED,
;;   /* 8 bit */
;;   GST_AUDIO_FORMAT_S8,
;;   GST_AUDIO_FORMAT_U8,
;;   /* 16 bit */
;;   GST_AUDIO_FORMAT_S16LE,
;;   GST_AUDIO_FORMAT_S16BE,
;;   GST_AUDIO_FORMAT_U16LE,
;;   GST_AUDIO_FORMAT_U16BE,
;;   /* 24 bit in low 3 bytes of 32 bits*/
;;   GST_AUDIO_FORMAT_S24_32LE,
;;   GST_AUDIO_FORMAT_S24_32BE,
;;   GST_AUDIO_FORMAT_U24_32LE,
;;   GST_AUDIO_FORMAT_U24_32BE,
;;   /* 32 bit */
;;   GST_AUDIO_FORMAT_S32LE,
;;   GST_AUDIO_FORMAT_S32BE,
;;   GST_AUDIO_FORMAT_U32LE,
;;   GST_AUDIO_FORMAT_U32BE,
;;   /* 24 bit in 3 bytes*/
;;   GST_AUDIO_FORMAT_S24LE,
;;   GST_AUDIO_FORMAT_S24BE,
;;   GST_AUDIO_FORMAT_U24LE,
;;   GST_AUDIO_FORMAT_U24BE,
;;   /* 20 bit in 3 bytes*/
;;   GST_AUDIO_FORMAT_S20LE,
;;   GST_AUDIO_FORMAT_S20BE,
;;   GST_AUDIO_FORMAT_U20LE,
;;   GST_AUDIO_FORMAT_U20BE,
;;   /* 18 bit in 3 bytes*/
;;   GST_AUDIO_FORMAT_S18LE,
;;   GST_AUDIO_FORMAT_S18BE,
;;   GST_AUDIO_FORMAT_U18LE,
;;   GST_AUDIO_FORMAT_U18BE,
;;   /* float */
;;   GST_AUDIO_FORMAT_F32LE,
;;   GST_AUDIO_FORMAT_F32BE,
;;   GST_AUDIO_FORMAT_F64LE,
;;   GST_AUDIO_FORMAT_F64BE,
;;   /* native endianness equivalents */
;;   GST_AUDIO_FORMAT_S16 = _GST_AUDIO_FORMAT_NE(S16),
;;   GST_AUDIO_FORMAT_U16 = _GST_AUDIO_FORMAT_NE(U16),
;;   GST_AUDIO_FORMAT_S24_32 = _GST_AUDIO_FORMAT_NE(S24_32),
;;   GST_AUDIO_FORMAT_U24_32 = _GST_AUDIO_FORMAT_NE(U24_32),
;;   GST_AUDIO_FORMAT_S32 = _GST_AUDIO_FORMAT_NE(S32),
;;   GST_AUDIO_FORMAT_U32 = _GST_AUDIO_FORMAT_NE(U32),
;;   GST_AUDIO_FORMAT_S24 = _GST_AUDIO_FORMAT_NE(S24),
;;   GST_AUDIO_FORMAT_U24 = _GST_AUDIO_FORMAT_NE(U24),
;;   GST_AUDIO_FORMAT_S20 = _GST_AUDIO_FORMAT_NE(S20),
;;   GST_AUDIO_FORMAT_U20 = _GST_AUDIO_FORMAT_NE(U20),
;;   GST_AUDIO_FORMAT_S18 = _GST_AUDIO_FORMAT_NE(S18),
;;   GST_AUDIO_FORMAT_U18 = _GST_AUDIO_FORMAT_NE(U18),
;;   GST_AUDIO_FORMAT_F32 = _GST_AUDIO_FORMAT_NE(F32),
;;   GST_AUDIO_FORMAT_F64 = _GST_AUDIO_FORMAT_NE(F64)
;; } GstAudioFormat;

(define-enum-extended AudioFormat
  (in-module "Gst")
  (c-name "GstAudioFormat")
  (values
    '("unknown" "GST_AUDIO_FORMAT_UNKNOWN" "0")
    '("encoded" "GST_AUDIO_FORMAT_ENCODED" "1")
    '("s8" "GST_AUDIO_FORMAT_S8" "2")
    '("u8" "GST_AUDIO_FORMAT_U8" "3")
    '("s16le" "GST_AUDIO_FORMAT_S16LE" "4")
    '("s16be" "GST_AUDIO_FORMAT_S16BE" "5")
    '("u16le" "GST_AUDIO_FORMAT_U16LE" "6")
    '("u16be" "GST_AUDIO_FORMAT_U16BE" "7")
    '("s24-32le" "GST_AUDIO_FORMAT_S24_32LE" "8")
    '("s24-32be" "GST_AUDIO_FORMAT_S24_32BE" "9")
    '("u24-32le" "GST_AUDIO_FORMAT_U24_32LE" "10")
    '("u24-32be" "GST_AUDIO_FORMAT_U24_32BE" "11")
    '("s32le" "GST_AUDIO_FORMAT_S32LE" "12")
    '("s32be" "GST_AUDIO_FORMAT_S32BE" "13")
    '("u32le" "GST_AUDIO_FORMAT_U32LE" "14")
    '("u32be" "GST_AUDIO_FORMAT_U32BE" "15")
    '("s24le" "GST_AUDIO_FORMAT_S24LE" "16")
    '("s24be" "GST_AUDIO_FORMAT_S24BE" "17")
    '("u24le" "GST_AUDIO_FORMAT_U24LE" "18")
    '("u24be" "GST_AUDIO_FORMAT_U24BE" "19")
    '("s20le" "GST_AUDIO_FORMAT_S20LE" "20")
    '("s20be" "GST_AUDIO_FORMAT_S20BE" "21")
    '("u20le" "GST_AUDIO_FORMAT_U20LE" "22")
    '("u20be" "GST_AUDIO_FORMAT_U20BE" "23")
    '("s18le" "GST_AUDIO_FORMAT_S18LE" "24")
    '("s18be" "GST_AUDIO_FORMAT_S18BE" "25")
    '("u18le" "GST_AUDIO_FORMAT_U18LE" "26")
    '("u18be" "GST_AUDIO_FORMAT_U18BE" "27")
    '("f32le" "GST_AUDIO_FORMAT_F32LE" "28")
    '("f32be" "GST_AUDIO_FORMAT_F32BE" "29")
    '("f64le" "GST_AUDIO_FORMAT_F64LE" "30")
    '("f64be" "GST_AUDIO_FORMAT_F64BE" "31")
    '("s16" "GST_AUDIO_FORMAT_S16" "_GST_AUDIO_FORMAT_NE(S16)")
    '("u16" "GST_AUDIO_FORMAT_U16" "_GST_AUDIO_FORMAT_NE(U16)")
    '("s24-32" "GST_AUDIO_FORMAT_S24_32" "_GST_AUDIO_FORMAT_NE(S24_32)")
    '("u24-32" "GST_AUDIO_FORMAT_U24_32" "_GST_AUDIO_FORMAT_NE(U24_32)")
    '("s32" "GST_AUDIO_FORMAT_S32" "_GST_AUDIO_FORMAT_NE(S32)")
    '("u32" "GST_AUDIO_FORMAT_U32" "_GST_AUDIO_FORMAT_NE(U32)")
    '("s24" "GST_AUDIO_FORMAT_S24" "_GST_AUDIO_FORMAT_NE(S24)")
    '("u24" "GST_AUDIO_FORMAT_U24" "_GST_AUDIO_FORMAT_NE(U24)")
    '("s20" "GST_AUDIO_FORMAT_S20" "_GST_AUDIO_FORMAT_NE(S20)")
    '("u20" "GST_AUDIO_FORMAT_U20" "_GST_AUDIO_FORMAT_NE(U20)")
    '("s18" "GST_AUDIO_FORMAT_S18" "_GST_AUDIO_FORMAT_NE(S18)")
    '("u18" "GST_AUDIO_FORMAT_U18" "_GST_AUDIO_FORMAT_NE(U18)")
    '("f32" "GST_AUDIO_FORMAT_F32" "_GST_AUDIO_FORMAT_NE(F32)")
    '("f64" "GST_AUDIO_FORMAT_F64" "_GST_AUDIO_FORMAT_NE(F64)")
  )
)

;; Original typedef:
;; typedef enum
;; {
;;   GST_AUDIO_FORMAT_FLAG_INTEGER  = (1 << 0),
;;   GST_AUDIO_FORMAT_FLAG_FLOAT    = (1 << 1),
;;   GST_AUDIO_FORMAT_FLAG_SIGNED   = (1 << 2),
;;   GST_AUDIO_FORMAT_FLAG_COMPLEX  = (1 << 4),
;;   GST_AUDIO_FORMAT_FLAG_UNPACK   = (1 << 5)
;; } GstAudioFormatFlags;

(define-flags-extended AudioFormatFlags
  (in-module "Gst")
  (c-name "GstAudioFormatFlags")
  (values
    '("integer" "GST_AUDIO_FORMAT_FLAG_INTEGER" "(1 << 0)")
    '("float" "GST_AUDIO_FORMAT_FLAG_FLOAT" "(1 << 1)")
    '("signed" "GST_AUDIO_FORMAT_FLAG_SIGNED" "(1 << 2)")
    '("complex" "GST_AUDIO_FORMAT_FLAG_COMPLEX" "(1 << 4)")
    '("unpack" "GST_AUDIO_FORMAT_FLAG_UNPACK" "(1 << 5)")
  )
)

;; Original typedef:
;; typedef enum
;; {
;;   GST_AUDIO_PACK_FLAG_NONE       = 0
;; } GstAudioPackFlags;

(define-flags-extended AudioPackFlags
  (in-module "Gst")
  (c-name "GstAudioPackFlags")
  (values
    '("none" "GST_AUDIO_PACK_FLAG_NONE" "0x0")
  )
)

;; From audio-info.h

;; Original typedef:
;; typedef enum {
;;   GST_AUDIO_FLAG_NONE              = 0,
;;   GST_AUDIO_FLAG_UNPOSITIONED      = (1 << 0)
;; } GstAudioFlags;

(define-flags-extended AudioFlags
  (in-module "Gst")
  (c-name "GstAudioFlags")
  (values
    '("none" "GST_AUDIO_FLAG_NONE" "0x0")
    '("unpositioned" "GST_AUDIO_FLAG_UNPOSITIONED" "(1 << 0)")
  )
)

;; Original typedef:
;; typedef enum {
;;   GST_AUDIO_LAYOUT_INTERLEAVED = 0,
;;   GST_AUDIO_LAYOUT_NON_INTERLEAVED
;; } GstAudioLayout;

(define-enum-extended AudioLayout
  (in-module "Gst")
  (c-name "GstAudioLayout")
  (values
    '("interleaved" "GST_AUDIO_LAYOUT_INTERLEAVED" "0")
    '("non-interleaved" "GST_AUDIO_LAYOUT_NON_INTERLEAVED" "1")
  )
)

;; From gstaudiobasesink.h

;; Original typedef:
;; typedef enum
;; {
;;   GST_AUDIO_BASE_SINK_SLAVE_RESAMPLE,
;;   GST_AUDIO_BASE_SINK_SLAVE_SKEW,
;;   GST_AUDIO_BASE_SINK_SLAVE_NONE
;; } GstAudioBaseSinkSlaveMethod;

(define-enum-extended AudioBaseSinkSlaveMethod
  (in-module "Gst")
  (c-name "GstAudioBaseSinkSlaveMethod")
  (values
    '("resample" "GST_AUDIO_BASE_SINK_SLAVE_RESAMPLE" "0")
    '("skew" "GST_AUDIO_BASE_SINK_SLAVE_SKEW" "1")
    '("none" "GST_AUDIO_BASE_SINK_SLAVE_NONE" "2")
  )
)

;; From gstaudiobasesrc.h

;; Original typedef:
;; typedef enum
;; {
;;   GST_AUDIO_BASE_SRC_SLAVE_RESAMPLE,
;;   GST_AUDIO_BASE_SRC_SLAVE_RETIMESTAMP,
;;   GST_AUDIO_BASE_SRC_SLAVE_SKEW,
;;   GST_AUDIO_BASE_SRC_SLAVE_NONE
;; } GstAudioBaseSrcSlaveMethod;

(define-enum-extended AudioBaseSrcSlaveMethod
  (in-module "Gst")
  (c-name "GstAudioBaseSrcSlaveMethod")
  (values
    '("resample" "GST_AUDIO_BASE_SRC_SLAVE_RESAMPLE" "0")
    '("retimestamp" "GST_AUDIO_BASE_SRC_SLAVE_RETIMESTAMP" "1")
    '("skew" "GST_AUDIO_BASE_SRC_SLAVE_SKEW" "2")
    '("none" "GST_AUDIO_BASE_SRC_SLAVE_NONE" "3")
  )
)

;; From gstaudiocdsrc.h

;; Original typedef:
;; typedef enum {
;;   GST_AUDIO_CD_SRC_MODE_NORMAL,          /* stream = one track  */
;;   GST_AUDIO_CD_SRC_MODE_CONTINUOUS       /* stream = whole disc */
;; } GstAudioCdSrcMode;

(define-enum-extended AudioCdSrcMode
  (in-module "Gst")
  (c-name "GstAudioCdSrcMode")
  (values
    '("normal" "GST_AUDIO_CD_SRC_MODE_NORMAL" "0")
    '("continuous" "GST_AUDIO_CD_SRC_MODE_CONTINUOUS" "1")
  )
)

;; From gstaudioringbuffer.h

;; Original typedef:
;; typedef enum {
;;   GST_AUDIO_RING_BUFFER_STATE_STOPPED,
;;   GST_AUDIO_RING_BUFFER_STATE_PAUSED,
;;   GST_AUDIO_RING_BUFFER_STATE_STARTED
;; } GstAudioRingBufferState;

(define-enum-extended AudioRingBufferState
  (in-module "Gst")
  (c-name "GstAudioRingBufferState")
  (values
    '("stopped" "GST_AUDIO_RING_BUFFER_STATE_STOPPED" "0")
    '("paused" "GST_AUDIO_RING_BUFFER_STATE_PAUSED" "1")
    '("started" "GST_AUDIO_RING_BUFFER_STATE_STARTED" "2")
  )
)

;; Original typedef:
;; typedef enum
;; {
;;   GST_AUDIO_RING_BUFFER_FORMAT_TYPE_RAW,
;;   GST_AUDIO_RING_BUFFER_FORMAT_TYPE_MU_LAW,
;;   GST_AUDIO_RING_BUFFER_FORMAT_TYPE_A_LAW,
;;   GST_AUDIO_RING_BUFFER_FORMAT_TYPE_IMA_ADPCM,
;;   GST_AUDIO_RING_BUFFER_FORMAT_TYPE_MPEG,
;;   GST_AUDIO_RING_BUFFER_FORMAT_TYPE_GSM,
;;   GST_AUDIO_RING_BUFFER_FORMAT_TYPE_IEC958,
;;   GST_AUDIO_RING_BUFFER_FORMAT_TYPE_AC3,
;;   GST_AUDIO_RING_BUFFER_FORMAT_TYPE_EAC3,
;;   GST_AUDIO_RING_BUFFER_FORMAT_TYPE_DTS,
;;   GST_AUDIO_RING_BUFFER_FORMAT_TYPE_MPEG2_AAC,
;;   GST_AUDIO_RING_BUFFER_FORMAT_TYPE_MPEG4_AAC
;; } GstAudioRingBufferFormatType;

(define-enum-extended AudioRingBufferFormatType
  (in-module "Gst")
  (c-name "GstAudioRingBufferFormatType")
  (values
    '("raw" "GST_AUDIO_RING_BUFFER_FORMAT_TYPE_RAW" "0")
    '("mu-law" "GST_AUDIO_RING_BUFFER_FORMAT_TYPE_MU_LAW" "1")
    '("a-law" "GST_AUDIO_RING_BUFFER_FORMAT_TYPE_A_LAW" "2")
    '("ima-adpcm" "GST_AUDIO_RING_BUFFER_FORMAT_TYPE_IMA_ADPCM" "3")
    '("mpeg" "GST_AUDIO_RING_BUFFER_FORMAT_TYPE_MPEG" "4")
    '("gsm" "GST_AUDIO_RING_BUFFER_FORMAT_TYPE_GSM" "5")
    '("iec958" "GST_AUDIO_RING_BUFFER_FORMAT_TYPE_IEC958" "6")
    '("ac3" "GST_AUDIO_RING_BUFFER_FORMAT_TYPE_AC3" "7")
    '("eac3" "GST_AUDIO_RING_BUFFER_FORMAT_TYPE_EAC3" "8")
    '("dts" "GST_AUDIO_RING_BUFFER_FORMAT_TYPE_DTS" "9")
    '("mpeg2-aac" "GST_AUDIO_RING_BUFFER_FORMAT_TYPE_MPEG2_AAC" "10")
    '("mpeg4-aac" "GST_AUDIO_RING_BUFFER_FORMAT_TYPE_MPEG4_AAC" "11")
  )
)

;; From streamvolume.h

;; Original typedef:
;; typedef enum {
;;   GST_STREAM_VOLUME_FORMAT_LINEAR = 0,
;;   GST_STREAM_VOLUME_FORMAT_CUBIC,
;;   GST_STREAM_VOLUME_FORMAT_DB
;; } GstStreamVolumeFormat;

(define-enum-extended StreamVolumeFormat
  (in-module "Gst")
  (c-name "GstStreamVolumeFormat")
  (values
    '("linear" "GST_STREAM_VOLUME_FORMAT_LINEAR" "0")
    '("cubic" "GST_STREAM_VOLUME_FORMAT_CUBIC" "1")
    '("db" "GST_STREAM_VOLUME_FORMAT_DB" "2")
  )
)

;; From gstfft.h

;; Original typedef:
;; typedef enum
;; {
;;   GST_FFT_WINDOW_RECTANGULAR,
;;   GST_FFT_WINDOW_HAMMING,
;;   GST_FFT_WINDOW_HANN,
;;   GST_FFT_WINDOW_BARTLETT,
;;   GST_FFT_WINDOW_BLACKMAN
;; } GstFFTWindow;

(define-enum-extended FFTWindow
  (in-module "Gst")
  (c-name "GstFFTWindow")
  (values
    '("rectangular" "GST_FFT_WINDOW_RECTANGULAR" "0")
    '("hamming" "GST_FFT_WINDOW_HAMMING" "1")
    '("hann" "GST_FFT_WINDOW_HANN" "2")
    '("bartlett" "GST_FFT_WINDOW_BARTLETT" "3")
    '("blackman" "GST_FFT_WINDOW_BLACKMAN" "4")
  )
)

;; From gstdiscoverer.h

;; Original typedef:
;; typedef enum {
;;   GST_DISCOVERER_OK               = 0,
;;   GST_DISCOVERER_URI_INVALID      = 1,
;;   GST_DISCOVERER_ERROR            = 2,
;;   GST_DISCOVERER_TIMEOUT          = 3,
;;   GST_DISCOVERER_BUSY             = 4,
;;   GST_DISCOVERER_MISSING_PLUGINS  = 5
;; } GstDiscovererResult;

(define-enum-extended DiscovererResult
  (in-module "Gst")
  (c-name "GstDiscovererResult")
  (values
    '("ok" "GST_DISCOVERER_OK" "0")
    '("uri-invalid" "GST_DISCOVERER_URI_INVALID" "1")
    '("error" "GST_DISCOVERER_ERROR" "2")
    '("timeout" "GST_DISCOVERER_TIMEOUT" "3")
    '("busy" "GST_DISCOVERER_BUSY" "4")
    '("missing-plugins" "GST_DISCOVERER_MISSING_PLUGINS" "5")
  )
)

;; From install-plugins.h

;; Original typedef:
;; typedef enum {
;;   /* Return codes from the installer. Returned by gst_install_plugins_sync(),
;;    * or passed as result code to your #GstInstallPluginsResultFunc */
;;   GST_INSTALL_PLUGINS_SUCCESS = 0,
;;   GST_INSTALL_PLUGINS_NOT_FOUND = 1,
;;   GST_INSTALL_PLUGINS_ERROR = 2,
;;   GST_INSTALL_PLUGINS_PARTIAL_SUCCESS = 3,
;;   GST_INSTALL_PLUGINS_USER_ABORT = 4,
;; 
;;   /* Returned by gst_install_plugins_sync(), or passed as result code to your
;;    * #GstInstallPluginsResultFunc */
;;   GST_INSTALL_PLUGINS_CRASHED = 100,
;;   GST_INSTALL_PLUGINS_INVALID,
;; 
;;   /* Return codes from starting the external helper, may be returned by both
;;    * gst_install_plugins_sync() and gst_install_plugins_async(), but should
;;    * never be seen by a #GstInstallPluginsResultFunc */
;;   GST_INSTALL_PLUGINS_STARTED_OK = 200,
;;   GST_INSTALL_PLUGINS_INTERNAL_FAILURE,
;;   GST_INSTALL_PLUGINS_HELPER_MISSING,
;;   GST_INSTALL_PLUGINS_INSTALL_IN_PROGRESS
;; } GstInstallPluginsReturn;

(define-enum-extended InstallPluginsReturn
  (in-module "Gst")
  (c-name "GstInstallPluginsReturn")
  (values
    '("success" "GST_INSTALL_PLUGINS_SUCCESS" "0")
    '("not-found" "GST_INSTALL_PLUGINS_NOT_FOUND" "1")
    '("error" "GST_INSTALL_PLUGINS_ERROR" "2")
    '("partial-success" "GST_INSTALL_PLUGINS_PARTIAL_SUCCESS" "3")
    '("user-abort" "GST_INSTALL_PLUGINS_USER_ABORT" "4")
    '("crashed" "GST_INSTALL_PLUGINS_CRASHED" "100")
    '("invalid" "GST_INSTALL_PLUGINS_INVALID" "101")
    '("started-ok" "GST_INSTALL_PLUGINS_STARTED_OK" "200")
    '("internal-failure" "GST_INSTALL_PLUGINS_INTERNAL_FAILURE" "201")
    '("helper-missing" "GST_INSTALL_PLUGINS_HELPER_MISSING" "202")
    '("install-in-progress" "GST_INSTALL_PLUGINS_INSTALL_IN_PROGRESS" "203")
  )
)

;; From gstrtcpbuffer.h

;; Original typedef:
;; typedef enum
;; {
;;   GST_RTCP_TYPE_INVALID = 0,
;;   GST_RTCP_TYPE_SR      = 200,
;;   GST_RTCP_TYPE_RR      = 201,
;;   GST_RTCP_TYPE_SDES    = 202,
;;   GST_RTCP_TYPE_BYE     = 203,
;;   GST_RTCP_TYPE_APP     = 204,
;;   GST_RTCP_TYPE_RTPFB   = 205,
;;   GST_RTCP_TYPE_PSFB    = 206
;; } GstRTCPType;

(define-enum-extended RTCPType
  (in-module "Gst")
  (c-name "GstRTCPType")
  (values
    '("invalid" "GST_RTCP_TYPE_INVALID" "0")
    '("sr" "GST_RTCP_TYPE_SR" "200")
    '("rr" "GST_RTCP_TYPE_RR" "201")
    '("sdes" "GST_RTCP_TYPE_SDES" "202")
    '("bye" "GST_RTCP_TYPE_BYE" "203")
    '("app" "GST_RTCP_TYPE_APP" "204")
    '("rtpfb" "GST_RTCP_TYPE_RTPFB" "205")
    '("psfb" "GST_RTCP_TYPE_PSFB" "206")
  )
)

;; Original typedef:
;; typedef enum
;; {
;;   /* generic */
;;   GST_RTCP_FB_TYPE_INVALID    = 0,
;;   /* RTPFB types */
;;   GST_RTCP_RTPFB_TYPE_NACK    = 1,
;;   /* RTPFB types assigned in RFC 5104 */
;;   GST_RTCP_RTPFB_TYPE_TMMBR   = 3,
;;   GST_RTCP_RTPFB_TYPE_TMMBN   = 4,
;;   /* PSFB types */
;;   GST_RTCP_PSFB_TYPE_PLI      = 1,
;;   GST_RTCP_PSFB_TYPE_SLI      = 2,
;;   GST_RTCP_PSFB_TYPE_RPSI     = 3,
;;   GST_RTCP_PSFB_TYPE_AFB      = 15,
;;   /* PSFB types assigned in RFC 5104 */
;;   GST_RTCP_PSFB_TYPE_FIR      = 4,
;;   GST_RTCP_PSFB_TYPE_TSTR     = 5,
;;   GST_RTCP_PSFB_TYPE_TSTN     = 6,
;;   GST_RTCP_PSFB_TYPE_VBCN     = 7,
;; } GstRTCPFBType;

(define-enum-extended RTCPFBType
  (in-module "Gst")
  (c-name "GstRTCPFBType")
  (values
    '("fb-type-invalid" "GST_RTCP_FB_TYPE_INVALID" "0")
    '("rtpfb-type-nack" "GST_RTCP_RTPFB_TYPE_NACK" "1")
    '("rtpfb-type-tmmbr" "GST_RTCP_RTPFB_TYPE_TMMBR" "3")
    '("rtpfb-type-tmmbn" "GST_RTCP_RTPFB_TYPE_TMMBN" "4")
    '("psfb-type-pli" "GST_RTCP_PSFB_TYPE_PLI" "1")
    '("psfb-type-sli" "GST_RTCP_PSFB_TYPE_SLI" "2")
    '("psfb-type-rpsi" "GST_RTCP_PSFB_TYPE_RPSI" "3")
    '("psfb-type-afb" "GST_RTCP_PSFB_TYPE_AFB" "15")
    '("psfb-type-fir" "GST_RTCP_PSFB_TYPE_FIR" "4")
    '("psfb-type-tstr" "GST_RTCP_PSFB_TYPE_TSTR" "5")
    '("psfb-type-tstn" "GST_RTCP_PSFB_TYPE_TSTN" "6")
    '("psfb-type-vbcn" "GST_RTCP_PSFB_TYPE_VBCN" "7")
  )
)

;; Original typedef:
;; typedef enum
;; {
;;   GST_RTCP_SDES_INVALID  = -1,
;;   GST_RTCP_SDES_END      = 0,
;;   GST_RTCP_SDES_CNAME    = 1,
;;   GST_RTCP_SDES_NAME     = 2,
;;   GST_RTCP_SDES_EMAIL    = 3,
;;   GST_RTCP_SDES_PHONE    = 4,
;;   GST_RTCP_SDES_LOC      = 5,
;;   GST_RTCP_SDES_TOOL     = 6,
;;   GST_RTCP_SDES_NOTE     = 7,
;;   GST_RTCP_SDES_PRIV     = 8
;; } GstRTCPSDESType;

(define-enum-extended RTCPSDESType
  (in-module "Gst")
  (c-name "GstRTCPSDESType")
  (values
    '("invalid" "GST_RTCP_SDES_INVALID" "-1")
    '("end" "GST_RTCP_SDES_END" "0")
    '("cname" "GST_RTCP_SDES_CNAME" "1")
    '("name" "GST_RTCP_SDES_NAME" "2")
    '("email" "GST_RTCP_SDES_EMAIL" "3")
    '("phone" "GST_RTCP_SDES_PHONE" "4")
    '("loc" "GST_RTCP_SDES_LOC" "5")
    '("tool" "GST_RTCP_SDES_TOOL" "6")
    '("note" "GST_RTCP_SDES_NOTE" "7")
    '("priv" "GST_RTCP_SDES_PRIV" "8")
  )
)

;; From gstrtppayloads.h

;; Original typedef:
;; typedef enum
;; {
;;   /* Audio: */
;;   GST_RTP_PAYLOAD_PCMU = 0,
;;   GST_RTP_PAYLOAD_1016 = 1, /* RFC 3551 says reserved */
;;   GST_RTP_PAYLOAD_G721 = 2, /* RFC 3551 says reserved */
;;   GST_RTP_PAYLOAD_GSM = 3,
;;   GST_RTP_PAYLOAD_G723 = 4,
;;   GST_RTP_PAYLOAD_DVI4_8000 = 5,
;;   GST_RTP_PAYLOAD_DVI4_16000 = 6,
;;   GST_RTP_PAYLOAD_LPC = 7,
;;   GST_RTP_PAYLOAD_PCMA = 8,
;;   GST_RTP_PAYLOAD_G722 = 9,
;;   GST_RTP_PAYLOAD_L16_STEREO = 10,
;;   GST_RTP_PAYLOAD_L16_MONO = 11,
;;   GST_RTP_PAYLOAD_QCELP = 12,
;;   GST_RTP_PAYLOAD_CN = 13,
;;   GST_RTP_PAYLOAD_MPA = 14,
;;   GST_RTP_PAYLOAD_G728 = 15,
;;   GST_RTP_PAYLOAD_DVI4_11025 = 16,
;;   GST_RTP_PAYLOAD_DVI4_22050 = 17,
;;   GST_RTP_PAYLOAD_G729 = 18,
;; 
;;   /* Video: */
;; 
;;   GST_RTP_PAYLOAD_CELLB = 25,
;;   GST_RTP_PAYLOAD_JPEG = 26,
;;   GST_RTP_PAYLOAD_NV = 28,
;;   GST_RTP_PAYLOAD_H261 = 31,
;;   GST_RTP_PAYLOAD_MPV = 32,
;;   GST_RTP_PAYLOAD_MP2T = 33,
;;   GST_RTP_PAYLOAD_H263 = 34,
;; 
;;   /* BOTH */
;; } GstRTPPayload;

(define-enum-extended RTPPayload
  (in-module "Gst")
  (c-name "GstRTPPayload")
  (values
    '("pcmu" "GST_RTP_PAYLOAD_PCMU" "0")
    '("1016" "GST_RTP_PAYLOAD_1016" "1")
    '("g721" "GST_RTP_PAYLOAD_G721" "2")
    '("gsm" "GST_RTP_PAYLOAD_GSM" "3")
    '("g723" "GST_RTP_PAYLOAD_G723" "4")
    '("dvi4-8000" "GST_RTP_PAYLOAD_DVI4_8000" "5")
    '("dvi4-16000" "GST_RTP_PAYLOAD_DVI4_16000" "6")
    '("lpc" "GST_RTP_PAYLOAD_LPC" "7")
    '("pcma" "GST_RTP_PAYLOAD_PCMA" "8")
    '("g722" "GST_RTP_PAYLOAD_G722" "9")
    '("l16-stereo" "GST_RTP_PAYLOAD_L16_STEREO" "10")
    '("l16-mono" "GST_RTP_PAYLOAD_L16_MONO" "11")
    '("qcelp" "GST_RTP_PAYLOAD_QCELP" "12")
    '("cn" "GST_RTP_PAYLOAD_CN" "13")
    '("mpa" "GST_RTP_PAYLOAD_MPA" "14")
    '("g728" "GST_RTP_PAYLOAD_G728" "15")
    '("dvi4-11025" "GST_RTP_PAYLOAD_DVI4_11025" "16")
    '("dvi4-22050" "GST_RTP_PAYLOAD_DVI4_22050" "17")
    '("g729" "GST_RTP_PAYLOAD_G729" "18")
    '("cellb" "GST_RTP_PAYLOAD_CELLB" "25")
    '("jpeg" "GST_RTP_PAYLOAD_JPEG" "26")
    '("nv" "GST_RTP_PAYLOAD_NV" "28")
    '("h261" "GST_RTP_PAYLOAD_H261" "31")
    '("mpv" "GST_RTP_PAYLOAD_MPV" "32")
    '("mp2t" "GST_RTP_PAYLOAD_MP2T" "33")
    '("h263" "GST_RTP_PAYLOAD_H263" "34")
  )
)

;; From gstrtspdefs.h

;; Original typedef:
;; typedef enum {
;;   GST_RTSP_OK          =  0,
;;   /* errors */
;;   GST_RTSP_ERROR       = -1,
;;   GST_RTSP_EINVAL      = -2,
;;   GST_RTSP_EINTR       = -3,
;;   GST_RTSP_ENOMEM      = -4,
;;   GST_RTSP_ERESOLV     = -5,
;;   GST_RTSP_ENOTIMPL    = -6,
;;   GST_RTSP_ESYS        = -7,
;;   GST_RTSP_EPARSE      = -8,
;;   GST_RTSP_EWSASTART   = -9,
;;   GST_RTSP_EWSAVERSION = -10,
;;   GST_RTSP_EEOF        = -11,
;;   GST_RTSP_ENET        = -12,
;;   GST_RTSP_ENOTIP      = -13,
;;   GST_RTSP_ETIMEOUT    = -14,
;;   GST_RTSP_ETGET       = -15,
;;   GST_RTSP_ETPOST      = -16,
;; 
;;   GST_RTSP_ELAST       = -17
;; } GstRTSPResult;

(define-enum-extended RTSPResult
  (in-module "Gst")
  (c-name "GstRTSPResult")
  (values
    '("ok" "GST_RTSP_OK" "0")
    '("error" "GST_RTSP_ERROR" "-1")
    '("einval" "GST_RTSP_EINVAL" "-2")
    '("eintr" "GST_RTSP_EINTR" "-3")
    '("enomem" "GST_RTSP_ENOMEM" "-4")
    '("eresolv" "GST_RTSP_ERESOLV" "-5")
    '("enotimpl" "GST_RTSP_ENOTIMPL" "-6")
    '("esys" "GST_RTSP_ESYS" "-7")
    '("eparse" "GST_RTSP_EPARSE" "-8")
    '("ewsastart" "GST_RTSP_EWSASTART" "-9")
    '("ewsaversion" "GST_RTSP_EWSAVERSION" "-10")
    '("eeof" "GST_RTSP_EEOF" "-11")
    '("enet" "GST_RTSP_ENET" "-12")
    '("enotip" "GST_RTSP_ENOTIP" "-13")
    '("etimeout" "GST_RTSP_ETIMEOUT" "-14")
    '("etget" "GST_RTSP_ETGET" "-15")
    '("etpost" "GST_RTSP_ETPOST" "-16")
    '("elast" "GST_RTSP_ELAST" "-17")
  )
)

;; Original typedef:
;; typedef enum {
;;   GST_RTSP_EV_READ  = (1 << 0),
;;   GST_RTSP_EV_WRITE = (1 << 1)
;; } GstRTSPEvent;

(define-flags-extended RTSPEvent
  (in-module "Gst")
  (c-name "GstRTSPEvent")
  (values
    '("read" "GST_RTSP_EV_READ" "(1 << 0)")
    '("write" "GST_RTSP_EV_WRITE" "(1 << 1)")
  )
)

;; Original typedef:
;; typedef enum {
;;   GST_RTSP_FAM_NONE,
;;   GST_RTSP_FAM_INET,
;;   GST_RTSP_FAM_INET6
;; } GstRTSPFamily;

(define-enum-extended RTSPFamily
  (in-module "Gst")
  (c-name "GstRTSPFamily")
  (values
    '("none" "GST_RTSP_FAM_NONE" "0")
    '("inet" "GST_RTSP_FAM_INET" "1")
    '("inet6" "GST_RTSP_FAM_INET6" "2")
  )
)

;; Original typedef:
;; typedef enum {
;;   GST_RTSP_STATE_INVALID,
;;   GST_RTSP_STATE_INIT,
;;   GST_RTSP_STATE_READY,
;;   GST_RTSP_STATE_SEEKING,
;;   GST_RTSP_STATE_PLAYING,
;;   GST_RTSP_STATE_RECORDING
;; } GstRTSPState;

(define-enum-extended RTSPState
  (in-module "Gst")
  (c-name "GstRTSPState")
  (values
    '("invalid" "GST_RTSP_STATE_INVALID" "0")
    '("init" "GST_RTSP_STATE_INIT" "1")
    '("ready" "GST_RTSP_STATE_READY" "2")
    '("seeking" "GST_RTSP_STATE_SEEKING" "3")
    '("playing" "GST_RTSP_STATE_PLAYING" "4")
    '("recording" "GST_RTSP_STATE_RECORDING" "5")
  )
)

;; Original typedef:
;; typedef enum {
;;   GST_RTSP_VERSION_INVALID = 0x00,
;;   GST_RTSP_VERSION_1_0     = 0x10,
;;   GST_RTSP_VERSION_1_1     = 0x11
;; } GstRTSPVersion;

(define-flags-extended RTSPVersion
  (in-module "Gst")
  (c-name "GstRTSPVersion")
  (values
    '("invalid" "GST_RTSP_VERSION_INVALID" "0x00")
    '("1-0" "GST_RTSP_VERSION_1_0" "0x10")
    '("1-1" "GST_RTSP_VERSION_1_1" "0x11")
  )
)

;; Original typedef:
;; typedef enum {
;;   GST_RTSP_INVALID          = 0,
;;   GST_RTSP_DESCRIBE         = (1 <<  0),
;;   GST_RTSP_ANNOUNCE         = (1 <<  1),
;;   GST_RTSP_GET_PARAMETER    = (1 <<  2),
;;   GST_RTSP_OPTIONS          = (1 <<  3),
;;   GST_RTSP_PAUSE            = (1 <<  4),
;;   GST_RTSP_PLAY             = (1 <<  5),
;;   GST_RTSP_RECORD           = (1 <<  6),
;;   GST_RTSP_REDIRECT         = (1 <<  7),
;;   GST_RTSP_SETUP            = (1 <<  8),
;;   GST_RTSP_SET_PARAMETER    = (1 <<  9),
;;   GST_RTSP_TEARDOWN         = (1 << 10),
;;   GST_RTSP_GET              = (1 << 11),
;;   GST_RTSP_POST             = (1 << 12)
;; } GstRTSPMethod;

(define-flags-extended RTSPMethod
  (in-module "Gst")
  (c-name "GstRTSPMethod")
  (values
    '("invalid" "GST_RTSP_INVALID" "0x0")
    '("describe" "GST_RTSP_DESCRIBE" "(1 << 0)")
    '("announce" "GST_RTSP_ANNOUNCE" "(1 << 1)")
    '("get-parameter" "GST_RTSP_GET_PARAMETER" "(1 << 2)")
    '("options" "GST_RTSP_OPTIONS" "(1 << 3)")
    '("pause" "GST_RTSP_PAUSE" "(1 << 4)")
    '("play" "GST_RTSP_PLAY" "(1 << 5)")
    '("record" "GST_RTSP_RECORD" "(1 << 6)")
    '("redirect" "GST_RTSP_REDIRECT" "(1 << 7)")
    '("setup" "GST_RTSP_SETUP" "(1 << 8)")
    '("set-parameter" "GST_RTSP_SET_PARAMETER" "(1 << 9)")
    '("teardown" "GST_RTSP_TEARDOWN" "(1 << 10)")
    '("get" "GST_RTSP_GET" "(1 << 11)")
    '("post" "GST_RTSP_POST" "(1 << 12)")
  )
)

;; Original typedef:
;; typedef enum {
;;   GST_RTSP_AUTH_NONE    = 0x00,
;;   GST_RTSP_AUTH_BASIC   = 0x01,
;;   GST_RTSP_AUTH_DIGEST  = 0x02
;; } GstRTSPAuthMethod;

(define-flags-extended RTSPAuthMethod
  (in-module "Gst")
  (c-name "GstRTSPAuthMethod")
  (values
    '("none" "GST_RTSP_AUTH_NONE" "0x00")
    '("basic" "GST_RTSP_AUTH_BASIC" "0x01")
    '("digest" "GST_RTSP_AUTH_DIGEST" "0x02")
  )
)

;; Original typedef:
;; typedef enum {
;;   GST_RTSP_HDR_INVALID,
;; 
;;   /*
;;    * R = Request
;;    * r = response
;;    * g = general
;;    * e = entity
;;    */
;;   GST_RTSP_HDR_ACCEPT,              /* Accept               R      opt.      entity */
;;   GST_RTSP_HDR_ACCEPT_ENCODING,     /* Accept-Encoding      R      opt.      entity */
;;   GST_RTSP_HDR_ACCEPT_LANGUAGE,     /* Accept-Language      R      opt.      all */
;;   GST_RTSP_HDR_ALLOW,               /* Allow                r      opt.      all */
;;   GST_RTSP_HDR_AUTHORIZATION,       /* Authorization        R      opt.      all */
;;   GST_RTSP_HDR_BANDWIDTH,           /* Bandwidth            R      opt.      all */
;;   GST_RTSP_HDR_BLOCKSIZE,           /* Blocksize            R      opt.      all but OPTIONS, TEARDOWN */
;;   GST_RTSP_HDR_CACHE_CONTROL,       /* Cache-Control        g      opt.      SETUP */
;;   GST_RTSP_HDR_CONFERENCE,          /* Conference           R      opt.      SETUP */
;;   GST_RTSP_HDR_CONNECTION,          /* Connection           g      req.      all */
;;   GST_RTSP_HDR_CONTENT_BASE,        /* Content-Base         e      opt.      entity */
;;   GST_RTSP_HDR_CONTENT_ENCODING,    /* Content-Encoding     e      req.      SET_PARAMETER, DESCRIBE, ANNOUNCE */
;;   GST_RTSP_HDR_CONTENT_LANGUAGE,    /* Content-Language     e      req.      DESCRIBE, ANNOUNCE */
;;   GST_RTSP_HDR_CONTENT_LENGTH,      /* Content-Length       e      req.      SET_PARAMETER, ANNOUNCE, entity */
;;   GST_RTSP_HDR_CONTENT_LOCATION,    /* Content-Location     e      opt.      entity */
;;   GST_RTSP_HDR_CONTENT_TYPE,        /* Content-Type         e      req.      SET_PARAMETER, ANNOUNCE, entity */
;;   GST_RTSP_HDR_CSEQ,                /* CSeq                 g      req.      all */
;;   GST_RTSP_HDR_DATE,                /* Date                 g      opt.      all */
;;   GST_RTSP_HDR_EXPIRES,             /* Expires              e      opt.      DESCRIBE, ANNOUNCE */
;;   GST_RTSP_HDR_FROM,                /* From                 R      opt.      all */
;;   GST_RTSP_HDR_IF_MODIFIED_SINCE,   /* If-Modified-Since    R      opt.      DESCRIBE, SETUP */
;;   GST_RTSP_HDR_LAST_MODIFIED,       /* Last-Modified        e      opt.      entity */
;;   GST_RTSP_HDR_PROXY_AUTHENTICATE,  /* Proxy-Authenticate */
;;   GST_RTSP_HDR_PROXY_REQUIRE,       /* Proxy-Require        R      req.      all */
;;   GST_RTSP_HDR_PUBLIC,              /* Public               r      opt.      all */
;;   GST_RTSP_HDR_RANGE,               /* Range                Rr     opt.      PLAY, PAUSE, RECORD */
;;   GST_RTSP_HDR_REFERER,             /* Referer              R      opt.      all */
;;   GST_RTSP_HDR_REQUIRE,             /* Require              R      req.      all */
;;   GST_RTSP_HDR_RETRY_AFTER,         /* Retry-After          r      opt.      all */
;;   GST_RTSP_HDR_RTP_INFO,            /* RTP-Info             r      req.      PLAY */
;;   GST_RTSP_HDR_SCALE,               /* Scale                Rr     opt.      PLAY, RECORD */
;;   GST_RTSP_HDR_SESSION,             /* Session              Rr     req.      all but SETUP, OPTIONS */
;;   GST_RTSP_HDR_SERVER,              /* Server               r      opt.      all */
;;   GST_RTSP_HDR_SPEED,               /* Speed                Rr     opt.      PLAY */
;;   GST_RTSP_HDR_TRANSPORT,           /* Transport            Rr     req.      SETUP */
;;   GST_RTSP_HDR_UNSUPPORTED,         /* Unsupported          r      req.      all */
;;   GST_RTSP_HDR_USER_AGENT,          /* User-Agent           R      opt.      all */
;;   GST_RTSP_HDR_VIA,                 /* Via                  g      opt.      all */
;;   GST_RTSP_HDR_WWW_AUTHENTICATE,    /* WWW-Authenticate     r      opt.      all */
;; 
;;   /* Real extensions */
;;   GST_RTSP_HDR_CLIENT_CHALLENGE,    /* ClientChallenge */
;;   GST_RTSP_HDR_REAL_CHALLENGE1,     /* RealChallenge1 */
;;   GST_RTSP_HDR_REAL_CHALLENGE2,     /* RealChallenge2 */
;;   GST_RTSP_HDR_REAL_CHALLENGE3,     /* RealChallenge3 */
;;   GST_RTSP_HDR_SUBSCRIBE,           /* Subscribe */
;;   GST_RTSP_HDR_ALERT,               /* Alert */
;;   GST_RTSP_HDR_CLIENT_ID,           /* ClientID */
;;   GST_RTSP_HDR_COMPANY_ID,          /* CompanyID */
;;   GST_RTSP_HDR_GUID,                /* GUID */
;;   GST_RTSP_HDR_REGION_DATA,         /* RegionData */
;;   GST_RTSP_HDR_MAX_ASM_WIDTH,       /* SupportsMaximumASMBandwidth */
;;   GST_RTSP_HDR_LANGUAGE,            /* Language */
;;   GST_RTSP_HDR_PLAYER_START_TIME,   /* PlayerStarttime */
;; 
;;   /* Since 0.10.16 */
;;   GST_RTSP_HDR_LOCATION,            /* Location */
;; 
;;   /* Since 0.10.23 */
;;   GST_RTSP_HDR_ETAG,                /* ETag */
;;   GST_RTSP_HDR_IF_MATCH,            /* If-Match */
;; 
;;   /* WM extensions [MS-RTSP] Since 0.10.23 */
;;   GST_RTSP_HDR_ACCEPT_CHARSET,      /* Accept-Charset */
;;   GST_RTSP_HDR_SUPPORTED,           /* Supported */
;;   GST_RTSP_HDR_VARY,                /* Vary */
;;   GST_RTSP_HDR_X_ACCELERATE_STREAMING,    /* X-Accelerate-Streaming */
;;   GST_RTSP_HDR_X_ACCEPT_AUTHENT,    /* X-Accept-Authentication */
;;   GST_RTSP_HDR_X_ACCEPT_PROXY_AUTHENT,    /* X-Accept-Proxy-Authentication */
;;   GST_RTSP_HDR_X_BROADCAST_ID,      /* X-Broadcast-Id */
;;   GST_RTSP_HDR_X_BURST_STREAMING,   /* X-Burst-Streaming */
;;   GST_RTSP_HDR_X_NOTICE,            /* X-Notice */
;;   GST_RTSP_HDR_X_PLAYER_LAG_TIME,   /* X-Player-Lag-Time */
;;   GST_RTSP_HDR_X_PLAYLIST,          /* X-Playlist */
;;   GST_RTSP_HDR_X_PLAYLIST_CHANGE_NOTICE,  /* X-Playlist-Change-Notice */
;;   GST_RTSP_HDR_X_PLAYLIST_GEN_ID,   /* X-Playlist-Gen-Id */
;;   GST_RTSP_HDR_X_PLAYLIST_SEEK_ID,  /* X-Playlist-Seek-Id */
;;   GST_RTSP_HDR_X_PROXY_CLIENT_AGENT,      /* X-Proxy-Client-Agent */
;;   GST_RTSP_HDR_X_PROXY_CLIENT_VERB, /* X-Proxy-Client-Verb */
;;   GST_RTSP_HDR_X_RECEDING_PLAYLISTCHANGE, /* X-Receding-PlaylistChange */
;;   GST_RTSP_HDR_X_RTP_INFO,          /* X-RTP-Info */
;;   GST_RTSP_HDR_X_STARTUPPROFILE,    /* X-StartupProfile */
;; 
;;   /* Since 0.10.24 */
;;   GST_RTSP_HDR_TIMESTAMP,           /* Timestamp */
;; 
;;   /* Since 0.10.25 */
;;   GST_RTSP_HDR_AUTHENTICATION_INFO, /* Authentication-Info */
;;   GST_RTSP_HDR_HOST,                /* Host */
;;   GST_RTSP_HDR_PRAGMA,              /* Pragma */
;;   GST_RTSP_HDR_X_SERVER_IP_ADDRESS, /* X-Server-IP-Address */
;;   GST_RTSP_HDR_X_SESSIONCOOKIE,     /* X-Sessioncookie */
;; 
;;   /* Since 0.10.36 */
;;   GST_RTSP_HDR_RTCP_INTERVAL,       /* RTCP-Interval */
;; 
;;   GST_RTSP_HDR_LAST
;; } GstRTSPHeaderField;

(define-enum-extended RTSPHeaderField
  (in-module "Gst")
  (c-name "GstRTSPHeaderField")
  (values
    '("invalid" "GST_RTSP_HDR_INVALID" "0")
    '("accept" "GST_RTSP_HDR_ACCEPT" "1")
    '("accept-encoding" "GST_RTSP_HDR_ACCEPT_ENCODING" "2")
    '("accept-language" "GST_RTSP_HDR_ACCEPT_LANGUAGE" "3")
    '("allow" "GST_RTSP_HDR_ALLOW" "4")
    '("authorization" "GST_RTSP_HDR_AUTHORIZATION" "5")
    '("bandwidth" "GST_RTSP_HDR_BANDWIDTH" "6")
    '("blocksize" "GST_RTSP_HDR_BLOCKSIZE" "7")
    '("cache-control" "GST_RTSP_HDR_CACHE_CONTROL" "8")
    '("conference" "GST_RTSP_HDR_CONFERENCE" "9")
    '("connection" "GST_RTSP_HDR_CONNECTION" "10")
    '("content-base" "GST_RTSP_HDR_CONTENT_BASE" "11")
    '("content-encoding" "GST_RTSP_HDR_CONTENT_ENCODING" "12")
    '("content-language" "GST_RTSP_HDR_CONTENT_LANGUAGE" "13")
    '("content-length" "GST_RTSP_HDR_CONTENT_LENGTH" "14")
    '("content-location" "GST_RTSP_HDR_CONTENT_LOCATION" "15")
    '("content-type" "GST_RTSP_HDR_CONTENT_TYPE" "16")
    '("cseq" "GST_RTSP_HDR_CSEQ" "17")
    '("date" "GST_RTSP_HDR_DATE" "18")
    '("expires" "GST_RTSP_HDR_EXPIRES" "19")
    '("from" "GST_RTSP_HDR_FROM" "20")
    '("if-modified-since" "GST_RTSP_HDR_IF_MODIFIED_SINCE" "21")
    '("last-modified" "GST_RTSP_HDR_LAST_MODIFIED" "22")
    '("proxy-authenticate" "GST_RTSP_HDR_PROXY_AUTHENTICATE" "23")
    '("proxy-require" "GST_RTSP_HDR_PROXY_REQUIRE" "24")
    '("public" "GST_RTSP_HDR_PUBLIC" "25")
    '("range" "GST_RTSP_HDR_RANGE" "26")
    '("referer" "GST_RTSP_HDR_REFERER" "27")
    '("require" "GST_RTSP_HDR_REQUIRE" "28")
    '("retry-after" "GST_RTSP_HDR_RETRY_AFTER" "29")
    '("rtp-info" "GST_RTSP_HDR_RTP_INFO" "30")
    '("scale" "GST_RTSP_HDR_SCALE" "31")
    '("session" "GST_RTSP_HDR_SESSION" "32")
    '("server" "GST_RTSP_HDR_SERVER" "33")
    '("speed" "GST_RTSP_HDR_SPEED" "34")
    '("transport" "GST_RTSP_HDR_TRANSPORT" "35")
    '("unsupported" "GST_RTSP_HDR_UNSUPPORTED" "36")
    '("user-agent" "GST_RTSP_HDR_USER_AGENT" "37")
    '("via" "GST_RTSP_HDR_VIA" "38")
    '("www-authenticate" "GST_RTSP_HDR_WWW_AUTHENTICATE" "39")
    '("client-challenge" "GST_RTSP_HDR_CLIENT_CHALLENGE" "40")
    '("real-challenge1" "GST_RTSP_HDR_REAL_CHALLENGE1" "41")
    '("real-challenge2" "GST_RTSP_HDR_REAL_CHALLENGE2" "42")
    '("real-challenge3" "GST_RTSP_HDR_REAL_CHALLENGE3" "43")
    '("subscribe" "GST_RTSP_HDR_SUBSCRIBE" "44")
    '("alert" "GST_RTSP_HDR_ALERT" "45")
    '("client-id" "GST_RTSP_HDR_CLIENT_ID" "46")
    '("company-id" "GST_RTSP_HDR_COMPANY_ID" "47")
    '("guid" "GST_RTSP_HDR_GUID" "48")
    '("region-data" "GST_RTSP_HDR_REGION_DATA" "49")
    '("max-asm-width" "GST_RTSP_HDR_MAX_ASM_WIDTH" "50")
    '("language" "GST_RTSP_HDR_LANGUAGE" "51")
    '("player-start-time" "GST_RTSP_HDR_PLAYER_START_TIME" "52")
    '("location" "GST_RTSP_HDR_LOCATION" "53")
    '("etag" "GST_RTSP_HDR_ETAG" "54")
    '("if-match" "GST_RTSP_HDR_IF_MATCH" "55")
    '("accept-charset" "GST_RTSP_HDR_ACCEPT_CHARSET" "56")
    '("supported" "GST_RTSP_HDR_SUPPORTED" "57")
    '("vary" "GST_RTSP_HDR_VARY" "58")
    '("x-accelerate-streaming" "GST_RTSP_HDR_X_ACCELERATE_STREAMING" "59")
    '("x-accept-authent" "GST_RTSP_HDR_X_ACCEPT_AUTHENT" "60")
    '("x-accept-proxy-authent" "GST_RTSP_HDR_X_ACCEPT_PROXY_AUTHENT" "61")
    '("x-broadcast-id" "GST_RTSP_HDR_X_BROADCAST_ID" "62")
    '("x-burst-streaming" "GST_RTSP_HDR_X_BURST_STREAMING" "63")
    '("x-notice" "GST_RTSP_HDR_X_NOTICE" "64")
    '("x-player-lag-time" "GST_RTSP_HDR_X_PLAYER_LAG_TIME" "65")
    '("x-playlist" "GST_RTSP_HDR_X_PLAYLIST" "66")
    '("x-playlist-change-notice" "GST_RTSP_HDR_X_PLAYLIST_CHANGE_NOTICE" "67")
    '("x-playlist-gen-id" "GST_RTSP_HDR_X_PLAYLIST_GEN_ID" "68")
    '("x-playlist-seek-id" "GST_RTSP_HDR_X_PLAYLIST_SEEK_ID" "69")
    '("x-proxy-client-agent" "GST_RTSP_HDR_X_PROXY_CLIENT_AGENT" "70")
    '("x-proxy-client-verb" "GST_RTSP_HDR_X_PROXY_CLIENT_VERB" "71")
    '("x-receding-playlistchange" "GST_RTSP_HDR_X_RECEDING_PLAYLISTCHANGE" "72")
    '("x-rtp-info" "GST_RTSP_HDR_X_RTP_INFO" "73")
    '("x-startupprofile" "GST_RTSP_HDR_X_STARTUPPROFILE" "74")
    '("timestamp" "GST_RTSP_HDR_TIMESTAMP" "75")
    '("authentication-info" "GST_RTSP_HDR_AUTHENTICATION_INFO" "76")
    '("host" "GST_RTSP_HDR_HOST" "77")
    '("pragma" "GST_RTSP_HDR_PRAGMA" "78")
    '("x-server-ip-address" "GST_RTSP_HDR_X_SERVER_IP_ADDRESS" "79")
    '("x-sessioncookie" "GST_RTSP_HDR_X_SESSIONCOOKIE" "80")
    '("rtcp-interval" "GST_RTSP_HDR_RTCP_INTERVAL" "81")
    '("last" "GST_RTSP_HDR_LAST" "82")
  )
)

;; Original typedef:
;; typedef enum {
;;   GST_RTSP_STS_INVALID                              = 0,
;;   GST_RTSP_STS_CONTINUE                             = 100,
;;   GST_RTSP_STS_OK                                   = 200,
;;   GST_RTSP_STS_CREATED                              = 201,
;;   GST_RTSP_STS_LOW_ON_STORAGE                       = 250,
;;   GST_RTSP_STS_MULTIPLE_CHOICES                     = 300,
;;   GST_RTSP_STS_MOVED_PERMANENTLY                    = 301,
;;   GST_RTSP_STS_MOVE_TEMPORARILY                     = 302,
;;   GST_RTSP_STS_SEE_OTHER                            = 303,
;;   GST_RTSP_STS_NOT_MODIFIED                         = 304,
;;   GST_RTSP_STS_USE_PROXY                            = 305,
;;   GST_RTSP_STS_BAD_REQUEST                          = 400,
;;   GST_RTSP_STS_UNAUTHORIZED                         = 401,
;;   GST_RTSP_STS_PAYMENT_REQUIRED                     = 402,
;;   GST_RTSP_STS_FORBIDDEN                            = 403,
;;   GST_RTSP_STS_NOT_FOUND                            = 404,
;;   GST_RTSP_STS_METHOD_NOT_ALLOWED                   = 405,
;;   GST_RTSP_STS_NOT_ACCEPTABLE                       = 406,
;;   GST_RTSP_STS_PROXY_AUTH_REQUIRED                  = 407,
;;   GST_RTSP_STS_REQUEST_TIMEOUT                      = 408,
;;   GST_RTSP_STS_GONE                                 = 410,
;;   GST_RTSP_STS_LENGTH_REQUIRED                      = 411,
;;   GST_RTSP_STS_PRECONDITION_FAILED                  = 412,
;;   GST_RTSP_STS_REQUEST_ENTITY_TOO_LARGE             = 413,
;;   GST_RTSP_STS_REQUEST_URI_TOO_LARGE                = 414,
;;   GST_RTSP_STS_UNSUPPORTED_MEDIA_TYPE               = 415,
;;   GST_RTSP_STS_PARAMETER_NOT_UNDERSTOOD             = 451,
;;   GST_RTSP_STS_CONFERENCE_NOT_FOUND                 = 452,
;;   GST_RTSP_STS_NOT_ENOUGH_BANDWIDTH                 = 453,
;;   GST_RTSP_STS_SESSION_NOT_FOUND                    = 454,
;;   GST_RTSP_STS_METHOD_NOT_VALID_IN_THIS_STATE       = 455,
;;   GST_RTSP_STS_HEADER_FIELD_NOT_VALID_FOR_RESOURCE  = 456,
;;   GST_RTSP_STS_INVALID_RANGE                        = 457,
;;   GST_RTSP_STS_PARAMETER_IS_READONLY                = 458,
;;   GST_RTSP_STS_AGGREGATE_OPERATION_NOT_ALLOWED      = 459,
;;   GST_RTSP_STS_ONLY_AGGREGATE_OPERATION_ALLOWED     = 460,
;;   GST_RTSP_STS_UNSUPPORTED_TRANSPORT                = 461,
;;   GST_RTSP_STS_DESTINATION_UNREACHABLE              = 462,
;;   GST_RTSP_STS_INTERNAL_SERVER_ERROR                = 500,
;;   GST_RTSP_STS_NOT_IMPLEMENTED                      = 501,
;;   GST_RTSP_STS_BAD_GATEWAY                          = 502,
;;   GST_RTSP_STS_SERVICE_UNAVAILABLE                  = 503,
;;   GST_RTSP_STS_GATEWAY_TIMEOUT                      = 504,
;;   GST_RTSP_STS_RTSP_VERSION_NOT_SUPPORTED           = 505,
;;   GST_RTSP_STS_OPTION_NOT_SUPPORTED                 = 551
;; } GstRTSPStatusCode;

(define-enum-extended RTSPStatusCode
  (in-module "Gst")
  (c-name "GstRTSPStatusCode")
  (values
    '("invalid" "GST_RTSP_STS_INVALID" "0")
    '("continue" "GST_RTSP_STS_CONTINUE" "100")
    '("ok" "GST_RTSP_STS_OK" "200")
    '("created" "GST_RTSP_STS_CREATED" "201")
    '("low-on-storage" "GST_RTSP_STS_LOW_ON_STORAGE" "250")
    '("multiple-choices" "GST_RTSP_STS_MULTIPLE_CHOICES" "300")
    '("moved-permanently" "GST_RTSP_STS_MOVED_PERMANENTLY" "301")
    '("move-temporarily" "GST_RTSP_STS_MOVE_TEMPORARILY" "302")
    '("see-other" "GST_RTSP_STS_SEE_OTHER" "303")
    '("not-modified" "GST_RTSP_STS_NOT_MODIFIED" "304")
    '("use-proxy" "GST_RTSP_STS_USE_PROXY" "305")
    '("bad-request" "GST_RTSP_STS_BAD_REQUEST" "400")
    '("unauthorized" "GST_RTSP_STS_UNAUTHORIZED" "401")
    '("payment-required" "GST_RTSP_STS_PAYMENT_REQUIRED" "402")
    '("forbidden" "GST_RTSP_STS_FORBIDDEN" "403")
    '("not-found" "GST_RTSP_STS_NOT_FOUND" "404")
    '("method-not-allowed" "GST_RTSP_STS_METHOD_NOT_ALLOWED" "405")
    '("not-acceptable" "GST_RTSP_STS_NOT_ACCEPTABLE" "406")
    '("proxy-auth-required" "GST_RTSP_STS_PROXY_AUTH_REQUIRED" "407")
    '("request-timeout" "GST_RTSP_STS_REQUEST_TIMEOUT" "408")
    '("gone" "GST_RTSP_STS_GONE" "410")
    '("length-required" "GST_RTSP_STS_LENGTH_REQUIRED" "411")
    '("precondition-failed" "GST_RTSP_STS_PRECONDITION_FAILED" "412")
    '("request-entity-too-large" "GST_RTSP_STS_REQUEST_ENTITY_TOO_LARGE" "413")
    '("request-uri-too-large" "GST_RTSP_STS_REQUEST_URI_TOO_LARGE" "414")
    '("unsupported-media-type" "GST_RTSP_STS_UNSUPPORTED_MEDIA_TYPE" "415")
    '("parameter-not-understood" "GST_RTSP_STS_PARAMETER_NOT_UNDERSTOOD" "451")
    '("conference-not-found" "GST_RTSP_STS_CONFERENCE_NOT_FOUND" "452")
    '("not-enough-bandwidth" "GST_RTSP_STS_NOT_ENOUGH_BANDWIDTH" "453")
    '("session-not-found" "GST_RTSP_STS_SESSION_NOT_FOUND" "454")
    '("method-not-valid-in-this-state" "GST_RTSP_STS_METHOD_NOT_VALID_IN_THIS_STATE" "455")
    '("header-field-not-valid-for-resource" "GST_RTSP_STS_HEADER_FIELD_NOT_VALID_FOR_RESOURCE" "456")
    '("invalid-range" "GST_RTSP_STS_INVALID_RANGE" "457")
    '("parameter-is-readonly" "GST_RTSP_STS_PARAMETER_IS_READONLY" "458")
    '("aggregate-operation-not-allowed" "GST_RTSP_STS_AGGREGATE_OPERATION_NOT_ALLOWED" "459")
    '("only-aggregate-operation-allowed" "GST_RTSP_STS_ONLY_AGGREGATE_OPERATION_ALLOWED" "460")
    '("unsupported-transport" "GST_RTSP_STS_UNSUPPORTED_TRANSPORT" "461")
    '("destination-unreachable" "GST_RTSP_STS_DESTINATION_UNREACHABLE" "462")
    '("internal-server-error" "GST_RTSP_STS_INTERNAL_SERVER_ERROR" "500")
    '("not-implemented" "GST_RTSP_STS_NOT_IMPLEMENTED" "501")
    '("bad-gateway" "GST_RTSP_STS_BAD_GATEWAY" "502")
    '("service-unavailable" "GST_RTSP_STS_SERVICE_UNAVAILABLE" "503")
    '("gateway-timeout" "GST_RTSP_STS_GATEWAY_TIMEOUT" "504")
    '("rtsp-version-not-supported" "GST_RTSP_STS_RTSP_VERSION_NOT_SUPPORTED" "505")
    '("option-not-supported" "GST_RTSP_STS_OPTION_NOT_SUPPORTED" "551")
  )
)

;; From gstrtspmessage.h

;; Original typedef:
;; typedef enum
;; {
;;   GST_RTSP_MESSAGE_INVALID,
;;   GST_RTSP_MESSAGE_REQUEST,
;;   GST_RTSP_MESSAGE_RESPONSE,
;;   GST_RTSP_MESSAGE_HTTP_REQUEST,
;;   GST_RTSP_MESSAGE_HTTP_RESPONSE,
;;   GST_RTSP_MESSAGE_DATA
;; } GstRTSPMsgType;

(define-enum-extended RTSPMsgType
  (in-module "Gst")
  (c-name "GstRTSPMsgType")
  (values
    '("invalid" "GST_RTSP_MESSAGE_INVALID" "0")
    '("request" "GST_RTSP_MESSAGE_REQUEST" "1")
    '("response" "GST_RTSP_MESSAGE_RESPONSE" "2")
    '("http-request" "GST_RTSP_MESSAGE_HTTP_REQUEST" "3")
    '("http-response" "GST_RTSP_MESSAGE_HTTP_RESPONSE" "4")
    '("data" "GST_RTSP_MESSAGE_DATA" "5")
  )
)

;; From gstrtsprange.h

;; Original typedef:
;; typedef enum
;; {
;;   GST_RTSP_RANGE_SMPTE,
;;   GST_RTSP_RANGE_SMPTE_30_DROP,
;;   GST_RTSP_RANGE_SMPTE_25,
;;   GST_RTSP_RANGE_NPT,
;;   GST_RTSP_RANGE_CLOCK
;; } GstRTSPRangeUnit;

(define-enum-extended RTSPRangeUnit
  (in-module "Gst")
  (c-name "GstRTSPRangeUnit")
  (values
    '("smpte" "GST_RTSP_RANGE_SMPTE" "0")
    '("smpte-30-drop" "GST_RTSP_RANGE_SMPTE_30_DROP" "1")
    '("smpte-25" "GST_RTSP_RANGE_SMPTE_25" "2")
    '("npt" "GST_RTSP_RANGE_NPT" "3")
    '("clock" "GST_RTSP_RANGE_CLOCK" "4")
  )
)

;; Original typedef:
;; typedef enum {
;;   GST_RTSP_TIME_SECONDS,
;;   GST_RTSP_TIME_NOW,
;;   GST_RTSP_TIME_END
;; } GstRTSPTimeType;

(define-enum-extended RTSPTimeType
  (in-module "Gst")
  (c-name "GstRTSPTimeType")
  (values
    '("seconds" "GST_RTSP_TIME_SECONDS" "0")
    '("now" "GST_RTSP_TIME_NOW" "1")
    '("end" "GST_RTSP_TIME_END" "2")
  )
)

;; From gstrtsptransport.h

;; Original typedef:
;; typedef enum {
;;   GST_RTSP_TRANS_UNKNOWN =  0,
;;   GST_RTSP_TRANS_RTP     = (1 << 0),
;;   GST_RTSP_TRANS_RDT     = (1 << 1)
;; } GstRTSPTransMode;

(define-flags-extended RTSPTransMode
  (in-module "Gst")
  (c-name "GstRTSPTransMode")
  (values
    '("unknown" "GST_RTSP_TRANS_UNKNOWN" "0x0")
    '("rtp" "GST_RTSP_TRANS_RTP" "(1 << 0)")
    '("rdt" "GST_RTSP_TRANS_RDT" "(1 << 1)")
  )
)

;; Original typedef:
;; typedef enum {
;;   GST_RTSP_PROFILE_UNKNOWN =  0,
;;   GST_RTSP_PROFILE_AVP     = (1 << 0),
;;   GST_RTSP_PROFILE_SAVP    = (1 << 1)
;; } GstRTSPProfile;

(define-flags-extended RTSPProfile
  (in-module "Gst")
  (c-name "GstRTSPProfile")
  (values
    '("unknown" "GST_RTSP_PROFILE_UNKNOWN" "0x0")
    '("avp" "GST_RTSP_PROFILE_AVP" "(1 << 0)")
    '("savp" "GST_RTSP_PROFILE_SAVP" "(1 << 1)")
  )
)

;; Original typedef:
;; typedef enum {
;;   GST_RTSP_LOWER_TRANS_UNKNOWN   = 0,
;;   GST_RTSP_LOWER_TRANS_UDP       = (1 << 0),
;;   GST_RTSP_LOWER_TRANS_UDP_MCAST = (1 << 1),
;;   GST_RTSP_LOWER_TRANS_TCP       = (1 << 2),
;;   GST_RTSP_LOWER_TRANS_HTTP      = (1 << 4)
;; } GstRTSPLowerTrans;

(define-flags-extended RTSPLowerTrans
  (in-module "Gst")
  (c-name "GstRTSPLowerTrans")
  (values
    '("unknown" "GST_RTSP_LOWER_TRANS_UNKNOWN" "0x0")
    '("udp" "GST_RTSP_LOWER_TRANS_UDP" "(1 << 0)")
    '("udp-mcast" "GST_RTSP_LOWER_TRANS_UDP_MCAST" "(1 << 1)")
    '("tcp" "GST_RTSP_LOWER_TRANS_TCP" "(1 << 2)")
    '("http" "GST_RTSP_LOWER_TRANS_HTTP" "(1 << 4)")
  )
)

;; From gstsdp.h

;; Original typedef:
;; typedef enum {
;;   GST_SDP_OK     = 0,
;;   GST_SDP_EINVAL = -1
;; } GstSDPResult;

(define-enum-extended SDPResult
  (in-module "Gst")
  (c-name "GstSDPResult")
  (values
    '("ok" "GST_SDP_OK" "0")
    '("einval" "GST_SDP_EINVAL" "-1")
  )
)

;; From gsttagdemux.h

;; Original typedef:
;; typedef enum {
;;   GST_TAG_DEMUX_RESULT_BROKEN_TAG,
;;   GST_TAG_DEMUX_RESULT_AGAIN,
;;   GST_TAG_DEMUX_RESULT_OK
;; } GstTagDemuxResult;

(define-enum-extended TagDemuxResult
  (in-module "Gst")
  (c-name "GstTagDemuxResult")
  (values
    '("broken-tag" "GST_TAG_DEMUX_RESULT_BROKEN_TAG" "0")
    '("again" "GST_TAG_DEMUX_RESULT_AGAIN" "1")
    '("ok" "GST_TAG_DEMUX_RESULT_OK" "2")
  )
)

;; From tag.h

;; Original typedef:
;; typedef enum {
;;   GST_TAG_IMAGE_TYPE_NONE = -1,
;;   GST_TAG_IMAGE_TYPE_UNDEFINED = 0,
;;   GST_TAG_IMAGE_TYPE_FRONT_COVER,
;;   GST_TAG_IMAGE_TYPE_BACK_COVER,
;;   GST_TAG_IMAGE_TYPE_LEAFLET_PAGE,
;;   GST_TAG_IMAGE_TYPE_MEDIUM,
;;   GST_TAG_IMAGE_TYPE_LEAD_ARTIST,
;;   GST_TAG_IMAGE_TYPE_ARTIST,
;;   GST_TAG_IMAGE_TYPE_CONDUCTOR,
;;   GST_TAG_IMAGE_TYPE_BAND_ORCHESTRA,
;;   GST_TAG_IMAGE_TYPE_COMPOSER,
;;   GST_TAG_IMAGE_TYPE_LYRICIST,
;;   GST_TAG_IMAGE_TYPE_RECORDING_LOCATION,
;;   GST_TAG_IMAGE_TYPE_DURING_RECORDING,
;;   GST_TAG_IMAGE_TYPE_DURING_PERFORMANCE,
;;   GST_TAG_IMAGE_TYPE_VIDEO_CAPTURE,
;;   GST_TAG_IMAGE_TYPE_FISH,
;;   GST_TAG_IMAGE_TYPE_ILLUSTRATION,
;;   GST_TAG_IMAGE_TYPE_BAND_ARTIST_LOGO,
;;   GST_TAG_IMAGE_TYPE_PUBLISHER_STUDIO_LOGO
;; } GstTagImageType;

(define-enum-extended TagImageType
  (in-module "Gst")
  (c-name "GstTagImageType")
  (values
    '("none" "GST_TAG_IMAGE_TYPE_NONE" "-1")
    '("undefined" "GST_TAG_IMAGE_TYPE_UNDEFINED" "0")
    '("front-cover" "GST_TAG_IMAGE_TYPE_FRONT_COVER" "1")
    '("back-cover" "GST_TAG_IMAGE_TYPE_BACK_COVER" "2")
    '("leaflet-page" "GST_TAG_IMAGE_TYPE_LEAFLET_PAGE" "3")
    '("medium" "GST_TAG_IMAGE_TYPE_MEDIUM" "4")
    '("lead-artist" "GST_TAG_IMAGE_TYPE_LEAD_ARTIST" "5")
    '("artist" "GST_TAG_IMAGE_TYPE_ARTIST" "6")
    '("conductor" "GST_TAG_IMAGE_TYPE_CONDUCTOR" "7")
    '("band-orchestra" "GST_TAG_IMAGE_TYPE_BAND_ORCHESTRA" "8")
    '("composer" "GST_TAG_IMAGE_TYPE_COMPOSER" "9")
    '("lyricist" "GST_TAG_IMAGE_TYPE_LYRICIST" "10")
    '("recording-location" "GST_TAG_IMAGE_TYPE_RECORDING_LOCATION" "11")
    '("during-recording" "GST_TAG_IMAGE_TYPE_DURING_RECORDING" "12")
    '("during-performance" "GST_TAG_IMAGE_TYPE_DURING_PERFORMANCE" "13")
    '("video-capture" "GST_TAG_IMAGE_TYPE_VIDEO_CAPTURE" "14")
    '("fish" "GST_TAG_IMAGE_TYPE_FISH" "15")
    '("illustration" "GST_TAG_IMAGE_TYPE_ILLUSTRATION" "16")
    '("band-artist-logo" "GST_TAG_IMAGE_TYPE_BAND_ARTIST_LOGO" "17")
    '("publisher-studio-logo" "GST_TAG_IMAGE_TYPE_PUBLISHER_STUDIO_LOGO" "18")
  )
)

;; Original typedef:
;; typedef enum {
;;   GST_TAG_LICENSE_PERMITS_REPRODUCTION             = (1 << 0),
;;   GST_TAG_LICENSE_PERMITS_DISTRIBUTION             = (1 << 1),
;;   GST_TAG_LICENSE_PERMITS_DERIVATIVE_WORKS         = (1 << 2),
;;   GST_TAG_LICENSE_PERMITS_SHARING                  = (1 << 3),
;; 
;;   GST_TAG_LICENSE_REQUIRES_NOTICE                  = (1 << 8),
;;   GST_TAG_LICENSE_REQUIRES_ATTRIBUTION             = (1 << 9),
;;   GST_TAG_LICENSE_REQUIRES_SHARE_ALIKE             = (1 << 10),
;;   GST_TAG_LICENSE_REQUIRES_SOURCE_CODE             = (1 << 11),
;;   GST_TAG_LICENSE_REQUIRES_COPYLEFT                = (1 << 12),
;;   GST_TAG_LICENSE_REQUIRES_LESSER_COPYLEFT         = (1 << 13),
;; 
;;   GST_TAG_LICENSE_PROHIBITS_COMMERCIAL_USE         = (1 << 16),
;;   GST_TAG_LICENSE_PROHIBITS_HIGH_INCOME_NATION_USE = (1 << 17),
;; 
;;   GST_TAG_LICENSE_CREATIVE_COMMONS_LICENSE         = (1 << 24),
;;   GST_TAG_LICENSE_FREE_SOFTWARE_FOUNDATION_LICENSE = (1 << 25)
;; } GstTagLicenseFlags;

(define-flags-extended TagLicenseFlags
  (in-module "Gst")
  (c-name "GstTagLicenseFlags")
  (values
    '("permits-reproduction" "GST_TAG_LICENSE_PERMITS_REPRODUCTION" "(1 << 0)")
    '("permits-distribution" "GST_TAG_LICENSE_PERMITS_DISTRIBUTION" "(1 << 1)")
    '("permits-derivative-works" "GST_TAG_LICENSE_PERMITS_DERIVATIVE_WORKS" "(1 << 2)")
    '("permits-sharing" "GST_TAG_LICENSE_PERMITS_SHARING" "(1 << 3)")
    '("requires-notice" "GST_TAG_LICENSE_REQUIRES_NOTICE" "(1 << 8)")
    '("requires-attribution" "GST_TAG_LICENSE_REQUIRES_ATTRIBUTION" "(1 << 9)")
    '("requires-share-alike" "GST_TAG_LICENSE_REQUIRES_SHARE_ALIKE" "(1 << 10)")
    '("requires-source-code" "GST_TAG_LICENSE_REQUIRES_SOURCE_CODE" "(1 << 11)")
    '("requires-copyleft" "GST_TAG_LICENSE_REQUIRES_COPYLEFT" "(1 << 12)")
    '("requires-lesser-copyleft" "GST_TAG_LICENSE_REQUIRES_LESSER_COPYLEFT" "(1 << 13)")
    '("prohibits-commercial-use" "GST_TAG_LICENSE_PROHIBITS_COMMERCIAL_USE" "(1 << 16)")
    '("prohibits-high-income-nation-use" "GST_TAG_LICENSE_PROHIBITS_HIGH_INCOME_NATION_USE" "(1 << 17)")
    '("creative-commons-license" "GST_TAG_LICENSE_CREATIVE_COMMONS_LICENSE" "(1 << 24)")
    '("free-software-foundation-license" "GST_TAG_LICENSE_FREE_SOFTWARE_FOUNDATION_LICENSE" "(1 << 25)")
  )
)

;; From colorbalance.h

;; Original typedef:
;; typedef enum
;; {
;;   GST_COLOR_BALANCE_HARDWARE,
;;   GST_COLOR_BALANCE_SOFTWARE
;; } GstColorBalanceType;

(define-enum-extended ColorBalanceType
  (in-module "Gst")
  (c-name "GstColorBalanceType")
  (values
    '("hardware" "GST_COLOR_BALANCE_HARDWARE" "0")
    '("software" "GST_COLOR_BALANCE_SOFTWARE" "1")
  )
)

;; From gstvideoutils.h

;; Original typedef:
;; typedef enum
;; {
;;   GST_VIDEO_CODEC_FRAME_FLAG_DECODE_ONLY            = (1<<0),
;;   GST_VIDEO_CODEC_FRAME_FLAG_SYNC_POINT             = (1<<1),
;;   GST_VIDEO_CODEC_FRAME_FLAG_FORCE_KEYFRAME         = (1<<2),
;;   GST_VIDEO_CODEC_FRAME_FLAG_FORCE_KEYFRAME_HEADERS = (1<<3)
;; } GstVideoCodecFrameFlags;

(define-flags-extended VideoCodecFrameFlags
  (in-module "Gst")
  (c-name "GstVideoCodecFrameFlags")
  (values
    '("decode-only" "GST_VIDEO_CODEC_FRAME_FLAG_DECODE_ONLY" "(1<<0)")
    '("sync-point" "GST_VIDEO_CODEC_FRAME_FLAG_SYNC_POINT" "(1<<1)")
    '("force-keyframe" "GST_VIDEO_CODEC_FRAME_FLAG_FORCE_KEYFRAME" "(1<<2)")
    '("force-keyframe-headers" "GST_VIDEO_CODEC_FRAME_FLAG_FORCE_KEYFRAME_HEADERS" "(1<<3)")
  )
)

;; From navigation.h

;; Original typedef:
;; typedef enum {
;;   GST_NAVIGATION_COMMAND_INVALID  = 0,
;; 
;;   GST_NAVIGATION_COMMAND_MENU1    = 1,
;;   GST_NAVIGATION_COMMAND_MENU2    = 2,
;;   GST_NAVIGATION_COMMAND_MENU3    = 3,
;;   GST_NAVIGATION_COMMAND_MENU4    = 4,
;;   GST_NAVIGATION_COMMAND_MENU5    = 5,
;;   GST_NAVIGATION_COMMAND_MENU6    = 6,
;;   GST_NAVIGATION_COMMAND_MENU7    = 7,
;; 
;;   GST_NAVIGATION_COMMAND_LEFT     = 20,
;;   GST_NAVIGATION_COMMAND_RIGHT    = 21,
;;   GST_NAVIGATION_COMMAND_UP       = 22,
;;   GST_NAVIGATION_COMMAND_DOWN     = 23,
;;   GST_NAVIGATION_COMMAND_ACTIVATE = 24,
;; 
;;   GST_NAVIGATION_COMMAND_PREV_ANGLE = 30,
;;   GST_NAVIGATION_COMMAND_NEXT_ANGLE = 31
;; } GstNavigationCommand;

(define-enum-extended NavigationCommand
  (in-module "Gst")
  (c-name "GstNavigationCommand")
  (values
    '("invalid" "GST_NAVIGATION_COMMAND_INVALID" "0")
    '("menu1" "GST_NAVIGATION_COMMAND_MENU1" "1")
    '("menu2" "GST_NAVIGATION_COMMAND_MENU2" "2")
    '("menu3" "GST_NAVIGATION_COMMAND_MENU3" "3")
    '("menu4" "GST_NAVIGATION_COMMAND_MENU4" "4")
    '("menu5" "GST_NAVIGATION_COMMAND_MENU5" "5")
    '("menu6" "GST_NAVIGATION_COMMAND_MENU6" "6")
    '("menu7" "GST_NAVIGATION_COMMAND_MENU7" "7")
    '("left" "GST_NAVIGATION_COMMAND_LEFT" "20")
    '("right" "GST_NAVIGATION_COMMAND_RIGHT" "21")
    '("up" "GST_NAVIGATION_COMMAND_UP" "22")
    '("down" "GST_NAVIGATION_COMMAND_DOWN" "23")
    '("activate" "GST_NAVIGATION_COMMAND_ACTIVATE" "24")
    '("prev-angle" "GST_NAVIGATION_COMMAND_PREV_ANGLE" "30")
    '("next-angle" "GST_NAVIGATION_COMMAND_NEXT_ANGLE" "31")
  )
)

;; Original typedef:
;; typedef enum
;; {
;;   GST_NAVIGATION_QUERY_INVALID     = 0,
;;   GST_NAVIGATION_QUERY_COMMANDS    = 1,
;;   GST_NAVIGATION_QUERY_ANGLES      = 2
;; } GstNavigationQueryType;

(define-enum-extended NavigationQueryType
  (in-module "Gst")
  (c-name "GstNavigationQueryType")
  (values
    '("invalid" "GST_NAVIGATION_QUERY_INVALID" "0")
    '("commands" "GST_NAVIGATION_QUERY_COMMANDS" "1")
    '("angles" "GST_NAVIGATION_QUERY_ANGLES" "2")
  )
)

;; Original typedef:
;; typedef enum {
;;   GST_NAVIGATION_MESSAGE_INVALID,
;;   GST_NAVIGATION_MESSAGE_MOUSE_OVER,
;;   GST_NAVIGATION_MESSAGE_COMMANDS_CHANGED,
;;   GST_NAVIGATION_MESSAGE_ANGLES_CHANGED
;; } GstNavigationMessageType;

(define-enum-extended NavigationMessageType
  (in-module "Gst")
  (c-name "GstNavigationMessageType")
  (values
    '("invalid" "GST_NAVIGATION_MESSAGE_INVALID" "0")
    '("mouse-over" "GST_NAVIGATION_MESSAGE_MOUSE_OVER" "1")
    '("commands-changed" "GST_NAVIGATION_MESSAGE_COMMANDS_CHANGED" "2")
    '("angles-changed" "GST_NAVIGATION_MESSAGE_ANGLES_CHANGED" "3")
  )
)

;; Original typedef:
;; typedef enum {
;;   GST_NAVIGATION_EVENT_INVALID                    = 0,
;;   GST_NAVIGATION_EVENT_KEY_PRESS                  = 1,
;;   GST_NAVIGATION_EVENT_KEY_RELEASE                = 2,
;;   GST_NAVIGATION_EVENT_MOUSE_BUTTON_PRESS         = 3,
;;   GST_NAVIGATION_EVENT_MOUSE_BUTTON_RELEASE       = 4,
;;   GST_NAVIGATION_EVENT_MOUSE_MOVE                 = 5,
;;   GST_NAVIGATION_EVENT_COMMAND                    = 6
;; } GstNavigationEventType;

(define-enum-extended NavigationEventType
  (in-module "Gst")
  (c-name "GstNavigationEventType")
  (values
    '("invalid" "GST_NAVIGATION_EVENT_INVALID" "0")
    '("key-press" "GST_NAVIGATION_EVENT_KEY_PRESS" "1")
    '("key-release" "GST_NAVIGATION_EVENT_KEY_RELEASE" "2")
    '("mouse-button-press" "GST_NAVIGATION_EVENT_MOUSE_BUTTON_PRESS" "3")
    '("mouse-button-release" "GST_NAVIGATION_EVENT_MOUSE_BUTTON_RELEASE" "4")
    '("mouse-move" "GST_NAVIGATION_EVENT_MOUSE_MOVE" "5")
    '("command" "GST_NAVIGATION_EVENT_COMMAND" "6")
  )
)

;; From video-color.h

;; Original typedef:
;; typedef enum {
;;   GST_VIDEO_COLOR_RANGE_UNKNOWN = 0,
;;   GST_VIDEO_COLOR_RANGE_0_255,
;;   GST_VIDEO_COLOR_RANGE_16_235
;; } GstVideoColorRange;

(define-enum-extended VideoColorRange
  (in-module "Gst")
  (c-name "GstVideoColorRange")
  (values
    '("unknown" "GST_VIDEO_COLOR_RANGE_UNKNOWN" "0")
    '("0-255" "GST_VIDEO_COLOR_RANGE_0_255" "1")
    '("16-235" "GST_VIDEO_COLOR_RANGE_16_235" "2")
  )
)

;; Original typedef:
;; typedef enum {
;;   GST_VIDEO_COLOR_MATRIX_UNKNOWN = 0,
;;   GST_VIDEO_COLOR_MATRIX_RGB,
;;   GST_VIDEO_COLOR_MATRIX_FCC,
;;   GST_VIDEO_COLOR_MATRIX_BT709,
;;   GST_VIDEO_COLOR_MATRIX_BT601,
;;   GST_VIDEO_COLOR_MATRIX_SMPTE240M
;; } GstVideoColorMatrix;

(define-enum-extended VideoColorMatrix
  (in-module "Gst")
  (c-name "GstVideoColorMatrix")
  (values
    '("unknown" "GST_VIDEO_COLOR_MATRIX_UNKNOWN" "0")
    '("rgb" "GST_VIDEO_COLOR_MATRIX_RGB" "1")
    '("fcc" "GST_VIDEO_COLOR_MATRIX_FCC" "2")
    '("bt709" "GST_VIDEO_COLOR_MATRIX_BT709" "3")
    '("bt601" "GST_VIDEO_COLOR_MATRIX_BT601" "4")
    '("smpte240m" "GST_VIDEO_COLOR_MATRIX_SMPTE240M" "5")
  )
)

;; Original typedef:
;; typedef enum {
;;   GST_VIDEO_TRANSFER_UNKNOWN = 0,
;;   GST_VIDEO_TRANSFER_GAMMA10,
;;   GST_VIDEO_TRANSFER_GAMMA18,
;;   GST_VIDEO_TRANSFER_GAMMA20,
;;   GST_VIDEO_TRANSFER_GAMMA22,
;;   GST_VIDEO_TRANSFER_BT709,
;;   GST_VIDEO_TRANSFER_SMPTE240M,
;;   GST_VIDEO_TRANSFER_SRGB,
;;   GST_VIDEO_TRANSFER_GAMMA28,
;;   GST_VIDEO_TRANSFER_LOG100,
;;   GST_VIDEO_TRANSFER_LOG316
;; } GstVideoTransferFunction;

(define-enum-extended VideoTransferFunction
  (in-module "Gst")
  (c-name "GstVideoTransferFunction")
  (values
    '("unknown" "GST_VIDEO_TRANSFER_UNKNOWN" "0")
    '("gamma10" "GST_VIDEO_TRANSFER_GAMMA10" "1")
    '("gamma18" "GST_VIDEO_TRANSFER_GAMMA18" "2")
    '("gamma20" "GST_VIDEO_TRANSFER_GAMMA20" "3")
    '("gamma22" "GST_VIDEO_TRANSFER_GAMMA22" "4")
    '("bt709" "GST_VIDEO_TRANSFER_BT709" "5")
    '("smpte240m" "GST_VIDEO_TRANSFER_SMPTE240M" "6")
    '("srgb" "GST_VIDEO_TRANSFER_SRGB" "7")
    '("gamma28" "GST_VIDEO_TRANSFER_GAMMA28" "8")
    '("log100" "GST_VIDEO_TRANSFER_LOG100" "9")
    '("log316" "GST_VIDEO_TRANSFER_LOG316" "10")
  )
)

;; Original typedef:
;; typedef enum {
;;   GST_VIDEO_COLOR_PRIMARIES_UNKNOWN = 0,
;;   GST_VIDEO_COLOR_PRIMARIES_BT709,
;;   GST_VIDEO_COLOR_PRIMARIES_BT470M,
;;   GST_VIDEO_COLOR_PRIMARIES_BT470BG,
;;   GST_VIDEO_COLOR_PRIMARIES_SMPTE170M,
;;   GST_VIDEO_COLOR_PRIMARIES_SMPTE240M,
;;   GST_VIDEO_COLOR_PRIMARIES_FILM
;; } GstVideoColorPrimaries;

(define-enum-extended VideoColorPrimaries
  (in-module "Gst")
  (c-name "GstVideoColorPrimaries")
  (values
    '("unknown" "GST_VIDEO_COLOR_PRIMARIES_UNKNOWN" "0")
    '("bt709" "GST_VIDEO_COLOR_PRIMARIES_BT709" "1")
    '("bt470m" "GST_VIDEO_COLOR_PRIMARIES_BT470M" "2")
    '("bt470bg" "GST_VIDEO_COLOR_PRIMARIES_BT470BG" "3")
    '("smpte170m" "GST_VIDEO_COLOR_PRIMARIES_SMPTE170M" "4")
    '("smpte240m" "GST_VIDEO_COLOR_PRIMARIES_SMPTE240M" "5")
    '("film" "GST_VIDEO_COLOR_PRIMARIES_FILM" "6")
  )
)

;; From video-format.h

;; Original typedef:
;; typedef enum {
;;   GST_VIDEO_FORMAT_UNKNOWN,
;;   GST_VIDEO_FORMAT_ENCODED,
;;   GST_VIDEO_FORMAT_I420,
;;   GST_VIDEO_FORMAT_YV12,
;;   GST_VIDEO_FORMAT_YUY2,
;;   GST_VIDEO_FORMAT_UYVY,
;;   GST_VIDEO_FORMAT_AYUV,
;;   GST_VIDEO_FORMAT_RGBx,
;;   GST_VIDEO_FORMAT_BGRx,
;;   GST_VIDEO_FORMAT_xRGB,
;;   GST_VIDEO_FORMAT_xBGR,
;;   GST_VIDEO_FORMAT_RGBA,
;;   GST_VIDEO_FORMAT_BGRA,
;;   GST_VIDEO_FORMAT_ARGB,
;;   GST_VIDEO_FORMAT_ABGR,
;;   GST_VIDEO_FORMAT_RGB,
;;   GST_VIDEO_FORMAT_BGR,
;;   GST_VIDEO_FORMAT_Y41B,
;;   GST_VIDEO_FORMAT_Y42B,
;;   GST_VIDEO_FORMAT_YVYU,
;;   GST_VIDEO_FORMAT_Y444,
;;   GST_VIDEO_FORMAT_v210,
;;   GST_VIDEO_FORMAT_v216,
;;   GST_VIDEO_FORMAT_NV12,
;;   GST_VIDEO_FORMAT_NV21,
;;   GST_VIDEO_FORMAT_GRAY8,
;;   GST_VIDEO_FORMAT_GRAY16_BE,
;;   GST_VIDEO_FORMAT_GRAY16_LE,
;;   GST_VIDEO_FORMAT_v308,
;;   GST_VIDEO_FORMAT_RGB16,
;;   GST_VIDEO_FORMAT_BGR16,
;;   GST_VIDEO_FORMAT_RGB15,
;;   GST_VIDEO_FORMAT_BGR15,
;;   GST_VIDEO_FORMAT_UYVP,
;;   GST_VIDEO_FORMAT_A420,
;;   GST_VIDEO_FORMAT_RGB8P,
;;   GST_VIDEO_FORMAT_YUV9,
;;   GST_VIDEO_FORMAT_YVU9,
;;   GST_VIDEO_FORMAT_IYU1,
;;   GST_VIDEO_FORMAT_ARGB64,
;;   GST_VIDEO_FORMAT_AYUV64,
;;   GST_VIDEO_FORMAT_r210,
;;   GST_VIDEO_FORMAT_I420_10BE,
;;   GST_VIDEO_FORMAT_I420_10LE,
;;   GST_VIDEO_FORMAT_I422_10BE,
;;   GST_VIDEO_FORMAT_I422_10LE,
;; } GstVideoFormat;

(define-enum-extended VideoFormat
  (in-module "Gst")
  (c-name "GstVideoFormat")
  (values
    '("unknown" "GST_VIDEO_FORMAT_UNKNOWN" "0")
    '("encoded" "GST_VIDEO_FORMAT_ENCODED" "1")
    '("i420" "GST_VIDEO_FORMAT_I420" "2")
    '("yv12" "GST_VIDEO_FORMAT_YV12" "3")
    '("yuy2" "GST_VIDEO_FORMAT_YUY2" "4")
    '("uyvy" "GST_VIDEO_FORMAT_UYVY" "5")
    '("ayuv" "GST_VIDEO_FORMAT_AYUV" "6")
    '("rgbx" "GST_VIDEO_FORMAT_RGBx" "7")
    '("bgrx" "GST_VIDEO_FORMAT_BGRx" "8")
    '("xrgb" "GST_VIDEO_FORMAT_xRGB" "9")
    '("xbgr" "GST_VIDEO_FORMAT_xBGR" "10")
    '("rgba" "GST_VIDEO_FORMAT_RGBA" "11")
    '("bgra" "GST_VIDEO_FORMAT_BGRA" "12")
    '("argb" "GST_VIDEO_FORMAT_ARGB" "13")
    '("abgr" "GST_VIDEO_FORMAT_ABGR" "14")
    '("rgb" "GST_VIDEO_FORMAT_RGB" "15")
    '("bgr" "GST_VIDEO_FORMAT_BGR" "16")
    '("y41b" "GST_VIDEO_FORMAT_Y41B" "17")
    '("y42b" "GST_VIDEO_FORMAT_Y42B" "18")
    '("yvyu" "GST_VIDEO_FORMAT_YVYU" "19")
    '("y444" "GST_VIDEO_FORMAT_Y444" "20")
    '("v210" "GST_VIDEO_FORMAT_v210" "21")
    '("v216" "GST_VIDEO_FORMAT_v216" "22")
    '("nv12" "GST_VIDEO_FORMAT_NV12" "23")
    '("nv21" "GST_VIDEO_FORMAT_NV21" "24")
    '("gray8" "GST_VIDEO_FORMAT_GRAY8" "25")
    '("gray16-be" "GST_VIDEO_FORMAT_GRAY16_BE" "26")
    '("gray16-le" "GST_VIDEO_FORMAT_GRAY16_LE" "27")
    '("v308" "GST_VIDEO_FORMAT_v308" "28")
    '("rgb16" "GST_VIDEO_FORMAT_RGB16" "29")
    '("bgr16" "GST_VIDEO_FORMAT_BGR16" "30")
    '("rgb15" "GST_VIDEO_FORMAT_RGB15" "31")
    '("bgr15" "GST_VIDEO_FORMAT_BGR15" "32")
    '("uyvp" "GST_VIDEO_FORMAT_UYVP" "33")
    '("a420" "GST_VIDEO_FORMAT_A420" "34")
    '("rgb8p" "GST_VIDEO_FORMAT_RGB8P" "35")
    '("yuv9" "GST_VIDEO_FORMAT_YUV9" "36")
    '("yvu9" "GST_VIDEO_FORMAT_YVU9" "37")
    '("iyu1" "GST_VIDEO_FORMAT_IYU1" "38")
    '("argb64" "GST_VIDEO_FORMAT_ARGB64" "39")
    '("ayuv64" "GST_VIDEO_FORMAT_AYUV64" "40")
    '("r210" "GST_VIDEO_FORMAT_r210" "41")
    '("i420-10be" "GST_VIDEO_FORMAT_I420_10BE" "42")
    '("i420-10le" "GST_VIDEO_FORMAT_I420_10LE" "43")
    '("i422-10be" "GST_VIDEO_FORMAT_I422_10BE" "44")
    '("i422-10le" "GST_VIDEO_FORMAT_I422_10LE" "45")
  )
)

;; Original typedef:
;; typedef enum {
;;   GST_VIDEO_CHROMA_SITE_UNKNOWN   =  0,
;;   GST_VIDEO_CHROMA_SITE_NONE      = (1 << 0),
;;   GST_VIDEO_CHROMA_SITE_H_COSITED = (1 << 1),
;;   GST_VIDEO_CHROMA_SITE_V_COSITED = (1 << 2),
;;   GST_VIDEO_CHROMA_SITE_ALT_LINE  = (1 << 3),
;;   /* some common chroma cositing */
;;   GST_VIDEO_CHROMA_SITE_COSITED   = (GST_VIDEO_CHROMA_SITE_H_COSITED | GST_VIDEO_CHROMA_SITE_V_COSITED),
;;   GST_VIDEO_CHROMA_SITE_JPEG      = (GST_VIDEO_CHROMA_SITE_NONE),
;;   GST_VIDEO_CHROMA_SITE_MPEG2     = (GST_VIDEO_CHROMA_SITE_H_COSITED),
;;   GST_VIDEO_CHROMA_SITE_DV        = (GST_VIDEO_CHROMA_SITE_COSITED | GST_VIDEO_CHROMA_SITE_ALT_LINE),
;; } GstVideoChromaSite;

(define-flags-extended VideoChromaSite
  (in-module "Gst")
  (c-name "GstVideoChromaSite")
  (values
    '("unknown" "GST_VIDEO_CHROMA_SITE_UNKNOWN" "0x0")
    '("none" "GST_VIDEO_CHROMA_SITE_NONE" "(1 << 0)")
    '("h-cosited" "GST_VIDEO_CHROMA_SITE_H_COSITED" "(1 << 1)")
    '("v-cosited" "GST_VIDEO_CHROMA_SITE_V_COSITED" "(1 << 2)")
    '("alt-line" "GST_VIDEO_CHROMA_SITE_ALT_LINE" "(1 << 3)")
    '("cosited" "GST_VIDEO_CHROMA_SITE_COSITED" "0x6")
    '("jpeg" "GST_VIDEO_CHROMA_SITE_JPEG" "0x1")
    '("mpeg2" "GST_VIDEO_CHROMA_SITE_MPEG2" "0x2")
    '("dv" "GST_VIDEO_CHROMA_SITE_DV" "0xE")
  )
)

;; Original typedef:
;; typedef enum
;; {
;;   GST_VIDEO_FORMAT_FLAG_YUV      = (1 << 0),
;;   GST_VIDEO_FORMAT_FLAG_RGB      = (1 << 1),
;;   GST_VIDEO_FORMAT_FLAG_GRAY     = (1 << 2),
;;   GST_VIDEO_FORMAT_FLAG_ALPHA    = (1 << 3),
;;   GST_VIDEO_FORMAT_FLAG_LE       = (1 << 4),
;;   GST_VIDEO_FORMAT_FLAG_PALETTE  = (1 << 5),
;;   GST_VIDEO_FORMAT_FLAG_COMPLEX  = (1 << 6),
;;   GST_VIDEO_FORMAT_FLAG_UNPACK   = (1 << 7)
;; } GstVideoFormatFlags;

(define-flags-extended VideoFormatFlags
  (in-module "Gst")
  (c-name "GstVideoFormatFlags")
  (values
    '("yuv" "GST_VIDEO_FORMAT_FLAG_YUV" "(1 << 0)")
    '("rgb" "GST_VIDEO_FORMAT_FLAG_RGB" "(1 << 1)")
    '("gray" "GST_VIDEO_FORMAT_FLAG_GRAY" "(1 << 2)")
    '("alpha" "GST_VIDEO_FORMAT_FLAG_ALPHA" "(1 << 3)")
    '("le" "GST_VIDEO_FORMAT_FLAG_LE" "(1 << 4)")
    '("palette" "GST_VIDEO_FORMAT_FLAG_PALETTE" "(1 << 5)")
    '("complex" "GST_VIDEO_FORMAT_FLAG_COMPLEX" "(1 << 6)")
    '("unpack" "GST_VIDEO_FORMAT_FLAG_UNPACK" "(1 << 7)")
  )
)

;; Original typedef:
;; typedef enum
;; {
;;   GST_VIDEO_PACK_FLAG_NONE           = 0,
;;   GST_VIDEO_PACK_FLAG_TRUNCATE_RANGE = 1
;; } GstVideoPackFlags;

(define-flags-extended VideoPackFlags
  (in-module "Gst")
  (c-name "GstVideoPackFlags")
  (values
    '("none" "GST_VIDEO_PACK_FLAG_NONE" "0x0")
    '("truncate-range" "GST_VIDEO_PACK_FLAG_TRUNCATE_RANGE" "0x1")
  )
)

;; From video-frame.h

;; Original typedef:
;; typedef enum {
;;   GST_VIDEO_FRAME_FLAG_NONE         = 0,
;;   GST_VIDEO_FRAME_FLAG_INTERLACED   = (1 << 0),
;;   GST_VIDEO_FRAME_FLAG_TFF          = (1 << 1),
;;   GST_VIDEO_FRAME_FLAG_RFF          = (1 << 2),
;;   GST_VIDEO_FRAME_FLAG_ONEFIELD     = (1 << 3)
;; } GstVideoFrameFlags;

(define-flags-extended VideoFrameFlags
  (in-module "Gst")
  (c-name "GstVideoFrameFlags")
  (values
    '("none" "GST_VIDEO_FRAME_FLAG_NONE" "0x0")
    '("interlaced" "GST_VIDEO_FRAME_FLAG_INTERLACED" "(1 << 0)")
    '("tff" "GST_VIDEO_FRAME_FLAG_TFF" "(1 << 1)")
    '("rff" "GST_VIDEO_FRAME_FLAG_RFF" "(1 << 2)")
    '("onefield" "GST_VIDEO_FRAME_FLAG_ONEFIELD" "(1 << 3)")
  )
)

;; Original typedef:
;; typedef enum {
;;   GST_VIDEO_BUFFER_FLAG_INTERLACED  = (GST_BUFFER_FLAG_LAST << 0),
;;   GST_VIDEO_BUFFER_FLAG_TFF         = (GST_BUFFER_FLAG_LAST << 1),
;;   GST_VIDEO_BUFFER_FLAG_RFF         = (GST_BUFFER_FLAG_LAST << 2),
;;   GST_VIDEO_BUFFER_FLAG_ONEFIELD    = (GST_BUFFER_FLAG_LAST << 3),
;; 
;;   GST_VIDEO_BUFFER_FLAG_LAST        = (GST_BUFFER_FLAG_LAST << 8)
;; } GstVideoBufferFlags;

(define-flags-extended VideoBufferFlags
  (in-module "Gst")
  (c-name "GstVideoBufferFlags")
  (values
    '("interlaced" "GST_VIDEO_BUFFER_FLAG_INTERLACED" "(GST_BUFFER_FLAG_LAST << 0)")
    '("tff" "GST_VIDEO_BUFFER_FLAG_TFF" "(GST_BUFFER_FLAG_LAST << 1)")
    '("rff" "GST_VIDEO_BUFFER_FLAG_RFF" "(GST_BUFFER_FLAG_LAST << 2)")
    '("onefield" "GST_VIDEO_BUFFER_FLAG_ONEFIELD" "(GST_BUFFER_FLAG_LAST << 3)")
    '("last" "GST_VIDEO_BUFFER_FLAG_LAST" "(GST_BUFFER_FLAG_LAST << 8)")
  )
)

;; From video-info.h

;; Original typedef:
;; typedef enum {
;;   GST_VIDEO_INTERLACE_MODE_PROGRESSIVE = 0,
;;   GST_VIDEO_INTERLACE_MODE_INTERLEAVED,
;;   GST_VIDEO_INTERLACE_MODE_MIXED,
;;   GST_VIDEO_INTERLACE_MODE_FIELDS
;; } GstVideoInterlaceMode;

(define-enum-extended VideoInterlaceMode
  (in-module "Gst")
  (c-name "GstVideoInterlaceMode")
  (values
    '("progressive" "GST_VIDEO_INTERLACE_MODE_PROGRESSIVE" "0")
    '("interleaved" "GST_VIDEO_INTERLACE_MODE_INTERLEAVED" "1")
    '("mixed" "GST_VIDEO_INTERLACE_MODE_MIXED" "2")
    '("fields" "GST_VIDEO_INTERLACE_MODE_FIELDS" "3")
  )
)

;; Original typedef:
;; typedef enum {
;;   GST_VIDEO_FLAG_NONE                = 0,
;;   GST_VIDEO_FLAG_VARIABLE_FPS        = (1 << 0),
;;   GST_VIDEO_FLAG_PREMULTIPLIED_ALPHA = (1 << 1)
;; } GstVideoFlags;

(define-flags-extended VideoFlags
  (in-module "Gst")
  (c-name "GstVideoFlags")
  (values
    '("none" "GST_VIDEO_FLAG_NONE" "0x0")
    '("variable-fps" "GST_VIDEO_FLAG_VARIABLE_FPS" "(1 << 0)")
    '("premultiplied-alpha" "GST_VIDEO_FLAG_PREMULTIPLIED_ALPHA" "(1 << 1)")
  )
)

;; From video-overlay-composition.h

;; Original typedef:
;; typedef enum {
;;   GST_VIDEO_OVERLAY_FORMAT_FLAG_NONE = 0,
;;   GST_VIDEO_OVERLAY_FORMAT_FLAG_PREMULTIPLIED_ALPHA = 1,
;;   GST_VIDEO_OVERLAY_FORMAT_FLAG_GLOBAL_ALPHA = 2
;; } GstVideoOverlayFormatFlags;

(define-flags-extended VideoOverlayFormatFlags
  (in-module "Gst")
  (c-name "GstVideoOverlayFormatFlags")
  (values
    '("none" "GST_VIDEO_OVERLAY_FORMAT_FLAG_NONE" "0x0")
    '("premultiplied-alpha" "GST_VIDEO_OVERLAY_FORMAT_FLAG_PREMULTIPLIED_ALPHA" "0x1")
    '("global-alpha" "GST_VIDEO_OVERLAY_FORMAT_FLAG_GLOBAL_ALPHA" "0x2")
  )
)

;; From audioconvert.h

;; Original typedef:
;; typedef enum
;; {
;;   DITHER_NONE = 0,
;;   DITHER_RPDF,
;;   DITHER_TPDF,
;;   DITHER_TPDF_HF
;; } GstAudioConvertDithering;

(define-enum-extended AudioConvertDithering
  (in-module "Gst")
  (c-name "GstAudioConvertDithering")
  (values
    '("none" "GST_AUDIO_CONVERT_DITHER_NONE" "0")
    '("rpdf" "GST_AUDIO_CONVERT_DITHER_RPDF" "1")
    '("tpdf" "GST_AUDIO_CONVERT_DITHER_TPDF" "2")
    '("tpdf-hf" "GST_AUDIO_CONVERT_DITHER_TPDF_HF" "3")
  )
)

;; Original typedef:
;; typedef enum
;; {
;;   NOISE_SHAPING_NONE = 0,
;;   NOISE_SHAPING_ERROR_FEEDBACK,
;;   NOISE_SHAPING_SIMPLE,
;;   NOISE_SHAPING_MEDIUM,
;;   NOISE_SHAPING_HIGH
;; } GstAudioConvertNoiseShaping;

(define-enum-extended AudioConvertNoiseShaping
  (in-module "Gst")
  (c-name "GstAudioConvertNoiseShaping")
  (values
    '("none" "GST_AUDIO_CONVERT_NOISE_SHAPING_NONE" "0")
    '("error-feedback" "GST_AUDIO_CONVERT_NOISE_SHAPING_ERROR_FEEDBACK" "1")
    '("simple" "GST_AUDIO_CONVERT_NOISE_SHAPING_SIMPLE" "2")
    '("medium" "GST_AUDIO_CONVERT_NOISE_SHAPING_MEDIUM" "3")
    '("high" "GST_AUDIO_CONVERT_NOISE_SHAPING_HIGH" "4")
  )
)

;; From gstaudiotestsrc.h

;; Original typedef:
;; typedef enum {
;;   GST_AUDIO_TEST_SRC_WAVE_SINE,
;;   GST_AUDIO_TEST_SRC_WAVE_SQUARE,
;;   GST_AUDIO_TEST_SRC_WAVE_SAW,
;;   GST_AUDIO_TEST_SRC_WAVE_TRIANGLE,
;;   GST_AUDIO_TEST_SRC_WAVE_SILENCE,
;;   GST_AUDIO_TEST_SRC_WAVE_WHITE_NOISE,
;;   GST_AUDIO_TEST_SRC_WAVE_PINK_NOISE,
;;   GST_AUDIO_TEST_SRC_WAVE_SINE_TAB,
;;   GST_AUDIO_TEST_SRC_WAVE_TICKS,
;;   GST_AUDIO_TEST_SRC_WAVE_GAUSSIAN_WHITE_NOISE,
;;   GST_AUDIO_TEST_SRC_WAVE_RED_NOISE,
;;   GST_AUDIO_TEST_SRC_WAVE_BLUE_NOISE,
;;   GST_AUDIO_TEST_SRC_WAVE_VIOLET_NOISE
;; } GstAudioTestSrcWave;

(define-enum-extended AudioTestSrcWave
  (in-module "Gst")
  (c-name "GstAudioTestSrcWave")
  (values
    '("sine" "GST_AUDIO_TEST_SRC_WAVE_SINE" "0")
    '("square" "GST_AUDIO_TEST_SRC_WAVE_SQUARE" "1")
    '("saw" "GST_AUDIO_TEST_SRC_WAVE_SAW" "2")
    '("triangle" "GST_AUDIO_TEST_SRC_WAVE_TRIANGLE" "3")
    '("silence" "GST_AUDIO_TEST_SRC_WAVE_SILENCE" "4")
    '("white-noise" "GST_AUDIO_TEST_SRC_WAVE_WHITE_NOISE" "5")
    '("pink-noise" "GST_AUDIO_TEST_SRC_WAVE_PINK_NOISE" "6")
    '("sine-tab" "GST_AUDIO_TEST_SRC_WAVE_SINE_TAB" "7")
    '("ticks" "GST_AUDIO_TEST_SRC_WAVE_TICKS" "8")
    '("gaussian-white-noise" "GST_AUDIO_TEST_SRC_WAVE_GAUSSIAN_WHITE_NOISE" "9")
    '("red-noise" "GST_AUDIO_TEST_SRC_WAVE_RED_NOISE" "10")
    '("blue-noise" "GST_AUDIO_TEST_SRC_WAVE_BLUE_NOISE" "11")
    '("violet-noise" "GST_AUDIO_TEST_SRC_WAVE_VIOLET_NOISE" "12")
  )
)

;; From gstplay-enum.h

;; Original typedef:
;; typedef enum {
;;   GST_AUTOPLUG_SELECT_TRY,
;;   GST_AUTOPLUG_SELECT_EXPOSE,
;;   GST_AUTOPLUG_SELECT_SKIP
;; } GstAutoplugSelectResult;

(define-enum-extended AutoplugSelectResult
  (in-module "Gst")
  (c-name "GstAutoplugSelectResult")
  (values
    '("try" "GST_AUTOPLUG_SELECT_TRY" "0")
    '("expose" "GST_AUTOPLUG_SELECT_EXPOSE" "1")
    '("skip" "GST_AUTOPLUG_SELECT_SKIP" "2")
  )
)

;; Original typedef:
;; typedef enum {
;;   GST_PLAY_FLAG_VIDEO         = (1 << 0),
;;   GST_PLAY_FLAG_AUDIO         = (1 << 1),
;;   GST_PLAY_FLAG_TEXT          = (1 << 2),
;;   GST_PLAY_FLAG_VIS           = (1 << 3),
;;   GST_PLAY_FLAG_SOFT_VOLUME   = (1 << 4),
;;   GST_PLAY_FLAG_NATIVE_AUDIO  = (1 << 5),
;;   GST_PLAY_FLAG_NATIVE_VIDEO  = (1 << 6),
;;   GST_PLAY_FLAG_DOWNLOAD      = (1 << 7),
;;   GST_PLAY_FLAG_BUFFERING     = (1 << 8),
;;   GST_PLAY_FLAG_DEINTERLACE   = (1 << 9),
;;   GST_PLAY_FLAG_SOFT_COLORBALANCE = (1 << 10)
;; } GstPlayFlags;

(define-flags-extended PlayFlags
  (in-module "Gst")
  (c-name "GstPlayFlags")
  (values
    '("video" "GST_PLAY_FLAG_VIDEO" "(1 << 0)")
    '("audio" "GST_PLAY_FLAG_AUDIO" "(1 << 1)")
    '("text" "GST_PLAY_FLAG_TEXT" "(1 << 2)")
    '("vis" "GST_PLAY_FLAG_VIS" "(1 << 3)")
    '("soft-volume" "GST_PLAY_FLAG_SOFT_VOLUME" "(1 << 4)")
    '("native-audio" "GST_PLAY_FLAG_NATIVE_AUDIO" "(1 << 5)")
    '("native-video" "GST_PLAY_FLAG_NATIVE_VIDEO" "(1 << 6)")
    '("download" "GST_PLAY_FLAG_DOWNLOAD" "(1 << 7)")
    '("buffering" "GST_PLAY_FLAG_BUFFERING" "(1 << 8)")
    '("deinterlace" "GST_PLAY_FLAG_DEINTERLACE" "(1 << 9)")
    '("soft-colorbalance" "GST_PLAY_FLAG_SOFT_COLORBALANCE" "(1 << 10)")
  )
)

;; From gstplaysink.h

;; Original typedef:
;; typedef enum {
;;   GST_PLAY_SINK_TYPE_AUDIO     = 0,
;;   GST_PLAY_SINK_TYPE_AUDIO_RAW = 1,
;;   GST_PLAY_SINK_TYPE_VIDEO     = 2,
;;   GST_PLAY_SINK_TYPE_VIDEO_RAW = 3,
;;   GST_PLAY_SINK_TYPE_TEXT      = 4,
;;   GST_PLAY_SINK_TYPE_LAST      = 5,
;; 
;;   /* this is a dummy pad */
;;   GST_PLAY_SINK_TYPE_FLUSHING  = 6
;; } GstPlaySinkType;

(define-enum-extended PlaySinkType
  (in-module "Gst")
  (c-name "GstPlaySinkType")
  (values
    '("audio" "GST_PLAY_SINK_TYPE_AUDIO" "0")
    '("audio-raw" "GST_PLAY_SINK_TYPE_AUDIO_RAW" "1")
    '("video" "GST_PLAY_SINK_TYPE_VIDEO" "2")
    '("video-raw" "GST_PLAY_SINK_TYPE_VIDEO_RAW" "3")
    '("text" "GST_PLAY_SINK_TYPE_TEXT" "4")
    '("last" "GST_PLAY_SINK_TYPE_LAST" "5")
    '("flushing" "GST_PLAY_SINK_TYPE_FLUSHING" "6")
  )
)

;; From gstsubparse.h

;; Original typedef:
;; typedef enum
;; {
;;   GST_SUB_PARSE_FORMAT_UNKNOWN = 0,
;;   GST_SUB_PARSE_FORMAT_MDVDSUB = 1,
;;   GST_SUB_PARSE_FORMAT_SUBRIP = 2,
;;   GST_SUB_PARSE_FORMAT_MPSUB = 3,
;;   GST_SUB_PARSE_FORMAT_SAMI = 4,
;;   GST_SUB_PARSE_FORMAT_TMPLAYER = 5,
;;   GST_SUB_PARSE_FORMAT_MPL2 = 6,
;;   GST_SUB_PARSE_FORMAT_SUBVIEWER = 7,
;;   GST_SUB_PARSE_FORMAT_DKS = 8,
;;   GST_SUB_PARSE_FORMAT_QTTEXT = 9
;; } GstSubParseFormat;

(define-enum-extended SubParseFormat
  (in-module "Gst")
  (c-name "GstSubParseFormat")
  (values
    '("unknown" "GST_SUB_PARSE_FORMAT_UNKNOWN" "0")
    '("mdvdsub" "GST_SUB_PARSE_FORMAT_MDVDSUB" "1")
    '("subrip" "GST_SUB_PARSE_FORMAT_SUBRIP" "2")
    '("mpsub" "GST_SUB_PARSE_FORMAT_MPSUB" "3")
    '("sami" "GST_SUB_PARSE_FORMAT_SAMI" "4")
    '("tmplayer" "GST_SUB_PARSE_FORMAT_TMPLAYER" "5")
    '("mpl2" "GST_SUB_PARSE_FORMAT_MPL2" "6")
    '("subviewer" "GST_SUB_PARSE_FORMAT_SUBVIEWER" "7")
    '("dks" "GST_SUB_PARSE_FORMAT_DKS" "8")
    '("qttext" "GST_SUB_PARSE_FORMAT_QTTEXT" "9")
  )
)

;; From gstmultihandlesink.h

;; Original typedef:
;; typedef enum {
;;   GST_MULTI_HANDLE_SINK_OPEN             = (GST_ELEMENT_FLAG_LAST << 0),
;; 
;;   GST_MULTI_HANDLE_SINK_FLAG_LAST        = (GST_ELEMENT_FLAG_LAST << 2)
;; } GstMultiHandleSinkFlags;

(define-flags-extended MultiHandleSinkFlags
  (in-module "Gst")
  (c-name "GstMultiHandleSinkFlags")
  (values
    '("open" "GST_MULTI_HANDLE_SINK_OPEN" "(GST_ELEMENT_FLAG_LAST << 0)")
    '("flag-last" "GST_MULTI_HANDLE_SINK_FLAG_LAST" "(GST_ELEMENT_FLAG_LAST << 2)")
  )
)

;; Original typedef:
;; typedef enum
;; {
;;   GST_RECOVER_POLICY_NONE,
;;   GST_RECOVER_POLICY_RESYNC_LATEST,
;;   GST_RECOVER_POLICY_RESYNC_SOFT_LIMIT,
;;   GST_RECOVER_POLICY_RESYNC_KEYFRAME
;; } GstRecoverPolicy;

(define-enum-extended RecoverPolicy
  (in-module "Gst")
  (c-name "GstRecoverPolicy")
  (values
    '("none" "GST_RECOVER_POLICY_NONE" "0")
    '("resync-latest" "GST_RECOVER_POLICY_RESYNC_LATEST" "1")
    '("resync-soft-limit" "GST_RECOVER_POLICY_RESYNC_SOFT_LIMIT" "2")
    '("resync-keyframe" "GST_RECOVER_POLICY_RESYNC_KEYFRAME" "3")
  )
)

;; Original typedef:
;; typedef enum
;; {
;;   GST_SYNC_METHOD_LATEST,
;;   GST_SYNC_METHOD_NEXT_KEYFRAME,
;;   GST_SYNC_METHOD_LATEST_KEYFRAME,
;;   GST_SYNC_METHOD_BURST,
;;   GST_SYNC_METHOD_BURST_KEYFRAME,
;;   GST_SYNC_METHOD_BURST_WITH_KEYFRAME
;; } GstSyncMethod;

(define-enum-extended SyncMethod
  (in-module "Gst")
  (c-name "GstSyncMethod")
  (values
    '("latest" "GST_SYNC_METHOD_LATEST" "0")
    '("next-keyframe" "GST_SYNC_METHOD_NEXT_KEYFRAME" "1")
    '("latest-keyframe" "GST_SYNC_METHOD_LATEST_KEYFRAME" "2")
    '("burst" "GST_SYNC_METHOD_BURST" "3")
    '("burst-keyframe" "GST_SYNC_METHOD_BURST_KEYFRAME" "4")
    '("burst-with-keyframe" "GST_SYNC_METHOD_BURST_WITH_KEYFRAME" "5")
  )
)

;; Original typedef:
;; typedef enum
;; {
;;   GST_CLIENT_STATUS_OK          = 0,
;;   GST_CLIENT_STATUS_CLOSED      = 1,
;;   GST_CLIENT_STATUS_REMOVED     = 2,
;;   GST_CLIENT_STATUS_SLOW        = 3,
;;   GST_CLIENT_STATUS_ERROR       = 4,
;;   GST_CLIENT_STATUS_DUPLICATE   = 5,
;;   GST_CLIENT_STATUS_FLUSHING    = 6
;; } GstClientStatus;

(define-enum-extended ClientStatus
  (in-module "Gst")
  (c-name "GstClientStatus")
  (values
    '("ok" "GST_CLIENT_STATUS_OK" "0")
    '("closed" "GST_CLIENT_STATUS_CLOSED" "1")
    '("removed" "GST_CLIENT_STATUS_REMOVED" "2")
    '("slow" "GST_CLIENT_STATUS_SLOW" "3")
    '("error" "GST_CLIENT_STATUS_ERROR" "4")
    '("duplicate" "GST_CLIENT_STATUS_DUPLICATE" "5")
    '("flushing" "GST_CLIENT_STATUS_FLUSHING" "6")
  )
)

;; From gsttcpclientsink.h

;; Original typedef:
;; typedef enum {
;;   GST_TCP_CLIENT_SINK_OPEN             = (GST_ELEMENT_FLAG_LAST << 0),
;; 
;;   GST_TCP_CLIENT_SINK_FLAG_LAST        = (GST_ELEMENT_FLAG_LAST << 2),
;; } GstTCPClientSinkFlags;

(define-flags-extended TCPClientSinkFlags
  (in-module "Gst")
  (c-name "GstTCPClientSinkFlags")
  (values
    '("open" "GST_TCP_CLIENT_SINK_OPEN" "(GST_ELEMENT_FLAG_LAST << 0)")
    '("flag-last" "GST_TCP_CLIENT_SINK_FLAG_LAST" "(GST_ELEMENT_FLAG_LAST << 2)")
  )
)

;; From gsttcpclientsrc.h

;; Original typedef:
;; typedef enum {
;;   GST_TCP_CLIENT_SRC_OPEN       = (GST_BASE_SRC_FLAG_LAST << 0),
;; 
;;   GST_TCP_CLIENT_SRC_FLAG_LAST  = (GST_BASE_SRC_FLAG_LAST << 2)
;; } GstTCPClientSrcFlags;

(define-flags-extended TCPClientSrcFlags
  (in-module "Gst")
  (c-name "GstTCPClientSrcFlags")
  (values
    '("open" "GST_TCP_CLIENT_SRC_OPEN" "(GST_BASE_SRC_FLAG_LAST << 0)")
    '("flag-last" "GST_TCP_CLIENT_SRC_FLAG_LAST" "(GST_BASE_SRC_FLAG_LAST << 2)")
  )
)

;; From gsttcpserversink.h

;; Original typedef:
;; typedef enum {
;;   GST_TCP_SERVER_SINK_OPEN             = (GST_ELEMENT_FLAG_LAST << 0),
;; 
;;   GST_TCP_SERVER_SINK_FLAG_LAST        = (GST_ELEMENT_FLAG_LAST << 2)
;; } GstTCPServerSinkFlags;

(define-flags-extended TCPServerSinkFlags
  (in-module "Gst")
  (c-name "GstTCPServerSinkFlags")
  (values
    '("open" "GST_TCP_SERVER_SINK_OPEN" "(GST_ELEMENT_FLAG_LAST << 0)")
    '("flag-last" "GST_TCP_SERVER_SINK_FLAG_LAST" "(GST_ELEMENT_FLAG_LAST << 2)")
  )
)

;; From gsttcpserversrc.h

;; Original typedef:
;; typedef enum {
;;   GST_TCP_SERVER_SRC_OPEN       = (GST_BASE_SRC_FLAG_LAST << 0),
;; 
;;   GST_TCP_SERVER_SRC_FLAG_LAST  = (GST_BASE_SRC_FLAG_LAST << 2)
;; } GstTCPServerSrcFlags;

(define-flags-extended TCPServerSrcFlags
  (in-module "Gst")
  (c-name "GstTCPServerSrcFlags")
  (values
    '("open" "GST_TCP_SERVER_SRC_OPEN" "(GST_BASE_SRC_FLAG_LAST << 0)")
    '("flag-last" "GST_TCP_SERVER_SRC_FLAG_LAST" "(GST_BASE_SRC_FLAG_LAST << 2)")
  )
)

;; From videoconvert.h

;; Original typedef:
;; typedef enum {
;;   DITHER_NONE,
;;   DITHER_VERTERR,
;;   DITHER_HALFTONE
;; } ColorSpaceDitherMethod;

(define-enum-extended ColorSpaceDitherMethod
  (in-module "Gst")
  (c-name "ColorSpaceDitherMethod")
  (values
    '("none" "DITHER_NONE" "0")
    '("verterr" "DITHER_VERTERR" "1")
    '("halftone" "DITHER_HALFTONE" "2")
  )
)

;; From gstvideoscale.h

;; Original typedef:
;; typedef enum {
;;   GST_VIDEO_SCALE_NEAREST,
;;   GST_VIDEO_SCALE_BILINEAR,
;;   GST_VIDEO_SCALE_4TAP,
;;   GST_VIDEO_SCALE_LANCZOS
;; } GstVideoScaleMethod;

(define-enum-extended VideoScaleMethod
  (in-module "Gst")
  (c-name "GstVideoScaleMethod")
  (values
    '("nearest" "GST_VIDEO_SCALE_NEAREST" "0")
    '("bilinear" "GST_VIDEO_SCALE_BILINEAR" "1")
    '("4tap" "GST_VIDEO_SCALE_4TAP" "2")
    '("lanczos" "GST_VIDEO_SCALE_LANCZOS" "3")
  )
)

;; From gstvideotestsrc.h

;; Original typedef:
;; typedef enum {
;;   GST_VIDEO_TEST_SRC_SMPTE,
;;   GST_VIDEO_TEST_SRC_SNOW,
;;   GST_VIDEO_TEST_SRC_BLACK,
;;   GST_VIDEO_TEST_SRC_WHITE,
;;   GST_VIDEO_TEST_SRC_RED,
;;   GST_VIDEO_TEST_SRC_GREEN,
;;   GST_VIDEO_TEST_SRC_BLUE,
;;   GST_VIDEO_TEST_SRC_CHECKERS1,
;;   GST_VIDEO_TEST_SRC_CHECKERS2,
;;   GST_VIDEO_TEST_SRC_CHECKERS4,
;;   GST_VIDEO_TEST_SRC_CHECKERS8,
;;   GST_VIDEO_TEST_SRC_CIRCULAR,
;;   GST_VIDEO_TEST_SRC_BLINK,
;;   GST_VIDEO_TEST_SRC_SMPTE75,
;;   GST_VIDEO_TEST_SRC_ZONE_PLATE,
;;   GST_VIDEO_TEST_SRC_GAMUT,
;;   GST_VIDEO_TEST_SRC_CHROMA_ZONE_PLATE,
;;   GST_VIDEO_TEST_SRC_SOLID,
;;   GST_VIDEO_TEST_SRC_BALL,
;;   GST_VIDEO_TEST_SRC_SMPTE100,
;;   GST_VIDEO_TEST_SRC_BAR
;; } GstVideoTestSrcPattern;

(define-enum-extended VideoTestSrcPattern
  (in-module "Gst")
  (c-name "GstVideoTestSrcPattern")
  (values
    '("smpte" "GST_VIDEO_TEST_SRC_SMPTE" "0")
    '("snow" "GST_VIDEO_TEST_SRC_SNOW" "1")
    '("black" "GST_VIDEO_TEST_SRC_BLACK" "2")
    '("white" "GST_VIDEO_TEST_SRC_WHITE" "3")
    '("red" "GST_VIDEO_TEST_SRC_RED" "4")
    '("green" "GST_VIDEO_TEST_SRC_GREEN" "5")
    '("blue" "GST_VIDEO_TEST_SRC_BLUE" "6")
    '("checkers1" "GST_VIDEO_TEST_SRC_CHECKERS1" "7")
    '("checkers2" "GST_VIDEO_TEST_SRC_CHECKERS2" "8")
    '("checkers4" "GST_VIDEO_TEST_SRC_CHECKERS4" "9")
    '("checkers8" "GST_VIDEO_TEST_SRC_CHECKERS8" "10")
    '("circular" "GST_VIDEO_TEST_SRC_CIRCULAR" "11")
    '("blink" "GST_VIDEO_TEST_SRC_BLINK" "12")
    '("smpte75" "GST_VIDEO_TEST_SRC_SMPTE75" "13")
    '("zone-plate" "GST_VIDEO_TEST_SRC_ZONE_PLATE" "14")
    '("gamut" "GST_VIDEO_TEST_SRC_GAMUT" "15")
    '("chroma-zone-plate" "GST_VIDEO_TEST_SRC_CHROMA_ZONE_PLATE" "16")
    '("solid" "GST_VIDEO_TEST_SRC_SOLID" "17")
    '("ball" "GST_VIDEO_TEST_SRC_BALL" "18")
    '("smpte100" "GST_VIDEO_TEST_SRC_SMPTE100" "19")
    '("bar" "GST_VIDEO_TEST_SRC_BAR" "20")
  )
)

;; From gstaudiovisualizer.h

;; Original typedef:
;; typedef enum {
;;   GST_AUDIO_VISUALIZER_SHADER_NONE,
;;   GST_AUDIO_VISUALIZER_SHADER_FADE,
;;   GST_AUDIO_VISUALIZER_SHADER_FADE_AND_MOVE_UP,
;;   GST_AUDIO_VISUALIZER_SHADER_FADE_AND_MOVE_DOWN,
;;   GST_AUDIO_VISUALIZER_SHADER_FADE_AND_MOVE_LEFT,
;;   GST_AUDIO_VISUALIZER_SHADER_FADE_AND_MOVE_RIGHT,
;;   GST_AUDIO_VISUALIZER_SHADER_FADE_AND_MOVE_HORIZ_OUT,
;;   GST_AUDIO_VISUALIZER_SHADER_FADE_AND_MOVE_HORIZ_IN,
;;   GST_AUDIO_VISUALIZER_SHADER_FADE_AND_MOVE_VERT_OUT,
;;   GST_AUDIO_VISUALIZER_SHADER_FADE_AND_MOVE_VERT_IN
;; } GstAudioVisualizerShader;

(define-enum-extended AudioVisualizerShader
  (in-module "Gst")
  (c-name "GstAudioVisualizerShader")
  (values
    '("none" "GST_AUDIO_VISUALIZER_SHADER_NONE" "0")
    '("fade" "GST_AUDIO_VISUALIZER_SHADER_FADE" "1")
    '("fade-and-move-up" "GST_AUDIO_VISUALIZER_SHADER_FADE_AND_MOVE_UP" "2")
    '("fade-and-move-down" "GST_AUDIO_VISUALIZER_SHADER_FADE_AND_MOVE_DOWN" "3")
    '("fade-and-move-left" "GST_AUDIO_VISUALIZER_SHADER_FADE_AND_MOVE_LEFT" "4")
    '("fade-and-move-right" "GST_AUDIO_VISUALIZER_SHADER_FADE_AND_MOVE_RIGHT" "5")
    '("fade-and-move-horiz-out" "GST_AUDIO_VISUALIZER_SHADER_FADE_AND_MOVE_HORIZ_OUT" "6")
    '("fade-and-move-horiz-in" "GST_AUDIO_VISUALIZER_SHADER_FADE_AND_MOVE_HORIZ_IN" "7")
    '("fade-and-move-vert-out" "GST_AUDIO_VISUALIZER_SHADER_FADE_AND_MOVE_VERT_OUT" "8")
    '("fade-and-move-vert-in" "GST_AUDIO_VISUALIZER_SHADER_FADE_AND_MOVE_VERT_IN" "9")
  )
)

;; From dirac_parse.h

;; Original typedef:
;; typedef enum _SchroParseCode {
;;   SCHRO_PARSE_CODE_SEQUENCE_HEADER = 0x00,
;;   SCHRO_PARSE_CODE_END_OF_SEQUENCE = 0x10,
;;   SCHRO_PARSE_CODE_AUXILIARY_DATA = 0x20,
;;   SCHRO_PARSE_CODE_PADDING = 0x30,
;; 
;;   SCHRO_PARSE_CODE_INTRA_REF = 0x0c,
;;   SCHRO_PARSE_CODE_INTRA_NON_REF = 0x08,
;;   SCHRO_PARSE_CODE_INTRA_REF_NOARITH = 0x4c,
;;   SCHRO_PARSE_CODE_INTRA_NON_REF_NOARITH = 0x48,
;; 
;;   SCHRO_PARSE_CODE_INTER_REF_1 = 0x0d,
;;   SCHRO_PARSE_CODE_INTER_REF_1_NOARITH = 0x4d,
;;   SCHRO_PARSE_CODE_INTER_REF_2 = 0x0e,
;;   SCHRO_PARSE_CODE_INTER_REF_2_NOARITH = 0x4e,
;; 
;;   SCHRO_PARSE_CODE_INTER_NON_REF_1 = 0x09,
;;   SCHRO_PARSE_CODE_INTER_NON_REF_1_NOARITH = 0x49,
;;   SCHRO_PARSE_CODE_INTER_NON_REF_2 = 0x0a,
;;   SCHRO_PARSE_CODE_INTER_NON_REF_2_NOARITH = 0x4a,
;; 
;;   SCHRO_PARSE_CODE_LD_INTRA_REF = 0xcc,
;;   SCHRO_PARSE_CODE_LD_INTRA_NON_REF = 0xc8
;; } SchroParseCode;

(define-flags-extended SchroParseCode
  (in-module "Gst")
  (c-name "SchroParseCode")
  (values
    '("sequence-header" "SCHRO_PARSE_CODE_SEQUENCE_HEADER" "0x00")
    '("end-of-sequence" "SCHRO_PARSE_CODE_END_OF_SEQUENCE" "0x10")
    '("auxiliary-data" "SCHRO_PARSE_CODE_AUXILIARY_DATA" "0x20")
    '("padding" "SCHRO_PARSE_CODE_PADDING" "0x30")
    '("intra-ref" "SCHRO_PARSE_CODE_INTRA_REF" "0x0c")
    '("intra-non-ref" "SCHRO_PARSE_CODE_INTRA_NON_REF" "0x08")
    '("intra-ref-noarith" "SCHRO_PARSE_CODE_INTRA_REF_NOARITH" "0x4c")
    '("intra-non-ref-noarith" "SCHRO_PARSE_CODE_INTRA_NON_REF_NOARITH" "0x48")
    '("inter-ref-1" "SCHRO_PARSE_CODE_INTER_REF_1" "0x0d")
    '("inter-ref-1-noarith" "SCHRO_PARSE_CODE_INTER_REF_1_NOARITH" "0x4d")
    '("inter-ref-2" "SCHRO_PARSE_CODE_INTER_REF_2" "0x0e")
    '("inter-ref-2-noarith" "SCHRO_PARSE_CODE_INTER_REF_2_NOARITH" "0x4e")
    '("inter-non-ref-1" "SCHRO_PARSE_CODE_INTER_NON_REF_1" "0x09")
    '("inter-non-ref-1-noarith" "SCHRO_PARSE_CODE_INTER_NON_REF_1_NOARITH" "0x49")
    '("inter-non-ref-2" "SCHRO_PARSE_CODE_INTER_NON_REF_2" "0x0a")
    '("inter-non-ref-2-noarith" "SCHRO_PARSE_CODE_INTER_NON_REF_2_NOARITH" "0x4a")
    '("ld-intra-ref" "SCHRO_PARSE_CODE_LD_INTRA_REF" "0xcc")
    '("ld-intra-non-ref" "SCHRO_PARSE_CODE_LD_INTRA_NON_REF" "0xc8")
  )
)

;; Original typedef:
;; typedef enum _SchroVideoFormatEnum {
;;   SCHRO_VIDEO_FORMAT_CUSTOM = 0,
;;   SCHRO_VIDEO_FORMAT_QSIF,
;;   SCHRO_VIDEO_FORMAT_QCIF,
;;   SCHRO_VIDEO_FORMAT_SIF,
;;   SCHRO_VIDEO_FORMAT_CIF,
;;   SCHRO_VIDEO_FORMAT_4SIF,
;;   SCHRO_VIDEO_FORMAT_4CIF,
;;   SCHRO_VIDEO_FORMAT_SD480I_60,
;;   SCHRO_VIDEO_FORMAT_SD576I_50,
;;   SCHRO_VIDEO_FORMAT_HD720P_60,
;;   SCHRO_VIDEO_FORMAT_HD720P_50,
;;   SCHRO_VIDEO_FORMAT_HD1080I_60,
;;   SCHRO_VIDEO_FORMAT_HD1080I_50,
;;   SCHRO_VIDEO_FORMAT_HD1080P_60,
;;   SCHRO_VIDEO_FORMAT_HD1080P_50,
;;   SCHRO_VIDEO_FORMAT_DC2K_24,
;;   SCHRO_VIDEO_FORMAT_DC4K_24
;; } SchroVideoFormatEnum;

(define-enum-extended SchroVideoFormatEnum
  (in-module "Gst")
  (c-name "SchroVideoFormatEnum")
  (values
    '("custom" "SCHRO_VIDEO_FORMAT_CUSTOM" "0")
    '("qsif" "SCHRO_VIDEO_FORMAT_QSIF" "1")
    '("qcif" "SCHRO_VIDEO_FORMAT_QCIF" "2")
    '("sif" "SCHRO_VIDEO_FORMAT_SIF" "3")
    '("cif" "SCHRO_VIDEO_FORMAT_CIF" "4")
    '("4sif" "SCHRO_VIDEO_FORMAT_4SIF" "5")
    '("4cif" "SCHRO_VIDEO_FORMAT_4CIF" "6")
    '("sd480i-60" "SCHRO_VIDEO_FORMAT_SD480I_60" "7")
    '("sd576i-50" "SCHRO_VIDEO_FORMAT_SD576I_50" "8")
    '("hd720p-60" "SCHRO_VIDEO_FORMAT_HD720P_60" "9")
    '("hd720p-50" "SCHRO_VIDEO_FORMAT_HD720P_50" "10")
    '("hd1080i-60" "SCHRO_VIDEO_FORMAT_HD1080I_60" "11")
    '("hd1080i-50" "SCHRO_VIDEO_FORMAT_HD1080I_50" "12")
    '("hd1080p-60" "SCHRO_VIDEO_FORMAT_HD1080P_60" "13")
    '("hd1080p-50" "SCHRO_VIDEO_FORMAT_HD1080P_50" "14")
    '("dc2k-24" "SCHRO_VIDEO_FORMAT_DC2K_24" "15")
    '("dc4k-24" "SCHRO_VIDEO_FORMAT_DC4K_24" "16")
  )
)

;; Original typedef:
;; typedef enum _SchroChromaFormat {
;;   SCHRO_CHROMA_444 = 0,
;;   SCHRO_CHROMA_422,
;;   SCHRO_CHROMA_420
;; } SchroChromaFormat;

(define-enum-extended SchroChromaFormat
  (in-module "Gst")
  (c-name "SchroChromaFormat")
  (values
    '("444" "SCHRO_CHROMA_444" "0")
    '("422" "SCHRO_CHROMA_422" "1")
    '("420" "SCHRO_CHROMA_420" "2")
  )
)

;; Original typedef:
;; typedef enum _SchroSignalRange {
;;   SCHRO_SIGNAL_RANGE_CUSTOM = 0,
;;   SCHRO_SIGNAL_RANGE_8BIT_FULL = 1,
;;   SCHRO_SIGNAL_RANGE_8BIT_VIDEO = 2,
;;   SCHRO_SIGNAL_RANGE_10BIT_VIDEO = 3,
;;   SCHRO_SIGNAL_RANGE_12BIT_VIDEO = 4
;; } SchroSignalRange;

(define-enum-extended SchroSignalRange
  (in-module "Gst")
  (c-name "SchroSignalRange")
  (values
    '("custom" "SCHRO_SIGNAL_RANGE_CUSTOM" "0")
    '("8bit-full" "SCHRO_SIGNAL_RANGE_8BIT_FULL" "1")
    '("8bit-video" "SCHRO_SIGNAL_RANGE_8BIT_VIDEO" "2")
    '("10bit-video" "SCHRO_SIGNAL_RANGE_10BIT_VIDEO" "3")
    '("12bit-video" "SCHRO_SIGNAL_RANGE_12BIT_VIDEO" "4")
  )
)

;; Original typedef:
;; typedef enum _SchroColourSpec {
;;   SCHRO_COLOUR_SPEC_CUSTOM = 0,
;;   SCHRO_COLOUR_SPEC_SDTV_525 = 1,
;;   SCHRO_COLOUR_SPEC_SDTV_625 = 2,
;;   SCHRO_COLOUR_SPEC_HDTV = 3,
;;   SCHRO_COLOUR_SPEC_CINEMA = 4
;; } SchroColourSpec;

(define-enum-extended SchroColourSpec
  (in-module "Gst")
  (c-name "SchroColourSpec")
  (values
    '("custom" "SCHRO_COLOUR_SPEC_CUSTOM" "0")
    '("sdtv-525" "SCHRO_COLOUR_SPEC_SDTV_525" "1")
    '("sdtv-625" "SCHRO_COLOUR_SPEC_SDTV_625" "2")
    '("hdtv" "SCHRO_COLOUR_SPEC_HDTV" "3")
    '("cinema" "SCHRO_COLOUR_SPEC_CINEMA" "4")
  )
)

;; Original typedef:
;; typedef enum _SchroColourPrimaries {
;;   SCHRO_COLOUR_PRIMARY_HDTV = 0,
;;   SCHRO_COLOUR_PRIMARY_SDTV_525 = 1,
;;   SCHRO_COLOUR_PRIMARY_SDTV_625 = 2,
;;   SCHRO_COLOUR_PRIMARY_CINEMA = 3
;; } SchroColourPrimaries;

(define-enum-extended SchroColourPrimaries
  (in-module "Gst")
  (c-name "SchroColourPrimaries")
  (values
    '("hdtv" "SCHRO_COLOUR_PRIMARY_HDTV" "0")
    '("sdtv-525" "SCHRO_COLOUR_PRIMARY_SDTV_525" "1")
    '("sdtv-625" "SCHRO_COLOUR_PRIMARY_SDTV_625" "2")
    '("cinema" "SCHRO_COLOUR_PRIMARY_CINEMA" "3")
  )
)

;; Original typedef:
;; typedef enum _SchroColourMatrix {
;;   SCHRO_COLOUR_MATRIX_HDTV = 0,
;;   SCHRO_COLOUR_MATRIX_SDTV = 1,
;;   SCHRO_COLOUR_MATRIX_REVERSIBLE = 2
;; }SchroColourMatrix;

(define-enum-extended SchroColourMatrix
  (in-module "Gst")
  (c-name "SchroColourMatrix")
  (values
    '("hdtv" "SCHRO_COLOUR_MATRIX_HDTV" "0")
    '("sdtv" "SCHRO_COLOUR_MATRIX_SDTV" "1")
    '("reversible" "SCHRO_COLOUR_MATRIX_REVERSIBLE" "2")
  )
)

;; Original typedef:
;; typedef enum _SchroTransferFunction {
;;   SCHRO_TRANSFER_CHAR_TV_GAMMA = 0,
;;   SCHRO_TRANSFER_CHAR_EXTENDED_GAMUT = 1,
;;   SCHRO_TRANSFER_CHAR_LINEAR = 2,
;;   SCHRO_TRANSFER_CHAR_DCI_GAMMA = 3
;; } SchroTransferFunction;

(define-enum-extended SchroTransferFunction
  (in-module "Gst")
  (c-name "SchroTransferFunction")
  (values
    '("tv-gamma" "SCHRO_TRANSFER_CHAR_TV_GAMMA" "0")
    '("extended-gamut" "SCHRO_TRANSFER_CHAR_EXTENDED_GAMUT" "1")
    '("linear" "SCHRO_TRANSFER_CHAR_LINEAR" "2")
    '("dci-gamma" "SCHRO_TRANSFER_CHAR_DCI_GAMMA" "3")
  )
)

;; From gstoggmux.h

;; Original typedef:
;; typedef enum
;; {
;;   GST_OGG_PAD_STATE_CONTROL = 0,
;;   GST_OGG_PAD_STATE_DATA = 1
;; }
;; GstOggPadState;

(define-enum-extended OggPadState
  (in-module "Gst")
  (c-name "GstOggPadState")
  (values
    '("control" "GST_OGG_PAD_STATE_CONTROL" "0")
    '("data" "GST_OGG_PAD_STATE_DATA" "1")
  )
)

;; From gstoggstream.h

;; Original typedef:
;; typedef enum {
;;   GST_OGG_SKELETON_FISBONE,
;;   GST_OGG_SKELETON_INDEX,
;; } GstOggSkeleton;

(define-enum-extended OggSkeleton
  (in-module "Gst")
  (c-name "GstOggSkeleton")
  (values
    '("fisbone" "GST_OGG_SKELETON_FISBONE" "0")
    '("index" "GST_OGG_SKELETON_INDEX" "1")
  )
)

;; From gstbasetextoverlay.h

;; Original typedef:
;; typedef enum {
;;     GST_BASE_TEXT_OVERLAY_VALIGN_BASELINE,
;;     GST_BASE_TEXT_OVERLAY_VALIGN_BOTTOM,
;;     GST_BASE_TEXT_OVERLAY_VALIGN_TOP,
;;     GST_BASE_TEXT_OVERLAY_VALIGN_POS,
;;     GST_BASE_TEXT_OVERLAY_VALIGN_CENTER
;; } GstBaseTextOverlayVAlign;

(define-enum-extended BaseTextOverlayVAlign
  (in-module "Gst")
  (c-name "GstBaseTextOverlayVAlign")
  (values
    '("baseline" "GST_BASE_TEXT_OVERLAY_VALIGN_BASELINE" "0")
    '("bottom" "GST_BASE_TEXT_OVERLAY_VALIGN_BOTTOM" "1")
    '("top" "GST_BASE_TEXT_OVERLAY_VALIGN_TOP" "2")
    '("pos" "GST_BASE_TEXT_OVERLAY_VALIGN_POS" "3")
    '("center" "GST_BASE_TEXT_OVERLAY_VALIGN_CENTER" "4")
  )
)

;; Original typedef:
;; typedef enum {
;;     GST_BASE_TEXT_OVERLAY_HALIGN_LEFT,
;;     GST_BASE_TEXT_OVERLAY_HALIGN_CENTER,
;;     GST_BASE_TEXT_OVERLAY_HALIGN_RIGHT,
;;     GST_BASE_TEXT_OVERLAY_HALIGN_UNUSED,
;;     GST_BASE_TEXT_OVERLAY_HALIGN_POS
;; } GstBaseTextOverlayHAlign;

(define-enum-extended BaseTextOverlayHAlign
  (in-module "Gst")
  (c-name "GstBaseTextOverlayHAlign")
  (values
    '("left" "GST_BASE_TEXT_OVERLAY_HALIGN_LEFT" "0")
    '("center" "GST_BASE_TEXT_OVERLAY_HALIGN_CENTER" "1")
    '("right" "GST_BASE_TEXT_OVERLAY_HALIGN_RIGHT" "2")
    '("unused" "GST_BASE_TEXT_OVERLAY_HALIGN_UNUSED" "3")
    '("pos" "GST_BASE_TEXT_OVERLAY_HALIGN_POS" "4")
  )
)

;; Original typedef:
;; typedef enum {
;;     GST_BASE_TEXT_OVERLAY_WRAP_MODE_NONE = -1,
;;     GST_BASE_TEXT_OVERLAY_WRAP_MODE_WORD = PANGO_WRAP_WORD,
;;     GST_BASE_TEXT_OVERLAY_WRAP_MODE_CHAR = PANGO_WRAP_CHAR,
;;     GST_BASE_TEXT_OVERLAY_WRAP_MODE_WORD_CHAR = PANGO_WRAP_WORD_CHAR
;; } GstBaseTextOverlayWrapMode;

(define-enum-extended BaseTextOverlayWrapMode
  (in-module "Gst")
  (c-name "GstBaseTextOverlayWrapMode")
  (values
    '("none" "GST_BASE_TEXT_OVERLAY_WRAP_MODE_NONE" "-1")
    '("word" "GST_BASE_TEXT_OVERLAY_WRAP_MODE_WORD" "PANGO_WRAP_WORD")
    '("char" "GST_BASE_TEXT_OVERLAY_WRAP_MODE_CHAR" "PANGO_WRAP_CHAR")
    '("word-char" "GST_BASE_TEXT_OVERLAY_WRAP_MODE_WORD_CHAR" "PANGO_WRAP_WORD_CHAR")
  )
)

;; Original typedef:
;; typedef enum {
;;     GST_BASE_TEXT_OVERLAY_LINE_ALIGN_LEFT = PANGO_ALIGN_LEFT,
;;     GST_BASE_TEXT_OVERLAY_LINE_ALIGN_CENTER = PANGO_ALIGN_CENTER,
;;     GST_BASE_TEXT_OVERLAY_LINE_ALIGN_RIGHT = PANGO_ALIGN_RIGHT
;; } GstBaseTextOverlayLineAlign;

(define-flags-extended BaseTextOverlayLineAlign
  (in-module "Gst")
  (c-name "GstBaseTextOverlayLineAlign")
  (values
    '("left" "GST_BASE_TEXT_OVERLAY_LINE_ALIGN_LEFT" "PANGO_ALIGN_LEFT")
    '("center" "GST_BASE_TEXT_OVERLAY_LINE_ALIGN_CENTER" "PANGO_ALIGN_CENTER")
    '("right" "GST_BASE_TEXT_OVERLAY_LINE_ALIGN_RIGHT" "PANGO_ALIGN_RIGHT")
  )
)

;; From gsttextrender.h

;; Original typedef:
;; typedef enum {
;;     GST_TEXT_RENDER_VALIGN_BASELINE,
;;     GST_TEXT_RENDER_VALIGN_BOTTOM,
;;     GST_TEXT_RENDER_VALIGN_TOP
;; } GstTextRenderVAlign;

(define-enum-extended TextRenderVAlign
  (in-module "Gst")
  (c-name "GstTextRenderVAlign")
  (values
    '("baseline" "GST_TEXT_RENDER_VALIGN_BASELINE" "0")
    '("bottom" "GST_TEXT_RENDER_VALIGN_BOTTOM" "1")
    '("top" "GST_TEXT_RENDER_VALIGN_TOP" "2")
  )
)

;; Original typedef:
;; typedef enum {
;;     GST_TEXT_RENDER_HALIGN_LEFT,
;;     GST_TEXT_RENDER_HALIGN_CENTER,
;;     GST_TEXT_RENDER_HALIGN_RIGHT
;; } GstTextRenderHAlign;

(define-enum-extended TextRenderHAlign
  (in-module "Gst")
  (c-name "GstTextRenderHAlign")
  (values
    '("left" "GST_TEXT_RENDER_HALIGN_LEFT" "0")
    '("center" "GST_TEXT_RENDER_HALIGN_CENTER" "1")
    '("right" "GST_TEXT_RENDER_HALIGN_RIGHT" "2")
  )
)

;; Original typedef:
;; typedef enum {
;;     GST_TEXT_RENDER_LINE_ALIGN_LEFT = PANGO_ALIGN_LEFT,
;;     GST_TEXT_RENDER_LINE_ALIGN_CENTER = PANGO_ALIGN_CENTER,
;;     GST_TEXT_RENDER_LINE_ALIGN_RIGHT = PANGO_ALIGN_RIGHT
;; } GstTextRenderLineAlign;

(define-flags-extended TextRenderLineAlign
  (in-module "Gst")
  (c-name "GstTextRenderLineAlign")
  (values
    '("left" "GST_TEXT_RENDER_LINE_ALIGN_LEFT" "0")
    '("center" "GST_TEXT_RENDER_LINE_ALIGN_CENTER" "1")
    '("right" "GST_TEXT_RENDER_LINE_ALIGN_RIGHT" "2")
  )
)

;; From gsttheoraenc.h

;; Original typedef:
;; typedef enum
;; {
;;   MULTIPASS_MODE_SINGLE_PASS,
;;   MULTIPASS_MODE_FIRST_PASS,
;;   MULTIPASS_MODE_SECOND_PASS
;; } GstTheoraEncMultipassMode;

(define-enum-extended TheoraEncMultipassMode
  (in-module "Gst")
  (c-name "GstTheoraEncMultipassMode")
  (values
    '("single-pass" "GST_THEORA_ENC_MULTIPASS_MODE_SINGLE_PASS" "0")
    '("first-pass" "GST_THEORA_ENC_MULTIPASS_MODE_FIRST_PASS" "1")
    '("second-pass" "GST_THEORA_ENC_MULTIPASS_MODE_SECOND_PASS" "2")
  )
)

;; Handwritten for CdParanoiaSrc plugin (values taken from output of
;; `gst-inspect cdparanoiasrc' -- "paranoia-mode" property information)
(define-enum-extended CdParanoiaMode
  (in-module "Gst")
  (c-name "GstCdParanoiaMode")
  (values
    '("disable" "GST_PARANOIA_MODE_DISABLE" "1<<0")
    '("fragment" "GST_PARANOIA_MODE_FRAGMENT" "1<<1")
    '("overlap" "GST_PARANOIA_MODE_OVERLAP" "1<<2")
    '("scratch" "GST_PARANOIA_MODE_SCRATCH" "1<<3")
    '("repair" "GST_PARANOIA_MODE_REPAIR" "1<<4")
    '("full" "GST_PARANOIA_MODE_FULL" "0xff")
  )
)

;; Handwritten for MultiFdSink plugin (taken from gstmultifdsink.c):
(define-enum-extended FDSetMode
  (in-module "Gst")
  (c-name "GstFDSetMode")
  (values
    '("select" "GST_FD_SET_MODE_SELECT" "0")
    '("poll" "GST_FD_SET_MODE_POLL" "1")
    '("epoll" "GST_FD_SET_MODE_EPOLL" "2")
  )
)
;; Handwritten for OutputSelector plugin (taken from gstoutputselector.c):
(define-enum-extended OutputSelectorPadNegotiationMode
  (in-module "Gst")
  (c-name "GstOutputSelectorPadNegotiationMode")
  (values
    '("none" "GST_OUTPUT_SELECTOR_PAD_NEGOTIATION_MODE_NONE" "0")
    '("all" "GST_OUTPUT_SELECTOR_PAD_NEGOTIATION_MODE_ALL" "1")
    '("active" "GST_OUTPUT_SELECTOR_PAD_NEGOTIATION_MODE_ACTIVE" "2")
  )
)

;; Handwritten for VideoConvert plugin (taken from gstvideoconvert.c):
(define-enum-extended VideoConvertDitherMethod
  (in-module "Gst")
  (c-name "GstVideoConvertDitherMethod")
  (values
    '("none" "DITHER_NONE" "0")
    '("verterr" "DITHER_VERTERR" "1")
    '("halftone" "DITHER_HALFTONE" "2")
  )
)
