Sebastian Dröge
58e91c154c
rtp: basedepay: Reset last used ext seqnum on discontinuities
...
The ext seqnum counting is reset too so keeping the old one around will
cause problems with timestamping of the next outgoing buffer.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1584 >
2024-05-24 10:23:06 +03:00
cdelguercio
c99cabfbc5
webrtcsink: Add VP9 parser after the encoder for VP9 too
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1572 >
2024-05-23 10:16:59 +03:00
cdelguercio
f5a7de9dc3
webrtcsink: Support av1 via nvav1enc, av1enc, and rav1enc
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1572 >
2024-05-23 10:16:59 +03:00
Sebastian Dröge
dcc0b47349
rtp: basepay: Fix header extension negotiation
...
Only configure header extensions from the source pad caps if they exist
already in the source pad caps, otherwise the configuration will fail.
Extensions that are added via the signals might not exist in the source
pad caps yet and would be added later.
Also, if configuring an existing extension from the new caps fails,
remove it and try to request a new extension for it.
Additionally don't remove extensions from the caps that can't be
provided. No header extensions for them would be added to the packets,
but that's not a problem. Removing them on the other hand would cause
negotiation to fail. This only affects extensions that are already
included in the caps.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1577 >
2024-05-20 07:53:50 +00:00
Sebastian Dröge
0d33077df6
rtp: basedepay: Clean up header extension negotiation
...
If configuring an existing extension from the new caps fails, remove it
and try to request a new extension for it.
Also remove all extensions from the list that are not provided in the
caps, instead of passing RTP packets to all of them anyway.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1577 >
2024-05-20 07:53:50 +00:00
Tim-Philipp Müller
16608d2541
rtp: opus: add multichannel depay/pay test
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1571 >
2024-05-18 09:29:29 +00:00
Tim-Philipp Müller
bab3498c6a
rtp: opus: add multichannel pay/depay test
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1571 >
2024-05-18 09:29:29 +00:00
Tim-Philipp Müller
72006215cb
rtp: tests: add run_test_pipeline_full() that checks output caps too
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1571 >
2024-05-18 09:29:29 +00:00
Tim-Philipp Müller
10e0294d5a
rtp: opus: fix payloader caps query handling and add tests
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1571 >
2024-05-18 09:29:29 +00:00
Tim-Philipp Müller
61523baa7b
rtp: opus: add minimal depayload / re-payload test
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1571 >
2024-05-18 09:29:29 +00:00
Tim-Philipp Müller
6f871e6ce2
rtp: opus: add simple payload / depayload test
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1571 >
2024-05-18 09:29:29 +00:00
Tim-Philipp Müller
92c0cf1285
rtp: opus: add test for payloader dtx packet handling
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1571 >
2024-05-18 09:29:29 +00:00
Tim-Philipp Müller
2585639054
rtp: Add Opus RTP payloader/depayloader
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1571 >
2024-05-18 09:29:29 +00:00
Sebastian Dröge
539000574b
aws: Update to base32 0.5
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1576 >
2024-05-17 07:50:51 +00:00
Robert Ayrapetyan
bac5845be1
webrtc: add support for insecure tls connections
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1553 >
2024-05-16 19:34:57 +00:00
Martin Nordholts
9a7f37e2b7
rtpgccbwe: Support linear regression based delay estimation
...
In our tests, the slope (found with linear regression) on a
history of the (smoothed) accumulated inter-group delays
gives a more stable congestion control. In particular,
low-end devices becomes less sensitive to spikes in
inter-group delay measurements.
This flavour of delay based bandwidth estimation with Google
Congestion Control is also what Chromium is using.
To make it easy to experiment with the new estimator, as
well as add support for new ones in the future, also add
infrastructure for making delay estimator flavour selectable
at runtime.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1566 >
2024-05-14 16:25:48 +00:00
Martin Nordholts
71e9c2bb04
rtpgccbwe: Also log self.measure
in overuse_filter()
...
Also log `self.measure` in overuse_filter() since tracking
`self.measure` over time help a lot in making sense of
`self.estimate` (and `amplified_estimate`).
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1566 >
2024-05-14 16:25:48 +00:00
Martin Nordholts
d9aa0731f4
rtpgccbwe: Rename variable t
to amplified_estimate
...
We normally multiply `self.estimate` with `MAX_DELTAS` (60).
Rename the variables that holds the result of this
calculation to `amplified_estimate` to make the distinction
clearer.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1566 >
2024-05-14 16:25:48 +00:00
Tamas Levai
71cd80f204
net/quinn: Enable client to keep QUIC conn alive
...
Co-authored-by: Felician Nemeth <nemethf@tmit.bme.hu>
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1568 >
2024-05-11 08:51:00 +02:00
Sebastian Dröge
613ed56675
webrtcsink: Add a custom signaller example in Python
...
This re-implements the default webrtcsink/src signalling protocol in
Python for demonstration purposes.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1569 >
2024-05-10 15:59:12 +00:00
Martin Nordholts
a719cbfcc6
rtp: Change RtpBasePay2::ssrc_collision from AtomicU64 to Option<u32>
...
Rust targets without support for `AtomicU64` is still
somewhat common. Running
git grep -i 'max_atomic_width: Some(32)' | wc -l
in the Rust compiler repo currently counts to 34 targets.
Change the `RtpBasePay2::ssrc_collision` from `AtomicU64` to
`Mutex<Option<u32>>`. This way we keep support for these
targets.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1562 >
2024-05-10 14:23:41 +00:00
Martin Nordholts
aabb011f5a
rtpgccbwe: Log effective bitrate in more places
...
While monitoring and debugging rtpgccbwe, it is very helpful
to get continuous values of what it considers the effective
bitrate. Right now such prints will stop coming once the
algorithm stabilizes. Print it in more places so it keeps
coming. Use the same format to make it simpler to extract
the values by parsing the logs.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1567 >
2024-05-10 11:56:51 +00:00
Martin Nordholts
e845e3575c
rtpgccbwe: Add mising 'ps' suffix to 'kbps' of 'effective bitrate'
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1567 >
2024-05-10 11:56:51 +00:00
Sebastian Dröge
e8e173d0d0
webrtc: Update Signallable interface to new interface definition API
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1570 >
2024-05-10 14:13:55 +03:00
Sebastian Dröge
7e09481adc
rtp: Add JPEG RTP payloader/depayloader
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1543 >
2024-05-10 11:12:49 +03:00
Sanchayan Maity
fe55acb4c9
net/hlssink3: Refactor out HlsBaseSink & hlscmafsink from hlssink3
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1564 >
2024-05-09 21:50:32 +05:30
Tamas Levai
5884c00bd0
net/quinn: Improve stream shutdown process
...
Co-authored-by: Sanchayan Maity <sanchayan@asymptotic.io>
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1565 >
2024-05-09 16:43:26 +02:00
Tamas Levai
13c3db7857
net/quinn: Port to quinn 0.11 and rustls 0.23
...
Co-authored-by: Felician Nemeth <nemethf@tmit.bme.hu>
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1565 >
2024-05-09 13:49:33 +02:00
Martin Nordholts
2b7488a4c8
rtpgccbwe: Log delay and loss target bitrates separately
...
When debugging rtpgccbwe it is helpful to know if it is
delay based or loss based band-width estimation that puts a
bound on the current target bitrate, so add logs for that.
To minimize the time we need to hold the state lock, perform
the logging after we have released the state lock.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1561 >
2024-05-08 19:12:44 +00:00
Mathieu Duponchelle
8861fc493b
webrtcsink: improve error when no discovery pipeline runs
...
If for instance no encoder was found or the RTP plugin was missing,
it is possible that no discovery pipeline will run for a given stream.
Provide a more helpful error message for that case.
Fixes: https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/534
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1560 >
2024-05-06 11:39:48 +00:00
Sanchayan Maity
3a3cec96ff
net/quinn: Add pipeline example
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1558 >
2024-05-02 16:39:29 +00:00
Sanchayan Maity
80f8664564
net/quinn: Use camel case acronym
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1558 >
2024-05-02 16:39:29 +00:00
Sebastian Dröge
be3ae583bc
Fix new Rust 1.78 clippy warnings
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1559 >
2024-05-02 18:36:23 +03:00
Sebastian Dröge
58106a42a9
quinn: Fix up dependencies
2024-05-02 09:59:55 +03:00
Sanchayan Maity
150ad7a545
net/quinn: Use separate property for certificate & private key file
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1036 >
2024-05-01 22:30:23 +05:30
Sanchayan Maity
0d2f054c15
Move net/quic to net/quinn
...
While at it, add this to meson.build.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1036 >
2024-05-01 22:30:23 +05:30
Sanchayan Maity
18cf5292b7
net/quic: Fix inconsistencies around secure connection handling
...
This set of changes implements the below fixes:
- Allow certificates to be specified for client/quicsink
- Secure connection being true on server/quicsrc and false on
client/quicsink still resulted in a successful connection
instead of server rejecting the connection
- Using secure connection with ALPN was not working
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1036 >
2024-05-01 18:09:16 +05:30
Sanchayan Maity
97d8a79d36
net/quic: Drop private key type property
...
Use read_all helper from rustls_pemfile and drop the requirement for the
user having to specify the private key type.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1036 >
2024-05-01 18:09:16 +05:30
Sanchayan Maity
a306b1ce94
net/quic: Use a custom ALPN string
...
`h3` does not make sense as the default ALPN, as there likely isn't
going to be a HTTP/3 application layer, especially as our transport
is unidirectional for now. Use a custom string `gst-quinn` for now.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1036 >
2024-05-01 18:09:16 +05:30
Sanchayan Maity
22c6a98914
net/quic: Rename to quinnquicsink/src
...
There might be other QUIC elements in the future based on other
libraries. To prevent namespace collision, namespace the elements
with `quinn` prefix.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1036 >
2024-05-01 18:09:16 +05:30
Sanchayan Maity
8b64c734e7
net/quic: Use separate property for address and port
...
While at it, do not duplicate call to settings lock in property
getter and setter for every property.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1036 >
2024-05-01 18:01:49 +05:30
Tamas Levai
befd8d4bd2
net/quic: Allow SSL keylog file for debugging
...
rustls has a KeyLog implementation that opens a file whose name is
given by the `SSLKEYLOGFILE` environment variable, and writes keys
into it. If SSLKEYLOGFILE is not set, this does nothing.
See
https://docs.rs/rustls/latest/rustls/struct.KeyLogFile.html
https://docs.rs/rustls/latest/rustls/trait.KeyLog.html
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1036 >
2024-05-01 18:01:49 +05:30
Sanchayan Maity
ce930eab5f
net/quic: Allow setting multiple ALPN transport parameters
...
For reference, see
https://datatracker.ietf.org/doc/html/rfc9000#section-7.4
https://datatracker.ietf.org/doc/html/rfc7301
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1036 >
2024-05-01 18:01:49 +05:30
Tamas Levai
75b25d011f
net/quic: Allow specifying an ALPN transport parameter
...
See https://datatracker.ietf.org/doc/html/rfc9000#section-7.4 .
This controls the Transport Layer Security (TLS) extension for
application-layer protocol negotiation within the TLS handshake.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1036 >
2024-05-01 18:01:49 +05:30
Sanchayan Maity
953f6a3fd7
net: Add QUIC source and sink
...
To test, run receiver as
```bash
gst-launch-1.0 -v -e quicsrc caps=audio/x-opus use-datagram=true ! opusparse ! opusdec ! audio/x-raw,format=S16LE,rate=48000,channels=2,layout=interleaved ! audioconvert ! autoaudiosink
```
run sender as
```bash
gst-launch-1.0 -v -e audiotestsrc num-buffers=512 ! audio/x-raw,format=S16LE,rate=48000,channels=2,layout=interleaved ! opusenc ! quicsink use-datagram=true
```
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1036 >
2024-05-01 18:01:49 +05:30
François Laignel
16b0a4d762
rtp: add mp4gpay
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1551 >
2024-04-29 13:33:42 +00:00
François Laignel
b588ee59bc
rtp: add mp4gdepay
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1551 >
2024-04-29 13:33:42 +00:00
François Laignel
5466cafc24
rtp: add mp4apay
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1551 >
2024-04-29 13:33:42 +00:00
François Laignel
812fe0a9bd
rtp: add mp4adepay
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1551 >
2024-04-29 13:33:42 +00:00
Sebastian Dröge
7573caa8e9
rtpgccbwe: Move away from deprecated time::Instant to std::time::Instant
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1554 >
2024-04-25 15:37:28 +03:00