mirror of
https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs.git
synced 2025-01-06 09:18:43 +00:00
8e675de690
And sync with `README.md` in order to make the environment variables `GST_GTK4_WINDOW` and `GST_GTK4_WINDOW_FULLSCREEN` discoverable - and because it's generally useful. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1555>
76 lines
2.6 KiB
Markdown
76 lines
2.6 KiB
Markdown
# GTK 4 Sink & Paintable
|
|
|
|
GTK 4 provides `gtk::Video` & `gtk::Picture` for rendering media such as videos. As the default `gtk::Video` widget doesn't
|
|
offer the possibility to use a custom `gst::Pipeline`. The plugin provides a `gst_video::VideoSink` along with a `gdk::Paintable` that's capable of rendering the sink's frames.
|
|
|
|
The sink can generate GL Textures if the system is capable of it, but it needs
|
|
to be compiled with either `wayland`, `x11glx` or `x11egl` cargo features. On
|
|
Windows and macOS this is enabled by default.
|
|
|
|
Additionally, the sink can render DMABufs directly on Linux if GTK 4.14 or
|
|
newer is used. For this the `dmabuf` feature needs to be enabled.
|
|
|
|
Depending on the GTK version that is used and should be supported as minimum,
|
|
new features or more efficient processing can be opted in with the `gtk_v4_10`,
|
|
`gtk_v4_12` and `gtk_v4_14` features. The minimum GTK version required by the
|
|
sink is GTK 4.4 on Linux without GL support, and 4.6 on Windows and macOS, and
|
|
on Linux with GL support.
|
|
|
|
The sink will provides a simple test window when launched via `gst-launch-1.0`
|
|
or `gst-play-1.0` or if the environment variable `GST_GTK4_WINDOW=1` is set.
|
|
Setting `GST_GTK4_WINDOW_FULLSCREEN=1` will make the window launch in fullscreen
|
|
mode.
|
|
|
|
# Flatpak Integration
|
|
|
|
To build and include the plugin in a Flatpak manifest, you can add the following snippet to your json manifest:
|
|
|
|
```json
|
|
{
|
|
"sdk-extensions": [
|
|
"org.freedesktop.Sdk.Extension.rust-stable"
|
|
],
|
|
"build-options": {
|
|
"env": {
|
|
"CARGO_HOME": "/run/build/cargo-c/cargo"
|
|
},
|
|
"append-path": "/usr/lib/sdk/rust-stable/bin",
|
|
},
|
|
"modules": [
|
|
{
|
|
"name": "cargo-c",
|
|
"buildsystem": "simple",
|
|
"build-commands": [
|
|
"cargo install cargo-c --root /app"
|
|
],
|
|
"build-options": {
|
|
"build-args": [
|
|
"--share=network"
|
|
]
|
|
},
|
|
"cleanup": [
|
|
"*"
|
|
]
|
|
},
|
|
{
|
|
"name": "gst-plugins-rs",
|
|
"buildsystem": "simple",
|
|
"sources": [
|
|
{
|
|
"type": "git",
|
|
"url": "https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs",
|
|
"branch": "0.12"
|
|
}
|
|
],
|
|
"build-options": {
|
|
"build-args": [
|
|
"--share=network"
|
|
]
|
|
},
|
|
"build-commands": [
|
|
"cargo cinstall -p gst-plugin-gtk4 --prefix=/app"
|
|
]
|
|
}
|
|
]
|
|
}
|
|
```
|