Sebastian Dröge
7c59caf3f8
webrtcsink: Fix clippy warning
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1330 >
2023-09-20 19:34:07 +03:00
Sebastian Dröge
26d90191b5
onvifmetadataparse: Skip metadata frames with unrepresentable UTC time
...
Previously we would panic, which causes the element to post an error
message. Instead, simply skip metadata frames if their UTC time since
the UNIX epoch can't be represented as nanoseconds in u64.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1330 >
2023-09-20 19:25:31 +03:00
Seungha Yang
d134e165c5
webrtcsink: Propagate GstContext messages
...
Implement CustomBusStream so that NEED_CONTEXT and HAVE_CONTEXT
messages from session/discovery can be forwarded to parent
pipeline and also GstContext can be shared.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1330 >
2023-09-20 19:24:38 +03:00
Seungha Yang
938d3d73b9
webrtcsink: Add support for d3d11 memory and qsvh264enc
...
Adding d3d11 memory and qsvh264enc support
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1330 >
2023-09-20 19:24:31 +03:00
Robert Ayrapetyan
1ec74d8569
webrtcsink: fix TWCC extension adding
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1330 >
2023-09-20 19:24:06 +03:00
Mathieu Duponchelle
3eab53be85
webrtcsink: don't forget to setup encoders for discoveries
...
The "encoder-setup" signal must also be emitted for the encoders
used in discovery pipelines in order for the default settings to
be applied.
This otherwise meant that for instance the x264 encoder would
use a 60 frames latency, greatly delaying startup.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1330 >
2023-09-20 19:23:09 +03:00
Sebastian Dröge
23e7226c94
webrtcsink: NVIDIA V4L2 encoders always require NVMM memory
...
And if the input is not like that then a corresponding converter must be
inserted.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1330 >
2023-09-20 19:21:27 +03:00
Sebastian Dröge
6393572b37
Update version to 0.10.11
2023-07-20 14:43:13 +03:00
Mathieu Duponchelle
584dff7961
webrtcsink: fix pipeline when input caps contain max-framerate
...
GstVideoInfo uses max-framerate to compute its fps, but this leads
to issues in videorate when framerate is actually 0/1.
Fix this by stripping away max-framerate from input caps
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1286 >
2023-07-19 09:53:00 +03:00
Sebastian Dröge
acff5a9394
webrtcsink: Configure only 4 threads for x264enc
...
More threads can cause more slices to be created, and Chrome simply falls
apart if there are more than a few slices and fails decoding.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1286 >
2023-07-19 09:52:55 +03:00
Sebastian Dröge
369e555e13
webrtcsink: Translate force-keyunit events to force-IDR action signal for NVIDIA encoders
...
NVIDIA's v4l2 encoder elements don't handle the force-keyunit events but
instead provide a custom action signal based API for requesting a
keyframe.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1286 >
2023-07-19 09:52:49 +03:00
Sebastian Dröge
12bb9afd81
webrtcsink: Set config-interval=-1 and aggregate-mode=zero-latency on rtph26[45]pay
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1286 >
2023-07-19 09:52:43 +03:00
Sebastian Dröge
adb113a591
webrtcsink: Set VP8/VP9 payloader based on payloader element factory name
...
Instead of checking the encoder's name. There are more VP8/VP9 encoders
than the ones from the vpx plugin.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1286 >
2023-07-19 09:52:37 +03:00
Sebastian Dröge
4f78e7b92e
Update versions to 0.10.10
2023-07-05 15:53:20 +03:00
Sebastian Dröge
698db4b13e
Correctly declare 1.64 as minimum supported Rust version
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1266 >
2023-07-05 12:36:57 +03:00
Sebastian Dröge
0c3def8b9e
webrtcink: Use correct property types for nvvideoconvert
...
These are enums and not plain integers.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1266 >
2023-07-05 12:36:08 +03:00
Mathieu Duponchelle
12f1f5b097
webrtc/signalling: fix race condition in message ordering
...
Spawning one task per message to send out instead of sending them out
sequentially from the one task used to poll the handler sometimes
resulted in peers receiving ICE candidates before SDP offers, triggering
hard to understand errors in the browser.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1253 >
2023-06-20 22:27:06 +02:00
Mathieu Duponchelle
d3cda3dd3a
webrtcsink: avoid panic on unprepare from an async tokio context
...
.. and log an error with advice on how to dispose of elements properly
from a tokio runtime.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1253 >
2023-06-20 22:24:28 +02:00
Sebastian Dröge
ab8525451a
Update versions to 0.10.9
2023-06-19 20:43:14 +03:00
Mathieu Duponchelle
927c3e9bdf
webrtcsink: don't try to use cudaconvert if not present
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1248 >
2023-06-19 18:48:08 +03:00
Mathieu Duponchelle
dbd8946608
webrtcsrc: add twcc extension to codec-preferences when present
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1248 >
2023-06-19 18:46:23 +03:00
Sebastian Dröge
aa799bc26c
webrtc: Update to fastrand 2
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1248 >
2023-06-19 18:43:36 +03:00
Sebastian Dröge
bea00c7413
Use MPL as license specifier for plugins only requiring GStreamer < 1.20
...
And use MPL-2.0 for all that require GStreamer 1.20 or newer. The new
string is only allowed in 1.20 or newer and using it in older versions
causes failure to load the plugin.
All affected plugins are of course still MPL-2.0 licensed.
Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/374
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1248 >
2023-06-19 18:42:12 +03:00
Sebastian Dröge
361152d884
Update versions to 0.10.8
2023-06-07 00:54:32 +03:00
Mathieu Duponchelle
1edf4a144e
net/aws/transcriber: track discont offset in input stream
...
and add it up to subsequent transcripts.
This ensures synchronization is maintained even after the input stream
experiences a discontinuity and a gap in its timestamps.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1233 >
2023-06-06 22:16:55 +02:00
Edward Hervey
18773a9df1
rtpgccbwe: Improve packet handling
...
Both the delay-based *and* loss-based estimates should be computed instead of
just one. This ensures faster adaptation.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1233 >
2023-06-06 22:43:33 +03:00
Sebastian Dröge
e8e247d1ed
net: Update to AWS SDK 0.28
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1233 >
2023-06-06 22:41:20 +03:00
Sebastian Dröge
70f92ddbf7
whipsink: Request pads with webrtcbin's pad templates and not our own
...
It's invalid to request pads with a pad template that is not part of the
element, and results in a critical warning.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1233 >
2023-06-06 22:40:01 +03:00
Mathieu Duponchelle
da51c3a58b
webrtcsink: further refactor connection to stats signals
...
- Stop passing webrtcbin around without using it
- Stop using glib::closure as clippy complains when using a unit type
default-return
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1233 >
2023-06-06 22:38:19 +03:00
Mathieu Duponchelle
2bb0a666a8
webrtcsink: fix stats_sigid logic
...
First off, we just created the session, we know stats_sigid is None
at this point.
Second, don't first assign the result of connecting on-new-ssrc to the
field, then the result of connection twcc-stats, that simply doesn't
make sense.
Finally, actually check that stats_sigid *is* None before connecting
twcc-stats, as I understand it this must have been the original
intention / behavior.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1233 >
2023-06-06 22:36:51 +03:00
Mathieu Duponchelle
77f003f699
webrtcsink: don't panic in twcc-stats callback
...
If webrtcbin was disposed of at this point, simply return
Fixes: https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/345
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1233 >
2023-06-06 22:36:44 +03:00
François Laignel
b8b718fe62
webrtcsink: remove unneeded mut
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1233 >
2023-06-06 22:34:55 +03:00
Thibault Saunier
c1d6094bc4
webrtcsrc: Do not pass raw caps in the transceiver
...
That was not making sense.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1215 >
2023-05-18 18:25:44 +03:00
Thibault Saunier
0e447a9316
webrtcsrc: Fix caps used when creating transceiver
...
We used to pass all media keys and attributes to the caps which
incorrect. Instead we should be using only the keys from the map
and remove all information related to rtcp which is irrelevant
to create the transceiver.
This also simplifies the code.
New caps look like:
```
Caps(
application/x-rtp(memory:SystemMemory) {
media: (gchararray) "video",
payload: (gint) 96,
clock-rate: (gint) 90000,
encoding-name: (gchararray) "VP8",
},
application/x-rtp(memory:SystemMemory) {
media: (gchararray) "video",
payload: (gint) 102,
clock-rate: (gint) 90000,
encoding-name: (gchararray) "H264",
packetization-mode: (gchararray) "1",
profile: (gchararray) "baseline",
},
application/x-rtp(memory:SystemMemory) {
media: (gchararray) "video",
payload: (gint) 104,
clock-rate: (gint) 90000,
encoding-name: (gchararray) "H264",
packetization-mode: (gchararray) "0",
profile: (gchararray) "baseline",
},
application/x-rtp(memory:SystemMemory) {
media: (gchararray) "video",
payload: (gint) 106,
clock-rate: (gint) 90000,
encoding-name: (gchararray) "H264",
packetization-mode: (gchararray) "1",
profile: (gchararray) "constrained-baseline",
},
application/x-rtp(memory:SystemMemory) {
media: (gchararray) "video",
payload: (gint) 108,
clock-rate: (gint) 90000,
encoding-name: (gchararray) "H264",
packetization-mode: (gchararray) "0",
profile: (gchararray) "constrained-baseline",
},
application/x-rtp(memory:SystemMemory) {
media: (gchararray) "video",
payload: (gint) 127,
clock-rate: (gint) 90000,
encoding-name: (gchararray) "H264",
packetization-mode: (gchararray) "1",
profile: (gchararray) "main",
},
application/x-rtp(memory:SystemMemory) {
media: (gchararray) "video",
payload: (gint) 39,
clock-rate: (gint) 90000,
encoding-name: (gchararray) "H264",
packetization-mode: (gchararray) "0",
profile: (gchararray) "main",
},
application/x-rtp(memory:SystemMemory) {
media: (gchararray) "video",
payload: (gint) 98,
clock-rate: (gint) 90000,
encoding-name: (gchararray) "VP9",
profile-id: (gchararray) "0",
},
application/x-rtp(memory:SystemMemory) {
media: (gchararray) "video",
payload: (gint) 100,
clock-rate: (gint) 90000,
encoding-name: (gchararray) "VP9",
profile-id: (gchararray) "2",
},
)
```
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1215 >
2023-05-18 18:25:44 +03:00
Sebastian Dröge
573307b32e
Update version to 0.10.7
2023-05-09 20:44:27 +03:00
Sebastian Dröge
41ea793fd8
Update to AWS SDK 0.27 and async-tungstenite 0.22
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1203 >
2023-05-09 16:00:00 +03:00
François Laignel
91fe56468a
net/webrtc: src: add signal "request-encoded-filter"
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1176 >
2023-05-02 15:22:43 +02:00
François Laignel
2b6a908911
net/webrtc: sink: add signal "request-encoded-filter"
...
The new "request-encoded-filter" signal is emitted when the encoder and related
elements are added to the pipeline. When defined, the element returned by the
signal is inserted between the encoder and the payloader.
The transformation can be reverted using the [insertable streams API] on the
receiver side.
[insertable streams API]: https://developer.mozilla.org/en-US/docs/Web/API/Insertable_Streams_for_MediaStreamTrack_API
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1176 >
2023-05-02 15:22:43 +02:00
François Laignel
0e6b9df932
net/webrtc: sink: abort stats collection before stopping the Signaller
...
In some rare cases, the webrtc-test entered a deadlock while executing
`WebRTCSink::unprepare`. Attaching gdb to a blocked instance showed:
* `gstrswebrtc::signaller:👿 :Signaller::stop()` parked, waiting for a
`Condvar` in `Signaller::stop()`. This was most likely awaiting for the
receive task to complete while it was locked in `element.end_session()`.
This code path is triggered from `unprepare` with the `State` `Mutex` locked.
* `webrtcsink:👿 :WebRtcSink::process_stats` waiting for a contended `Mutex`,
which is also the `State` `Mutex`. This prevented completion of the signal
`gst_webrtc_bin_get_stats`.
This commit aborts the task in charge of periodically collecting stats and
ensures any remaining iteration completes before requesting the Signaller to
stop.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1176 >
2023-05-02 15:22:43 +02:00
François Laignel
2cb1fd7fc1
net/webrtc: src: don't set stun-server on webrtcbin when our property is None
...
... otherwise an error occurs about the stun-server address being an empty
string which doesn't comply with the expected address format.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1176 >
2023-04-30 13:04:26 +02:00
Sebastian Dröge
a29769789f
Update async-tungstenite and AWS SDK dependencies
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1189 >
2023-04-22 12:18:44 +03:00
Sebastian Dröge
1db07fe451
aws: Update to AWS SDK 0.55/0.25
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1189 >
2023-04-22 12:18:44 +03:00
Sebastian Dröge
5c580709ee
Fix a couple of new Rust 1.69 clippy warnings
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1189 >
2023-04-22 12:18:44 +03:00
Edward Hervey
a76330e76c
rtpgccbwe: Don't process empty lists
...
The structure parsing could result in an empty vector. Don't do any processing
since the loss code assumes it's non-empty for average estimates which would
result in weird/invalid results.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1189 >
2023-04-22 11:56:37 +03:00
Sebastian Dröge
33be56bd26
net: ndi: Update to libloading 0.8
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1189 >
2023-04-22 11:56:13 +03:00
François Laignel
d2db786136
net/webrtc: backport the serial-sorted WebRtcSink pad request
...
This is a partial backport of [#58439204 ] to get predictable track order.
With this commit, we are sure the `mid`s sequence in the Sdp offer will reflect
the order by which the `webrtcsink` pads were requested.
[#58439204 ]: 584392049c
2023-04-20 15:09:43 +02:00
Sebastian Dröge
48ffd4eb49
Update versions to 0.10.6
2023-04-06 11:24:25 +03:00
Sebastian Dröge
0d8a5245b0
ndisrc: Fix copying of raw video frames with different NDI/GStreamer strides
...
And also don't copy each line twice for single-plane formats.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1160 >
2023-04-05 15:12:40 +00:00
Tim-Philipp Müller
198477e63b
git: replace LICENSE file symlinks with copies
...
Git will de-duplicate the contents for us anyway, and
symlinks can cause problems with some versions of git
and also on Windows.
https://github.com/mesonbuild/meson/issues/11646
https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4326
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1160 >
2023-04-05 15:12:40 +00:00
Mathieu Duponchelle
525e3afe70
webrtcsink: fix calculation of fec_ratio with multiple encoders
...
In this context, the bitrate variable is for all encoders, but the
max_bitrate field is per encoder. To calculate a proper FEC ratio, we
need to scale max_bitrate to the number of encoders.
+ Also clamp the fec-percentage that we set on the transceiver for extra
safety
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1160 >
2023-04-05 15:12:40 +00:00