[options]
girs_dir = "../gir-files"
library = "GES"
version = "1.0"
min_cfg_version = "1.8"
work_mode = "normal"
generate_safety_asserts = true
single_version_file = true
generate_display_trait = false

external_libraries = [
    "GLib",
    "GObject",
    "Gio",
    "Gst",
    "GstPbutils",
]

manual = [
    "GLib.Error",
    "GLib.Source",
    "GLib.DateTime",
    "Gio.Cancellable",
    "Gio.AsyncReadyCallback",
    "GObject.Object",
    "Gst.Segment",
    "Gst.StaticCaps",
    "Gst.StaticPadTemplate",
    "GstPbutils.EncodingProfile",
    "GstPbutils.DiscovererInfo",
    "GstPbutils.DiscovererStreamInfo",
    "Gst.Object",
    "Gst.Element",
    "Gst.Pad",
    "Gst.Pipeline",
]

generate = [
    "GES.PipelineFlags",
    "GES.FrameNumber",
    "GES.Group",
    "GES.UriClipAsset",
    "GES.UriSourceAsset",
]

[[object]]
name = "Gst.Structure"
status = "manual"
ref_mode = "ref-mut"

[[object]]
name = "Gst.Caps"
status = "manual"
ref_mode = "ref"

[[object]]
name = "Gst.Buffer"
status = "manual"
ref_mode = "ref"

[[object]]
name = "Gst.BufferList"
status = "manual"
ref_mode = "ref"

[[object]]
name = "Gst.Sample"
status = "manual"
ref_mode = "ref"

[[object]]
name = "Gst.ClockTime"
status = "manual"
conversion_type = "scalar"

[[object]]
name = "GES.BaseEffect"
status = "generate"
# Actually available since 1.2 even if all functions are new in 1.18
version = "1.2"

[[object]]
name = "GES.Effect"
status = "generate"
    [[object.function]]
    name = "new"
        [object.function.return]
        nullable_return_is_error = "Failed to create effect from description"

[[object]]
name = "GES.UriClip"
status = "generate"
    [[object.function]]
    name = "new"
        [object.function.return]
        nullable_return_is_error = "Failed to create Uri clip from Uri"

[[object]]
name = "GES.Timeline"
status = "generate"
    [[object.function]]
    name = "append_layer"
        [object.function.return]
        nullable = false

    [[object.function]]
    name = "load_from_uri"
        [object.function.return]
        bool_return_is_error = "Failed to load from uri"

    [[object.function]]
    name = "add_layer"
        [object.function.return]
        bool_return_is_error = "Failed to add layer"

    [[object.function]]
    name = "remove_layer"
        [object.function.return]
        bool_return_is_error = "Failed to remove layer"

    [[object.function]]
    name = "add_track"
        [object.function.return]
        bool_return_is_error = "Failed to add track"

    [[object.function]]
    name = "move_layer"
        [object.function.return]
        bool_return_is_error = "Failed to move layer"

    [[object.function]]
    name = "remove_track"
        [object.function.return]
        bool_return_is_error = "Failed to remove track"

[[object]]
name = "GES.Container"
status = "generate"
trait_name = "GESContainerExt"
    [[object.function]]
    name = "add"
        [object.function.return]
        bool_return_is_error = "Failed to add element"

    [[object.function]]
    name = "remove"
        [object.function.return]
        bool_return_is_error = "Failed to remove element"

    [[object.function]]
    name = "edit"
        [object.function.return]
        bool_return_is_error = "Failed to edit container"

[[object]]
name = "GES.Pipeline"
status = "generate"
trait_name = "GESPipelineExt"
    [[object.function]]
    name = "set_render_settings"
        [object.function.return]
        bool_return_is_error = "Failed to set render settings"

    [[object.function]]
    name = "set_mode"
        [object.function.return]
        bool_return_is_error = "Failed to set mode"

    [[object.function]]
    name = "save_thumbnail"
        [object.function.return]
        bool_return_is_error = "Failed to save thumbnail"

    [[object.function]]
    name = "set_timeline"
        [object.function.return]
        bool_return_is_error = "Failed to set timeline"

