mirror of
https://gitlab.freedesktop.org/dabrain34/GstPipelineStudio.git
synced 2024-09-21 19:20:04 +00:00
pipeline: rename to player
To avoid confusion with GStreamer pipeline and GPS pipeline, renamed it player.
This commit is contained in:
parent
59ecbb41a5
commit
25d856a360
6 changed files with 41 additions and 36 deletions
1
Cargo.lock
generated
1
Cargo.lock
generated
|
@ -505,6 +505,7 @@ name = "gst_pipeline_studio"
|
|||
version = "0.1.0"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"fragile",
|
||||
"futures-channel",
|
||||
"futures-executor",
|
||||
"gettext-rs",
|
||||
|
|
|
@ -19,6 +19,7 @@ serde = "1.0"
|
|||
serde_any = "0.5"
|
||||
simplelog = "0.11.2"
|
||||
futures-channel = "0.3"
|
||||
fragile = "1.0.0"
|
||||
|
||||
[dev-dependencies]
|
||||
futures-executor = "0.3"
|
||||
|
|
34
src/app.rs
34
src/app.rs
|
@ -50,7 +50,7 @@ pub struct GPSAppInner {
|
|||
pub window: gtk::ApplicationWindow,
|
||||
pub graphview: RefCell<GM::GraphView>,
|
||||
pub builder: Builder,
|
||||
pub pipeline: RefCell<GPS::Pipeline>,
|
||||
pub player: RefCell<GPS::Player>,
|
||||
pub plugin_list_initialized: OnceCell<bool>,
|
||||
pub signal_handlers: RefCell<HashMap<String, SignalHandlerId>>,
|
||||
}
|
||||
|
@ -106,17 +106,17 @@ impl GPSApp {
|
|||
window.set_application(Some(application));
|
||||
window.set_title(Some("GStreamer Pipeline Studio"));
|
||||
|
||||
let pipeline = GPS::Pipeline::new().expect("Unable to initialize GStreamer subsystem");
|
||||
let player = GPS::Player::new().expect("Unable to initialize GStreamer subsystem");
|
||||
let app = GPSApp(Rc::new(GPSAppInner {
|
||||
window,
|
||||
graphview: RefCell::new(GM::GraphView::new()),
|
||||
builder,
|
||||
pipeline: RefCell::new(pipeline),
|
||||
player: RefCell::new(player),
|
||||
plugin_list_initialized: OnceCell::new(),
|
||||
signal_handlers: RefCell::new(HashMap::new()),
|
||||
}));
|
||||
let app_weak = app.downgrade();
|
||||
app.pipeline.borrow().set_app(app_weak);
|
||||
app.player.borrow().set_app(app_weak);
|
||||
app.graphview.borrow_mut().set_id(0);
|
||||
|
||||
let settings = Settings::load_settings();
|
||||
|
@ -189,10 +189,10 @@ impl GPSApp {
|
|||
.expect("Couldn't get status_bar");
|
||||
let slider_update_signal_id = slider.connect_value_changed(move |slider| {
|
||||
let app = upgrade_weak!(app_weak);
|
||||
let pipeline = app.pipeline.borrow();
|
||||
let player = app.player.borrow();
|
||||
let value = slider.value() as u64;
|
||||
GPS_TRACE!("Seeking to {} s", value);
|
||||
if pipeline.set_position(value).is_err() {
|
||||
if player.set_position(value).is_err() {
|
||||
GPS_ERROR!("Seeking to {} failed", value);
|
||||
}
|
||||
});
|
||||
|
@ -200,7 +200,7 @@ impl GPSApp {
|
|||
let timeout_id =
|
||||
glib::timeout_add_local(std::time::Duration::from_millis(500), move || {
|
||||
let app = upgrade_weak!(app_weak, glib::Continue(false));
|
||||
let pipeline = app.pipeline.borrow();
|
||||
let player = app.player.borrow();
|
||||
|
||||
let label: gtk::Label = app
|
||||
.builder
|
||||
|
@ -210,15 +210,15 @@ impl GPSApp {
|
|||
.builder
|
||||
.object("scale-position")
|
||||
.expect("Couldn't get status_bar");
|
||||
let position = pipeline.position();
|
||||
let duration = pipeline.duration();
|
||||
let position = player.position();
|
||||
let duration = player.duration();
|
||||
slider.set_range(0.0, duration as f64 / 1000_f64);
|
||||
slider.block_signal(&slider_update_signal_id);
|
||||
slider.set_value(position as f64 / 1000_f64);
|
||||
slider.unblock_signal(&slider_update_signal_id);
|
||||
|
||||
// Query the current playing position from the underlying pipeline.
|
||||
let position_desc = pipeline.position_description();
|
||||
// Query the current playing position from the underlying player.
|
||||
let position_desc = player.position_description();
|
||||
// Display the playing position in the gui.
|
||||
label.set_text(&position_desc);
|
||||
// Tell the callback to continue calling this closure.
|
||||
|
@ -538,7 +538,7 @@ impl GPSApp {
|
|||
let app = upgrade_weak!(app_weak);
|
||||
let graph_view = app.graphview.borrow();
|
||||
let _ = app
|
||||
.pipeline
|
||||
.player
|
||||
.borrow()
|
||||
.start_pipeline(&graph_view, GPS::PipelineState::Playing);
|
||||
});
|
||||
|
@ -548,7 +548,7 @@ impl GPSApp {
|
|||
let app = upgrade_weak!(app_weak);
|
||||
let graph_view = app.graphview.borrow();
|
||||
let _ = app
|
||||
.pipeline
|
||||
.player
|
||||
.borrow()
|
||||
.start_pipeline(&graph_view, GPS::PipelineState::Paused);
|
||||
});
|
||||
|
@ -556,8 +556,8 @@ impl GPSApp {
|
|||
let app_weak = self.downgrade();
|
||||
self.connect_button_action("button-stop", move |_| {
|
||||
let app = upgrade_weak!(app_weak);
|
||||
let pipeline = app.pipeline.borrow();
|
||||
let _ = pipeline.set_state(GPS::PipelineState::Stopped);
|
||||
let player = app.player.borrow();
|
||||
let _ = player.set_state(GPS::PipelineState::Stopped);
|
||||
});
|
||||
|
||||
let app_weak = self.downgrade();
|
||||
|
@ -647,8 +647,8 @@ impl GPSApp {
|
|||
app.connect_app_menu_action("graph.check",
|
||||
move |_,_| {
|
||||
let app = upgrade_weak!(app_weak);
|
||||
let render_parse_launch = app.pipeline.borrow().render_gst_launch(&app.graphview.borrow());
|
||||
if app.pipeline.borrow().create_pipeline(&render_parse_launch).is_ok() {
|
||||
let render_parse_launch = app.player.borrow().render_gst_launch(&app.graphview.borrow());
|
||||
if app.player.borrow().create_pipeline(&render_parse_launch).is_ok() {
|
||||
GPSUI::message::display_message_dialog(&render_parse_launch,gtk::MessageType::Info, |_| {});
|
||||
} else {
|
||||
GPSUI::message::display_error_dialog(false, &format!("Unable to render:\n\n{}", render_parse_launch));
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
mod element;
|
||||
mod pad;
|
||||
mod pipeline;
|
||||
mod player;
|
||||
|
||||
pub use element::ElementInfo;
|
||||
pub use pad::PadInfo;
|
||||
pub use pipeline::{Pipeline, PipelineState};
|
||||
pub use player::{PipelineState, Player};
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
// pipeline.rs
|
||||
// player.rs
|
||||
//
|
||||
// Copyright 2021 Stéphane Cerveau <scerveau@collabora.com>
|
||||
//
|
||||
|
@ -49,39 +49,41 @@ impl fmt::Display for PipelineState {
|
|||
}
|
||||
|
||||
#[derive(Debug, Clone)]
|
||||
pub struct Pipeline(Rc<PipelineInner>);
|
||||
pub struct Player(Rc<PlayerInner>);
|
||||
|
||||
// Deref into the contained struct to make usage a bit more ergonomic
|
||||
impl ops::Deref for Pipeline {
|
||||
type Target = PipelineInner;
|
||||
impl ops::Deref for Player {
|
||||
type Target = PlayerInner;
|
||||
|
||||
fn deref(&self) -> &PipelineInner {
|
||||
fn deref(&self) -> &PlayerInner {
|
||||
&*self.0
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone)]
|
||||
pub struct PipelineWeak(Weak<PipelineInner>);
|
||||
pub struct PlayerWeak(Weak<PlayerInner>);
|
||||
|
||||
impl PipelineWeak {
|
||||
pub fn upgrade(&self) -> Option<Pipeline> {
|
||||
self.0.upgrade().map(Pipeline)
|
||||
impl PlayerWeak {
|
||||
pub fn upgrade(&self) -> Option<Player> {
|
||||
self.0.upgrade().map(Player)
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Debug)]
|
||||
pub struct PipelineInner {
|
||||
pub struct PlayerInner {
|
||||
app: RefCell<Option<GPSApp>>,
|
||||
pipeline: RefCell<Option<gst::Pipeline>>,
|
||||
current_state: Cell<PipelineState>,
|
||||
n_video_sink: Cell<usize>,
|
||||
}
|
||||
|
||||
impl Pipeline {
|
||||
impl Player {
|
||||
pub fn new() -> anyhow::Result<Self> {
|
||||
let pipeline = Pipeline(Rc::new(PipelineInner {
|
||||
let pipeline = Player(Rc::new(PlayerInner {
|
||||
app: RefCell::new(None),
|
||||
pipeline: RefCell::new(None),
|
||||
current_state: Cell::new(PipelineState::Stopped),
|
||||
n_video_sink: Cell::new(0),
|
||||
}));
|
||||
#[cfg(feature = "gtk4-plugin")]
|
||||
{
|
||||
|
@ -120,6 +122,7 @@ impl Pipeline {
|
|||
"Unable to create a pipeline from the given parse launch {"
|
||||
));
|
||||
}
|
||||
|
||||
Ok(pipeline.unwrap())
|
||||
}
|
||||
|
||||
|
@ -185,7 +188,7 @@ impl Pipeline {
|
|||
.borrow()
|
||||
.as_ref()
|
||||
.expect("App should be available")
|
||||
.set_app_state(Pipeline::state_to_app_state(new_state));
|
||||
.set_app_state(Player::state_to_app_state(new_state));
|
||||
}
|
||||
Ok(new_state)
|
||||
}
|
||||
|
@ -243,8 +246,8 @@ impl Pipeline {
|
|||
}
|
||||
}
|
||||
|
||||
pub fn downgrade(&self) -> PipelineWeak {
|
||||
PipelineWeak(Rc::downgrade(&self.0))
|
||||
pub fn downgrade(&self) -> PlayerWeak {
|
||||
PlayerWeak(Rc::downgrade(&self.0))
|
||||
}
|
||||
|
||||
fn on_pipeline_message(&self, msg: &gst::MessageRef) {
|
||||
|
@ -335,7 +338,7 @@ impl Pipeline {
|
|||
}
|
||||
}
|
||||
|
||||
impl Drop for PipelineInner {
|
||||
impl Drop for PlayerInner {
|
||||
fn drop(&mut self) {
|
||||
// TODO: If a recording is currently running we would like to finish that first
|
||||
// before quitting the pipeline and shutting down the pipeline.
|
|
@ -17,7 +17,7 @@ run_command(
|
|||
)
|
||||
|
||||
rust_sources = files(
|
||||
'gps/pipeline.rs',
|
||||
'gps/player.rs',
|
||||
'gps/element.rs',
|
||||
'gps/pad.rs',
|
||||
'gps/mod.rs',
|
||||
|
|
Loading…
Reference in a new issue