Jan Schmidt
fddf33d339
fallbackswitch: Use pad as the debug object
...
Instead of using the aggregator as the object in debug statements
relating to pad dataflow, use the pad itself.
2020-12-11 13:02:00 +00:00
Jan Schmidt
34a2dd80a2
fallbackswitch: Move health checks to the OutputState.
...
Move some code to the OutputState from the fallbackswitch
struct to make things a bit cleaner.
2020-12-11 13:02:00 +00:00
Jan Schmidt
74f3de5674
fallbackswitch: Update for upstream changes
2020-12-11 13:02:00 +00:00
Jan Schmidt
d5b648921c
fallbackswitch: Add manual stream control mode
...
Add properties to report and notify on stream health changes, and
a mode where the app can control the stream switching by setting
the active-pad property manually.
This is useful for modifying the policy of fallbackswitch stream
choices, and to synchronise switching of multiple fallbackswitches
2020-12-11 13:02:00 +00:00
Seungha Yang
c7fe08bf6d
fallbacksrc: Fallback to videotestsrc if image fallback URI is invalid
...
... or on error from video fallback path
2020-12-11 12:35:26 +00:00
Sebastian Dröge
6aed1ed926
Remove various unneeded unwraps
2020-12-05 20:29:50 +02:00
Sebastian Dröge
767ed3afae
utils: Update to 2018 edition
2020-11-23 10:28:34 +02:00
Sebastian Dröge
d56ae71e0e
Update for ObjectImpl::get_property() being infallible now
2020-11-19 18:25:53 +02:00
Sebastian Dröge
df6a229f58
Fix or silence various clippy warnings
2020-11-19 15:31:50 +00:00
Guillaume Desmottes
b9f8ce9995
meson: add support for static build
...
There is no way to dynamically ask Cargo to build static or dynamic lib
so we have to build both and pick the one we care when doing the meson
processing.
Fix #88
2020-11-16 15:30:32 +01:00
Sebastian Dröge
b021a8bf10
utils: Update for subclassing API changes
2020-11-15 18:25:42 +02:00
Sebastian Dröge
9c48de75d8
Update for glib_wrapper! API changes
2020-11-07 13:14:00 +02:00
Sebastian Dröge
4c4ed6eed2
fallbackswitch: Update local version of aggregator bindings
2020-11-05 17:06:34 +02:00
Seungha Yang
c62bdb171a
fallbacksrc: Don't give up to running even if segment event is unavailable on blocking probe
...
The blocking probe will be called on buffer or downstream event.
So segment event might not be available at that moment if it was
called by downstream events.
2020-11-03 05:13:20 +09:00
Sebastian Dröge
1f446f6b64
Switch to the combined gtk-rs and gstreamer-rs repositories
2020-11-01 10:24:57 +02:00
Seungha Yang
6390d85b5f
fallbacksrc: Add statistics property
...
This property would be useful for application to understand
the internal status of fallbacksrc element.
2020-10-30 17:08:05 +09:00
Seungha Yang
1b546bb562
fallbacksrc: Ignore buffering message of restart was scheduled
...
In case that there is pending restart, fallbacksrc should not
try to add pad probe.
2020-10-22 02:25:52 +09:00
Seungha Yang
46af97219c
fallbacksrc: Clear exisiting pad probe on restarting
...
Fallback might happen even after uridecodebin3 exposed pad.
For later use of audio and video streams, clear it if any
2020-10-22 02:23:22 +09:00
François Laignel
7c3e69bb4a
Fix ClockTime comparisons not being Ord and use saturating_sub
...
See:
https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/607
2020-10-20 23:45:01 +02:00
Sebastian Dröge
bbc18d6349
Update for ClockId creation API changes
2020-10-20 12:49:51 +03:00
Sebastian Dröge
1e661e6d5b
Update for gst::ClockId changes
2020-10-10 13:53:28 +03:00
Sebastian Dröge
4561b0bc3c
utils/fallbacksrc: Add update-uri signal
...
This allows to update the URI just before configuring it on
uridecodebin3. It might be necessary to update the original URI because
it expired in the meantime, for example.
2020-09-28 16:54:42 +00:00
Sebastian Dröge
331374fabe
utils/fallbackswitch: Use the correct segment when deciding to drop fallback buffers
...
Thanks to Jan Schmidt for noticing.
2020-09-28 14:39:10 +00:00
Sebastian Dröge
bf82e750f4
utils/fallbacksrc: Remove custom source elements from internal bin when shutting down
...
Otherwise we can't add it again later to a new bin when starting up again.
2020-09-26 12:24:05 +00:00
Sebastian Dröge
3b5d9b7392
examples: Update for glib API changes
...
Timeouts now use std::time::Duration instead of plain integers.
2020-09-14 16:47:27 +03:00
Sebastian Dröge
87025d7a02
Use glib::timeout_add_local() instead of removed gtk::timeout_add()
2020-08-27 09:50:33 +03:00
Sebastian Dröge
98b618cc9d
utils/togglerecord: Fix timestamp tracking logic for partially overlapping timestamps
...
And various other cases. Also adjust one of the tests accordingly and
improve assertions to print more information about internal
inconsistencies.
2020-08-06 11:56:59 +00:00
Vivia Nikolaidou
a91e8aadb2
fallbackswitch: Consistently store running time in last_sinkpad_time
...
It was using buffer timestamps mixed with running time
2020-08-05 18:49:44 +00:00
Sebastian Dröge
4b171ec7ff
utils/fallbacksrc: Remove pad probes before restarting the source
...
Otherwise the source might be blocked downstream in the pad probe on the
queue. Previously this was not a problem because the probes were
directly on the srcpads of the source but due to a workaround for
uridecodebin3 buffering bugs this is not the case anymore.
2020-08-04 10:37:08 +03:00
Sebastian Dröge
a2c0d70930
utils/fallbacksrc: Don't schedule a source restart timeout if the source is already pending restart
2020-08-04 10:36:45 +03:00
Sebastian Dröge
9ebcfbf333
utils/fallbacksrc: Improve debug output related to pad probes
2020-08-04 10:36:28 +03:00
Sebastian Dröge
0ce36c0f76
utils/fallbacksrc: Forward the state change return of custom sources
...
Without this, custom sources that are live are not actually considered
live.
2020-08-03 17:56:15 +03:00
Sebastian Dröge
42a3cf8bb2
utils/fallbacksrc: Fix debug output in pad probe callback
...
Let's print the name of the source's srcpad that is going to be blocked
instead of the "src" pad of the following queue. Without this it's hard
to distinguish the different streams from the logs.
2020-08-03 17:55:35 +03:00
Sebastian Dröge
30c711886e
utils/fallbacksrc: Add a 1s queue between uridecodebin and clocksync and do buffering after the queue
...
This adds 1s more buffering (of uncompressed data), but works around
https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/issues/800
2020-07-30 14:53:18 +03:00
Sebastian Dröge
34fab8786f
utils/fallbacksrc: Fix fallback stream detection if only audio or video is enabled
2020-07-30 14:35:34 +03:00
Sebastian Dröge
a022bbe260
Fix some new clippy warnings
2020-07-28 18:52:11 +03:00
Sebastian Dröge
0eb777cf5a
Update for removal of ObjectImpl::get_type_data()
2020-07-26 18:46:32 +03:00
Sebastian Dröge
54c5612ac8
utils/fallbackswitch: Enable the v1_18 feature now that it exists
2020-07-10 13:06:28 +03:00
Sebastian Dröge
e9b61b733d
Add LICENSE files to each individual crate
2020-07-10 13:06:28 +03:00
Sebastian Dröge
5e1ce7f9a7
utils/fallbacksrc: Proxy the uridecodebin3 buffer-duration property
2020-07-10 11:14:33 +03:00
Sebastian Dröge
2b892ec01a
utils/fallbacksrc: Proxy the aggregator min-upstream-latency property as min-latency
...
The fallback stream will usually have a lower latency than the main
stream, so a too low latency would be configured if the fallback is
activated in the beginning.
This property allows to override this and does not require latency
reconfiguration.
2020-07-08 13:43:06 +03:00
Sebastian Dröge
45f547c4be
fallbacksrc: Configure up to 5s of buffering on the fallback stream
...
imagefreeze in live mode can handle only up to 1 frame of buffering
itself.
2020-07-07 14:29:07 +03:00
Sebastian Dröge
879767599e
utils/fallbackswitch: Allow buffers to be up to 40ms too late before considering them too late
...
This mirrors the processing-deadline property on various elements, but
for now just with a hardcoded value.
2020-07-07 10:21:24 +03:00
Sebastian Dröge
55f3349b39
utils/fallbackswitch: Timeout the main stream if buffers were too late for too long
...
Buffers are still forwarded until the timeout is reached even if they're
too late, but if they were continuously too late for more than the
duration of the timeout setting then switch to the fallback stream
instead.
2020-07-06 07:59:52 +00:00
Sebastian Dröge
daa6cfbb6a
utils/fallbacksrc: Add property to optionally restart the source on EOS
...
EOS might be unexpected and the stream might be supposed to run forever,
in which case it should transparently be restarted on EOS.
2020-07-03 15:37:36 +03:00
Sebastian Dröge
2903d4a66c
fallbacksrc: Refactor some code to reduce code duplication
2020-07-03 09:53:55 +03:00
Sebastian Dröge
7945de32eb
fallbackswitch: Report None as active-pad if we had no output yet
...
Instead of the main stream, pretending all to be ok.
2020-07-02 14:46:59 +03:00
Sebastian Dröge
44ad0a2f52
fallbacksrc: Differentiate between fallback and restart timeout
...
This also fixes the bug that the source wouldn't be restarted another
time if we switched to the fallback stream before and didn't at least
shortly switch to the normal stream. There was no timeout for this.
Based on a patch by Mathieu Duponchelle <mathieu@centricular.com>
2020-07-02 14:46:59 +03:00
Mathieu Duponchelle
f7fc5bb0a3
fallbacksrc: add missing assignment to source_pending_timeout
...
b3138ad041
added the field for
that purpose, let's also use it!
2020-07-02 11:51:16 +03:00
Sebastian Dröge
2192c9d3b4
fallbacksrc: Unset ghost pad targets before removing from the element
...
Workaround for https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/553
2020-07-02 11:38:01 +03:00