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
361152d884
Update versions to 0.10.8
2023-06-07 00:54:32 +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
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
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
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
David Revay
5bb65d3e33
chore(webrtcsink): fix max-bitrate blurb and nick
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1160 >
2023-04-05 15:12:39 +00:00
Vivia Nikolaidou
f15fd82f83
webrtcsink: Add ice-transport-policy option
...
Can be used to force relay ICE candidates, ensuring TURN server is used.
Proxy to the corresponding setting in webrtcbin,
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1160 >
2023-04-05 15:12:39 +00:00
Sebastian Dröge
67de191be2
Update versions to 0.10.5
2023-03-19 18:40:49 +02:00
Sebastian Dröge
751a4c7597
Update versions to 0.10.4
2023-03-14 14:01:04 +02:00
Thibault Saunier
ffd70356c1
Add a webrtcsrc element
...
Updating the docker image to include:
https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3236
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1118 >
2023-03-02 14:14:59 +02:00
Sebastian Dröge
20b18c23e6
Update versions to 0.10.3
2023-03-02 13:27:22 +02:00
Thibault Saunier
528f46a510
webrtcsink: Move RUNTIME to the crate so it can be reused
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1115 >
2023-03-02 11:00:23 +02:00
Thibault Saunier
8b8f10691c
webrtc: Enhance debug messages when using unknown peer ID
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1115 >
2023-03-02 11:00:23 +02:00
Matthew Waters
84bae8b9cf
webrtcsink: also support nvvidconv in lieu of nvvideoconvert
...
nvvideoconvert may not exist and nvvidconv might on some Jetson
platforms.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1115 >
2023-03-02 10:50:19 +02:00
Sebastian Dröge
f22b3420b6
Update versions to 0.10.2
2023-02-23 10:07:43 +02:00
Sebastian Dröge
73a5703eeb
Update versions to 0.10.1
2023-02-13 11:52:37 +02:00
Sebastian Dröge
a4d5a35403
Update to async-tungstenite 0.20
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1091 >
2023-02-11 19:44:01 +02:00
Sebastian Dröge
f3c1a91fb9
Add versions to local dependencies
2023-02-10 00:36:22 +02:00
Sebastian Dröge
6df679d69f
Update to gtk-rs-core 0.17, gtk4-rs 0.6 and gstreamer-rs 0.20 branches
2023-02-10 00:33:25 +02:00
Sebastian Dröge
85bf8d6c63
Update versions to 0.10.0
2023-02-10 00:26:24 +02:00
Sebastian Dröge
560bdc4cb7
Update for glib API changes
2023-01-31 12:24:07 +02:00
Sebastian Dröge
3b4c48d9f5
Fix various new clippy warnings
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1062 >
2023-01-25 10:31:19 +02:00
Sebastian Dröge
2c386fb792
Update for various deprecated APIs
2023-01-22 20:07:26 +02:00
Sebastian Dröge
4582ae91ab
Move remaining plugins to ParamSpec
builders
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1054 >
2023-01-21 18:34:55 +02:00
Sebastian Dröge
812df78b75
webrtcbin: Update for StreamProducer
API changes
2023-01-16 16:36:41 +02:00
Sebastian Dröge
6132788b02
Update for caps/structure-related string API changes
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1048 >
2023-01-15 22:58:44 +02:00
Mathieu Duponchelle
1a8abde884
webrtcsink: fix panic on pre-bwe request error
...
We dispose of consumer pipelines asynchronously, potentially after the
session objects have been disposed of.
As session objects are the owner of the cc element, it is entirely
possible for the bwe-request signal to get emitted after cc has been
disposed of, as the closure only takes a weak reference to it.
Fix by simply checking if cc is None
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1044 >
2023-01-11 15:09:45 +00:00
Sebastian Dröge
27435ad82e
Update for API changes
2023-01-05 12:33:54 +02:00
Zhao, Gang
9fa838e366
webrtc: Fix rustfmt errors
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1019 >
2022-12-27 11:12:54 +02:00
Zhao, Gang
877a9bd7f3
webrtc: Share runtime between webrtcsink and signaller crates
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1019 >
2022-12-26 23:10:40 +00:00
Zhao, Gang
1ffeb4d44d
webrtc: Move from async-std to tokio
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1019 >
2022-12-26 23:10:40 +00:00
Zhao, Gang
2bc29c1fd3
webrtc: examples: Update package-lock.json
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1019 >
2022-12-26 23:10:40 +00:00
Mathieu Duponchelle
e5360ff431
webrtc/README: update command to run the signalling server
...
Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/277
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1012 >
2022-12-13 12:47:26 +01:00