Split GStreamer backend into separate package

This commit is contained in:
Avery 2023-11-09 13:44:17 -05:00
parent e211ad0194
commit 966738a02a
10 changed files with 65 additions and 33 deletions

14
Cargo.lock generated
View File

@ -291,9 +291,6 @@ dependencies = [
"env_logger",
"fluent-templates",
"grass",
"gst-plugin-gtk4",
"gstreamer",
"gstreamer-play",
"jellyfin_api",
"libadwaita",
"regex",
@ -309,6 +306,7 @@ dependencies = [
"tracing",
"unic-langid",
"uuid",
"video_player_gst",
"video_player_mpv",
"whoami",
]
@ -2769,6 +2767,16 @@ version = "0.9.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
[[package]]
name = "video_player_gst"
version = "0.1.0"
dependencies = [
"gst-plugin-gtk4",
"gstreamer",
"gstreamer-play",
"relm4",
]
[[package]]
name = "video_player_mpv"
version = "0.1.0"

View File

@ -1,5 +1,12 @@
[workspace]
resolver = "2"
members = ["delfin", "video_player_mpv/sys", "video_player_mpv"]
members = [
"delfin",
"video_player_mpv/sys",
"video_player_mpv",
"video_player_gst",
]
exclude = ["video_player_mpv/sys/gir"]
default-members = ["delfin"]
[workspace.dependencies]
relm4 = { version = "0.7.0-beta.1", features = ["gnome_44", "libadwaita"] }

View File

@ -15,32 +15,29 @@ dirs = "5.0.1"
env_logger = "0.10.0"
fluent-templates = "0.8.0"
grass = { version = "0.13.1", default-features = false }
gst = { package = "gstreamer", version = "0.21.0" }
gstgtk4 = { package = "gst-plugin-gtk4", version = "0.11.0" }
gstplay = { package = "gstreamer-play", version = "0.21.0" }
jellyfin_api = "10.8.10-2"
regex = "1.9.5"
relm4 = { version = "0.7.0-beta.1", features = ["gnome_44", "libadwaita"] }
relm4 = { workspace = true }
relm4-icons = { version = "0.7.0-alpha.2", features = [
"check-round-outline",
"video-clip-multiple-filled",
"play-multiple-filled",
"tag-multiple-filled",
"home-filled",
"closed-captioning",
"music-note-single",
"star-large",
"play-filled",
"pause-filled",
"fast-forward-filled",
"rewind-filled",
"skip-forward-10",
"skip-forward-30",
"skip-backwards-10",
"skip-backwards-30",
"left",
"right",
"refresh",
"check-round-outline",
"video-clip-multiple-filled",
"play-multiple-filled",
"tag-multiple-filled",
"home-filled",
"closed-captioning",
"music-note-single",
"star-large",
"play-filled",
"pause-filled",
"fast-forward-filled",
"rewind-filled",
"skip-forward-10",
"skip-forward-30",
"skip-backwards-10",
"skip-backwards-30",
"left",
"right",
"refresh",
] }
reqwest = { version = "0.11.20", features = ["json"] }
serde = { version = "1.0.188", features = ["derive"] }
@ -52,6 +49,7 @@ toml = "0.8.0"
tracing = { version = "0.1.37", features = ["log"] }
unic-langid = { version = "0.9.1", features = ["macros", "serde"] }
uuid = { version = "1.4.1", features = ["v4"] }
video_player_gst = { version = "0.1.0", path = "../video_player_gst" }
video_player_mpv = { version = "0.1.0", path = "../video_player_mpv" }
whoami = { version = "1.4.1", default-features = false }

View File

@ -1,11 +1,11 @@
use delfin::app::{App, APP_BROKER};
use relm4::RelmApp;
use video_player_gst::init_gst;
fn main() {
env_logger::init();
gst::init().expect("Error initializing GStreamer");
gstgtk4::plugin_register_static().expect("Error registering GST GTK4 plugin");
init_gst();
let app = if cfg!(debug_assertions) {
RelmApp::new("cafe.avery.Delfin.Devel")

View File

@ -1,5 +1,4 @@
use gst::prelude::Cast;
use gtk::prelude::ListModelExt;
use gtk::prelude::{Cast, ListModelExt};
use relm4::{adw, gtk};
pub const MAIN_APP_WINDOW_NAME: &str = "main_app_window";

View File

@ -1,8 +1,9 @@
use gst::{glib::SignalHandlerId, prelude::Cast};
use gstplay::{traits::PlayStreamInfoExt, PlayAudioInfo, PlaySubtitleInfo};
use uuid::Uuid;
use video_player_gst::{gst, gstplay, GstVideoPlayer};
use crate::{tr, video_player::gst_play_widget::GstVideoPlayer};
use crate::tr;
use super::{AudioTrack, PlayerStateChangedCallback, SubtitleTrack, VideoPlayerBackend};

View File

@ -1,6 +1,5 @@
pub mod backends;
mod controls;
mod gst_play_widget;
mod next_up;
mod session;
mod skip_intro;

View File

@ -0,0 +1,12 @@
[package]
name = "video_player_gst"
version = "0.1.0"
edition = "2021"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
relm4 = { workspace = true }
gst = { package = "gstreamer", version = "0.21.0" }
gstgtk4 = { package = "gst-plugin-gtk4", version = "0.11.0" }
gstplay = { package = "gstreamer-play", version = "0.21.0" }

View File

@ -10,6 +10,14 @@ use gtk::glib;
use gtk::subclass::prelude::*;
use relm4::gtk;
pub use gst;
pub use gstplay;
pub fn init_gst() {
gst::init().expect("Error initializing GStreamer");
gstgtk4::plugin_register_static().expect("Error registering GST GTK4 plugin");
}
glib::wrapper! {
pub struct GstVideoPlayer(ObjectSubclass<imp::GstVideoPlayer>)
@extends gtk::Widget,