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
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
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
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
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
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
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
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
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
Sebastian Dröge
2cada57efc
Update for the subclassing glib/gstreamer bindings API changes
2021-03-09 17:07:13 +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
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
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
1f446f6b64
Switch to the combined gtk-rs and gstreamer-rs repositories
2020-11-01 10:24:57 +02: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
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
Sebastian Dröge
0eb777cf5a
Update for removal of ObjectImpl::get_type_data()
2020-07-26 18:46:32 +03:00
Sebastian Dröge
e9b61b733d
Add LICENSE files to each individual crate
2020-07-10 13:06:28 +03:00
Sebastian Dröge
d03c6cb26a
Update various dependencies
2020-06-30 10:49:27 +03:00
Sebastian Dröge
f62c11f851
Update for functions returning a Builder being renamed to builder() instead of new()
...
And new video event APIs.
2020-06-25 19:49:07 +03:00
François Laignel
e40267e95d
event,message,query: update instantiation
...
See https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/532
2020-06-25 11:26:32 +02:00
Sebastian Dröge
9bb3e75fb9
Update to use the new pad builders for safely setting pad functions
...
Only two uses of unsafely setting the pad functions is left:
- fallbacksrc for overriding the chain function of the proxy pad of a
ghost pad
- threadshare for overriding the pad functions after creationg, which
probably needs some fixing at some point
2020-06-22 11:28:19 +03:00
Sebastian Dröge
60321edb8c
Update for new_with_XXX/new_from_XXX function renaming
2020-06-16 11:56:48 +03:00
Guillaume Desmottes
e85799b9d6
use new constructor names
2020-06-11 13:07:01 +02:00
Sebastian Dröge
a4a0a669bd
togglerecord: Set the DISCONT flag on the first buffer after recording starts
...
While continuous in time, each recording start will be a discontinuity
in audio/video content.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/336 >
2020-05-08 22:39:05 +03:00
Sebastian Dröge
e1c3491915
togglerecord: Improve logging
2020-05-08 15:57:07 +03:00
Sebastian Dröge
36f032ef15
Configure crate-type to cdylib/rlib consistently in Cargo.toml
...
And not in the source code, it's a build decision.
2020-04-24 15:02:12 +03:00
Sebastian Dröge
5a7fcfad7f
Fix various new clippy warnings with clippy 1.43
2020-04-24 13:55:01 +03:00
Guillaume Desmottes
bdb0e72cc7
fix LGPL-2.1+ license in Cargo.toml
...
The proper SPDX name is LGPL-2.1-or-later, see https://spdx.org/licenses/
2020-04-16 13:07:21 +02:00
Arun Raghavan
dc3c8fd049
Drop gst-plugin- prefix in plugin directory name
2020-04-05 19:10:47 +00:00