[options]
girs_dir = "gir-files"
library = "GstBase"
version = "1.0"
min_cfg_version = "1.8"
target_path = "gstreamer-base"
work_mode = "normal"
concurrency = "send+sync"
generate_safety_asserts = true
single_version_file = true
generate_display_trait = false

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

generate = [
    "GstBase.PushSrc",
    "GstBase.AggregatorStartTimeSelection",
]

manual = [
    "GObject.Object",
    "GLib.Bytes",
    "Gst.Object",
    "Gst.Element",
    "Gst.BufferPool",
    "Gst.ClockTimeDiff",
    "Gst.ClockReturn",
    "Gst.FlowReturn",
    "Gst.Format",
    "Gst.Pad",
    "Gst.TypeFindProbability",
    "Gst.TagMergeMode",
    "GstBase.BaseParseFrame",
]

[[object]]
name = "GstBase.Adapter"
status = "generate"
final_type = true
concurrency = "send-unique"

    [[object.function]]
    name = "map"
    # Unsafe
    ignore = true

    [[object.function]]
    name = "unmap"
    # Unsafe
    ignore = true

    [[object.function]]
    name = "copy"
    # Unsafe
    ignore = true

    [[object.function]]
    name = "push"
    # Move Buffer
    ignore = true

    [[object.function]]
    name = "take"
    # Useless copying of data
    ignore = true

    [[object.function]]
    name = "copy_bytes"
        [object.function.return]
        nullable_return_is_error = "Failed to copy bytes"

    [[object.function]]
    name = "get_buffer"
        [object.function.return]
        nullable_return_is_error = "Failed to get buffer"

    [[object.function]]
    name = "get_buffer_fast"
        [object.function.return]
        nullable_return_is_error = "Failed to get buffer"

    [[object.function]]
    name = "get_buffer_list"
        [object.function.return]
        nullable_return_is_error = "Failed to get buffer list"

    [[object.function]]
    name = "take_buffer"
        [object.function.return]
        nullable_return_is_error = "Failed to take buffer"

    [[object.function]]
    name = "take_buffer_fast"
        [object.function.return]
        nullable_return_is_error = "Failed to take buffer"

    [[object.function]]
    name = "take_buffer_list"
        [object.function.return]
        nullable_return_is_error = "Failed to take buffer list"

[[object]]
name = "GstBase.FlowCombiner"
# Manual because ref/unref functions were added much later
status = "manual"
final_type = true
concurrency = "none"

[[object]]
name = "GstBase.BaseSink"
status = "generate"
manual_traits = ["BaseSinkExtManual"]

    [[object.function]]
    name = "wait"
    # Use Result<FlowSuccess, FlowError>
    ignore = true

    [[object.function]]
    name = "wait_preroll"
    # Use Result<FlowSuccess, FlowError>
    ignore = true

    [[object.function]]
    name = "wait_clock"
    # Use Result<ClockSuccess, ClockError>
    ignore = true

    [[object.function]]
    name = "query_latency"
    # Use Result
    ignore = true

[[object]]
name = "GstBase.BaseSrc"
status = "generate"
manual_traits = ["BaseSrcExtManual"]

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

    [[object.function]]
    name = "start_complete"
    # Use Result<FlowSuccess, FlowError>
    ignore = true

    [[object.function]]
    name = "start_wait"
    # Use Result<FlowSuccess, FlowError>
    ignore = true

    [[object.function]]
    name = "submit_buffer_list"
    # Pass by value, to be added manually
    ignore = true

    [[object.function]]
    name = "wait_playing"
    # Use Result<FlowSuccess, FlowError>
    ignore = true

    [[object.function]]
    name = "query_latency"
    # Use Result
    ignore = true

[[object]]
name = "GstBase.BaseTransform"
status = "generate"
manual_traits = ["BaseTransformExtManual"]

    [[object.function]]
    name = "update_src_caps"
        [object.function.return]
        bool_return_is_error = "Failed to update src caps"


[[object]]
name = "GstBase.Aggregator"
status = "generate"
manual_traits = ["AggregatorExtManual"]

    [[object.function]]
    name = "finish_buffer"
    # Takes ownership
    ignore = true

    [[object.property]]
    name = "latency"
    version = "1.14"

    [[object.property]]
    name = "start-time-selection"
    version = "1.18"

    [[object.property]]
    name = "min-upstream-latency"
    # clock time instead of u64
    ignore = true

[[object]]
name = "GstBase.AggregatorPad"
status = "generate"
manual_traits = ["AggregatorPadExtManual"]

[[object]]
name = "GstBase.*"
status = "generate"
    # We'll opt-in for constants at a later time
    [[object.constant]]
    pattern = ".+"
    ignore = true

    [[object.function]]
    name = "type_find_helper_for_data"
    # broken return value
    ignore = true

    [[object.function]]
    name = "type_find_helper_for_data_with_extension"
    # broken return value
    ignore = true

    [[object.function]]
    name = "type_find_helper_for_buffer"
    # broken return value
    ignore = true

    [[object.function]]
    name = "type_find_helper_for_buffer_with_extension"
    # broken return value
    ignore = true

    [[object.function]]
    name = "type_find_helper"
        [object.function.return]
        nullable_return_is_error = "Could not find type"

    [[object.function]]
    name = "type_find_helper_for_extension"
        [object.function.return]
        nullable_return_is_error = "Could not find type"

[[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 = "Gst.TagList"
status = "manual"
ref_mode = "ref"

[[object]]
name = "GstBase.BaseParse"
status = "generate"
manual_traits = ["BaseParseExtManual"]
    [[object.function]]
    name = "finish_frame"
    ignore = true

    [[object.function]]
    name = "set_duration"
    ignore = true

    [[object.function]]
    name = "convert_default"
    ignore = true

    [[object.function]]
    name = "set_frame_rate"
    ignore = true

    # Didn't bind gst_base_parse_frame_{new,init} so not needed
    [[object.function]]
    name = "push_frame"
    ignore = true

[[object]]
name = "GstBase.BaseParseFrameFlags"
status = "generate"
    [[object.member]]
    name = "none"
    ignore = true
