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

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

generate = [
    "GstApp.AppLeakyType",
    "GstApp.AppStreamType",
]

manual = [
    "GObject.Object",
    "Gst.Element",
    "Gst.Format",
    "Gst.MiniObject",
    "Gst.Object",
    "Gst.URIHandler",
]

[[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.FlowReturn"
status = "manual"
must_use = true
    [object.conversion_type]
    variant = "Result"
    ok_type = "gst::FlowSuccess"
    err_type = "gst::FlowError"

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

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

[[object]]
name = "GstApp.AppSink"
status = "generate"
final_type = true

    [[object.signal]]
    name = "pull-sample"
    # Action signal
    ignore = true

    [[object.signal]]
    name = "pull-preroll"
    # Action signal
    ignore = true

    [[object.signal]]
    name = "pull-object"
    # Action signal
    ignore = true

    [[object.signal]]
    name = "try-pull-sample"
    # Action signal
    ignore = true

    [[object.signal]]
    name = "try-pull-preroll"
    # Action signal
    ignore = true

    [[object.signal]]
    name = "try-pull-object"
    # Action signal
    ignore = true

    [[object.property]]
    name = "emit-signals"
    # Use callbacks instead
    ignore = true

    [[object.function]]
    name = "get_emit_signals"
    # Use callbacks instead
    ignore = true

    [[object.function]]
    name = "set_emit_signals"
    # Use callbacks instead
    ignore = true

    [[object.signal]]
    name = "new-sample"
    # Use callbacks instead
    ignore = true

    [[object.signal]]
    name = "new-preroll"
    # Use callbacks instead
    ignore = true

    [[object.signal]]
    name = "eos"
    # Use callbacks instead
    ignore = true

    [[object.signal]]
    name = "new-serialized-event"
    # Use callbacks instead
    ignore = true

    [[object.function]]
    name = "pull_preroll"
        [object.function.return]
        nullable_return_is_error = "Failed to pull preroll sample"

    [[object.function]]
    name = "pull_sample"
        [object.function.return]
        nullable_return_is_error = "Failed to pull sample"

    [[object.function]]
    name = "pull_object"
        [object.function.return]
        nullable_return_is_error = "Failed to pull object"

[[object]]
name = "GstApp.AppSrc"
status = "generate"
final_type = true

    [[object.function]]
    name = "push_buffer"
    # Pass by value
    manual = true

    [[object.function]]
    name = "push_buffer_list"
    # Pass by value
    manual = true

    [[object.signal]]
    name = "end-of-stream"
    # Action signal
    ignore = true

    [[object.signal]]
    name = "push-buffer"
    # Action signal
    ignore = true

    [[object.signal]]
    name = "push-buffer-list"
    # Action signal
    ignore = true

    [[object.signal]]
    name = "push-sample"
    # Action signal
    ignore = true

    [[object.property]]
    name = "emit-signals"
    # Use callbacks instead
    ignore = true

    [[object.function]]
    name = "get_emit_signals"
    # Use callbacks instead
    ignore = true

    [[object.function]]
    name = "set_emit_signals"
    # Use callbacks instead
    ignore = true

    [[object.signal]]
    name = "enough-data"
    # Use callbacks instead
    ignore = true

    [[object.signal]]
    name = "need-data"
    # Use callbacks instead
    ignore = true

    [[object.signal]]
    name = "seek-data"
    # Use callbacks instead
    ignore = true

    [[object.function]]
    name = "set_latency"
    # ClockTime
    manual = true

    [[object.function]]
    name = "get_latency"
    # ClockTime
    manual = true
