forked from mirrors/gstreamer-rs
4c0f03d5fd
`GstGLDisplayWayland` calls GstGLDisplayEGL::from_gl_display()` under the hood (which calls `GstGLDisplayEGL::from_native()`, which calls `eglGetPlatformDisplay()`) to retrieve the underlying `EGLDisplay` handle, which thus far seems to be the same value as `glutin`. However, newer `glutin 0.31` passes attributes to this function resulting in a different handle, causing all kinds of trouble further down the line when sharing resources between `glutin` and `gstreamer-rs` that both operate on a distinct `EGLDisplay`. Furthermore `GstGLDisplayEGL` thinks that it uniquely owns the handle returned by `eglGetPlatformDisplay()` and _does not_ set `.foreign_display = TRUE` (which `GstGLDisplayEGL::with_egl_display()` would), causing it to call `eglTerminate()` as soon as the `GstGLDisplay` is destroyed, leaving `glutin` dysfunctional. To solve all of this, simply remove this wrongly-behaving class from the example as it is not suitable for sharing an `EGLDisplay` with `glutin`. It might however be interesting to create a different example that showcases how to use raw window handles instead of EGL/GLX handles, however only Wayland and any platform on EGL like Android, via `GstGLDisplayEGL::from_native()`, support this. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/1344>
195 lines
5.2 KiB
TOML
195 lines
5.2 KiB
TOML
[package]
|
|
name = "examples"
|
|
version = "0.21.1"
|
|
license = "MIT"
|
|
authors = ["Sebastian Dröge <sebastian@centricular.com>"]
|
|
edition = "2021"
|
|
rust-version = "1.70"
|
|
|
|
[dependencies]
|
|
glib = { git = "https://github.com/gtk-rs/gtk-rs-core", branch = "0.18", version = "0.18" }
|
|
gst = { package = "gstreamer", path = "../gstreamer", version = "0.21" }
|
|
gst-gl = { package = "gstreamer-gl", path = "../gstreamer-gl", version = "0.21", optional = true }
|
|
gst-gl-egl = { package = "gstreamer-gl-egl", path = "../gstreamer-gl/egl", version = "0.21", optional = true }
|
|
gst-gl-x11 = { package = "gstreamer-gl-x11", path = "../gstreamer-gl/x11", version = "0.21", optional = true }
|
|
gst-app = { package = "gstreamer-app", path = "../gstreamer-app", version = "0.21" }
|
|
gst-audio = { package = "gstreamer-audio", path = "../gstreamer-audio", version = "0.21" }
|
|
gst-base = { package = "gstreamer-base", path = "../gstreamer-base", version = "0.21" }
|
|
gst-video = { package = "gstreamer-video", path = "../gstreamer-video", version = "0.21" }
|
|
gst-pbutils = { package = "gstreamer-pbutils", path = "../gstreamer-pbutils", version = "0.21" }
|
|
gst-play = { package = "gstreamer-play", path = "../gstreamer-play", version = "0.21", optional = true }
|
|
gst-player = { package = "gstreamer-player", path = "../gstreamer-player", version = "0.21", optional = true }
|
|
ges = { package = "gstreamer-editing-services", path = "../gstreamer-editing-services", version = "0.21", optional = true }
|
|
gst-sdp = { package = "gstreamer-sdp", path = "../gstreamer-sdp", version = "0.21", optional = true }
|
|
gst-rtsp = { package = "gstreamer-rtsp", path = "../gstreamer-rtsp", version = "0.21", optional = true }
|
|
gst-rtsp-server = { package = "gstreamer-rtsp-server", path = "../gstreamer-rtsp-server", version = "0.21", optional = true }
|
|
gst-allocators = { package = "gstreamer-allocators", path = "../gstreamer-allocators", version = "0.21", optional = true }
|
|
gio = { git = "https://github.com/gtk-rs/gtk-rs-core", branch = "0.18", version = "0.18", 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", branch = "0.18", version = "0.18", features=["use_glib"], optional = true }
|
|
pango = { git = "https://github.com/gtk-rs/gtk-rs-core", branch = "0.18", version = "0.18", optional = true }
|
|
pangocairo = { git = "https://github.com/gtk-rs/gtk-rs-core", branch = "0.18", version = "0.18", optional = true }
|
|
glutin = { version = "0.29", optional = true }
|
|
image = { version = "0.24", optional = true, default-features = false, features = ["png", "jpeg"] }
|
|
memmap2 = { version = "0.9", optional = true }
|
|
memfd = { version = "0.6", optional = true }
|
|
uds = { version = "0.4", optional = true }
|
|
|
|
[target.'cfg(windows)'.dependencies]
|
|
windows = { version = "0.51", features=["Win32_Graphics_Direct3D11",
|
|
"Win32_Foundation", "Win32_Graphics_Direct3D", "Win32_Graphics_Dxgi",
|
|
"Win32_Graphics_Dxgi_Common", "Win32_Graphics_Direct2D",
|
|
"Win32_Graphics_Direct2D_Common", "Win32_Graphics_DirectWrite",
|
|
"Win32_Graphics_Imaging", "Win32_System_Com", "Foundation_Numerics"], optional = true }
|
|
|
|
[target.'cfg(target_os = "macos")'.dependencies]
|
|
cocoa = "0.25"
|
|
|
|
[build-dependencies]
|
|
gl_generator = { version = "0.14", optional = true }
|
|
|
|
[features]
|
|
default = []
|
|
rtsp-server = ["gst-rtsp-server", "gst-rtsp", "gst-sdp"]
|
|
rtsp-server-record = ["gst-rtsp-server", "gst-rtsp", "gio"]
|
|
pango-cairo = ["pango", "pangocairo", "cairo-rs"]
|
|
overlay-composition = ["pango", "pangocairo", "cairo-rs"]
|
|
gl = ["gst-gl", "gl_generator", "glutin"]
|
|
gst-gl-x11 = ["dep:gst-gl-x11"]
|
|
gst-gl-egl = ["dep:gst-gl-egl"]
|
|
allocators = ["gst-allocators", "memmap2", "memfd", "uds"]
|
|
|
|
[[bin]]
|
|
name = "appsink"
|
|
|
|
[[bin]]
|
|
name = "appsrc"
|
|
|
|
[[bin]]
|
|
name = "custom_events"
|
|
|
|
[[bin]]
|
|
name = "custom_meta"
|
|
|
|
[[bin]]
|
|
name = "decodebin"
|
|
|
|
[[bin]]
|
|
name = "debug_ringbuffer"
|
|
|
|
[[bin]]
|
|
name = "encodebin"
|
|
|
|
[[bin]]
|
|
name = "events"
|
|
|
|
[[bin]]
|
|
name = "iterator"
|
|
|
|
[[bin]]
|
|
name = "launch_glib_main"
|
|
|
|
[[bin]]
|
|
name = "launch"
|
|
|
|
[[bin]]
|
|
name = "transmux"
|
|
|
|
[[bin]]
|
|
name = "pad_probes"
|
|
|
|
[[bin]]
|
|
name = "play"
|
|
required-features = ["gst-play"]
|
|
|
|
[[bin]]
|
|
name = "playbin"
|
|
|
|
[[bin]]
|
|
name = "player"
|
|
required-features = ["gst-player"]
|
|
|
|
[[bin]]
|
|
name = "queries"
|
|
|
|
[[bin]]
|
|
name = "rtpfecclient"
|
|
|
|
[[bin]]
|
|
name = "rtpfecserver"
|
|
|
|
[[bin]]
|
|
name = "rtsp-server"
|
|
required-features = ["rtsp-server"]
|
|
|
|
[[bin]]
|
|
name = "rtsp-server-subclass"
|
|
required-features = ["rtsp-server"]
|
|
|
|
[[bin]]
|
|
name = "tagsetter"
|
|
|
|
[[bin]]
|
|
name = "toc"
|
|
|
|
[[bin]]
|
|
name = "futures"
|
|
|
|
[[bin]]
|
|
name = "glib-futures"
|
|
|
|
[[bin]]
|
|
name = "rtsp-server-record"
|
|
required-features = ["rtsp-server-record"]
|
|
|
|
[[bin]]
|
|
name = "discoverer"
|
|
|
|
[[bin]]
|
|
name = "pango-cairo"
|
|
required-features = ["pango-cairo"]
|
|
|
|
[[bin]]
|
|
name = "overlay-composition"
|
|
required-features = ["overlay-composition"]
|
|
|
|
[[bin]]
|
|
name = "overlay-composition-d2d"
|
|
required-features = ["windows"]
|
|
|
|
[[bin]]
|
|
name = "ges"
|
|
required-features = ["ges"]
|
|
|
|
[[bin]]
|
|
name = "glwindow"
|
|
required-features = ["gl"]
|
|
|
|
[[bin]]
|
|
name = "glfilter"
|
|
required-features = ["gl"]
|
|
|
|
[[bin]]
|
|
name = "subclass"
|
|
|
|
[[bin]]
|
|
name = "video_converter"
|
|
|
|
[[bin]]
|
|
name = "thumbnail"
|
|
required-features = ["image"]
|
|
|
|
[[bin]]
|
|
name = "fd_allocator"
|
|
required-features = ["allocators"]
|
|
|
|
[[bin]]
|
|
name = "cairo_compositor"
|
|
required-features = ["cairo-rs", "gst-video/v1_18"]
|
|
|
|
[[bin]]
|
|
name = "d3d11videosink"
|
|
required-features = ["windows"]
|