Commit graph

18 commits

Author SHA1 Message Date
faldez df4bf3214e change ser_de to serde
because gstreamer-rs rename ser_de feature to serde
2022-09-27 11:45:24 +02:00
Mathieu Duponchelle 5b694988d1 Update dependencies 2022-08-31 01:16:39 +02:00
Thibault Saunier e0ad7e4c16 Update dependencies using the new Signall::builder API 2022-08-18 22:58:15 +02:00
Thibault Saunier 64f664c859 plugin: Implement bandwidth estimator based on the Google Congestion Control algorithm
See https://datatracker.ietf.org/doc/html/draft-ietf-rmcat-gcc-02

This commit implements the bandwidth estimation as a GStreamer element
that is then used in webrtcbin through the new `request-bandwidth-estimator`
signal.

This keeps our Homegrown congestion controller but removes the possibility
to switch CC algorithm at runtime.
2022-08-05 03:13:05 +02:00
Thibault Saunier f6f079f3a8 Use StreamConsumer from gstreamer itself
Merged in https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/1022
2022-05-23 13:52:39 +02:00
Vivienne Watermeier f091e90b24 Depend on gstreamer-rs main to add a feature for v1_22 2022-05-09 22:49:24 +02:00
Thibault Saunier 075a625305 Make our "loss based control" algorithm closer to what is defined in [GCC]
As specified in Google Congestion Control we should run the packet loss
estimation algorithm "every time feedback from the receiver is
received".

And, also as defined by GCC, we now have 2 different estimated bitrates,
one for the delay-based controller value and one for the loss-based one,
and we use the minimum value between those 2 as our current estimation.

[GCC]: https://datatracker.ietf.org/doc/html/draft-ietf-rmcat-gcc-02
2022-05-03 15:21:20 +02:00
Raphael Dürscheid 55d30db53b Add property to specify certificate authority
Under certain circumstances one would like to use a self signed
certificate without the obstacles many browsers implement to
safeguard their users. One approach is to create a certificate
authority. One can now add this to the OS certificate store, or simply
add it to the browser. In the latter case one also needs to specify the
new authority on the webrtcsink. This commit enables this.
2022-03-31 15:23:11 +02:00
Mathieu Duponchelle bd88395859 signalling: update protocol, reimplement in rust 2022-03-17 18:31:54 +01:00
Sebastian Dröge 1983041770 Update to gstreamer-rs 0.18 instead of using it from git
And update all other dependencies.
2022-01-25 20:12:23 +01:00
Thibault Saunier 689bd93055 Implement the GstNavigation interface using a dedicated DataChannel protocol
This allows interacting with the source element from within the browser
very easily
2022-01-03 22:30:44 +01:00
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 1826111278 Implement support for FEC / retransmission 2021-12-10 01:12:19 +01:00
Mathieu Duponchelle 5f98e61c91 examples: implement webrtcsink-stat-server 2021-11-30 22:55:28 +01:00
Thibault Saunier ee64d53cf4 Update dependencies 2021-11-24 15:27:06 +01: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
Mathieu Duponchelle 8c6ff24052 webrtcsink: Initial congestion control implementation
Naive heuristic lifted from an earlier proof of concept,
augmented with logic from
https://datatracker.ietf.org/doc/html/draft-ietf-rmcat-gcc-02#section-5.5

A property is exposed to disable congestion control for
testing purposes, it can be extended in the future to allow
selecting a different congestion control scheme.

+ Update the documentation
2021-11-10 02:55:46 +01:00
Mathieu Duponchelle 79fb66f338 Initial commit 2021-10-28 05:14:41 +02:00