Browse Source

video-player: Use gstgtk4 library installed on system

We do not need to compile it as part of our binary since it is available
in the GNOME platform runtime.
pipelines/786320
Kévin Commaille 1 year ago
parent
commit
ea1a12763b
No known key found for this signature in database
GPG Key ID: C971D9DBC9D678D
  1. 84
      Cargo.lock
  2. 1
      Cargo.toml
  3. 1
      meson.build
  4. 10
      src/components/media/video_player_renderer.rs
  5. 1
      src/main.rs

84
Cargo.lock generated

@ -1362,7 +1362,6 @@ dependencies = [
"geo-uri",
"gettext-rs",
"glycin",
"gst-plugin-gtk4",
"gstreamer",
"gstreamer-app",
"gstreamer-base",
@ -1608,31 +1607,6 @@ dependencies = [
"system-deps 7.0.3",
]
[[package]]
name = "gdk4-win32"
version = "0.9.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e54beb3e19bff7ccc05153e043bf0eea9cf76c07a3387fb0151bfa0fbfce9df0"
dependencies = [
"gdk4",
"gdk4-win32-sys",
"gio",
"glib",
"libc",
]
[[package]]
name = "gdk4-win32-sys"
version = "0.9.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d554341f26b2f6191aaf2ecb4d0089f3696a40cadb2dba75dad03e48a6dc0eb9"
dependencies = [
"gdk4-sys",
"glib-sys",
"libc",
"system-deps 7.0.3",
]
[[package]]
name = "generic-array"
version = "0.14.7"
@ -1933,34 +1907,6 @@ dependencies = [
"system-deps 7.0.3",
]
[[package]]
name = "gst-plugin-gtk4"
version = "0.13.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2cadbc46e0e79cc43b290df59262a17088ca0c6c3a4fbede5c179bf5b6994f42"
dependencies = [
"async-channel",
"gdk4-win32",
"gst-plugin-version-helper",
"gstreamer",
"gstreamer-base",
"gstreamer-gl",
"gstreamer-video",
"gtk4",
"once_cell",
"windows-sys 0.52.0",
]
[[package]]
name = "gst-plugin-version-helper"
version = "0.8.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4e5e874f1660252fd2ec81c602066df3633b3a6fcbe2b196f7f93c27cf069b2a"
dependencies = [
"chrono",
"toml_edit",
]
[[package]]
name = "gstreamer"
version = "0.23.4"
@ -2071,36 +2017,6 @@ dependencies = [
"system-deps 7.0.3",
]
[[package]]
name = "gstreamer-gl"
version = "0.23.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f56e25e3a848295df790f3628792cc82464a744d0b3ac5c202a6f73e1cedfcaf"
dependencies = [
"glib",
"gstreamer",
"gstreamer-base",
"gstreamer-gl-sys",
"gstreamer-video",
"libc",
"once_cell",
]
[[package]]
name = "gstreamer-gl-sys"
version = "0.23.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "497ad4193008c519f0516299281480e77a2c3c7d7f13e5dadca82d406170790a"
dependencies = [
"glib-sys",
"gobject-sys",
"gstreamer-base-sys",
"gstreamer-sys",
"gstreamer-video-sys",
"libc",
"system-deps 7.0.3",
]
[[package]]
name = "gstreamer-pbutils"
version = "0.23.4"

1
Cargo.toml

@ -57,7 +57,6 @@ glycin = { version = "2.0.1", default-features = false, features = ["tokio", "gd
gst = { version = "0.23", package = "gstreamer" }
gst_app = { version = "0.23", package = "gstreamer-app" }
gst_base = { version = "0.23", package = "gstreamer-base" }
gst_gtk = { version = "0.13", package = "gst-plugin-gtk4" }
gst_pbutils = { version = "0.23", package = "gstreamer-pbutils" }
gst_play = { version = "0.23", package = "gstreamer-play" }
gst_video = { version = "0.23", package = "gstreamer-video" }

1
meson.build

@ -29,6 +29,7 @@ dependency(
)
# Please keep these dependencies sorted.
dependency('gstgtk4', version: '>= 0.13.0')
dependency('gstreamer-1.0', version: '>= 1.20')
dependency('gstreamer-app-1.0', version: '>= 1.20')
dependency('gstreamer-base-1.0', version: '>= 1.20')

10
src/components/media/video_player_renderer.rs

@ -10,7 +10,7 @@ mod imp {
#[properties(wrapper_type = super::VideoPlayerRenderer)]
pub struct VideoPlayerRenderer {
/// The sink to use to display the video.
sink: OnceCell<gst_gtk::PaintableSink>,
sink: OnceCell<gst::Element>,
/// The [`gdk::Paintable`] where the video is rendered.
#[property(get = Self::paintable)]
paintable: PhantomData<gdk::Paintable>,
@ -34,8 +34,12 @@ mod imp {
impl VideoPlayerRenderer {
/// The sink to use to display the video.
fn sink(&self) -> &gst_gtk::PaintableSink {
self.sink.get_or_init(|| gst_gtk::PaintableSink::new(None))
fn sink(&self) -> &gst::Element {
self.sink.get_or_init(|| {
gst::ElementFactory::make("gtk4paintablesink")
.build()
.expect("gst-plugin-gtk4 should be available")
})
}
/// The [`gdk::Paintable`] where the video is rendered.

1
src/main.rs

@ -57,7 +57,6 @@ fn main() {
gtk::init().expect("Could not start GTK4");
gst::init().expect("Could not initialize gst");
gst_gtk::plugin_register_static().expect("Could not initialize gstreamer gtk plugins");
let res = gio::Resource::load(RESOURCES_FILE).expect("Could not load gresource file");
gio::resources_register(&res);

Loading…
Cancel
Save