;; -*- scheme -*-
; object definitions ...

(define-object ControlSource
  (in-module "Gst")
  (parent "GObject")
  (c-name "GstControlSource")
  (gtype-id "GST_TYPE_CONTROL_SOURCE")
)

(define-object Controller
  (in-module "Gst")
  (parent "GObject")
  (c-name "GstController")
  (gtype-id "GST_TYPE_CONTROLLER")
)

(define-object InterpolationControlSource
  (in-module "Gst")
  (parent "GstControlSource")
  (c-name "GstInterpolationControlSource")
  (gtype-id "GST_TYPE_INTERPOLATION_CONTROL_SOURCE")
)

(define-object LFOControlSource
  (in-module "Gst")
  (parent "GstControlSource")
  (c-name "GstLFOControlSource")
  (gtype-id "GST_TYPE_LFO_CONTROL_SOURCE")
)


;; Enumerations and flags ...

(define-enum InterpolateMode
  (in-module "Gst")
  (c-name "GstInterpolateMode")
  (values
    '("none" "GST_INTERPOLATE_NONE")
    '("trigger" "GST_INTERPOLATE_TRIGGER")
    '("linear" "GST_INTERPOLATE_LINEAR")
    '("quadratic" "GST_INTERPOLATE_QUADRATIC")
    '("cubic" "GST_INTERPOLATE_CUBIC")
    '("user" "GST_INTERPOLATE_USER")
  )
)

(define-enum LFOWaveform
  (in-module "Gst")
  (c-name "GstLFOWaveform")
  (gtype-id "GST_TYPE_LFO_WAVEFORM")
  (values
    '("sine" "GST_LFO_WAVEFORM_SINE")
    '("square" "GST_LFO_WAVEFORM_SQUARE")
    '("saw" "GST_LFO_WAVEFORM_SAW")
    '("reverse-saw" "GST_LFO_WAVEFORM_REVERSE_SAW")
    '("triangle" "GST_LFO_WAVEFORM_TRIANGLE")
  )
)

(define-enum DPVersion
  (in-module "Gst")
  (c-name "GstDPVersion")
  (gtype-id "GST_TYPE_DP_VERSION")
  (values
    '("0-2" "GST_DP_VERSION_0_2")
    '("1-0" "GST_DP_VERSION_1_0")
  )
)

(define-flags DPHeaderFlag
  (in-module "Gst")
  (c-name "GstDPHeaderFlag")
  (values
    '("none" "GST_DP_HEADER_FLAG_NONE")
    '("crc-header" "GST_DP_HEADER_FLAG_CRC_HEADER")
    '("crc-payload" "GST_DP_HEADER_FLAG_CRC_PAYLOAD")
    '("crc" "GST_DP_HEADER_FLAG_CRC")
  )
)

(define-enum DPPayloadType
  (in-module "Gst")
  (c-name "GstDPPayloadType")
  (values
    '("none" "GST_DP_PAYLOAD_NONE")
    '("buffer" "GST_DP_PAYLOAD_BUFFER")
    '("caps" "GST_DP_PAYLOAD_CAPS")
    '("event-none" "GST_DP_PAYLOAD_EVENT_NONE")
  )
)

;; From ../gstreamer/libs/gst/controller/gst-controller.h

(define-function gst_controller_get_type
  (c-name "gst_controller_get_type")
  (return-type "GType")
)

(define-function gst_controller_new_valist
  (c-name "gst_controller_new_valist")
  (return-type "GstController*")
  (parameters
    '("GObject*" "object")
    '("va_list" "var_args")
  )
)

(define-function gst_controller_new_list
  (c-name "gst_controller_new_list")
  (is-constructor-of "GstController")
  (return-type "GstController*")
  (parameters
    '("GObject*" "object")
    '("GList*" "list")
  )
)

