Commit Graph

19 Commits

Author SHA1 Message Date
Jordan Petridis
1f8a8b6e14 PlayerTimes: create wrapper struct of gst::ClockTime.
Now on_duration_changed requires a `Duration` type and
on_position_updated requires a `Position` type as oppose to
both accepting `ClockTime` as their argument.
2018-06-23 13:12:36 +00:00
Jordan Petridis
c31bd99d25 PlayerWidget: Group the button connect_clicked methods. 2018-06-23 13:12:36 +00:00
Jordan Petridis
d117b0bcc7 PlayerWidget: Move on_duration_change and on_postion_updated methods.
Previously they depended on the player/pipeline to get the ClockTime
values, and only `PlayerWidget` had access to the `gst_player::Player`
object.

Now that it uses the gst_player methods instead of the raw pipeline
methods to get the ClockTime values it no longer needs access to the whole
PlayerWidget object.
2018-06-23 13:12:36 +00:00
Jordan Petridis
8fa5b871ad PlayerWidget: Refactor the position_changed/updated callback.
It now uses gst_player::Player::connect_position_updated callback
to send, cross threads, the `position` value to the gtk main loop
which then updates the widget.
2018-06-23 13:12:35 +00:00
Jordan Petridis
74460d938e PlayerWidget::seek handle the case where the offset might be none. 2018-06-23 13:12:35 +00:00
Jordan Petridis
fff6f959de PlayerWigdet: Refactor the way the duration label is updated.
This now connect's directly to gst_player::Player::connect_duration_changed
method.

The method then sends a cross-thread msg to the Action channel in the main loop that
then updates the widget.
2018-06-23 13:12:34 +00:00
Jordan Petridis
135323a6ee PlayerWiget: refactor the seekbar connect signal. 2018-06-23 13:12:34 +00:00
Jordan Petridis
70ab0824f4 PlayerWidget: Log the gst warnings. 2018-06-23 13:12:33 +00:00
Jordan Petridis
1d53f0ac62 PlayerWidget: Remove unused vars an Enum. 2018-06-23 13:12:33 +00:00
Jordan Petridis
872d7d6c58 PlayerWidget: Connect the fast-forward and rewind buttons, sort of.
There appears to be a bug where it seeks 17 seconds instead of 10.
2018-06-23 13:12:32 +00:00
Jordan Petridis
27266b30df PlayerWidget: Connect to the errors callback. 2018-06-23 13:12:32 +00:00
Jordan Petridis
f14f2f255c PlayerWidget: Refactor the timers callbacks.
Should use the gst_player::Player callbacks instead but they require
the Send Trait which means we would need to use SendCell and that's
not something I am going to deal with right now.
2018-06-23 13:12:31 +00:00
Jordan Petridis
50c70e06b2 PlayerWidget: Set a custom config for the gst Player. 2018-06-23 13:12:31 +00:00
Jordan Petridis
b20ea22eaf PlayerWidget: Wire the PlayerTimes labels and scale.
Adapted from gstreamer basic-tutorial-5.
https://gstreamer.freedesktop.org/documentation/tutorials/basic/toolkit-integration.html
2018-06-23 13:12:30 +00:00
Jordan Petridis
d671c07afb PlayerWidget: Wire the play and pause buttons and add style classes to the Info Labels.
This also includes the yak shaving of a ::new and ::inti methods.
2018-06-23 13:12:30 +00:00
Jordan Petridis
127088edd2 cargo fmt 2018-06-23 13:12:29 +00:00
Jordan Petridis
aee3fcf7bf PlayerWidget: Wire the widget to the GUI.
This commit also removes the majority of the playback widget,
though most of it's code will make it to the PlayerWidget once
it starts to get wired to the gtreamer_plaer::Player.
2018-06-23 13:12:28 +00:00
Jordan Petridis
7ad16e5467 PlayerWidget: Intial draft of the the PlayerExt trait. 2018-06-23 13:12:28 +00:00
Jordan Petridis
a278bed302 h-gtk: Bind the new player widget to code. 2018-06-23 13:12:27 +00:00