[[object]]
name = "GES.Track"
status = "generate"
trait_name = "GESTrackExt"
    [[object.function]]
    name = "add_element"
        [object.function.return]
        bool_return_is_error = "Failed to add element"

    [[object.function]]
    name = "remove_element"
        [object.function.return]
        bool_return_is_error = "Failed to remove element"

[[object]]
name = "GES.Asset"
status = "generate"
    [[object.function]]
    name = "set_proxy"
        [object.function.return]
        bool_return_is_error = "Failed to set proxy"

    [[object.function]]
    name = "unproxy"
        [object.function.return]
        bool_return_is_error = "Failed to unproxy asset"

[[object]]
name = "GES.Clip"
status = "generate"
    [[object.function]]
    name = "move_to_layer"
        [object.function.return]
        bool_return_is_error = "Failed to move clip to specified layer"

    [[object.function]]
    name = "set_top_effect_index"
        [object.function.return]
        bool_return_is_error = "Failed to move effect"

    [[object.function]]
    name = "set_top_effect_priority"
        [object.function.return]
        bool_return_is_error = "Failed to the set top effect priority"

    [[object.function]]
    name = "add_asset"
        [object.function.return]
        nullable_return_is_error = "Failed to add asset"

    [[object.function]]
    name = "split"
        [object.function.return]
        nullable_return_is_error = "Failed to split clip"

[[object]]
name = "GES.Extractable"
status = "generate"
    [[object.function]]
    name = "set_asset"
        [object.function.return]
        bool_return_is_error = "Failed to set asset"

[[object]]
name = "GES.Edge"
status = "generate"
    [[object.function]]
    name = "name"
        [object.function.return]
        nullable = false

[[object]]
name = "GES.EditMode"
status = "generate"
    [[object.function]]
    name = "name"
        [object.function.return]
        nullable = false

[[object]]
name = "GES.Layer"
status = "generate"
    [[object.function]]
    name = "add_clip"
        [object.function.return]
        bool_return_is_error = "Failed to add clip"

    [[object.function]]
    name = "remove_clip"
        [object.function.return]
        bool_return_is_error = "Failed to remove clip"

    [[object.function]]
    name = "add_asset"
        [object.function.return]
        nullable_return_is_error = "Failed to add asset"

[[object]]
name = "GES.Project"
status = "generate"
    [[object.function]]
    name = "add_encoding_profile"
        [object.function.return]
        bool_return_is_error = "Failed to add profile"

    [[object.function]]
    name = "remove_asset"
        [object.function.return]
        bool_return_is_error = "Failed to remove asset"

[[object]]
name = "GES.TimelineElement"
status = "generate"
manual_traits = ["TimelineElementExtManual"]
    [[object.function]]
    name = "ripple"
        [object.function.return]
        bool_return_is_error = "Failed to ripple"

    [[object.function]]
    name = "ripple_end"
        [object.function.return]
        bool_return_is_error = "Failed to ripple"

    [[object.function]]
    name = "roll_end"
        [object.function.return]
        bool_return_is_error = "Failed to roll"

    [[object.function]]
    name = "roll_start"
        [object.function.return]
        bool_return_is_error = "Failed to roll"

    [[object.function]]
    name = "set_name"
        [object.function.return]
        bool_return_is_error = "Failed to set name"

    [[object.function]]
    name = "set_parent"
        [object.function.return]
        bool_return_is_error = "`TimelineElement` already had a parent or its parent was the same as specified"

    [[object.function]]
    name = "set_timeline"
        [object.function.return]
        bool_return_is_error = "`Failed to set timeline"

    [[object.function]]
    name = "trim"
        [object.function.return]
        bool_return_is_error = "Failed to trim"

    [[object.function]]
    name = "copy"
        [object.function.return]
        nullable_return_is_error = "Failed to copy timeline element"

    [[object.function]]
    name = "paste"
        [object.function.return]
        nullable_return_is_error = "Failed to paste timeline element"

[[object]]
name = "GES.TrackElement"
status = "generate"
    [[object.function]]
    name = "edit"
        [object.function.return]
        bool_return_is_error = "Failed to edit"

    [[object.function]]
    name = "remove_control_binding"
        [object.function.return]
        bool_return_is_error = "Failed to remove control binding"

[[object]]
name = "GES.TrackType"
status = "generate"
    [[object.function]]
    name = "name"
        [object.function.return]
        nullable = false