[options]
girs_directories = ["../gir-files", "../gst-gir-files"]
library = "GES"
version = "1.0"
min_cfg_version = "1.14"
work_mode = "normal"
generate_safety_asserts = true
single_version_file = true
generate_display_trait = false
trust_return_value_nullability = true

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

manual = [
    "GES.FrameCompositionMeta",
    "Gio.AsyncReadyCallback",
    "Gio.Cancellable",
    "GLib.Date",
    "GLib.DateTime",
    "GLib.Error",
    "GLib.Source",
    "GLib.Type",
    "GObject.Object",
    "GObject.ParamSpec",
    "GObject.Value",
    "Gst.Bin",
    "Gst.ChildProxy",
    "Gst.ControlBinding",
    "Gst.ControlSource",
    "Gst.CoreError",
    "Gst.DateTime",
    "Gst.Element",
    "Gst.ElementFactory",
    "Gst.EventType",
    "Gst.Pad",
    "Gst.Pipeline",
    "Gst.Segment",
    "Gst.State",
    "Gst.StaticCaps",
    "Gst.StaticPadTemplate",
    "GstPbutils.DiscovererInfo",
    "GstPbutils.DiscovererStreamInfo",
    "GstPbutils.EncodingProfile",
]

generate = [
    "GES.AssetLoadingReturn",
    "GES.AudioSource",
    "GES.AudioTestSource",
    "GES.AudioTrack",
    "GES.AudioTransition",
    "GES.AudioUriSource",
    "GES.BaseEffectClip",
    "GES.BaseTransitionClip",
    "GES.BaseXmlFormatter",
    "GES.ChildrenControlMode",
    "GES.CommandLineFormatter",
    "GES.Edge",
    "GES.EditMode",
    "GES.EffectClip",
    "GES.Error",
    "GES.ExtractableCheckId",
    "GES.Formatter",
    "GES.FrameNumber",
    "GES.Group",
    "GES.ImageSource",
    "GES.Marker",
    "GES.MarkerFlags",
    "GES.MarkerList",
    "GES.MetaContainer",
    "GES.MetaFlag",
    "GES.MultiFileSource",
    "GES.Operation",
    "GES.OperationClip",
    "GES.OverlayClip",
    "GES.PipelineFlags",
    "GES.Source",
    "GES.SourceClip",
    "GES.TestClip",
    "GES.TextHAlign",
    "GES.TextOverlay",
    "GES.TextOverlayClip",
    "GES.TextVAlign",
    "GES.TitleClip",
    "GES.TitleSource",
    "GES.TrackType",
    "GES.Transition",
    "GES.TransitionClip",
    "GES.VideoSource",
    "GES.VideoStandardTransitionType",
    "GES.VideoTestPattern",
    "GES.VideoTestSource",
    "GES.VideoTrack",
    "GES.VideoTransition",
    "GES.VideoUriSource",
    "GES.XmlFormatter",
]

[[object]]
name = "GES.Asset"
status = "generate"
concurrency = "send+sync"
    [[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.BaseEffect"
status = "generate"
    [[object.function]]
    name = "set_time_translation_funcs"
    # Pointers and HashTables
    ignore = true

[[object]]
name = "GES.Clip"
status = "generate"
    [[object.function]]
    name = "get_duration_limit"
        [object.function.return]
        mandatory = true

    [[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.ClipAsset"
status = "generate"
concurrency = "send+sync"

[[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.DiscovererManager"
status = "generate"

[[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.EffectAsset"
status = "generate"
concurrency = "send+sync"

[[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.Layer"
status = "generate"
    [[object.function]]
    name = "add_clip"
        [object.function.return]
        bool_return_is_error = "Failed to add clip"

    [[object.function]]
    name = "get_duration"
        [object.function.return]
        mandatory = true

    [[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.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.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.SourceClipAsset"
status = "generate"
concurrency = "send+sync"

[[object]]
name = "GES.Timeline"
status = "generate"
    [[object.function]]
    name = "get_duration"
        [object.function.return]
        mandatory = true

    [[object.function]]
    name = "get_frame_at"
        [[object.function.parameter]]
        name = "timestamp"
        mandatory = true

    [[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 = "paste_element"
        [[object.function.parameter]]
        name = "position"
        mandatory = true

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

    [[object.function]]
    name = "set_snapping_distance"
        [[object.function.parameter]]
        name = "snapping_distance"
        mandatory = true

[[object]]
name = "GES.TimelineElement"
status = "generate"
manual_traits = ["TimelineElementExtManual"]
    [[object.function]]
    name = "get_duration"
        [object.function.return]
        mandatory = true

    [[object.function]]
    name = "get_inpoint"
        [object.function.return]
        mandatory = true

    [[object.function]]
    name = "get_start"
        [object.function.return]
        mandatory = true

    [[object.function]]
    name = "paste"
        [[object.function.parameter]]
        name = "paste_position"
        mandatory = true
        [object.function.return]
        nullable_return_is_error = "Failed to paste timeline element"

    [[object.function]]
    name = "ripple"
        [[object.function.parameter]]
        name = "start"
        mandatory = true
        [object.function.return]
        bool_return_is_error = "Failed to ripple"

    [[object.function]]
    name = "ripple_end"
        [[object.function.parameter]]
        name = "end"
        mandatory = true
        [object.function.return]
        bool_return_is_error = "Failed to ripple"

    [[object.function]]
    name = "roll_end"
        [[object.function.parameter]]
        name = "end"
        mandatory = true
        [object.function.return]
        bool_return_is_error = "Failed to roll"

    [[object.function]]
    name = "roll_start"
        [[object.function.parameter]]
        name = "start"
        mandatory = true
        [object.function.return]
        bool_return_is_error = "Failed to roll"

    [[object.function]]
    name = "set_inpoint"
        [[object.function.parameter]]
        name = "inpoint"
        mandatory = true

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

    [[object.function]]
    name = "add_child_property"
        [object.function.return]
        bool_return_is_error = "Failed to add child property"

    [[object.function]]
    name = "remove_child_property"
        [object.function.return]
        bool_return_is_error = "Failed to remove child property"

    [[object.function]]
    name = "set_child_property"
        [object.function.return]
        bool_return_is_error = "Failed to set child property"

    [[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_start"
        [[object.function.parameter]]
        name = "start"
        mandatory = true

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

    [[object.function]]
    name = "trim"
        [[object.function.parameter]]
        name = "start"
        mandatory = true
        [object.function.return]
        bool_return_is_error = "Failed to trim"

[[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.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.function]]
    name = "set_child_property"
        [[object.function.parameter]]
        name = "value"
        const = true
        [object.function.return]
        bool_return_is_error = "Failed to set child property"

    [[object.function]]
    name = "set_child_property_by_pspec"
        [[object.function.parameter]]
        name = "value"
        const = true

[[object]]
name = "GES.TrackElementAsset"
status = "generate"
concurrency = "send+sync"

[[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.UriClipAsset"
status = "generate"
concurrency = "send+sync"

[[object]]
name = "GES.UriSourceAsset"
status = "generate"
concurrency = "send+sync"

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

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

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

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

[[object]]
name = "Gst.Object"
# For renaming the trait...
status = "manual"
trait_name = "GstObjectExt"

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

    [[object.function]]
    name = "get_caps"
    # Function moved to SampleRef
    ignore = true

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