Rafał Dzięgiel
8fc64eaf73
sink: Automatically draw black when going to NULL state
...
Remove all workarounds including ignore_textures prop and draw black functions and handle that automatically in sink when going into NULL state.
2021-06-02 20:56:50 +02:00
Rafał Dzięgiel
f08ffad178
Initial MPRIS support
...
Implement a working MPRIS DBus connection with a separate API to control it. Right now only player playback state is reflected and Play/Pause/PlayPause calls work.
2021-05-24 15:33:15 +02:00
Rafał Dzięgiel
5ea22450c0
Use custom getUriProtocol function
...
Gst.Uri.get_protocol function is very simple. It just splits string by ":" and return the first part. We can do the same in JS and by doing that we do not have to initialize GStreamer just to get this function.
2021-05-13 21:24:28 +02:00
Rafostar
970b1487ac
Restore manual play call
...
Autoplay was causing some racy conditions when loaded with subtitle uri. Make it play after uri loaded signal, but still prevent going from stopped to play 2nd time.
2021-05-04 18:46:22 +02:00
Rafał Dzięgiel
a8bb6c40f4
Add more WebSocket API actions
2021-04-28 12:40:27 +02:00
Rafał Dzięgiel
4133557086
Do not send or apply undefined args over WebSocket
2021-04-28 11:50:14 +02:00
Rafał Dzięgiel
fd2de8b9b6
Add repeat mode options to playlist #52
2021-04-27 14:50:54 +02:00
Rafał Dzięgiel
997e47b93c
API: let client decide what to do on EOS #52
2021-04-27 09:24:13 +02:00
Rafał Dzięgiel
ec1d4619a7
API: make "state" into a property
2021-04-26 22:30:01 +02:00
Rafał Dzięgiel
e4335721be
Simplify auto-fullscreen logic
2021-04-26 17:51:20 +02:00
Rafał Dzięgiel
a8aca7b3c0
API: make it autoplay on the same context invoke
2021-04-26 14:47:42 +02:00
Rafał Dzięgiel
c6e8824e3b
API: add toggle_play method
2021-04-26 14:21:33 +02:00
Rafostar
e92ad68220
Print a warning when plugin rank cannot be changed
2021-04-25 22:00:00 +02:00
Rafostar
a98ca53dfb
Use Gio.SimpleAction as only keypress handler
2021-04-25 20:19:44 +02:00
Rafał Dzięgiel
32995fc6a6
Sort chapters arr when switching to prev/next one
...
TOC representation obtained for some video files might be out of order. Sort them when switching between chapers, otherwise "next" chapter might not be the nearest one.
2021-04-22 15:48:16 +02:00
Rafał Dzięgiel
6b5240ddbc
Add missing return value
2021-04-22 15:35:16 +02:00
Rafał Dzięgiel
46ef6bcd1d
Use "const" for chapters keys
...
Array is reversed but variable holding it is not replaced in this function, so "const" can be used here
2021-04-22 15:28:19 +02:00
Rafał Dzięgiel
bd13a3c15a
Use Shift+Left/Right to switch video chapters
2021-04-22 14:40:21 +02:00
Rafał Dzięgiel
c9b2f25192
Act on key press, not release
2021-04-22 14:13:53 +02:00
Rafał Dzięgiel
6f39b3939a
Do not get ancestor on key release if unneeded
2021-04-21 18:14:13 +02:00
Rafał Dzięgiel
ee78ffb1e4
Fix seeks when window tiling with Super key
...
Super key is consumed by shell and never reaches app key press detection. Use that to fix seeking when tiling window by ignoring all key releases that did not have a key press beforehand.
2021-04-21 17:04:09 +02:00
Rafał Dzięgiel
bfbbc517d5
Small cleanup
2021-04-21 16:59:06 +02:00
Rafał Dzięgiel
deb273179f
Add append_playlist function
2021-04-21 14:55:20 +02:00
Rafał Dzięgiel
f0ea7ae798
Remove set_seek_mode check
...
We now use a custom GstPlayer fork that has it added
2021-04-18 15:28:55 +02:00
Rafał Dzięgiel
380236b8ba
Cleanup: do not extend player class twice
...
We only use the base class once, no need to have it separately then. Merge into single file.
2021-04-18 15:25:02 +02:00
Rafał Dzięgiel
9799783ee5
Use Gst.(M)SECOND constants instead of numbers
...
It makes code easier to read
2021-04-17 13:08:12 +02:00
Rafał Dzięgiel
3a998fb91e
YT: auto select best matching resolution for used monitor
2021-04-16 09:53:21 +02:00
Rafał Dzięgiel
28c1daf709
Save and offer resume only for local files
...
We do not know if the online URI still leads to the same file as before (or if different one leads to previous). Additionally we would also need to check if media is seekable. Disable for now to avoid problems.
2021-04-12 22:29:20 +02:00
Rafał Dzięgiel
aa49d25df5
Stop pipeline before replacing playlist
2021-04-12 19:28:12 +02:00
Rafostar
85804ea297
Move YT related functions from player to youtube script
2021-04-11 15:35:41 +02:00
Rafostar
7cf86e92eb
YT: resolve redirects on the Clapper side
...
Instead of providing URIs directly to GStreamer, follow redirects and provide that final URI. With this change souphttpsrc will not have to go through redirects from the beginning for each video segment.
2021-04-11 14:46:08 +02:00
Rafał Dzięgiel
8d7fb761f7
Always reset auto fullscreen boolean value
...
Otherwise we would keep checking the settings with each playlist file and accidentally entered fullscreen when that setting value was changed in middle of playback.
2021-04-09 19:58:33 +02:00
Rafał Dzięgiel
aec2166c11
Only auto fullscreen with new playlist
...
This fixes a bug when player would enter fullscreen when changing playlist item
2021-04-09 19:34:17 +02:00
Rafał Dzięgiel
c21b214477
Tweak how auto fullscreen option works
...
When auto fullscreen is enabled, enter fullscreen on each media load
unless player is in floating mode in which probably user wants it to remain.
2021-04-09 19:11:34 +02:00
Rafał Dzięgiel
d9939a94c2
Fix some error messages not being displayed
2021-04-09 18:49:44 +02:00
Rafał Dzięgiel
a39c67e5e7
Check if local subtitle file exists before loading it
...
Otherwise GStreamer will error out and playback will stop. Non-existing subtitle file is common on Flatpak when user tries to open/drop a file from a folder that container does not have access to.
2021-04-09 10:55:06 +02:00
Rafał Dzięgiel
b15b94fc90
Convenient ways of opening external subtitles
...
Play video with external subtiles by:
* selecting and opening both video+subs from file chooser/manager
* dropping subtitles file on player window
* opening subtiles from file chooser/manager while video plays
* send their file path/uri to player via WebSocket message
2021-04-07 16:33:21 +02:00
Rafał Dzięgiel
7f69bee11c
Move all file operations code to single file
2021-04-01 21:58:50 +02:00
Rafał Dzięgiel
e89b3599c9
Remove "escape" key handler
...
It was conflicting with GTK build-in escape key functionality for closing popovers
2021-03-19 10:29:44 +01:00
Rafał Dzięgiel
c89d488c30
Prefetch YouTube video info on hover
...
Speed up loading of YouTube videos by downloading and parsing their info before video is dropped into player.
2021-03-12 13:05:58 +01:00
Rafał Dzięgiel
4375077dbc
Decode custom video title from info
...
The values in JSON info are URI encoded with "+" signs, add custom decode function that decodes them.
2021-03-11 18:49:08 +01:00
Rafał Dzięgiel
fceb8ff70a
YouTube support. Closes #46
2021-03-11 17:34:54 +01:00
Rafał Dzięgiel
86d365872a
API: operate on cubic volume scale
...
Instead converting volume inside GJS, simplify things by making API operate on cubic volume scale.
2021-02-24 08:42:27 +01:00
Rafał Dzięgiel
a309ef6099
Make remote app minimize, maximize and close buttons affect Clapper
2021-02-23 11:56:02 +01:00
Rafał Dzięgiel
6950cf1bbb
Do not import GstClapper for remote app
...
No need to import and initialize whole GStreamer for web application if the only thing needed there is a single enum.
2021-02-22 16:34:08 +01:00
Rafał Dzięgiel
834a690903
Tweak overlay revealers show/hide logic
2021-02-18 17:13:38 +01:00
Rafał Dzięgiel
12591e106f
Move event controllers to widget and add them to top revealer
2021-02-17 16:31:37 +01:00
Rafał Dzięgiel
e79ce58b26
Rename "fullscreenMode" boolean to "isFullscreenMode"
2021-02-17 12:28:45 +01:00
Rafał Dzięgiel
887f189b60
Save window size only when windowed and not in floating mode
2021-02-17 12:20:44 +01:00
Rafał Dzięgiel
91703cf7cf
Hide both cursor and overlays with a single timer
...
Simplify hide controls logic code by using single timer to hide both cursor and video overlays at once
2021-02-14 14:07:38 +01:00