Rafał Dzięgiel
9b53a3e387
api: Fix plugin feature unref
2021-08-24 20:52:18 +02:00
Rafał Dzięgiel
5874db45ea
api: Introduce custom gstreamer init function
...
Initializes GStreamer library and tweaks some of its defaults to our liking.
This also allows usage of GstClapper API alone without importing GStreamer on the implementation side.
It changes preferred hardware acceleration order (depending on plugins versions) into:
v4l2sl -> nv -> va -> vaapi -> v4l2
2021-08-24 14:15:29 +02:00
Rafostar
90844e49ad
API: Add video/audio decoder changed signals
2021-07-28 12:02:52 +02:00
Rafał Dzięgiel
e1845a212f
Merge pull request #87 from Rafostar/pipewire
...
Add PipeWire support
2021-06-20 15:46:03 +02:00
Rafostar
1c414ef36b
API: allow using PipeWire for audio output
...
Instead of using PulseAudio sink and making a round way through pipewire-pulse,
access and use PipeWire directly for audio output when user sets env var
GST_CLAPPER_USE_PIPEWIRE=1
2021-06-20 11:27:43 +02:00
Rafał Dzięgiel
bea3b1670d
API: Raise ignored duration changes to 250 milliseconds
...
We do not show milliseconds in GUI, so we should not try to handle stream gaps that short.
2021-06-16 11:07:50 +02:00
Rafał Dzięgiel
6f1a5626bc
API: get MPRIS with a lock
...
Otherwise it is not thread safe
2021-06-15 16:16:29 +02:00
Rafał Dzięgiel
0b7f31b7c2
API: Properly return a boolean instead of a number
2021-06-02 20:24:40 +02:00
Rafał Dzięgiel
7062af472b
API: Add function to get subtitle track title
2021-06-02 11:08:30 +02:00
Rafał Dzięgiel
1f4698448a
Detect used GStreamer plugin names
...
Allows seeing what plugins are used with GST_DEBUG=Clapper:4. This is also needed for yet to come functionality of setting elements props.
2021-06-01 21:57:14 +02:00
Rafostar
1f781716d7
Add env variable to display FPS
2021-05-30 11:14:51 +02:00
Rafostar
9f776e9ecb
mpris: Support changing volume
2021-05-26 15:13:30 +02:00
Rafał Dzięgiel
edb799bafa
API: Parse title from URI when no title in tags
2021-05-24 15:35:04 +02:00
Rafał Dzięgiel
f0475ee055
API: Support seeking by offset
2021-05-24 15:33:52 +02:00
Rafał Dzięgiel
68d7205ead
mpris: Support metadata url, title and length
2021-05-24 15:33:38 +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
Rafostar
2f5d6d60ed
API: add debug messages about dropped buffers
2021-05-06 14:34:08 +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
de65eee106
API: simplify playbin flags detect function
2021-04-27 12:28:59 +02:00
Rafał Dzięgiel
3238270c0d
Ignore duration changes below 1ms during playback
2021-04-27 10:43:13 +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
1da6b94efc
API: simplify EOS handling
...
Do not try to play smart with EOS by seeking to beginning. This leads to various errors or crashes. Just signal it and stop afterwards.
2021-04-26 20:40:44 +02:00
Rafał Dzięgiel
45d2702e01
API: fix missing drop of signals inhibit
2021-04-26 17:36:28 +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
Rafał Dzięgiel
adbcfecb5e
API: unset needs_info_update when stopped
2021-04-15 11:30:55 +02:00
Rafał Dzięgiel
ab32b2dbbc
API: emit media info updated signal after video info updates
...
This fixes problem with wrong video resolution reported in media info due to being emitted before values were updated.
2021-04-12 17:38:44 +02:00
Rafał Dzięgiel
eda80f314e
API: replace source-setup with element-setup callback
...
Otherwise user agent is only set for source elements and not for further pipeline elements (e.g. dashdemux => souphttpsrc)
2021-04-08 18:24:49 +02:00
Rafał Dzięgiel
30a7229b33
API: add media info updated signal
...
Emit media info updated signal only when media info is initially created and when number/format of tracks changes later. This is needed for GUI to detect resolution change (adaptive streaming) or when user adds external subtitles to current video.
2021-04-06 18:49:08 +02:00
Rafostar
4e85f6b749
API: set some common user agent
...
Some internet sites might prevent us from access unless some sort of a user agent is set
2021-03-07 21:37:01 +01:00
Rafał Dzięgiel
68bd65c225
API: snap at nearest keyframe when doing fast seek
...
GStreamer needs to perform a seek when changing playback rate. Snapping at next keyframe causes viewer to lose few seconds of video when changing playback speed (and ugly fast forward effect when dragging speed slider). Prevent all those issues by seeking to the nearest keyframe instead.
2021-02-24 11:41:40 +01:00
Rafał Dzięgiel
775ec8a780
API: fix volume functions descriptions
2021-02-24 10:44:26 +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
6130ffa6c0
API: limit max linear volume to 3.375 (150% in cubic)
...
Clapper UI does not support volume overamp higher than 150%. Anything higher can lead to audio distortion or damaging your audio equipment.
2021-02-23 13:27:42 +01:00
Rafał Dzięgiel
68faeca918
API: Disallow pause on very short streams (< 1 sec)
...
Fixes crash when trying to pause on DVD navigation
2021-02-10 17:03:11 +01:00
Rafał Dzięgiel
fcf9426892
API: remove unused seek-done signal
2021-01-28 18:26:37 +01:00
Rafał Dzięgiel
dea77cc39f
API: notify about speed value reset on STOP
2021-01-28 17:39:52 +01:00
Rafał Dzięgiel
f7a24b20c6
API: remove media info updated signal
...
A signal telling that "something somewhere changed" that is emitted multiple times per second (when bitrate changes). Not useful at all and a disaster performance-wise.
2021-01-28 16:26:20 +01:00
Rafał Dzięgiel
f2971371e1
API: remove clapper config structure
...
Not useful anymore since the player does 1s interval by default and now supports changing seek mode without stopping playback (unlike config which worked only when stopped).
2021-01-28 16:26:20 +01:00
Rafał Dzięgiel
15302a4b62
API: use 1s update position interval by default
2021-01-28 16:26:20 +01:00
Rafał Dzięgiel
e731842b08
API: remove "volume-changed" signal in favor of "notify::volume"
...
We do not need both and notify is better here cause it allows binding volume scale value to the volume prop
2021-01-28 16:26:20 +01:00
Rafał Dzięgiel
90697d81a7
API: fix debug category init with bindings
2021-01-28 16:26:09 +01:00
Rafał Dzięgiel
bbcba3ccc6
API: disable notify on props where it is unused
...
Notify signal is a little problematic here as we already post a signal from player while jumping between APP and API contexts. Limit and disable it where not needed.
2021-01-28 09:10:43 +01:00
Rafał Dzięgiel
5785204c28
API: prevent "notify::caps" from being reconnected on each start
2021-01-28 08:32:49 +01:00
Rafał Dzięgiel
3abfd2a5df
API: add TOC support (video chapters)
2021-01-28 00:23:01 +01:00
Rafał Dzięgiel
5cc312130d
API: set seek mode without stopping playback
2021-01-28 00:23:01 +01:00
Rafał Dzięgiel
08f86cf0cc
Include "GstPlayer" lib renamed to "GstClapper" as part of the app
2021-01-28 00:22:48 +01:00