gst-plugins-rs merge requestshttps://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests2019-07-05T14:03:16Zhttps://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/136Writing tests for reqwesthttpsrc2019-07-05T14:03:16ZSajeer AhamedWriting tests for reqwesthttpsrchttps://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/236WIP: Use dav1d as subproject2024-01-19T08:09:56ZXavier Claessensxclaesse@gmail.comWIP: Use dav1d as subprojectThis is blocked by:
* [x] Meson 0.54.0 release for https://github.com/mesonbuild/meson/pull/4436
* [x] https://code.videolan.org/videolan/dav1d/merge_requests/878
* [x] Add dav1d.wrap in gst-build: https://gitlab.freedesktop.org/gstreame...This is blocked by:
* [x] Meson 0.54.0 release for https://github.com/mesonbuild/meson/pull/4436
* [x] https://code.videolan.org/videolan/dav1d/merge_requests/878
* [x] Add dav1d.wrap in gst-build: https://gitlab.freedesktop.org/gstreamer/gst-build/-/merge_requests/130https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/98WIP: sodium/encrypter: Implement and test position query2019-05-09T11:20:00ZSebastian DrögeWIP: sodium/encrypter: Implement and test position queryhttps://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/101WIP: CI: add basic clippy job2019-07-04T15:31:12ZJordan PetridіsWIP: CI: add basic clippy jobhttps://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/160WIP: add automatic-redirect2019-08-17T09:30:07ZSajeer AhamedWIP: add automatic-redirect* introduce automatic-redirect property like in souphttpsrc* introduce automatic-redirect property like in souphttpsrchttps://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1223whipsink: Request pads with webrtcbin's pad templates and not our own2023-07-20T11:47:18ZSebastian Drögewhipsink: Request pads with webrtcbin's pad templates and not our ownIt's invalid to request pads with a pad template that is not part of the
element, and results in a critical warning.It's invalid to request pads with a pad template that is not part of the
element, and results in a critical warning.GStreamer Marge Botgitlab-merge-bot@gstreamer-foundation.orgGStreamer Marge Botgitlab-merge-bot@gstreamer-foundation.orghttps://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/916whipsink: Log error body along with status code when POST fails2022-10-18T16:22:00ZArun Raghavanwhipsink: Log error body along with status code when POST failshttps://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/950whipsink: Add object to debug logs2022-10-27T14:24:03ZSebastian Drögewhipsink: Add object to debug logshttps://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/835WhipSink: A bin for WHIP2022-09-02T21:40:00ZTaruntej KanakamallaWhipSink: A bin for WHIPWorking version with asynchronous HTTP calls.
Performs an HTTP request to exchange SDP offer/answer with a given endpoint which supports WHIP. Once the local and remote description are set to the webrtcbin (child element) the stream gets...Working version with asynchronous HTTP calls.
Performs an HTTP request to exchange SDP offer/answer with a given endpoint which supports WHIP. Once the local and remote description are set to the webrtcbin (child element) the stream gets added as send-only (unidirectional)
Example Pipeline:
`gst-launch-1.0 filesrc location=~/Videos/sintel_trailer-1080p.mp4 ! decodebin name=decoder ! queue ! video/x-raw ! videoconvert ! queue ! vp8enc deadline=1 ! rtpvp8pay ! queue ! whipsink name=ws use-link-headers=true auth-token="hellothere" whip-endpoint="http://localhost:8080" decoder. ! queue ! audio/x-raw ! opusenc ! rtpopuspay ! queue ! ws.`
Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1410https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1297webrtc: Use `#[repr(C)]` to get a C-compatible layout for the `Signaller` struct2023-08-09T08:00:21ZSebastian Drögewebrtc: Use `#[repr(C)]` to get a C-compatible layout for the `Signaller` structThis is required by GObject for class/interface and instance structs and
the reason why implementing the `glib::ObjectInterface` trait is unsafe.
Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/397This is required by GObject for class/interface and instance structs and
the reason why implementing the `glib::ObjectInterface` trait is unsafe.
Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/397GStreamer Marge Botgitlab-merge-bot@gstreamer-foundation.orgGStreamer Marge Botgitlab-merge-bot@gstreamer-foundation.orghttps://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1293webrtc: Update to livekit 0.22023-11-10T14:17:16ZSebastian Drögewebrtc: Update to livekit 0.2Needs fixing for the new API. Not obvious to me what the replacement is without reading how the API actually works.
```
error[E0599]: no variant or associated item named `Open` found for enum `SignalEvent` in the current scope
--> ne...Needs fixing for the new API. Not obvious to me what the replacement is without reading how the API actually works.
```
error[E0599]: no variant or associated item named `Open` found for enum `SignalEvent` in the current scope
--> net/webrtc/src/livekit_signaller/imp.rs:100:49
|
100 | signal_client::SignalEvent::Open => {}
| ^^^^ variant or associated item not found in `SignalEvent`
error[E0599]: no variant or associated item named `Signal` found for enum `SignalEvent` in the current scope
--> net/webrtc/src/livekit_signaller/imp.rs:101:49
|
101 | signal_client::SignalEvent::Signal(signal) => {
| ^^^^^^ variant or associated item not found in `SignalEvent`
For more information about this error, try `rustc --explain E0599`.
```
CC @ocrete @davidlzhao @theomonnomGStreamer Marge Botgitlab-merge-bot@gstreamer-foundation.orgGStreamer Marge Botgitlab-merge-bot@gstreamer-foundation.orghttps://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1131webrtc: Update to aws 0.54/0.242023-03-14T11:33:08ZSebastian Drögewebrtc: Update to aws 0.54/0.24GStreamer Marge Botgitlab-merge-bot@gstreamer-foundation.orgGStreamer Marge Botgitlab-merge-bot@gstreamer-foundation.orghttps://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1491webrtc: update further to WebRTCSessionDescription sdp accessor changes2024-03-11T15:02:59ZFrançois Laignelwebrtc: update further to WebRTCSessionDescription sdp accessor changesSee: https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/1406See: https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/1406GStreamer Marge Botgitlab-merge-bot@gstreamer-foundation.orgGStreamer Marge Botgitlab-merge-bot@gstreamer-foundation.orghttps://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1355webrtcsrc: use @watch instead of @to-owned2023-11-10T15:16:51ZMaksym Khomenkowebrtcsrc: use @watch instead of @to-owned`@to-owned` increases refcount of the element, which prevents the object from proper destruction, as the initial refcount with `ElementFactory::make` is larger than 1.
Instead, use `@watch` to create a weak reference and unbind the clos...`@to-owned` increases refcount of the element, which prevents the object from proper destruction, as the initial refcount with `ElementFactory::make` is larger than 1.
Instead, use `@watch` to create a weak reference and unbind the closure automatically if the object gets destroyed.
Found when following through this [blog](https://blogs.igalia.com/llepage/webrtc-gstreamer-and-html5-part-1/) example.
```c++
GstElement* elem = gst_element_factory_make("webrtcsrc", nullptr);
GObject* signaller = nullptr;
g_object_get(elem, "signaller", &signaller, nullptr);
gst_object_unref(elem);
```
This blog's snippet did not quite work as expected, since `gst_object_unref` does not actually destroy the object, which then causes the app to panic, since `elem` is still alive and reacts to `producer-added` event, which it cannot handle in NULL state.
With this fix the element gets destroyed as expected :)GStreamer Marge Botgitlab-merge-bot@gstreamer-foundation.orgGStreamer Marge Botgitlab-merge-bot@gstreamer-foundation.orghttps://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1172webrtcsrc: Return bool en 'end-session' as required2023-04-12T13:30:28ZThibault Sauniertsaunier@igalia.comwebrtcsrc: Return bool en 'end-session' as requiredGStreamer Marge Botgitlab-merge-bot@gstreamer-foundation.orgGStreamer Marge Botgitlab-merge-bot@gstreamer-foundation.orghttps://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1477webrtcsrc: Make producer-peer-id optional2024-03-20T15:03:57ZJordan Yellozwebrtcsrc: Make producer-peer-id optionalThis change modifies the webrtcsrc so that it doesn't require `signaller::producer-peer-id` to be specified. The `request-encoded-filter` gobject signal now has the first argument `producer_id` as nullable and when the element emits the ...This change modifies the webrtcsrc so that it doesn't require `signaller::producer-peer-id` to be specified. The `request-encoded-filter` gobject signal now has the first argument `producer_id` as nullable and when the element emits the signal, it will provide a value of either the producer-peer-id from the signaller or the MSID of the incoming pad as a possible fallback value since some webrtc systems will include information about the peer in the MSID.
The reason for this change is that some signalling clients don't want/need to subscribe to a single peer -- such as LiveKit, where you can subscribe to all the peers in a room -- so the source element doesn't need to depend on it in all situations. The current implementation will just panic if no producer-peer-id is specified on the signaller.GStreamer Marge Botgitlab-merge-bot@gstreamer-foundation.orgGStreamer Marge Botgitlab-merge-bot@gstreamer-foundation.orghttps://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1214webrtcsrc: Fix caps used when creating transceiver2023-05-18T16:02:20ZThibault Sauniertsaunier@igalia.comwebrtcsrc: Fix caps used when creating transceiverWe 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 simplif...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",
},
)
```GStreamer Marge Botgitlab-merge-bot@gstreamer-foundation.orgGStreamer Marge Botgitlab-merge-bot@gstreamer-foundation.orghttps://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1381webrtcsrc: don't restrict RTP extensions to TWCC only2024-01-17T07:59:46ZMaksym Khomenkowebrtcsrc: don't restrict RTP extensions to TWCC onlyThe motivation is the following: right now it is possible to add additional RTP extensions, apart from TWCC, with `webrtcsink` (with some hacks around `request-encoded-filter`, but possible).
However, even though these additional exten...The motivation is the following: right now it is possible to add additional RTP extensions, apart from TWCC, with `webrtcsink` (with some hacks around `request-encoded-filter`, but possible).
However, even though these additional extensions are then received in an offer, they are dropped by `webrtcsrc` and the caps that are pushed out of its source pad contain only `extmap` for TWCC extension.
This happened because of an additional check in `filter` closure, which only allowed for TWCC extension, basically.
The check was introduced by !1245.
This MR removes this check, but I wonder if there was a reason for this limitation.
If so, we may come with something more advanced, like conditionally enabling additional extensions based on a property value, adding whitelist property to let some extensions pass the filter, and so on.
cc @meh @thiblahuteGStreamer Marge Botgitlab-merge-bot@gstreamer-foundation.orgGStreamer Marge Botgitlab-merge-bot@gstreamer-foundation.orghttps://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1245webrtcsrc: add twcc extension to codec-preferences when present2023-11-06T12:46:05ZMathieu Duponchellewebrtcsrc: add twcc extension to codec-preferences when presentGStreamer Marge Botgitlab-merge-bot@gstreamer-foundation.orgGStreamer Marge Botgitlab-merge-bot@gstreamer-foundation.orghttps://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1380webrtcsrc: add turn-servers property2023-11-10T15:16:52ZMaksym Khomenkowebrtcsrc: add turn-servers propertyAdd (missing?) `turn-servers` property to `webrtcsrc`, symmetrically to `webrtcsink`Add (missing?) `turn-servers` property to `webrtcsrc`, symmetrically to `webrtcsink`GStreamer Marge Botgitlab-merge-bot@gstreamer-foundation.orgGStreamer Marge Botgitlab-merge-bot@gstreamer-foundation.org