Compiling examples with current public gstreamer dependencies
I've established that a direct clone of this repo compiles examples correctly, however I'm trying to compile them against the latest public crates.io versions in an isolated project (same folder structure as that of the examples, with the same build.rs file). Anything with an embedded plugin/element (e.g. cairo_compositor.rs) is failing with error message/s of the following form:
pub trait ObjectImpl: ObjectSubclass + ObjectImplExt {
| ^^^^^^^^^^^^^^ required by this bound in `ObjectImpl`
error[E0277]: the trait bound `imp_pad::CairoCompositorPad: gstreamer::subclass::prelude::ObjectSubclassType` is not satisfied
--> src/bin/cairo_compositor.rs:543:32
|
543 | impl GstObjectImpl for CairoCompositorPad {}
| ^^^^^^^^^^^^^^^^^^ the trait `gstreamer::subclass::prelude::ObjectSubclassType` is not implemented for `imp_pad::CairoCompositorPad`
|
= help: the trait `gstreamer::subclass::prelude::ObjectSubclassType` is implemented for `gstreamer::glib::boxed_any_object::imp::BoxedAnyObject`
= note: required for `imp_pad::CairoCompositorPad` to implement `gstreamer::subclass::prelude::ObjectSubclass`
= note: required for `imp_pad::CairoCompositorPad` to implement `gstreamer::subclass::prelude::ObjectImpl`
note: required by a bound in `gstreamer::subclass::prelude::GstObjectImpl`
pub trait GstObjectImpl: ObjectImpl {}
| ^^^^^^^^^^ required by this bound in `GstObjectImpl`
error[E0277]: the trait bound `imp_pad::CairoCompositorPad: gstreamer::subclass::prelude::ObjectSubclassType` is not satisfied
--> src/bin/cairo_compositor.rs:546:26
|
546 | impl PadImpl for CairoCompositorPad {}
| ^^^^^^^^^^^^^^^^^^ the trait `gstreamer::subclass::prelude::ObjectSubclassType` is not implemented for `imp_pad::CairoCompositorPad`
|
= help: the trait `gstreamer::subclass::prelude::ObjectSubclassType` is implemented for `gstreamer::glib::boxed_any_object::imp::BoxedAnyObject`
= note: required for `imp_pad::CairoCompositorPad` to implement `gstreamer::subclass::prelude::ObjectSubclass`
= note: required for `imp_pad::CairoCompositorPad` to implement `gstreamer::subclass::prelude::ObjectImpl`
= note: required for `imp_pad::CairoCompositorPad` to implement `gstreamer::subclass::prelude::GstObjectImpl`
note: required by a bound in `gstreamer::subclass::prelude::PadImpl`
(etc.). My Cargo.toml file contains the following dependencies:
glib = { git = "https://github.com/gtk-rs/gtk-rs-core" }
gst = { package = "gstreamer", version = "0.21.0" }
gst-gl = { package = "gstreamer-gl", version = "0.21.0", optional = true }
gst-gl-egl = { package = "gstreamer-gl-egl", version = "0.21.0", optional = true }
gst-gl-wayland = { package = "gstreamer-gl-wayland", version = "0.21.0", optional = true }
gst-gl-x11 = { package = "gstreamer-gl-x11", version = "0.21.0", optional = true }
gst-app = { package = "gstreamer-app", version = "0.21.0" }
gst-audio = { package = "gstreamer-audio", version = "0.21.0" }
gst-base = { package = "gstreamer-base", version = "0.21.0" }
gst-video = { package = "gstreamer-video", version = "0.21.0" }
gst-pbutils = { package = "gstreamer-pbutils", version = "0.21.0" }
gst-play = { package = "gstreamer-play", version = "0.21.0", optional = true }
gst-player = { package = "gstreamer-player", version = "0.21.0", optional = true }
ges = { package = "gstreamer-editing-services", version = "0.21.0", optional = true }
gst-sdp = { package = "gstreamer-sdp", version = "0.21.0", optional = true }
gst-rtsp = { package = "gstreamer-rtsp", version = "0.21.0", optional = true }
gst-rtsp-server = { package = "gstreamer-rtsp-server", version = "0.21.0", optional = true }
gst-allocators = { package = "gstreamer-allocators", version = "0.21.0", optional = true }
gio = { git = "https://github.com/gtk-rs/gtk-rs-core", optional = true }
anyhow = "1.0"
derive_more = "0.99.5"
futures = "0.3"
byte-slice-cast = "1"
cairo-rs = { git = "https://github.com/gtk-rs/gtk-rs-core", features=["use_glib"], optional = true }
pango = { git = "https://github.com/gtk-rs/gtk-rs-core", optional = true }
pangocairo = { git = "https://github.com/gtk-rs/gtk-rs-core", optional = true }
glutin = { version = "0.29", optional = true }
image = { version = "0.24", optional = true, default-features = false, features = ["png", "jpeg"] }
memmap2 = { version = "0.7", optional = true }
memfd = { version = "0.6", optional = true }
uds = { version = "0.2", optional = true }
but otherwise is identical to the original. Am I missing something in terms of module paths, or are there updates to the public crates that I should be waiting for?
Cheers, and thanks,
Peter B.