[options]
girs_directories = ["../gir-files", "../gst-gir-files"]
library = "GstPlayer"
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 = [
    "GstPlayer.PlayerColorBalanceType",
    "GstPlayer.PlayerError",
    "GstPlayer.PlayerMediaInfo",
    "GstPlayer.PlayerSignalDispatcher",
    "GstPlayer.PlayerSnapshotFormat",
    "GstPlayer.PlayerState",
    "GstPlayer.PlayerStreamInfo",
    "GstPlayer.PlayerVideoRenderer",
    "GstPlayer.PlayerVisualization",
]

manual = [
    "GLib.Error",
    "GLib.MainContext",
    "GObject.Object",
    "Gst.Element",
    "Gst.Object",
    "GstVideo.VideoMultiviewFlags",
    "GstVideo.VideoMultiviewFramePacking",
]

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

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

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

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

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

[[object]]
name = "GstPlayer.Player"
status = "generate"
final_type = true

    [[object.function]]
    name = "visualizations_free"
    # correct mutability
    ignore = true

    [[object.function]]
    name = "set_config"
    # Custom type
    manual = true

    [[object.function]]
    name = "get_config"
    # Custom type
    manual = true

    [[object.function]]
    pattern = "config_.*"
    # Custom type
    ignore = true

    [[object.function]]
    name = "seek"
        [[object.function.parameter]]
        name = "position"
        mandatory = true

    [[object.function]]
    name = "set_audio_track"
        [object.function.return]
        bool_return_is_error = "Failed to set audio track"

    [[object.function]]
    name = "set_subtitle_track"
        [object.function.return]
        bool_return_is_error = "Failed to set subtitle track"

    [[object.function]]
    name = "set_video_track"
        [object.function.return]
        bool_return_is_error = "Failed to set video track"

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

    [[object.signal]]
    name = "buffering"
    concurrency = "send"

    [[object.signal]]
    name = "duration-changed"
    concurrency = "send"
    # Pass ClockTime instead of u64
    manual = true

    [[object.signal]]
    name = "end-of-stream"
    concurrency = "send"

    [[object.signal]]
    name = "error"
    concurrency = "send"

    [[object.signal]]
    name = "media-info-updated"
    concurrency = "send"

    [[object.signal]]
    name = "mute-changed"
    concurrency = "send"

    [[object.signal]]
    name = "position-updated"
    concurrency = "send"
    # Pass ClockTime instead of u64
    manual = true

    [[object.signal]]
    name = "seek-done"
    concurrency = "send"
    # Pass ClockTime instead of u64
    manual = true

    [[object.signal]]
    name = "state-changed"
    concurrency = "send"

    [[object.signal]]
    name = "uri-loaded"
    concurrency = "send"

    [[object.signal]]
    name = "video-dimensions-changed"
    concurrency = "send"

    [[object.signal]]
    name = "volume-changed"
    concurrency = "send"

    [[object.signal]]
    name = "warning"
    concurrency = "send"

    [[object.property]]
    name = "subtitle-video-offset"
    version = "1.16"

    [[object.function]]
    name = "get_video_snapshot"
    # Use &StructureRef
    manual = true

[[object]]
name = "GstPlayer.PlayerAudioInfo"
status = "generate"
final_type = true

[[object]]
name = "GstPlayer.PlayerGMainContextSignalDispatcher"
status = "generate"
final_type = true

    [[object.function]]
    name = "new"
    # Wrong return value
    ignore = true

[[object]]
name = "GstPlayer.PlayerSubtitleInfo"
status = "generate"
final_type = true

[[object]]
name = "GstPlayer.PlayerVideoInfo"
status = "generate"
final_type = true

    [[object.function]]
    name = "get_framerate"
    # Fraction
    manual = true

    [[object.function]]
    name = "get_pixel_aspect_ratio"
    # Fraction
    manual = true

[[object]]
name = "GstPlayer.PlayerVideoOverlayVideoRenderer"
status = "generate"
final_type = true

    [[object.function]]
    name = "new"
    manual = true

    [[object.function]]
    name = "new_with_sink"
    # with_handle_and_sink() also calls this.
    rename = "with_sink"
    manual = true

    [[object.function]]
    name = "get_window_handle"
    manual = true

    [[object.function]]
    name = "set_window_handle"
    manual = true
