Guillaume Desmottes
7b109785be
fallbackswitch: factor out handle_main_timed_item()
...
No semantic change, I'll re-use this to handle GAP events.
2022-03-03 10:01:59 +01:00
Guillaume Desmottes
31864c9a9d
fallbackswitch: add support for buffers without pts
...
Re-use the previously seen PTS.
Fix #186
2022-03-02 13:32:06 +01:00
Guillaume Desmottes
73cfb357c6
fallbackswitch: export GEnum used in properties
...
Rust applications will be able to use those directly.
2022-03-01 14:44:16 +01:00
Sebastian Dröge
b38f6cc731
Remove now unnecessary Send+Sync
impls for element/etc subclasses
...
This is now automatically implemented.
2022-02-28 18:56:58 +02:00
Guillaume Desmottes
d9f3e8e9e7
uriplaylistbin: disable test deadlocking
2022-02-28 16:48:13 +01:00
Seungha Yang
de2ea8a1b2
fallbacksrc: Disconnect signals on ReadyToNull
...
Otherwise multiple signal handlers will be connected to the source
2022-02-25 23:12:30 +09:00
Sebastian Dröge
a1e2debde4
fallbacksrc: Changing the URI of the video fallback is supported in NULL state
...
And not just during construction.
This fixes switching from a failing video fallback to a dummy fallback,
which was added in c7fe08bf6
.
2022-02-24 12:29:53 +02:00
Guillaume Desmottes
52f5dc0185
uriplaylistbin: display invalid state when panicing
...
Will help debugging failing tests such as #184
2022-02-22 17:29:02 +01:00
François Laignel
2cf84d5ce8
Update minimum supported Rust version to 1.57
2022-02-21 23:32:32 +01:00
François Laignel
422ea740ca
Update to gst::_log_macro_
...
See the details:
https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/980
2022-02-21 20:50:01 +01:00
Sebastian Dröge
42f9f99690
Update to parking_lot 0.12 and hrtf 0.8
2022-01-31 15:20:44 +02:00
Sebastian Dröge
f44b86cd30
Simplify some code around event/query views
2022-01-22 12:18:02 +02:00
Sebastian Dröge
65fcd55160
Update for event/message/query view API changes
2022-01-19 15:07:45 +02:00
Sebastian Dröge
763ad0cb18
Rename self_
variables to imp
for consistency
2022-01-17 20:09:18 +02:00
Sebastian Dröge
b2d0172422
Replace Foo::from_instance(foo)
with foo.imp()
2022-01-17 19:36:41 +02:00
Sebastian Dröge
326449b3e6
Re-license LGPL-2.1 plugins to MPL-2
...
Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/168
2022-01-15 21:05:11 +02:00
Sebastian Dröge
0c7764fa40
Update versions to 0.9.0
2022-01-15 20:33:49 +02:00
Sebastian Dröge
ab14c50d1c
Ignore clippy::non_send_fields_in_send_ty
lint
...
It's useless in its current shape and wrongly triggering on all types.
See https://github.com/rust-lang/rust-clippy/issues/8045
2022-01-14 12:09:57 +02:00
Guillaume Desmottes
8bab034bc8
uriplaylistbin: fix license when registering plugin
2022-01-03 00:08:53 +01:00
Guillaume Desmottes
b7c08933aa
uriplaylistbin: add properties reporting the current state of the playlist
2021-12-22 15:26:17 +01:00
Guillaume Desmottes
9783d01a35
uriplaylistbin: prevent overflow panic with infinite playlist
...
enumerate() will panic if the index overflows.
2021-12-22 12:53:11 +01:00
Guillaume Desmottes
4a5815cc97
uriplaylistbin: factor out create_items()
2021-12-22 12:53:11 +01:00
François Laignel
7c909e59a9
utils/togglerecord: fix race condition in sink_chain when segment is pending
...
In `sink_chain` when the Segment is pending, attempting to lock
rec state could lead to a dead lock because the stream state is
already locked while the main stream state was not locked.
2021-12-20 09:01:09 +00:00
François Laignel
a1c89dd17b
utils/togglerecord: fix race condition checking other streams EOS state
...
Function `check_and_update_stream_start` checks whether other streams
reached EOS. The stream being checked might already have locked its
state. If it's about to check other streams too, this results in a
deadlock.
The problem was due to the `main_state` guard being dropped handling
event `StreamStart` checking whether the main stream is EOS:
```rust
let main_is_eos = if let Some(main_state) = main_state {
main_state.eos
} else {
false
};
```
In the above code, `main_state` main state is comsumed and dropped
after evaluating `main_state.eos`.
This is also the case before handling event `Eos`.
This revealed another deadlock handling event `Eos` which is under
investigation.
2021-12-20 09:01:09 +00:00
Vivia Nikolaidou
2acb83da8f
togglerecord: Handle stream-start event after EOS
...
It should restart any pending streams instead of keeping everything
EOS'd
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/622 >
2021-12-14 14:34:50 +02:00
Sebastian Dröge
86021d637b
fallbacksrc: Actually calculate running times of segment start/stop if the PTS is outside the segment
...
Previously it was just using the segment start/stop without converting
it to the corresponding running time.
2021-12-09 12:30:42 +02:00
Sebastian Dröge
66e987c174
Fix a couple of new clippy warnings
2021-12-02 22:31:52 +02:00
Sebastian Dröge
423fa0d0a9
uriplaylistbin: Remove unnecessary &
to fix clippy warning
2021-12-01 15:57:45 +02:00
Sebastian Dröge
13923051a0
Fix compilation after gst::Pad::sticky_events_foreach
API changes
2021-12-01 15:33:45 +02:00
Sebastian Dröge
c46901d150
Fix or silence various new 1.57 clippy warnings
2021-11-30 16:31:50 +02:00
Guillaume Desmottes
f9a39b1138
add uriplaylistbin plugin
...
uriplaylistbin plays a list of URIs sequentially, ensuring gapless transitions
and proper streams synchronization.
2021-11-29 10:55:01 +01:00
Sebastian Dröge
86f422592b
Update for glib::Enum
/ glib::Boxed
/ glib::flags!
macro renames
2021-11-22 11:04:26 +02:00
Sebastian Dröge
c68f6b2631
Update for GLib signal emit_by_name()
API changes
2021-11-21 18:15:04 +02:00
Sebastian Dröge
55aad51141
Update for glib constructor renames
...
See https://github.com/gtk-rs/gtk-rs-core/pull/384
2021-11-20 14:31:06 +02:00
Jan Alexander Steffens (heftig)
5285fab8b3
fallbackswitch: Correct immediate-fallback default value
...
Only affects the claimed default in the properties, not the actual
default.
2021-11-18 21:02:54 +00:00
Bilal Elmoussaoui
82be7b3ac5
adapt to ObjectExt improvements
2021-11-08 14:43:53 +02:00
Sebastian Dröge
d9bda62a47
Update for GLib/GStreamer API changes
...
And clean up a lot of related property/caps/structure code.
2021-11-06 09:34:10 +02:00
Sebastian Dröge
0a7d1639e7
Update to Rust edition 2021 and minimum supported Rust version to 1.56
2021-10-31 17:40:05 +02:00
Sebastian Dröge
b9541b2ca4
Update for GstObjectImpl API change
2021-10-23 12:31:33 +03:00
François Laignel
27b9f0d868
Improve usability thanks to opt-ops
...
The crate option-operations simplifies usage when dealing with
`Option`s, which is often the case with `ClockTime`.
2021-10-18 15:09:47 +02:00
Sebastian Dröge
54c8f5b3ab
fallbackswitch: Remove bundled aggregator copy and require GStreamer 1.18
...
1.18 is old enough at this point and carrying around a copy of
aggregator is not sustainable.
2021-10-17 17:35:45 +03:00
Sebastian Dröge
c5d3a2efce
Update for event API changes
2021-10-17 17:30:38 +03:00
Sebastian Dröge
1a830c7c78
Update for glib::source_remove() removal
2021-10-12 06:31:53 +00:00
Vivia Nikolaidou
a132fdb8be
togglerecord: Add is-live mode
...
No "gap eating" behaviour, will forward incoming segment
2021-10-04 16:44:04 +03:00
Vivia Nikolaidou
f6aa03b58a
togglerecord: Fix lock ordering
...
Fixes deadlocks.
Correct lock ordering is:
1) Main stream state lock
2) Other stream state lock
3) Recording state lock
2021-10-04 13:18:20 +03:00
Sebastian Dröge
96d86eaa06
Clean up clippy warnings and CI configuration
...
Put clippy overrides into the sources files instead of the CI
configuration, and fix various warnings / clean up code.
2021-09-08 12:35:41 +00:00
Vivia Nikolaidou
6f14ebdfee
togglerecord: Notify main_stream_cond on release_pad
...
Otherwise, it would deadlock when releasing first the primary stream and
then the secondary one, because it will wait in the "secondary stream"
handling for the main stream to be fed, which will never happen.
2021-08-27 11:59:33 +03:00
Sebastian Dröge
4894e7b3ee
Update for fallible Object::set_property_from_str()
2021-08-17 15:01:25 +03:00
Sebastian Dröge
848b296390
Add capi feature to all plugin crates
...
This fixes the build with cargo-c 0.9.2.
2021-08-11 20:51:36 +03:00
Mathieu Duponchelle
19dcb8159a
fallbackswitch: only drop MISSING_DATA gap events pre queue
...
Regular gap events can be output by sources such as cefsrc in
normal operation, and should not trigger an active pad change.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/538 >
2021-08-04 15:12:02 +00:00
Sebastian Dröge
052365ba1a
Fix various needless-borrow clippy warnings and others
2021-07-30 13:53:35 +03:00
Sebastian Dröge
24ec79cd1a
Update versions to 0.8.0 for the master branch
2021-07-09 13:49:33 +03:00
Sebastian Dröge
1c3ae0f89a
Update versions to 0.7.0
2021-07-09 13:49:21 +03:00
Mathieu Duponchelle
36b346e733
fallbacksrc: update-uri is not an action signal
2021-06-30 17:34:13 +02:00
Mathieu Duponchelle
d38a84ab79
fallbacksrc: add support for still images as primary
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/515 >
2021-06-30 00:46:46 +00:00
Mathieu Duponchelle
ef41adf776
fallbacksrc: implement manual unblocking feature
...
This enables a use case for preparing slow to start up sources
ahead of time in a live cueing system, where a stream is scheduled
to start at some point in the future, and the application wants to
make sure it is ready for prime time by that time, instead of
spinning it up at the last moment and waiting for the stream to
actually come up.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/515 >
2021-06-30 00:46:46 +00:00
Mathieu Duponchelle
29052b1acb
fallbacksrc: implement send_event to forward EOS
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/515 >
2021-06-30 00:46:46 +00:00
Mathieu Duponchelle
0b08f855c5
fallbacksrc: send EOS on fallback-only stream
...
When both audio and video are enabled, but the primary stream
only has either, when that stream ends we want to end the other
fallback-only stream as well.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/515 >
2021-06-30 00:46:46 +00:00
Mathieu Duponchelle
a5a80281f3
fallbackswitch: output buffers ASAP at startup
...
When only the backup pad is receiving buffers, and the primary
pad is a bit slow to start up (eg network source with buffering),
it makes for a better UX to output buffers from the backup pad
while waiting for the network source to make its move.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/515 >
2021-06-30 00:46:46 +00:00
François Laignel
5439f14e57
fix clippy warnings
2021-06-05 10:36:22 +02:00
François Laignel
c2de0649a7
utils: migrate to new ClockTime design
2021-06-05 10:36:21 +02:00
François Laignel
8dfc872544
use gst::glib where applicable
2021-06-03 20:53:16 +02:00
Sebastian Dröge
04a60b8f46
Update repository URL for gtk-rs "core" crates
2021-05-13 09:50:08 +03:00
Sebastian Dröge
9349b86b27
fallbackswitch: Fix compilation after gstreamer API changes
2021-05-05 10:34:02 +03:00
Bilal Elmoussaoui
78d9fb521d
rename ToGlib into IntoGlib
2021-04-27 20:45:47 +02:00
Sebastian Dröge
15cf738616
Update for Value trait refactoring
2021-04-25 15:48:55 +03:00
François Laignel
95cdd43f4f
manual fixes remove get prefix round 2
2021-04-20 18:19:58 +02:00
François Laignel
3203f57748
fallbackswitch: update base/aggregator*
2021-04-20 18:19:58 +02:00
François Laignel
67c5871957
fix-getters-calls 0.3.0 pass
2021-04-20 18:19:58 +02:00
François Laignel
27bc5c89ca
fix-getters-def 0.3.0 pass
2021-04-20 18:19:58 +02:00
François Laignel
e573f0ba16
fallbackswitch: update base/aggregator*
2021-04-13 17:24:20 +02:00
François Laignel
7d17f88941
post fix-getters manual updates
2021-04-13 17:24:20 +02:00
François Laignel
06accc8d98
fix-getters-{def,calls} pass
2021-04-12 15:57:19 +02:00
Sebastian Dröge
c3fb55f235
examples: gtk::Application::new() is not fallible anymore
2021-04-12 11:53:40 +03:00
Sebastian Dröge
2bd4fc4728
examples: Update for gio::Application::run() API simplification
2021-04-08 07:37:25 +00:00
Matthew Waters
359c07203e
gst: don't use volatile to mean atomic
...
volatile is not sufficient to provide atomic guarantees and real atomics
should be used instead. GCC 11 has started warning about using volatile
with atomic operations.
https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1719
Discovered in https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/issues/868
2021-03-19 17:24:25 +11:00
Sebastian Dröge
2cada57efc
Update for the subclassing glib/gstreamer bindings API changes
2021-03-09 17:07:13 +02:00
Sebastian Dröge
9721b3e762
fallbackswitch: Update bundled aggregator bindings with glib subclass API cleanups
2021-03-08 12:43:05 +02:00
Sebastian Dröge
dc0c5f7611
Update for new #[glib::object_subclass] attribute macro
2021-03-07 18:27:00 +02:00
Sebastian Dröge
0616c18703
Update for changed GLib signals API
2021-02-22 17:20:40 +02:00
Sebastian Dröge
cbda137fbf
Fix various warnings from clippy 1.50
2021-02-09 18:57:34 +02:00
Jan Schmidt
f63c4284c1
fallbackswitch: Fix draining of the backup pad.
...
When not autoswitching between the primary and fallback pad, make sure
to drain the disabled pad to the current running time, and fix the
drain_pad_to_time() function to use the correct running time variable.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/472 >
2021-02-05 03:24:02 +11:00
Sebastian Dröge
b649e9b076
Use gst::PARAM_FLAG_MUTABLE_PLAYING and others consistently everywhere
...
Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/139
2021-01-31 15:43:00 +02:00
Sebastian Dröge
d4ce1a33f2
Update for glib/gstreamer bindings API changes
2021-01-25 14:43:05 +02:00
Seungha Yang
084c9d1447
fallbackswitch,togglerecord: Don't apply clipped PTS to buffer DTS
...
Setting DTS on raw video buffers doesn't make sense and it's even wrong
in case of compressed video stream because PTS might be able to
go back when B frames are placed, but DTS is expected to be monotonically
increased.
2021-01-19 19:45:14 +09:00
Seungha Yang
2b7cebb02a
togglerecord: Update recording state on EOS
...
If all input streams are in EOS state, update recording state
to Stopped and notify the change as well
2021-01-07 22:16:51 +09:00
Guillaume Desmottes
8bc2e5ebb8
use cargo-c to produce cdy and static libs
...
cargo-c will produce a pkg-config file making it easier to statically
link plugins.
Also add 'static' features for plugins depending on < 1.14 as this is the
minimal required version to use static linking because of ABI changes in
core.
2021-01-04 12:26:45 +01:00
Sebastian Dröge
c09dc96c2c
togglerecord: Also check for flushing at the top of the chain function
...
It would return further down anyway but there's no point in doing
useless work if it can be avoided.
2020-12-31 12:06:18 +02:00
Sebastian Dröge
cdca6c9372
togglerecord: Check for flushing when the main stream waits for the other streams
...
Otherwise it would not wake up and return when shutting down the element.
2020-12-31 12:05:37 +02:00
Sebastian Dröge
3d617371af
Update for macro renames
2020-12-20 20:43:45 +02:00
Sebastian Dröge
ea6c05e16c
Update everything for glib macro renamings
2020-12-18 00:44:49 +02:00
Sebastian Dröge
708c6aa57e
Update for new simplified glib::Object::new() API
2020-12-17 18:15:54 +02:00
Jan Schmidt
b80a607737
fallbackswitch: Reset fallback pad state on remove.
2020-12-11 13:02:00 +00:00
Jan Schmidt
f57ce41e89
fallbackswitch: Document return parameters for get_next_buffer()
...
The return type for get_next_buffer() is quite complex, so add some
comments about what is what.
2020-12-11 13:02:00 +00:00
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