Commit graph

2203 commits

Author SHA1 Message Date
Mathieu Duponchelle
8128c14fa9 API: refactor error signalling
* Expect Box<dyn Error> from custom signaller

* Use thiserror to define the error codes returned to custom
  signallers
2021-12-21 23:37:29 +01:00
Mathieu Duponchelle
114fd3c5f6 README: mention https://github.com/centricular/webrtcsink-custom-signaller 2021-12-21 00:32:51 +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
Sebastian Dröge
82d969190f ci: Remove the gstreamer directory if it exists already for the gst-build job
Otherwise it will regularly fail because the runner already has the
directory available for some reason.
2021-12-20 10:51:41 +02:00
Sebastian Dröge
d7677a6337 deny: Update 2021-12-18 10:08:48 +02:00
Sebastian Dröge
7b908e0165 deny: Update 2021-12-15 12:47:08 +02: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
Mathieu Duponchelle
a4df10b112 webrtcsink: reset default values when disabling congestion control 2021-12-10 03:33:02 +01:00
Mathieu Duponchelle
d230345d90 webrtcsink: make sure we always scale to multiple of 2 dimensions
Some encoders do not like odd widths or heights
2021-12-10 01:16:10 +01:00
Mathieu Duponchelle
1826111278 Implement support for FEC / retransmission 2021-12-10 01:12:19 +01:00
9ae8f0d330 hlssink3: fix segment paths in playlist file 2021-12-09 12:38:35 +00: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
6db599e5ae deny: Clarify license of encoding_rs
See https://github.com/hsivonen/encoding_rs/issues/75
2021-12-09 12:04:11 +02:00
Mathieu Duponchelle
7bd7c4e960 webrtcsink: tune homegrown CC algorithm
Make control decisions based on packet loss closer in intent to
the algorithm described in gcc section 6., and raise the threshold
for decreasing the bitrate based on delay_factor
2021-12-08 22:31:03 +01:00
Thibault Saunier
b12d91775d Respect user provided max-bitrate when congestion controler is disabled 2021-12-08 22:30:37 +01:00
Thibault Saunier
5904e1ccb4 Allow changeing Congestion control algorithm at runtime 2021-12-08 22:30:37 +01:00
Sanchayan Maity
099a3f2114 rusoto: s3sink: Support aborting or completing multipart upload on error
A multipart upload should either be completed or aborted on error. In
the current state of things, a multipart upload would neither be
completed nor aborted, putting the onus on an external entity to take
care of finishing incomplete uploads or relying on a sane bucket
life cycle policy configured to abort incomplete multipart uploads.

An incomplete multipart upload still contributes to the storage costs as
long as it exists.

We introduce a property here to allow the user to select either aborting
or completing multipart uploads on error. Aborting the upload causes
whole of data to be discarded and the same upload ID is not usable for
uploading more parts to the same.

Completing an incomplete multipart upload can be useful in situations
like having a streamable MP4 where one might want to complete the upload
and have part of the data which was uploaded be preserved.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/618>
2021-12-07 18:29:52 +05:30
Sebastian Dröge
3ed9e291c2 Update for decide/propose_allocation() API changes 2021-12-06 19:11:24 +02:00
Thibault Saunier
80e3acda93 signalling: Use logging to log info instead of prints 2021-12-03 16:22:11 +01:00
Thibault Saunier
57f459f43b Dot consumer pipelines when finalizing the pipeline 2021-12-03 16:22:11 +01:00
Sebastian Dröge
66e987c174 Fix a couple of new clippy warnings 2021-12-02 22:31:52 +02:00
Tim-Philipp Müller
febbd5c2c9 hlssink3: fix symbolic link to LICENSE file 2021-12-01 15:38:47 +00: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
Mathieu Duponchelle
f9fb18ae1b examples: implement stats client 2021-11-30 22:55:28 +01:00
Mathieu Duponchelle
5f98e61c91 examples: implement webrtcsink-stat-server 2021-11-30 22:55:28 +01:00
Mathieu Duponchelle
921ca7fbab webrtcsink: expose stats property 2021-11-30 22:55:28 +01:00
Sebastian Dröge
c46901d150 Fix or silence various new 1.57 clippy warnings 2021-11-30 16:31:50 +02:00
Sebastian Dröge
f02322bd80 deny: Update for obsolete ignores 2021-11-30 16:21:45 +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
Thibault Saunier
40a4b745e3 Add properties to configure min/max bitrate values 2021-11-24 15:27:06 +01:00
Thibault Saunier
ee64d53cf4 Update dependencies 2021-11-24 15:27:06 +01:00
Mathieu Duponchelle
97e6a89cac aws_transcriber: sanity check alternative length
The design of the element is based on the assumption that when
receiving a partial result, the following result will contain
at least as many items as there were stable items in the previous
result.

This patch adds a sanity check to make sure our "partial index"
isn't larger than the new received result, and errors out otherwise.

partial_index will eventually be reset to 0 once we receive a
new non-partial result.
2021-11-24 13:10:00 +00:00
Sebastian Dröge
3cf2ad3b77 deny: Update 2021-11-24 09:57:44 +02:00
Mathieu Duponchelle
3052884bdc www: fix setting error statuses in some situations 2021-11-23 21:10:27 +01:00
Mathieu Duponchelle
7ce0ef5b88 webrtcsink: change method for constraining final caps
See discussion at:

https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1278#note_1154282
2021-11-23 14:52:40 +01:00
Tomasz Andrzejak
4668da45ef audiofx: Add HRTF renderer element
Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/128
2021-11-23 08:19:29 +00:00
Guillaume Desmottes
0b348406ef s3sink: add metadata property
This property can be used to set metadata on the S3 storage object.
2021-11-22 17:03:24 +01:00
Guillaume Desmottes
11bef9066c s3sink: log when setting properties 2021-11-22 16:52:04 +01:00
Sanchayan Maity
2c2cd8c2be Implement rounded corners
This plugin takes I420/YUV and appends an alpha plane to give YUVA/A420
to round the corners analogous to the border-radius in CSS. Other video
formats like NV12 not supported yet. Support for other planar formats
will follow.

Not all ways of specifying border-radius as in CSS are implemented at
the moment. Currently, we only support specifying it in pixels and it
gets applied uniformly to all corners.
2021-11-22 17:04:07 +05:30
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
e7a9c2b054 Update dependencies
This involves removing lots of unnecessary `unwrap()`s and simplifies
the `lookup_codecs()` function a bit.
2021-11-21 18:44:00 +01:00
Sebastian Dröge
651ea7de5f hlssink3: Minor cleanup of debug output
Pass the object instance to the debug logs too to be able to distinguish
multiple instances.
2021-11-21 18:18:56 +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
d88786a824
Merge pull request #4 from centricular/remove-needless-to-value
Remove needless `to_value()` calls
2021-11-20 15:04:36 +02:00
Sebastian Dröge
ac60e7b101 Remove needless to_value() calls 2021-11-20 14:56:34 +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
Sebastian Dröge
288acaa7cc cdg: Update test for child proxy property API changes 2021-11-20 10:47:02 +02:00
Thibault Saunier
63337c7df1 sink: Add a new-webrtcbin signal
Allowing user to add a data channel for example
2021-11-19 12:58:57 +01:00