(define-function gst_controller_new
  (c-name "gst_controller_new")
  (return-type "GstController*")
  (parameters
    '("GObject*" "object")
  )
  (varargs #t)
)

(define-method remove_properties_valist
  (of-object "GstController")
  (c-name "gst_controller_remove_properties_valist")
  (return-type "gboolean")
  (parameters
    '("va_list" "var_args")
  )
)

(define-method remove_properties
  (of-object "GstController")
  (c-name "gst_controller_remove_properties")
  (return-type "gboolean")
  (parameters
  )
  (varargs #t)
)

(define-method remove_properties_list
  (of-object "GstController")
  (c-name "gst_controller_remove_properties_list")
  (return-type "gboolean")
  (parameters
   '("GList*" "list")
  )
)

(define-method set_disabled
  (of-object "GstController")
  (c-name "gst_controller_set_disabled")
  (return-type "none")
  (parameters
    '("gboolean" "disabled")
  )
)

(define-method set_property_disabled
  (of-object "GstController")
  (c-name "gst_controller_set_property_disabled")
  (return-type "none")
  (parameters
    '("gchar*" "property_name")
    '("gboolean" "disabled")
  )
)

(define-method set_control_source
  (of-object "GstController")
  (c-name "gst_controller_set_control_source")
  (return-type "gboolean")
  (parameters
    '("gchar*" "property_name")
    '("GstControlSource*" "csource")
  )
)

(define-method get_control_source
  (of-object "GstController")
  (c-name "gst_controller_get_control_source")
  (return-type "GstControlSource*")
  (parameters
    '("gchar*" "property_name")
  )
)
(define-method set
  (of-object "GstController")
  (c-name "gst_controller_set")
  (return-type "gboolean")
  (parameters
    '("gchar*" "property_name")
    '("GstClockTime" "timestamp")
    '("GValue*" "value")
  )
)

(define-method set_from_list
  (of-object "GstController")
  (c-name "gst_controller_set_from_list")
  (return-type "gboolean")
  (parameters
    '("gchar*" "property_name")
    '("GSList*" "timedvalues")
  )
)

(define-method unset
  (of-object "GstController")
  (c-name "gst_controller_unset")
  (return-type "gboolean")
  (parameters
    '("gchar*" "property_name")
    '("GstClockTime" "timestamp")
  )
)

(define-method unset_all
  (of-object "GstController")
  (c-name "gst_controller_unset_all")
  (return-type "gboolean")
  (parameters
    '("gchar*" "property_name")
  )
)

(define-method get
  (of-object "GstController")
  (c-name "gst_controller_get")
  (return-type "GValue*")
  (parameters
    '("gchar*" "property_name")
    '("GstClockTime" "timestamp")
  )
)

(define-method get_all
  (of-object "GstController")
  (c-name "gst_controller_get_all")
  (return-type "const-GList*")
  (parameters
    '("gchar*" "property_name")
  )
)

(define-method suggest_next_sync
  (of-object "GstController")
  (c-name "gst_controller_suggest_next_sync")
  (return-type "GstClockTime")
)

(define-method sync_values
  (of-object "GstController")
  (c-name "gst_controller_sync_values")
  (return-type "gboolean")
  (parameters
    '("GstClockTime" "timestamp")
  )
)

(define-method get_value_arrays
  (of-object "GstController")
  (c-name "gst_controller_get_value_arrays")
  (return-type "gboolean")
  (parameters
    '("GstClockTime" "timestamp")
    '("GSList*" "value_arrays")
  )
)

(define-method get_value_array
  (of-object "GstController")
  (c-name "gst_controller_get_value_array")
  (return-type "gboolean")
  (parameters
    '("GstClockTime" "timestamp")
    '("GstValueArray*" "value_array")
  )
)

(define-method set_interpolation_mode
  (of-object "GstController")
  (c-name "gst_controller_set_interpolation_mode")
  (return-type "gboolean")
  (parameters
    '("gchar*" "property_name")
    '("GstInterpolateMode" "mode")
  )
)

(define-function object_control_properties
  (c-name "gst_object_control_properties")
  (return-type "GstController*")
  (parameters
    '("GObject*" "object"))
  (varargs #t)
)

(define-function object_uncontrol_properties
  (c-name "gst_object_uncontrol_properties")
  (return-type "gboolean")
  (parameters
    '("GObject*" "object")
  )
  (varargs #t)
)

(define-function object_get_controller
  (c-name "gst_object_get_controller")
  (return-type "GstController*")
  (parameters
    '("GObject*" "object")
  )
)

(define-function object_set_controller
  (c-name "gst_object_set_controller")
  (return-type "gboolean")
  (parameters
    '("GObject*" "object")
    '("GstController*" "controller")
  )
)

(define-function object_suggest_next_sync
  (c-name "gst_object_suggest_next_sync")
  (return-type "GstClockTime")
  (parameters
    '("GObject*" "object")
  )
)

(define-function object_sync_values
  (c-name "gst_object_sync_values")
  (return-type "gboolean")
  (parameters
    '("GObject*" "object")
    '("GstClockTime" "timestamp")
  )
)

(define-function gst_object_set_control_source
  (c-name "gst_object_set_control_source")
  (return-type "gboolean")
  (parameters
    '("GObject*" "object")
    '("gchar*" "property_name")
    '("GstControlSource*" "csource")
  )
)

(define-function gst_object_get_control_source
  (c-name "gst_object_get_control_source")
  (return-type "GstControlSource*")
  (parameters
    '("GObject*" "object")
    '("gchar*" "property_name")
  )
)

(define-function object_get_value_arrays
  (c-name "gst_object_get_value_arrays")
  (return-type "gboolean")
  (parameters
    '("GObject*" "object")
    '("GstClockTime" "timestamp")
    '("GSList*" "value_arrays")
  )
)

(define-function object_get_value_array
  (c-name "gst_object_get_value_array")
  (return-type "gboolean")
  (parameters
    '("GObject*" "object")
    '("GstClockTime" "timestamp")
    '("GstValueArray*" "value_array")
  )
)

(define-function object_get_control_rate
  (c-name "gst_object_get_control_rate")
  (return-type "GstClockTime")
  (parameters
    '("GObject*" "object")
  )
)

(define-function object_set_control_rate
  (c-name "gst_object_set_control_rate")
  (return-type "none")
  (parameters
    '("GObject*" "object")
    '("GstClockTime" "control_rate")
  )
)

(define-function gst_controller_init
  (c-name "gst_controller_init")
  (return-type "gboolean")
  (parameters
    '("int*" "argc")
    '("char***" "argv")
  )
)



;; From gstcontrolsource.h

(define-function gst_control_source_get_type
  (c-name "gst_control_source_get_type")
  (return-type "GType")
  (parameters
  )
)

(define-method get_value
  (of-object "GstControlSource")
  (c-name "gst_control_source_get_value")
  (return-type "gboolean")
  (parameters
    '("GstClockTime" "timestamp")
    '("GValue*" "value")
  )
)

(define-method get_value_array
  (of-object "GstControlSource")
  (c-name "gst_control_source_get_value_array")
  (return-type "gboolean")
  (parameters
    '("GstClockTime" "timestamp")
    '("GstValueArray*" "value_array")
  )
)

(define-method bind
  (of-object "GstControlSource")
  (c-name "gst_control_source_bind")
  (return-type "gboolean")
  (parameters
    '("GParamSpec*" "pspec")
  )
)



;; From gstinterpolationcontrolsource.h

(define-function gst_interpolation_control_source_get_type
  (c-name "gst_interpolation_control_source_get_type")
  (return-type "GType")
  (parameters
  )
)

(define-function gst_interpolation_control_source_new
  (c-name "gst_interpolation_control_source_new")
  (is-constructor-of "GstInterpolationControlSource")
  (return-type "GstInterpolationControlSource*")
  (parameters
  )
)

(define-method set_interpolation_mode
  (of-object "GstInterpolationControlSource")
  (c-name "gst_interpolation_control_source_set_interpolation_mode")
  (return-type "gboolean")
  (parameters
    '("GstInterpolateMode" "mode")
  )
)

(define-method set
  (of-object "GstInterpolationControlSource")
  (c-name "gst_interpolation_control_source_set")
  (return-type "gboolean")
  (parameters
    '("GstClockTime" "timestamp")
    '("GValue*" "value")
  )
)

(define-method set_from_list
  (of-object "GstInterpolationControlSource")
  (c-name "gst_interpolation_control_source_set_from_list")
  (return-type "gboolean")
  (parameters
    '("GSList*" "timedvalues")
  )
)

(define-method unset
  (of-object "GstInterpolationControlSource")
  (c-name "gst_interpolation_control_source_unset")
  (return-type "gboolean")
  (parameters
    '("GstClockTime" "timestamp")
  )
)

(define-method unset_all
  (of-object "GstInterpolationControlSource")
  (c-name "gst_interpolation_control_source_unset_all")
  (return-type "none")
)

(define-method get_all
  (of-object "GstInterpolationControlSource")
  (c-name "gst_interpolation_control_source_get_all")
  (return-type "GList*")
)

(define-method get_count
  (of-object "GstInterpolationControlSource")
  (c-name "gst_interpolation_control_source_get_count")
  (return-type "gint")
)



;; From gstlfocontrolsource.h

(define-function gst_lfo_control_source_get_type
  (c-name "gst_lfo_control_source_get_type")
  (return-type "GType")
  (parameters
  )
)

(define-function gst_lfo_waveform_get_type
  (c-name "gst_lfo_waveform_get_type")
  (return-type "GType")
  (parameters
  )
)

(define-function gst_lfo_control_source_new
  (c-name "gst_lfo_control_source_new")
  (is-constructor-of "GstLfoControlSource")
  (return-type "GstLFOControlSource*")
  (parameters
  )
)

;; From ../gstreamer/libs/gst/dataprotocol/dataprotocol.h

(define-function dp_init
  (c-name "gst_dp_init")
  (return-type "none")
)

(define-function dp_packetizer_new
  (c-name "gst_dp_packetizer_new")
  (is-constructor-of "GstDpPacketizer")
  (return-type "GstDPPacketizer*")
  (parameters
    '("GstDPVersion" "version")
  )
)

(define-function gst_dp_crc
  (c-name "gst_dp_crc")
  (return-type "guint16")
  (parameters
    '("const-guint8*" "buffer")
    '("guint" "length")
  )
)

(define-function dp_header_payload_length
  (c-name "gst_dp_header_payload_length")
  (return-type "guint32")
  (parameters
    '("const-gchar*" "header")
  )
)

(define-function dp_header_payload_type
  (c-name "gst_dp_header_payload_type")
  (return-type "GstDPPayloadType")
  (parameters
    '("const-gchar*" "header")
  )
)

(define-function dp_header_from_buffer
  (c-name "gst_dp_header_from_buffer")
  (return-type "gboolean")
  (parameters
    '("const-GstBuffer*" "buffer")
    '("GstDPHeaderFlag" "flags")
    '("guint*" "length")
    '("guint8**" "header")
  )
)

(define-function dp_packet_from_caps
  (c-name "gst_dp_packet_from_caps")
  (return-type "gboolean")
  (parameters
    '("const-GstCaps*" "caps")
    '("GstDPHeaderFlag" "flags")
    '("guint*" "length")
    '("guint8**" "header")
    '("guint8**" "payload")
  )
)

(define-function dp_packet_from_event
  (c-name "gst_dp_packet_from_event")
  (return-type "gboolean")
  (parameters
    '("const-GstEvent*" "event")
    '("GstDPHeaderFlag" "flags")
    '("guint*" "length")
    '("guint8**" "header")
    '("guint8**" "payload")
  )
)

(define-function dp_buffer_from_header
  (c-name "gst_dp_buffer_from_header")
  (return-type "GstBuffer*")
  (parameters
    '("guint" "header_length")
    '("const-guint8*" "header")
  )
)

(define-function dp_caps_from_packet
  (c-name "gst_dp_caps_from_packet")
  (return-type "GstCaps*")
  (parameters
    '("guint" "header_length")
    '("const-guint8*" "header")
    '("const-guint8*" "payload")
  )
)

(define-function dp_event_from_packet
  (c-name "gst_dp_event_from_packet")
  (return-type "GstEvent*")
  (parameters
    '("guint" "header_length")
    '("const-guint8*" "header")
    '("const-guint8*" "payload")
  )
)

(define-function dp_validate_header
  (c-name "gst_dp_validate_header")
  (return-type "gboolean")
  (parameters
    '("guint" "header_length")
    '("const-guint8*" "header")
  )
)

(define-function dp_validate_payload
  (c-name "gst_dp_validate_payload")
  (return-type "gboolean")
  (parameters
    '("guint" "header_length")
    '("const-guint8*" "header")
    '("const-guint8*" "payload")
  )
)

(define-function dp_validate_packet
  (c-name "gst_dp_validate_packet")
  (return-type "gboolean")
  (parameters
    '("guint" "header_length")
    '("const-guint8*" "header")
    '("const-guint8*" "payload")
  )
)