diff --git a/Cargo.lock b/Cargo.lock index 9acb2054..a944a2a6 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -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" diff --git a/Cargo.toml b/Cargo.toml index a70def55..de2ba9c3 100644 --- a/Cargo.toml +++ b/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" } diff --git a/meson.build b/meson.build index 47924977..78fe6f91 100644 --- a/meson.build +++ b/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') diff --git a/src/components/media/video_player_renderer.rs b/src/components/media/video_player_renderer.rs index 2c722b1b..46485697 100644 --- a/src/components/media/video_player_renderer.rs +++ b/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, + sink: OnceCell, /// The [`gdk::Paintable`] where the video is rendered. #[property(get = Self::paintable)] paintable: PhantomData, @@ -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. diff --git a/src/main.rs b/src/main.rs index 1eab42dd..b87af242 100644 --- a/src/main.rs +++ b/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);