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

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

generate = [
    "GstAudio.AudioFormatFlags",
    "GstAudio.AudioLayout",
    "GstAudio.AudioChannelPosition",
    "GstAudio.StreamVolume",
    "GstAudio.StreamVolumeFormat",
    "GstAudio.AudioSink",
    "GstAudio.AudioSrc",
    "GstAudio.AudioBaseSink",
    "GstAudio.AudioBaseSrc",
]

manual = [
    "GObject.Object",
    "Gst.Object",
    "Gst.Element",
    "Gst.Allocator",
    "Gst.AllocationParams",
    "Gst.TagList",
    "Gst.TagMergeMode",
    "GstBase.BaseSink",
    "GstBase.BaseSrc",
    "GstAudio.AudioInfo",
    "GstAudio.AudioFormatInfo",
]

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

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

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

[[object]]
name = "GstAudio.AudioFormat"
status = "generate"

    [[object.derive]]
    name = "Debug, Eq, PartialEq, Hash"

    [[object.member]]
    name = "s16"
    # Platform dependant
    ignore = true

    [[object.member]]
    name = "u16"
    # Platform dependant
    ignore = true

    [[object.member]]
    name = "s24_32"
    # Platform dependant
    ignore = true

    [[object.member]]
    name = "u24_32"
    # Platform dependant
    ignore = true

    [[object.member]]
    name = "s32"
    # Platform dependant
    ignore = true

    [[object.member]]
    name = "u32"
    # Platform dependant
    ignore = true

    [[object.member]]
    name = "s24"
    # Platform dependant
    ignore = true

    [[object.member]]
    name = "u24"
    # Platform dependant
    ignore = true

    [[object.member]]
    name = "s20"
    # Platform dependant
    ignore = true

    [[object.member]]
    name = "u20"
    # Platform dependant
    ignore = true

    [[object.member]]
    name = "s18"
    # Platform dependant
    ignore = true

    [[object.member]]
    name = "u18"
    # Platform dependant
    ignore = true

    [[object.member]]
    name = "f32"
    # Platform dependant
    ignore = true

    [[object.member]]
    name = "f64"
    # Platform dependant
    ignore = true

[[object]]
name = "GstAudio.AudioStreamAlign"
status = "generate"

    [[object.function]]
    name = "process"
    # bool does not signal error
    ignore = true

    [[object.function]]
    pattern = "get_.*"
        [[object.function.parameter]]
        name = "align"
        const = true

[[object]]
name = "GstAudio.AudioDecoder"
status = "generate"
manual_traits = ["AudioDecoderExtManual"]

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

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

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

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

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

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

    [[object.function]]
    name = "proxy_getcaps"
        [object.function.return]
        nullable = false

    [[object.function]]
    name = "allocate_output_buffer"
        [object.function.return]
        nullable_return_is_error = "Failed to allocate output buffer"

[[object]]
name = "GstAudio.AudioEncoder"
status = "generate"
manual_traits = ["AudioEncoderExtManual"]

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

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

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

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

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

    [[object.function]]
    name = "proxy_getcaps"
        [object.function.return]
        nullable = false

    [[object.function]]
    name = "allocate_output_buffer"
        [object.function.return]
        nullable_return_is_error = "Failed to allocate output buffer"

[[object]]
name = "GstAudio.AudioRingBufferFormatType"
status = "generate"

    [[object.member]]
    name = "mpeg2_aac_raw"
    version = "1.12"

    [[object.member]]
    name = "mpeg4_aac_raw"
    version = "1.12"

    [[object.member]]
    name = "flac"
    version = "1.12"

[[object]]
name = "GstAudio.AudioFlags"
status = "generate"
    [[object.member]]
    name = "none"
    ignore = true

[[object]]
name = "GstAudio.AudioPackFlags"
status = "generate"
    [[object.member]]
    name = "none"
    ignore = true
