Skip to content
Commits on Source (300)
# We use https://gitlab.freedesktop.org/freedesktop/ci-templates
# to build the images used by the ci.
#
# Here is how to properly update thoses images:
# - new Rust stable version: update GST_RS_IMG_TAG
# - add dependencies: update FDO_DISTRIBUTION_PACKAGES and update GST_RS_IMG_TAG
# - update GStreamer version: update the tag in ci/install-gst.sh and update GST_RS_IMG_TAG
#
# GST_RS_IMG_TAG is defined in ci/images_template.yml and should be updated
# either by:
# - setting it to the current date and the version suffix to 0
# - incrementing the version suffix
#
# After each update commit your changes and push to your personnal repo.
# After review and ci approval merge the branch as usual.
#
# Updating the nightly image should be done by simply running a scheduled ci
# pipeline on the upstream repo with the $UPDATE_NIGHTLY variable defined.
.templates_sha: &templates_sha 322bf2b8f29b6491caeb13861201e96969ddc169
include:
- project: 'freedesktop/ci-templates'
ref: *templates_sha
file: '/templates/debian.yml'
- local: "ci/images_template.yml"
variables:
FDO_UPSTREAM_REPO: gstreamer/gstreamer-rs
stages:
- "container-base"
- "container-final"
- "lint"
- "test"
- "extras"
- "deploy"
.tarball_setup:
.debian:10:
variables:
FDO_DISTRIBUTION_VERSION: 10
FDO_DISTRIBUTION_TAG: '$RUST_VERSION-$GST_RS_IMG_TAG'
# Only stuff inside the repo directory can be cached
# Override the CARGO_HOME variable to force its location
CARGO_HOME: "${CI_PROJECT_DIR}/.cargo_home"
DEPENDENCIES: |
curl
liborc-0.4-dev
libglib2.0-dev
libxml2-dev
libgtk-3-dev
libegl1-mesa
libgles2-mesa
libgl1-mesa-dri
libgl1-mesa-glx
libwayland-egl1-mesa
xz-utils
libssl-dev
before_script:
- apt-get update -yqq
- apt-get install -yqq --no-install-recommends $DEPENDENCIES
- source ./ci/env.sh
- mkdir .cargo && echo -e "[net]\ngit-fetch-with-cli = true" > .cargo/config
.debian:10-base:
extends: .debian:10
variables:
FDO_DISTRIBUTION_TAG: 'base-$GST_RS_IMG_TAG'
- mkdir -p precompiled-gst && cd precompiled-gst
.debian:10-stable:
extends: .debian:10
variables:
RUST_VERSION: "stable"
- curl -L https://people.freedesktop.org/~slomo/gstreamer-1.16.1.tar.xz | tar xJ
- sed -i "s;prefix=/root/gstreamer;prefix=$PWD/gstreamer;g" $PWD/gstreamer/lib/x86_64-linux-gnu/pkgconfig/*.pc
- export PKG_CONFIG_PATH=$PWD/gstreamer/lib/x86_64-linux-gnu/pkgconfig
- export GST_PLUGIN_SYSTEM_PATH=$PWD/gstreamer/lib/x86_64-linux-gnu/gstreamer-1.0
- export GST_PLUGIN_SCANNER=$PWD/gstreamer/libexec/gstreamer-1.0/gst-plugin-scanner
- export PATH=$PATH:$PWD/gstreamer/bin
- export LD_LIBRARY_PATH=$PWD/gstreamer/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH
.debian:10-1-40:
extends: .debian:10
variables:
RUST_VERSION: "1.40.0"
.debian:10-nightly:
extends: .debian:10
variables:
RUST_VERSION: "nightly"
.build-base-image:
extends:
- .fdo.container-build@debian
stage: container-base
variables:
FDO_DISTRIBUTION_PACKAGES: "build-essential curl python3-setuptools liborc-0.4-dev libglib2.0-dev libxml2-dev libgtk-3-dev libegl1-mesa libgles2-mesa libgl1-mesa-dri libgl1-mesa-glx libwayland-egl1-mesa xz-utils libssl-dev git wget ca-certificates ninja-build python3-pip flex bison libglib2.0-dev"
FDO_DISTRIBUTION_EXEC: 'bash ci/install-gst.sh && pip3 install git+http://gitlab.freedesktop.org/freedesktop/ci-templates'
.build-final-image:
extends:
- .fdo.container-build@debian
stage: container-final
variables:
FDO_BASE_IMAGE: '$CI_REGISTRY_IMAGE/debian/10:base-$GST_RS_IMG_TAG'
FDO_DISTRIBUTION_EXEC: 'bash ci/install-rust.sh $RUST_VERSION'
- cd "${CI_PROJECT_DIR}"
build-base:
extends:
- .build-base-image
- .debian:10-base
build-stable:
extends:
- .build-final-image
- .debian:10-stable
build-1-40:
extends:
- .build-final-image
- .debian:10-1-40
build-nightly:
extends:
- .build-final-image
- .debian:10-nightly
update-nightly:
extends: build-nightly
only:
variables:
- $UPDATE_NIGHTLY == "1"
variables:
FDO_FORCE_REBUILD: 1
.dist-debian-container:
extends:
- .fdo.distribution-image@debian
cache:
key: "gst"
paths:
- "${CARGO_HOME}"
after_script:
- rm -rf target
.img-stable:
extends:
- .dist-debian-container
- .debian:10-stable
.img-1-40:
extends:
- .dist-debian-container
- .debian:10-1-40
.img-nightly:
extends:
- .dist-debian-container
- .debian:10-nightly
# GST_PLUGINS_RS_TOKEN is a variable of type 'Var' defined in gstreamer-rs CI
# settings and containing a gst-plugins-rs pipeline trigger token
.plugins-update:
stage: deploy
script:
- |
# FDO_DISTRIBUTION_IMAGE still has indirections
- echo $FDO_DISTRIBUTION_IMAGE
- DISTRO_IMAGE=$(eval echo ${FDO_DISTRIBUTION_IMAGE})
- echo $DISTRO_IMAGE
# retrieve the infos from the registry
- JSON_IMAGE=$(skopeo inspect docker://$DISTRO_IMAGE)
- IMAGE_PIPELINE_ID=$(echo $JSON_IMAGE | jq -r '.Labels["fdo.pipeline_id"]')
- echo $IMAGE_PIPELINE_ID
- echo $CI_PIPELINE_ID
- |
if [[ x"$IMAGE_PIPELINE_ID" == x"$CI_PIPELINE_ID" ]]; then
echo "Image has been updated, notify gst-plugins-rs"
curl -X POST -F "token=$GST_PLUGINS_RS_TOKEN" -F "ref=master" -F "variables[UPDATE_IMG]=$UPDATE_IMG" https://gitlab.freedesktop.org/api/v4/projects/1400/trigger/pipeline
else
echo "Image has not been updated, ignore"
fi
rules:
- if: '$CI_COMMIT_REF_NAME == "master" && $CI_PROJECT_PATH == "gstreamer/gstreamer-rs"'
# Those jobs need to use another image as ours doesn't have 'skopeo'
# and it's not easily installable in Debian stable for now.
plugins-update-stable:
extends:
- .plugins-update
- .img-stable
image: registry.freedesktop.org/freedesktop/ci-templates/buildah:2020-03-04
variables:
UPDATE_IMG: "stable"
plugins-update-1-40:
extends:
- .plugins-update
- .img-1-40
image: registry.freedesktop.org/freedesktop/ci-templates/buildah:2020-03-04
variables:
UPDATE_IMG: "1-40"
plugins-update-nightly:
extends:
- .plugins-update
- .img-nightly
image: registry.freedesktop.org/freedesktop/ci-templates/buildah:2020-03-04
variables:
UPDATE_IMG: "nightly"
.cargo test:
extends: '.tarball_setup'
stage: "test"
script:
- rustc --version
......@@ -52,11 +198,11 @@ stages:
for crate in gstreamer*; do
if [ -n "$ALL_FEATURES" ]; then
if [ $crate = "gstreamer" ]; then
FEATURES=ser_de,v1_16
FEATURES=ser_de,v1_18
elif [ $crate = "gstreamer-gl" ]; then
FEATURES=egl,x11,wayland,v1_16
FEATURES=egl,x11,wayland,v1_18
else
FEATURES=v1_16
FEATURES=v1_18
fi
cargo build --color=always --manifest-path $crate/Cargo.toml --features=$FEATURES
......@@ -75,81 +221,134 @@ stages:
cargo build --color=always --manifest-path tutorials/Cargo.toml --bins --examples --all-features
fi
test 1.39:
# 1.39 img
# https://hub.docker.com/_/rust/
image: "rust:1.39-slim-buster"
extends: '.cargo test'
test 1.40:
extends:
- '.cargo test'
- .img-1-40
test stable:
# Stable img
# https://hub.docker.com/_/rust/
image: "rust:slim-buster"
extends: '.cargo test'
extends:
- '.cargo test'
- .img-stable
test stable all-features:
# Stable img
# https://hub.docker.com/_/rust/
image: "rust:slim-buster"
variables:
ALL_FEATURES: 'yes'
extends: '.cargo test'
extends:
- '.cargo test'
- .img-stable
test nightly:
# Nightly
# https://hub.docker.com/r/rustlang/rust/
image: "rustlang/rust:nightly-buster-slim"
allow_failure: true
extends: '.cargo test'
extends:
- '.cargo test'
- .img-nightly
test nightly all-features:
# Nightly
# https://hub.docker.com/r/rustlang/rust/
image: "rustlang/rust:nightly-buster-slim"
allow_failure: true
variables:
ALL_FEATURES: 'yes'
extends: '.cargo test'
extends:
- '.cargo test'
- .img-nightly
rustfmt:
image: "rust:slim-buster"
extends: .img-stable
stage: "lint"
script:
- rustup component add rustfmt
- cargo fmt --version
- cargo fmt -- --color=always --check
check commits:
extends: .img-stable
stage: "lint"
script:
- ci-fairy check-commits --textwidth 0 --no-signed-off-by
clippy:
extends: '.tarball_setup'
image: "rust:slim-buster"
extends: .img-stable
stage: 'extras'
script:
- rustup component add clippy-preview
- cargo clippy --version
# Keep features in sync with above
- |
for crate in gstreamer*; do
if [ $crate = "gstreamer" ]; then
FEATURES=ser_de,v1_16
FEATURES=ser_de,v1_18
elif [ $crate = "gstreamer-gl" ]; then
FEATURES=egl,x11,wayland,v1_16
FEATURES=egl,x11,wayland,v1_18
else
FEATURES=v1_16
FEATURES=v1_18
fi
cargo clippy --color=always --manifest-path $crate/Cargo.toml --features=$FEATURES -- -A clippy::redundant_pattern_matching -A clippy::single_match -A clippy::cast_lossless
cargo clippy --color=always --manifest-path $crate/Cargo.toml --features=$FEATURES --all-targets -- -A clippy::redundant_pattern_matching -A clippy::single_match -A clippy::cast_lossless -A clippy::missing_safety_doc -D warnings
done
# And also run over all the examples/tutorials
- |
cargo clippy --color=always --manifest-path examples/Cargo.toml --bins --examples --all-features -- -A clippy::redundant_pattern_matching -A clippy::single_match -A clippy::cast_lossless
cargo clippy --color=always --manifest-path tutorials/Cargo.toml --bins --examples --all-features -- -A clippy::redundant_pattern_matching -A clippy::single_match -A clippy::cast_lossless
cargo clippy --color=always --manifest-path examples/Cargo.toml --all-targets --all-features -- -A clippy::redundant_pattern_matching -A clippy::single_match -A clippy::cast_lossless -A clippy::missing_safety_doc -D warnings
cargo clippy --color=always --manifest-path tutorials/Cargo.toml --all-targets --all-features -- -A clippy::redundant_pattern_matching -A clippy::single_match -A clippy::cast_lossless -A clippy::missing_safety_doc -D warnings
audit:
extends: '.tarball_setup'
image: "rust:slim-buster"
deny:
extends: .img-stable
stage: 'extras'
only:
- schedules
script:
- cargo install --force cargo-audit
- cargo audit --deny-warnings
- cargo deny check
gir-checks:
extends: .img-stable
stage: 'extras'
script:
- git clone --depth 1 https://github.com/gtk-rs/checker
- cd checker && echo '[workspace]' >> Cargo.toml
- cargo build --release
- |
cargo run --release -- \
--gir-file ../Gir_GstApp.toml ../gstreamer-app \
--gir-file ../Gir_GstAudio.toml ../gstreamer-audio/ \
--gir-file ../Gir_GstBase.toml ../gstreamer-base \
--gir-file ../Gir_GstCheck.toml ../gstreamer-check/ \
--gir-file ../Gir_GstEditingServices.toml ../gstreamer-editing-services/ \
--gir-file ../Gir_GstGL.toml ../gstreamer-gl/ \
--gir-file ../Gir_GstNet.toml ../gstreamer-net/ \
--gir-file ../Gir_GstPbutils.toml ../gstreamer-pbutils/ \
--gir-file ../Gir_GstPlayer.toml ../gstreamer-player/ \
--gir-file ../Gir_GstRtp.toml ../gstreamer-rtp/ \
--gir-file ../Gir_GstRtspServer.toml ../gstreamer-rtsp-server/ \
--gir-file ../Gir_GstRtsp.toml ../gstreamer-rtsp/ \
--gir-file ../Gir_GstSdp.toml ../gstreamer-sdp/ \
--gir-file ../Gir_Gst.toml ../gstreamer/ \
--gir-file ../Gir_GstVideo.toml ../gstreamer-video/ \
--gir-file ../Gir_GstWebRTC.toml ../gstreamer-webrtc/
- cd ..
- |
for crate in gstreamer*; do
echo '-->' $crate
(cd $crate && ../checker/check_init_asserts)
done
outdated:
extends: .img-stable
allow_failure: true
stage: 'extras'
only:
- schedules
script:
- cargo outdated --root-deps-only --exit-code 1 -v
pages:
extends: .img-stable
stage: 'deploy'
script:
- |
for crate in gstreamer*; do
cd $crate
cargo doc --features --features=dox,embed-lgpl-docs
cd ..
done
- mv target/doc public/
when: 'manual'
artifacts:
paths:
- 'public'
......@@ -19,6 +19,7 @@ members = [
"gstreamer-rtp",
"examples",
"tutorials",
"docs",
]
exclude = ["gir"]
# How to update the bindings
* Make sure gstreamer-rs-sys is up to date
* Take the updated .gir files from gstreamer-rs-sys and copy them over
* If there is a new GStreamer version: Manually update `gst*/Cargo.toml`
* Run generator.py
* Investigate the diff, fix any mess-ups, look at commented functions and
implement them manually
* `cargo build`
* `for f in (ls |grep gstreamer); cd $f; cargo build --features v1_18; cd ..; end`
(or with the new version you just added)
......@@ -19,7 +19,6 @@ generate = [
"Gst.ClockTimeDiff",
"Gst.State",
"Gst.StateChange",
"Gst.SeekFlags",
"Gst.SeekType",
"Gst.PadDirection",
"Gst.PadPresence",
......@@ -37,42 +36,24 @@ generate = [
"Gst.StructureChangeType",
"Gst.StreamStatusType",
"Gst.StreamType",
"Gst.StreamFlags",
"Gst.ProgressType",
"Gst.BusSyncReply",
"Gst.TagFlag",
"Gst.TagMergeMode",
"Gst.PadProbeType",
"Gst.PadProbeReturn",
"Gst.CapsIntersectMode",
"Gst.BufferCopyFlags",
"Gst.PadMode",
"Gst.SchedulingFlags",
"Gst.ChildProxy",
"Gst.TagSetter",
"Gst.QOSType",
"Gst.TocSetter",
"Gst.ClockType",
"Gst.ElementFlags",
"Gst.ObjectFlags",
"Gst.PadFlags",
"Gst.BinFlags",
"Gst.PipelineFlags",
"Gst.PluginFlags",
"Gst.MemoryFlags",
"Gst.Allocator",
"Gst.PadLinkCheck",
"Gst.DebugLevel",
"Gst.DebugColorFlags",
"Gst.StackTraceFlags",
"Gst.DebugGraphDetails",
"Gst.ParseFlags",
"Gst.TaskState",
"Gst.PluginDependencyFlags",
"Gst.BufferPoolAcquireFlags",
"Gst.PromiseResult",
"Gst.ClockEntryType",
"Gst.ClockFlags",
"Gst.PluginAPIFlags",
]
manual = [
......@@ -86,9 +67,9 @@ manual = [
]
[[object]]
name = "Gst.ClockTime"
status = "manual"
conversion_type = "scalar"
name = "Gst.Allocator"
status = "generate"
manual_traits = ["AllocatorExtManual"]
[[object]]
name = "Gst.Bin"
......@@ -119,6 +100,16 @@ trait_name = "GstBinExt"
[object.function.return]
bool_return_is_error = "Failed to sync children states"
[[object]]
name = "Gst.BinFlags"
status = "generate"
[[object.member]]
name = "last"
ignore = true
[[object.member]]
name = "streams_aware"
version = "1.10"
[[object]]
name = "Gst.Bus"
status = "generate"
......@@ -182,6 +173,47 @@ status = "generate"
name = "Serialize, Deserialize"
cfg_condition = "feature = \"ser_de\""
[[object.member]]
name = "non_droppable"
version = "1.14"
[[object.member]]
name = "last"
ignore = true
[[object]]
name = "Gst.BufferCopyFlags"
status = "generate"
[[object.member]]
name = "none"
ignore = true
[[object]]
name = "Gst.BufferPoolAcquireFlags"
status = "generate"
[[object.member]]
name = "none"
ignore = true
[[object.member]]
name = "last"
ignore = true
[[object]]
name = "Gst.ChildProxy"
status = "generate"
manual_traits = ["ChildProxyExtManual"]
[[object]]
name = "Gst.ClockTime"
status = "manual"
conversion_type = "scalar"
[[object]]
name = "Gst.ClockFlags"
status = "generate"
[[object.member]]
name = "last"
ignore = true
[[object]]
name = "Gst.Format"
status = "generate"
......@@ -191,12 +223,50 @@ status = "generate"
[[object.derive]]
name = "Debug, PartialEq, Eq, PartialOrd, Ord, Hash"
[[object]]
name = "Gst.SeekFlags"
status = "generate"
[[object.member]]
name = "trickmode_forward_predicted"
version = "1.18"
[[object.member]]
name = "instant_rate_change"
version = "1.18"
[[object.member]]
name = "none"
ignore = true
[[object]]
name = "Gst.SegmentFlags"
status = "generate"
[[object.derive]]
name = "Serialize, Deserialize"
cfg_condition = "feature = \"ser_de\""
[[object.member]]
name = "trickmode_forward_predicted"
version = "1.18"
[[object.member]]
name = "none"
ignore = true
[[object]]
name = "Gst.StackTraceFlags"
status = "generate"
[[object.member]]
name = "none"
ignore = true
[[object]]
name = "Gst.StreamFlags"
status = "generate"
[[object.member]]
name = "none"
ignore = true
[[object]]
name = "Gst.TagSetter"
status = "generate"
manual_traits = ["TagSetterExtManual"]
[[object]]
name = "Gst.TocScope"
......@@ -242,6 +312,21 @@ name = "Gst.EventType"
status = "generate"
[[object.derive]]
name = "Debug, PartialEq, Eq, Hash"
[[object.member]]
name = "select_streams"
version = "1.10"
[[object.member]]
name = "stream_selection"
version = "1.10"
[[object.member]]
name = "stream_group_done"
version = "1.10"
[[object.member]]
name = "instant_rate_change"
version = "1.18"
[[object.member]]
name = "instant_rate_sync_time"
version = "1.18"
[[object]]
name = "Gst.Structure"
......@@ -253,6 +338,30 @@ name = "Gst.ParseContext"
status = "manual"
ref_mode = "ref-mut"
[[object]]
name = "Gst.ParseFlags"
status = "generate"
[[object.member]]
name = "place_in_bin"
version = "1.10"
[[object.member]]
name = "none"
ignore = true
[[object]]
name = "Gst.PipelineFlags"
status = "generate"
[[object.member]]
name = "last"
ignore = true
[[object]]
name = "Gst.PluginDependencyFlags"
status = "generate"
[[object.member]]
name = "none"
ignore = true
[[object]]
name = "Gst.Caps"
status = "manual"
......@@ -329,6 +438,7 @@ ref_mode = "ref"
[[object]]
name = "Gst.Clock"
status = "generate"
manual_traits = ["ClockExtManual"]
[[object.function]]
name = "set_master"
[object.function.return]
......@@ -349,6 +459,13 @@ status = "generate"
# Useless clock parameter
ignore = true
[[object]]
name = "Gst.ClockType"
status = "generate"
[[object.member]]
name = "tai"
version = "1.18"
[[object]]
name = "Gst.SystemClock"
status = "generate"
......@@ -357,9 +474,24 @@ status = "generate"
[object.function.return]
nullable = false
[[object]]
name = "Gst.ElementFlags"
status = "generate"
[[object.member]]
name = "last"
ignore = true
[[object]]
name = "Gst.MemoryFlags"
status = "generate"
[[object.member]]
name = "last"
ignore = true
[[object]]
name = "Gst.Element"
status = "generate"
manual_traits = ["ElementExtManual"]
[[object.function]]
name = "make_from_uri"
[object.function.return]
......@@ -371,6 +503,21 @@ status = "generate"
# more specific closure type possible
ignore = true
[[object.function]]
name = "get_current_running_time"
# manual implementation also works for earlier versions
ignore = true
[[object.function]]
name = "get_current_clock_time"
# manual implementation also works for earlier versions
ignore = true
[[object.function]]
name = "post_message"
# takes ownership of message
ignore = true
[[object.function]]
name = "add_pad"
[object.function.return]
......@@ -562,6 +709,7 @@ final_type = true
[[object]]
name = "Gst.DeviceProvider"
status = "generate"
manual_traits = ["DeviceProviderExtManual"]
[[object.function]]
name = "get_bus"
[object.function.return]
......@@ -584,6 +732,7 @@ status = "generate"
[[object]]
name = "Gst.DeviceMonitor"
status = "generate"
manual_traits = ["DeviceMonitorExtManual"]
[[object.function]]
name = "new"
# Work-around for 1.14 switch from transfer-floating to transfer-full
......@@ -639,20 +788,19 @@ status = "generate"
trait_name = "GstObjectExt"
[[object.function]]
name = "set_name"
[object.function.return]
bool_return_is_error = "Failed to set object name"
# Don't allow changing the name at random times
ignore = true
[[object.property]]
name = "name"
# There are accessor functions for this
ignore = true
[[object.function]]
name = "get_name"
[object.function.return]
nullable = false
[[object.function]]
name = "set_name"
[[object.function.parameter]]
name = "name"
nullable = false
[[object.function]]
name = "get_path_string"
[object.function.return]
......@@ -668,9 +816,41 @@ trait_name = "GstObjectExt"
[object.function.return]
bool_return_is_error = "Failed to sync values"
[[object]]
name = "Gst.ObjectFlags"
status = "generate"
[[object.member]]
name = "may_be_leaked"
version = "1.10"
[[object.member]]
name = "last"
ignore = true
[[object]]
name = "Gst.PadFlags"
status = "generate"
[[object.member]]
name = "last"
ignore = true
[[object]]
name = "Gst.PadLinkCheck"
status = "generate"
[[object.member]]
name = "nothing"
ignore = true
[[object]]
name = "Gst.PadProbeType"
status = "generate"
[[object.member]]
name = "invalid"
ignore = true
[[object]]
name = "Gst.Pad"
status = "generate"
manual_traits = ["PadExtManual"]
[[object.function]]
name = "link_maybe_ghosting"
[object.function.return]
......@@ -801,9 +981,19 @@ status = "generate"
# Use Result<FlowSuccess, FlowError>
ignore = true
[[object.function]]
name = "new"
# Builder
ignore = true
[[object.function]]
name = "new_from_template"
# Builder
ignore = true
[[object.function]]
name = "new_from_static_template"
# Correct mutability
# Builder
ignore = true
[[object.function]]
......@@ -861,6 +1051,11 @@ status = "generate"
# Complex closure argument handling
ignore = true
[[object.property]]
name = "template"
# Has a proper getter
ignore = true
[[object]]
name = "Gst.PadTemplate"
status = "generate"
......@@ -898,13 +1093,11 @@ status = "generate"
[[object.function]]
name = "new_no_target"
[object.function.return]
nullable_return_is_error = "Failed to create GhostPad"
ignore = true
[[object.function]]
name = "new_no_target_from_template"
[object.function.return]
nullable_return_is_error = "Failed to create GhostPad"
ignore = true
[[object.function]]
name = "construct"
......@@ -923,6 +1116,7 @@ status = "generate"
[[object]]
name = "Gst.ProxyPad"
status = "generate"
manual_traits = ["ProxyPadExtManual"]
[[object.function]]
name = "chain_default"
......@@ -948,6 +1142,26 @@ final_type = true
# Work-around for 1.14 switch from transfer-floating to transfer-full
ignore = true
[[object.property]]
name = "caps"
version = "1.10"
[[object.property]]
name = "stream-flags"
version = "1.10"
[[object.property]]
name = "stream-id"
version = "1.10"
[[object.property]]
name = "stream-type"
version = "1.10"
[[object.property]]
name = "tags"
version = "1.10"
[[object]]
name = "Gst.StreamCollection"
status = "generate"
......@@ -962,6 +1176,11 @@ final_type = true
# Ignore return value which is always `true`
ignore = true
[[object.property]]
name = "upstream-id"
version = "1.10"
generate = ["get"]
[[object]]
name = "Gst.Plugin"
status = "generate"
......@@ -1035,6 +1254,7 @@ final_type = true
[[object]]
name = "Gst.PluginFeature"
status = "generate"
manual_traits = ["PluginFeatureExtManual"]
[[object.function]]
pattern = "list_.*"
ignore = true
......@@ -1083,6 +1303,7 @@ final_type = true
[[object]]
name = "Gst.BufferPool"
status = "generate"
manual_traits = ["BufferPoolExtManual"]
[[object.function]]
pattern = "config_.*"
# A different type
......@@ -1397,6 +1618,96 @@ status = "generate"
[object.function.return]
nullable_return_is_error = "Failed to get main executable path"
[[object.function]]
name = "debug_set_default_threshold"
# can be called before gst_init()
assertion = "skip"
[[object.function]]
name = "debug_get_default_threshold"
# can be called before gst_init()
assertion = "skip"
[[object.function]]
name = "debug_set_threshold_for_name"
# can be called before gst_init()
assertion = "skip"
[[object.function]]
name = "debug_set_threshold_from_string"
# can be called before gst_init()
assertion = "skip"
[[object.function]]
name = "debug_unset_threshold_for_name"
# can be called before gst_init()
assertion = "skip"
[[object.function]]
name = "debug_get_stack_trace"
# can be called before gst_init()
assertion = "skip"
[[object.function]]
name = "debug_print_stack_trace"
# can be called before gst_init()
assertion = "skip"
[[object.function]]
name = "debug_is_active"
# can be called before gst_init()
assertion = "skip"
[[object.function]]
name = "debug_is_colored"
# can be called before gst_init()
assertion = "skip"
[[object.function]]
name = "debug_set_active"
# can be called before gst_init()
assertion = "skip"
[[object.function]]
name = "debug_set_colored"
# can be called before gst_init()
assertion = "skip"
[[object.function]]
name = "debug_add_ring_buffer_logger"
# can be called before gst_init()
assertion = "skip"
[[object.function]]
name = "debug_remove_ring_buffer_logger"
# can be called before gst_init()
assertion = "skip"
[[object.function]]
name = "debug_ring_buffer_logger_get_logs"
# can be called before gst_init()
assertion = "skip"
[[object.function]]
name = "util_get_timestamp"
# can be called before gst_init()
assertion = "skip"
[[object.function]]
name = "version"
# can be called before gst_init()
assertion = "skip"
[[object.function]]
name = "version_string"
# can be called before gst_init()
assertion = "skip"
[[object.function]]
name = "type_is_plugin_api"
# confusing return type
ignore = true
[[object]]
name = "Gst.StateChangeReturn"
status = "generate"
......@@ -1424,10 +1735,34 @@ status = "generate"
# Don't auto-implement traits
name = ""
[[object.function]]
name = "new"
[object.function.return]
nullable = true
nullable_return_is_error = "Can't create DateTime"
[[object.function]]
name = "new_y"
[object.function.return]
nullable = true
nullable_return_is_error = "Can't create DateTime"
[[object.function]]
name = "new_ym"
[object.function.return]
nullable = true
nullable_return_is_error = "Can't create DateTime"
[[object.function]]
name = "new_ymd"
[object.function.return]
nullable = true
nullable_return_is_error = "Can't create DateTime"
[[object.function]]
name = "new_from_g_date_time"
[object.function.return]
nullable = false
nullable_return_is_error = "Can't create DateTime from glib::DateTime"
[[object.function]]
name = "to_g_date_time"
......
......@@ -18,10 +18,8 @@ external_libraries = [
]
generate = [
"GstAudio.AudioFlags",
"GstAudio.AudioFormatFlags",
"GstAudio.AudioLayout",
"GstAudio.AudioPackFlags",
"GstAudio.AudioChannelPosition",
"GstAudio.StreamVolume",
"GstAudio.StreamVolumeFormat",
......@@ -29,7 +27,6 @@ generate = [
"GstAudio.AudioSrc",
"GstAudio.AudioBaseSink",
"GstAudio.AudioBaseSrc",
"GstAudio.AudioRingBufferFormatType",
]
manual = [
......@@ -65,6 +62,9 @@ conversion_type = "scalar"
name = "GstAudio.AudioFormat"
status = "generate"
[[object.derive]]
name = "Debug, Eq, PartialEq, Hash"
[[object.member]]
name = "s16"
# Platform dependant
......@@ -144,9 +144,17 @@ status = "generate"
# 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
......@@ -184,6 +192,7 @@ status = "generate"
[[object]]
name = "GstAudio.AudioEncoder"
status = "generate"
manual_traits = ["AudioEncoderExtManual"]
[[object.function]]
name = "finish_frame"
......@@ -214,3 +223,33 @@ status = "generate"
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
......@@ -18,7 +18,7 @@ external_libraries = [
generate = [
"GstBase.PushSrc",
"GstBase.BaseParseFrameFlags",
"GstBase.AggregatorStartTimeSelection",
]
manual = [
......@@ -113,6 +113,7 @@ concurrency = "none"
[[object]]
name = "GstBase.BaseSink"
status = "generate"
manual_traits = ["BaseSinkExtManual"]
[[object.function]]
name = "wait"
......@@ -137,6 +138,7 @@ status = "generate"
[[object]]
name = "GstBase.BaseSrc"
status = "generate"
manual_traits = ["BaseSrcExtManual"]
[[object.function]]
name = "set_caps"
......@@ -171,6 +173,7 @@ status = "generate"
[[object]]
name = "GstBase.BaseTransform"
status = "generate"
manual_traits = ["BaseTransformExtManual"]
[[object.function]]
name = "update_src_caps"
......@@ -181,7 +184,7 @@ status = "generate"
[[object]]
name = "GstBase.Aggregator"
status = "generate"
version = "1.14"
manual_traits = ["AggregatorExtManual"]
[[object.function]]
name = "finish_buffer"
......@@ -192,6 +195,10 @@ version = "1.14"
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
......@@ -200,7 +207,7 @@ version = "1.14"
[[object]]
name = "GstBase.AggregatorPad"
status = "generate"
version = "1.14"
manual_traits = ["AggregatorPadExtManual"]
[[object]]
name = "GstBase.*"
......@@ -278,6 +285,7 @@ ref_mode = "ref"
[[object]]
name = "GstBase.BaseParse"
status = "generate"
manual_traits = ["BaseParseExtManual"]
[[object.function]]
name = "finish_frame"
ignore = true
......@@ -298,3 +306,10 @@ status = "generate"
[[object.function]]
name = "push_frame"
ignore = true
[[object]]
name = "GstBase.BaseParseFrameFlags"
status = "generate"
[[object.member]]
name = "none"
ignore = true
......@@ -40,8 +40,8 @@ generate = [
"GES.EditMode",
"GES.PipelineFlags",
"GES.Edge",
"GES.FrameNumber",
"GES.TrackType",
"GES.BaseEffect",
"GES.Group",
"GES.UriClipAsset",
"GES.UriSourceAsset",
......@@ -77,6 +77,12 @@ name = "Gst.ClockTime"
status = "manual"
conversion_type = "scalar"
[[object]]
name = "GES.BaseEffect"
status = "generate"
# Actually available since 1.2 even if all functions are new in 1.18
version = "1.2"
[[object]]
name = "GES.Effect"
status = "generate"
......@@ -272,6 +278,7 @@ status = "generate"
[[object]]
name = "GES.TimelineElement"
status = "generate"
manual_traits = ["TimelineElementExtManual"]
[[object.function]]
name = "ripple"
[object.function.return]
......
......@@ -19,11 +19,6 @@ external_libraries = [
]
generate = [
# BitFlags
"GstGL.GLAPI",
"GstGL.GLDisplayType",
"GstGL.GLPlatform",
"GstGL.GLSLProfile",
# Enums
"GstGL.GLFormat",
"GstGL.GLQueryType",
......@@ -94,6 +89,7 @@ ref_mode = "ref"
[[object]]
name = "GstGL.GLContext"
status = "generate"
manual_traits = ["GLContextExtManual"]
[[object.function]]
name = "new_wrapped"
......@@ -425,3 +421,46 @@ final_type = true
name = "submit_input_buffer"
# Buffer ownership transfer
ignore = true
[[object]]
name = "GstGL.GLDisplayType"
status = "generate"
[[object.member]]
name = "none"
ignore = true
[[object.member]]
name = "any"
ignore = true
[[object.member]]
name = "egl_device"
version = "1.18"
[[object]]
name = "GstGL.GLAPI"
status = "generate"
[[object.member]]
name = "none"
ignore = true
[[object.member]]
name = "any"
ignore = true
[[object]]
name = "GstGL.GLPlatform"
status = "generate"
[[object.member]]
name = "none"
ignore = true
[[object.member]]
name = "any"
ignore = true
[[object]]
name = "GstGL.GLSLProfile"
status = "generate"
[[object.member]]
name = "none"
ignore = true
[[object.member]]
name = "any"
ignore = true
......@@ -18,7 +18,6 @@ external_libraries = [
generate = [
"GstPbutils.DiscovererResult",
"GstPbutils.DiscovererSerializeFlags",
]
manual = [
......@@ -170,6 +169,10 @@ status = "generate"
pattern = "set_.*"
ignore = true
[[object.function]]
pattern = "get_restriction"
ignore = true
[[object.function]]
name = "copy"
[object.function.return]
......@@ -325,5 +328,20 @@ status = "generate"
[[object.function]]
name = "plugins_base_version_string"
assertion = "skip"
[object.function.return]
nullable = false
[[object.function]]
name = "plugins_base_version"
assertion = "skip"
[[object]]
name = "GstPbutils.DiscovererSerializeFlags"
status = "generate"
[[object.member]]
name = "basic"
ignore = true
[[object.member]]
name = "all"
ignore = true
......@@ -24,8 +24,6 @@ generate = [
"GstRtp.RTCPXRType",
"GstRtp.RTPPayload",
"GstRtp.RTPProfile",
"GstRtp.RTPBufferFlags",
"GstRtp.RTPBufferMapFlags",
]
[[object]]
......@@ -50,3 +48,17 @@ status = "generate"
[[object.function]]
name = "rtp_source_meta_api_get_type"
ignore = true
[[object]]
name = "GstRtp.RTPBufferFlags"
status = "generate"
[[object.member]]
name = "last"
ignore = true
[[object]]
name = "GstRtp.RTPBufferMapFlags"
status = "generate"
[[object.member]]
name = "last"
ignore = true
......@@ -23,16 +23,12 @@ generate = [
"GstRtsp.RTSPEvent",
"GstRtsp.RTSPFamily",
"GstRtsp.RTSPHeaderField",
"GstRtsp.RTSPLowerTrans",
"GstRtsp.RTSPMethod",
"GstRtsp.RTSPMsgType",
"GstRtsp.RTSPProfile",
"GstRtsp.RTSPRangeUnit",
"GstRtsp.RTSPResult",
"GstRtsp.RTSPState",
"GstRtsp.RTSPStatusCode",
"GstRtsp.RTSPTimeType",
"GstRtsp.RTSPTransMode"
]
manual = [
......@@ -52,6 +48,7 @@ concurrency = "send"
name = "GstRtsp.RTSPAuthParam"
status = "generate"
concurrency="send"
version = "1.12"
[[object]]
name = "Gst.ClockTime"
......@@ -67,3 +64,31 @@ ref_mode = "ref"
name = "Gst.Structure"
status = "manual"
ref_mode = "ref-mut"
[[object]]
name = "GstRtsp.RTSPLowerTrans"
status = "generate"
[[object.member]]
name = "unknown"
ignore = true
[[object]]
name = "GstRtsp.RTSPMethod"
status = "generate"
[[object.member]]
name = "invalid"
ignore = true
[[object]]
name = "GstRtsp.RTSPProfile"
status = "generate"
[[object.member]]
name = "unknown"
ignore = true
[[object]]
name = "GstRtsp.RTSPTransMode"
status = "generate"
[[object.member]]
name = "unknown"
ignore = true
......@@ -22,7 +22,6 @@ external_libraries = [
]
generate = [
"GstRtspServer.RTSPAddressFlags",
"GstRtspServer.RTSPAddressPoolResult",
"GstRtspServer.RTSPMediaFactoryURI",
"GstRtspServer.RTSPMediaStatus",
......@@ -96,6 +95,11 @@ name = "GstRtspServer.RTSPToken"
status = "manual"
ref_mode = "ref"
[[object]]
name = "GstRtspServer.RTSPThread"
status = "manual"
ref_mode = "ref"
[[object]]
name = "Gst.ClockTime"
status = "manual"
......@@ -104,6 +108,7 @@ conversion_type = "scalar"
[[object]]
name = "GstRtspServer.RTSPServer"
status = "generate"
manual_traits = ["RTSPServerExtManual"]
[[object.function]]
name = "attach"
......@@ -122,6 +127,7 @@ status = "generate"
[[object]]
name = "GstRtspServer.RTSPClient"
status = "generate"
manual_traits = ["RTSPClientExtManual"]
[[object.function]]
name = "attach"
......@@ -130,6 +136,7 @@ status = "generate"
[[object]]
name = "GstRtspServer.RTSPStream"
status = "generate"
manual_traits = ["RTSPStreamExtManual"]
[[object.function]]
name = "recv_rtcp"
......@@ -193,6 +200,7 @@ concurrency = "send"
name = "GstRtspServer.RTSPStreamTransport"
status = "generate"
concurrency = "none"
manual_traits = ["RTSPStreamTransportExtManual"]
[[object.function]]
name = "recv_data"
......@@ -217,6 +225,7 @@ concurrency = "none"
[[object]]
name = "GstRtspServer.RTSPAddressPool"
status = "generate"
manual_traits = ["RTSPAddressPoolExtManual"]
[[object.function]]
name = "add_range"
......@@ -235,6 +244,7 @@ status = "generate"
[[object]]
name = "GstRtspServer.RTSPMedia"
status = "generate"
manual_traits = ["RTSPMediaExtManual"]
[[object.function]]
name = "suspend"
......@@ -246,14 +256,24 @@ status = "generate"
[object.function.return]
bool_return_is_error = "Failed to unprepare media"
[[object.function]]
name = "prepare"
[object.function.return]
bool_return_is_error = "Failed to prepare media"
[[object.function]]
name = "unsuspend"
[object.function.return]
bool_return_is_error = "Failed to unsuspend media"
[[object.function]]
name = "take_pipeline"
ignore = true
[[object]]
name = "GstRtspServer.RTSPMediaFactory"
status = "generate"
manual_traits = ["RTSPMediaFactoryExtManual"]
[[object.function]]
name = "add_role_from_structure"
......@@ -282,6 +302,7 @@ status = "generate"
[[object]]
name = "GstRtspServer.RTSPSessionPool"
status = "generate"
manual_traits = ["RTSPSessionPoolExtManual"]
[[object.function]]
name = "remove"
......@@ -301,6 +322,8 @@ status = "generate"
[[object]]
name="GstRtspServer.RTSPAuth"
status="generate"
manual_traits = ["RTSPAuthExtManual"]
[[object.function]]
name = "check"
[object.function.return]
......@@ -337,3 +360,9 @@ status="generate"
[object.function.return]
nullable_return_is_error = "Failed to manage media"
[[object]]
name = "GstRtspServer.RTSPAddressFlags"
status = "generate"
[[object.member]]
name = "none"
ignore = true
......@@ -19,27 +19,24 @@ external_libraries = [
generate = [
"GstVideo.VideoCodecFrameFlags",
"GstVideo.VideoFormat",
"GstVideo.VideoFormatFlags",
"GstVideo.VideoTileMode",
"GstVideo.VideoInterlaceMode",
"GstVideo.VideoFlags",
"GstVideo.VideoChromaSite",
"GstVideo.VideoColorMatrix",
"GstVideo.VideoTransferFunction",
"GstVideo.VideoColorPrimaries",
"GstVideo.VideoMultiviewMode",
"GstVideo.VideoMultiviewFlags",
"GstVideo.VideoFieldOrder",
"GstVideo.VideoFrameFlags",
"GstVideo.VideoMultiviewFramePacking",
"GstVideo.VideoFilter",
"GstVideo.VideoOverlayFormatFlags",
"GstVideo.VideoTimeCodeFlags",
"GstVideo.VideoCaptionType",
"GstVideo.VideoBufferPool",
"GstVideo.VideoPackFlags",
"GstVideo.VideoBufferFlags",
"GstVideo.VideoAlphaMode",
"GstVideo.VideoChromaMode",
"GstVideo.VideoMatrixMode",
"GstVideo.VideoGammaMode",
"GstVideo.VideoPrimariesMode",
"GstVideo.VideoResamplerMethod",
"GstVideo.VideoDitherMethod",
"GstVideo.VideoAFDValue",
"GstVideo.VideoAFDSpec",
]
manual = [
......@@ -56,6 +53,7 @@ manual = [
"Gst.FlowReturn",
"Gst.TagList",
"Gst.TagMergeMode",
"GstBase.BaseSink",
"GstBase.BaseTransform",
"GstVideo.VideoCodecState",
"GstVideo.VideoCodecFrame",
......@@ -81,6 +79,7 @@ ref_mode = "ref"
[[object]]
name = "GstVideo.VideoOverlay"
status = "generate"
manual_traits = ["VideoOverlayExtManual"]
[[object.function]]
name = "set_render_rectangle"
......@@ -90,6 +89,7 @@ status = "generate"
[[object]]
name = "GstVideo.VideoDecoder"
status = "generate"
manual_traits = ["VideoDecoderExtManual"]
[[object.function]]
name = "allocate_output_frame"
......@@ -168,6 +168,7 @@ status = "generate"
[[object]]
name = "GstVideo.VideoEncoder"
status = "generate"
manual_traits = ["VideoEncoderExtManual"]
[[object.function]]
name = "allocate_output_frame"
......@@ -181,6 +182,10 @@ status = "generate"
name = "finish_frame"
ignore = true
[[object.function]]
name = "finish_subframe"
ignore = true
[[object.function]]
name = "set_latency"
ignore = true
......@@ -226,3 +231,280 @@ status = "generate"
name = "allocate_output_buffer"
[object.function.return]
nullable_return_is_error = "Failed to allocate output buffer"
[[object]]
name = "GstVideo.VideoFormat"
status = "generate"
[[object.derive]]
name = "Debug, Eq, PartialEq, Hash"
[[object.member]]
name = "p010_10be"
version = "1.10"
[[object.member]]
name = "p010_10le"
version = "1.10"
[[object.member]]
name = "iyu2"
version = "1.10"
[[object.member]]
name = "vyuy"
version = "1.12"
[[object.member]]
name = "gbra"
version = "1.12"
[[object.member]]
name = "gbra_10be"
version = "1.12"
[[object.member]]
name = "gbra_10le"
version = "1.12"
[[object.member]]
name = "gbr_12be"
version = "1.12"
[[object.member]]
name = "gbr_12le"
version = "1.12"
[[object.member]]
name = "gbra_12be"
version = "1.12"
[[object.member]]
name = "gbra_12le"
version = "1.12"
[[object.member]]
name = "i420_12be"
version = "1.12"
[[object.member]]
name = "i420_12le"
version = "1.12"
[[object.member]]
name = "i422_12be"
version = "1.12"
[[object.member]]
name = "i422_12le"
version = "1.12"
[[object.member]]
name = "y444_12be"
version = "1.12"
[[object.member]]
name = "y444_12le"
version = "1.12"
[[object.member]]
name = "gray10_le32"
version = "1.14"
[[object.member]]
name = "nv12_10le32"
version = "1.14"
[[object.member]]
name = "nv16_10le32"
version = "1.14"
[[object.member]]
name = "nv12_10le40"
version = "1.16"
[[object.member]]
name = "y210"
version = "1.16"
[[object.member]]
name = "y410"
version = "1.16"
[[object.member]]
name = "vuya"
version = "1.16"
[[object.member]]
name = "bgr10a2_le"
version = "1.16"
[[object.member]]
name = "rgb10a2_le"
version = "1.18"
[[object.member]]
name = "y444_16be"
version = "1.18"
[[object.member]]
name = "y444_16le"
version = "1.18"
[[object.member]]
name = "p016_be"
version = "1.18"
[[object.member]]
name = "p016_le"
version = "1.18"
[[object.member]]
name = "p012_be"
version = "1.18"
[[object.member]]
name = "p012_le"
version = "1.18"
[[object.member]]
name = "y212_be"
version = "1.18"
[[object.member]]
name = "y212_le"
version = "1.18"
[[object.member]]
name = "y412_be"
version = "1.18"
[[object.member]]
name = "y412_le"
version = "1.18"
[[object]]
name = "GstVideo.VideoSink"
status = "generate"
[[object.function]]
name = "center_rect"
# Implemented in video_rectangle
ignore = true
[[object]]
name = "GstVideo.VideoOverlayFormatFlags"
status = "generate"
[[object.function]]
name = "get_type"
version = "1.16"
[[object.member]]
name = "none"
ignore = true
[[object]]
name = "GstVideo.VideoTimeCodeFlags"
status = "generate"
[[object.function]]
name = "get_type"
version = "1.18"
[[object.member]]
name = "none"
ignore = true
[[object]]
name = "GstVideo.VideoFrameFlags"
status = "generate"
[[object.member]]
name = "top_field"
version = "1.16"
[[object.member]]
name = "bottom_field"
version = "1.16"
[[object]]
name = "GstVideo.VideoBufferFlags"
status = "generate"
[[object.member]]
name = "top_field"
version = "1.16"
[[object.member]]
name = "bottom_field"
version = "1.16"
[[object.member]]
name = "marker"
version = "1.18"
[[object.member]]
name = "last"
ignore = true
[[object]]
name = "GstVideo.VideoInterlaceMode"
status = "generate"
[[object.member]]
name = "alternate"
version = "1.16"
[[object]]
name = "GstVideo.VideoChromaSite"
status = "generate"
[[object.member]]
name = "unknown"
ignore = true
[[object]]
name = "GstVideo.VideoFlags"
status = "generate"
[[object.member]]
name = "none"
ignore = true
[[object]]
name = "GstVideo.VideoFrameFlags"
status = "generate"
[[object.member]]
name = "none"
ignore = true
[[object]]
name = "GstVideo.VideoMultiviewFlags"
status = "generate"
[[object.member]]
name = "none"
ignore = true
[[object]]
name = "GstVideo.VideoPackFlags"
status = "generate"
[[object.member]]
name = "none"
ignore = true
[[object]]
name = "GstVideo.VideoTransferFunction"
status = "generate"
[[object.member]]
name = "bt2020_10"
version = "1.18"
[[object.member]]
name = "smpte2084"
version = "1.18"
[[object.member]]
name = "arib_std_b67"
version = "1.18"
[[object]]
name = "GstVideo.VideoColorPrimaries"
status = "generate"
[[object.member]]
name = "smptest428"
version = "1.16"
[[object.member]]
name = "smpterp431"
version = "1.16"
[[object.member]]
name = "smpteeg432"
version = "1.16"
[[object.member]]
name = "ebu3213"
version = "1.16"
......@@ -38,6 +38,8 @@ generate = [
]
manual = [
"GLib.Bytes",
"GLib.Error",
"GObject.Object",
"Gst.Structure",
"GstSdp.SDPMessage",
......@@ -77,3 +79,13 @@ final_type = true
name = "new"
# takes ownership of SDP message
ignore = true
[[object]]
name = "GstWebRTC.WebRTCDataChannel"
status = "generate"
final_type = true
[[object.function]]
name = "on_error"
# takes ownership of SDP message
ignore = true
......@@ -42,7 +42,7 @@ On Debian/Ubuntu they can be installed with
$ apt-get install libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev \
gstreamer1.0-plugins-base gstreamer1.0-plugins-good \
gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly \
gstreamer1.0-libav libgstrtspserver-1.0-dev
gstreamer1.0-libav libgstrtspserver-1.0-dev libges-1.0-dev
```
The minimum required version of the above libraries is >= 1.8. If you
......@@ -71,15 +71,10 @@ provided by the GStreamer project.
#### Homebrew
Homebrew only installs various plugins if explicitly enabled, so some extra
`--with-*` flags may be required.
```
$ brew install gstreamer gst-plugins-base gst-plugins-good \
gst-plugins-bad gst-plugins-ugly gst-libav gst-rtsp-server \
gst-editing-services --with-orc --with-libogg --with-opus \
--with-pango --with-theora --with-libvorbis --with-libvpx \
--enable-gtk3
gst-editing-services
```
If you wish to install the gstreamer-player sub-crate, make sure the
......@@ -121,6 +116,11 @@ If you wish to install the gstreamer-player sub-crate, make sure the
version of these libraries is >= 1.12. Otherwise, a version >= 1.8 is
sufficient.
Note that the version of `pkg-config` included in `MSYS2` is
[known to have problems](https://github.com/rust-lang/pkg-config-rs/issues/51#issuecomment-346300858)
compiling GStreamer, so you may need to install another version. One option
would be [`pkg-config-lite`](https://sourceforge.net/projects/pkgconfiglite/).
#### GStreamer Binaries
You need to download the *two* `.msi` files for your platform from the
......
export RUSTUP_HOME='/usr/local/rustup'
export PATH=$PATH:/usr/local/cargo/bin
export PKG_CONFIG_PATH=/usr/local/lib/x86_64-linux-gnu/pkgconfig
export GST_PLUGIN_SYSTEM_PATH=/usr/local/lib/x86_64-linux-gnu/gstreamer-1.0
export GST_PLUGIN_SCANNER=/usr/local/libexec/gstreamer-1.0/gst-plugin-scanner
export PATH=$PATH:/usr/local/bin
export LD_LIBRARY_PATH=/usr/local/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH
variables:
GST_RS_IMG_TAG: '2020-07-05.0'
pip3 install meson==0.54.3
git clone --depth 1 https://gitlab.freedesktop.org/gstreamer/gst-build.git --branch master
cd gst-build
meson build -D prefix=/usr/local -D devtools=disabled -D examples=disabled -D gtk_doc=disabled -D introspection=disabled -D libav=disabled -D libnice=disabled -D python=disabled -D ugly=disabled -D vaapi=disabled
ninja -C build
ninja -C build install
source ./ci/env.sh
export CARGO_HOME='/usr/local/cargo'
RUSTUP_VERSION=1.21.1
RUST_VERSION=$1
RUST_ARCH="x86_64-unknown-linux-gnu"
RUSTUP_URL=https://static.rust-lang.org/rustup/archive/$RUSTUP_VERSION/$RUST_ARCH/rustup-init
wget $RUSTUP_URL
chmod +x rustup-init;
./rustup-init -y --no-modify-path --profile minimal --default-toolchain $RUST_VERSION;
rm rustup-init;
chmod -R a+w $RUSTUP_HOME $CARGO_HOME
rustup --version
cargo --version
rustc --version
if [ "$RUST_VERSION" = "stable" ]; then
rustup component add clippy-preview
rustup component add rustfmt
cargo install --force cargo-deny
cargo install --force --git https://github.com/kbknapp/cargo-outdated
fi
[advisories]
db-path = "~/.cargo/advisory-db"
db-url = "https://github.com/rustsec/advisory-db"
vulnerability = "deny"
unmaintained = "warn"
notice = "warn"
ignore = []
[licenses]
unlicensed = "deny"
allow = [
"Apache-2.0",
]
deny = [
"GPL-1.0",
"GPL-2.0",
"GPL-3.0",
"AGPL-1.0",
"AGPL-3.0",
]
copyleft = "deny"
allow-osi-fsf-free = "either"
confidence-threshold = 0.8
[[licenses.exceptions]]
allow = ["LGPL-2.0"]
name = "gstreamer-rs-lgpl-docs"
[bans]
multiple-versions = "deny"
highlight = "all"
# ignore duplicated deps because of outdated glutin
# https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/409
[[bans.skip]]
name = "unicode-xid"
version = "0.1.0"
[[bans.skip]]
name = "rusttype"
version = "0.7.9"
[[bans.skip]]
name = "quote"
version = "0.6.13"
[[bans.skip]]
name = "proc-macro2"
version = "0.4.30"
[[bans.skip]]
name = "gl_generator"
version = "0.13.1"
[[bans.skip]]
name = "libloading"
version = "0.5.2"
[sources]
unknown-registry = "deny"
unknown-git = "deny"
allow-git = [
"https://gitlab.freedesktop.org/gstreamer/gstreamer-rs-sys",
"https://github.com/gtk-rs/sys",
"https://github.com/gtk-rs/glib",
"https://github.com/gtk-rs/gio",
"https://github.com/gtk-rs/cairo",
"https://github.com/gtk-rs/pango",
"https://github.com/gtk-rs/pangocairo",
"https://github.com/gtk-rs/atk",
"https://github.com/gtk-rs/gdk-pixbuf",
"https://github.com/gtk-rs/gdk",
"https://github.com/gtk-rs/gtk",
]