Commit graph

7230 commits

Author SHA1 Message Date
Olivier Crête
a931e31141 webrtc lib: Make the datachannel struct private
This will prevent any unsafe access.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2241>
2021-06-21 20:53:09 +00:00
Olivier Crête
a0813c5bd2 webrtc lib: Make the icetransport struct private
This will prevent any unsafe access.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2241>
2021-06-21 20:53:09 +00:00
Olivier Crête
a6593753a5 webrtc lib: Make the rtpsender struct private
This will prevent any unsafe access.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2241>
2021-06-21 20:53:09 +00:00
Olivier Crête
b5f2de3124 webrtc lib: Make the transceiver struct private
This will prevent any unsafe access.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2241>
2021-06-21 20:53:09 +00:00
Mathieu Duponchelle
08323f382c x265enc: add negative DTS support
Use the same set_min_pts approach as x264enc.

Fixes: https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/304
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2340>
2021-06-21 10:31:21 +00:00
Stéphane Cerveau
f30e74bb20 faad: fix typo in element documentation
seealso is now see_also

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2323>
2021-06-21 07:35:26 +00:00
Randy Li (ayaka)
0d746d1022 waylandsink: prevent frame callback being released twice
For those using context from the application which
would be the embedded video case, if the frame callback
is entering at the same time as window is finalizing,
a wayland proxy object would be destroyed twice, leading
the refcout less than zero in the second time, it can
throw an abort() in wayland.

For those top window case, which as a directly connection
to the compositor, they can stop the message queue then
the frame callback won't happen at the same time as the
window is finalizing. It doesn't think it would bother
them about this.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1883>
2021-06-15 16:25:17 -04:00
Stéphane Cerveau
a71ec17cf0 jpeg2000parse, openjpeg: add support for YCrCb 4:1:1 sampling
Add YCrCb 4:1:1 support in openjpeg elements
and fix in jpeg2000parse the YCrCb 4:1:0 support

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2321>
2021-06-14 11:05:45 +02:00
Thibault Saunier
c7684b48d0 wpe: Rename undeserializable_type to not_deserializable_type
Making it more readable.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2273>
2021-06-08 03:15:05 +00:00
Thibault Saunier
da150c18bb wpe: Make forwarded messages layout more like GstBinForwaded messages
Making it look more like how we do this kind of things in other places.

See: https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2252#note_927653
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2273>
2021-06-08 03:15:05 +00:00
Thibault Saunier
f29e75d1da wpe: Make wpesrc!video pad an always pad
There should always be a `video` pad no matter what.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2273>
2021-06-08 03:15:05 +00:00
Thibault Saunier
870d9b8bd6 wpe: Remove unused env var
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2273>
2021-06-08 03:15:05 +00:00
Thibault Saunier
81a0125a97 wpe: Fix atomic usage
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2273>
2021-06-08 03:15:05 +00:00
Thibault Saunier
3ffd78787d wpe: Add a note able requiring tracing subsystem for message forwarding
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2273>
2021-06-08 03:15:05 +00:00
Thibault Saunier
c38e0cfdb0 wpe: Fix check on whether MEMFD_CREATE is available
The ordering of the ifdef was wrong

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2273>
2021-06-08 03:15:05 +00:00
Thibault Saunier
d93131bfee wpe: Plug a leak
We were freeing after returning

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2273>
2021-06-08 03:15:05 +00:00
Thibault Saunier
ca1812f38c Revert "wpe: Properly respect LIBGL_ALWAYS_SOFTWARE"
This causes issues I didn't see:
     https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2252#note_927633

Let's just tell people to use capsfilter to force software rendering in
`wpesrc` for now.

The intent was to allow forcing it easily in playbin2 for the CI, but
we will do it some other way and see when time comes.

This reverts commit 9415106b02.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2273>
2021-06-08 03:15:05 +00:00
Nicolas Dufresne
56b56e43f3 waylandsink: Fix for missing initial configure
We were doing our initial "empty" commit on the subsurface instead of the
toplevel surface. As an incidence, we should not have received a configure
event ever, not just on mutter. This fixes the following warning when using
mutter compositor (aka gnome-shell):

  waylandsink wlwindow.c:304:gst_wl_window_new_toplevel: The compositor did not send configure event.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2299>
2021-06-02 14:17:13 -04:00
Philippe Normand
064428cb34 webrtcbin: Stop transceivers update after first SDP error
When invalid SDP is supplied, _update_transceiver_from_sdp_media() sets the
GError, so it is invalid to continue any further SDP processing, we have to exit
early when the first error is raised.

Fixes #1595

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2254>
2021-05-30 00:16:10 +00:00
Roman Sivriver
0b551382c4 hlssink2: Initialize debug category to prevent an assert with fatal-warnings
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2288>
2021-05-28 17:14:43 -04:00
Tim-Philipp Müller
8e04651b8b Use gst_buffer_new_memdup()
Update for function rename in core.

https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/827

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2281>
2021-05-24 19:05:27 +01:00
Philippe Normand
a0b37e9d1a wpe: Bump wpebackend-fdo version requirement to 1.8
Debian bullseye has this version already, and this allows us to get rid of many
ifdefs. The mouse scroll handling is actually functional now as well.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2278>
2021-05-23 17:18:20 +00:00
Tim-Philipp Müller
0151276d7f Use new gst_buffer_new_copy()
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2279>
2021-05-23 17:20:16 +01:00
Thibault Saunier
818db8f0b3 wpe: Bump WPE dependency to 2.28
The new audio feature depends on WPE 2.28 so we should just bump our
requirement to that.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2264>
2021-05-19 18:50:29 -04:00
Thibault Saunier
c98fe5b7f9 wpe: Update doc cache
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2252>
2021-05-19 13:41:16 +00:00
Thibault Saunier
9415106b02 wpe: Properly respect LIBGL_ALWAYS_SOFTWARE
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2252>
2021-05-19 13:41:15 +00:00
Thibault Saunier
4dbfae0105 wpe: Relay messages from WPE internal pipelines
It is based on a tracer as it allows us to very easily get
every message that are posted on any bus inside the process.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2252>
2021-05-19 13:41:15 +00:00
Thibault Saunier
a92d4373ad wpe: Base wpe audio implementation on a web extension
This makes the implementation simpler and enable us to map
webviews and audio stream much more easily

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2252>
2021-05-19 13:41:15 +00:00
Philippe Normand
81ced7932f wpe: Enable WebAudio
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2252>
2021-05-19 13:41:15 +00:00
Philippe Normand
f4bc5c6c65 wpe: Implement audio support
The wpesrc bin now exposes "sometimes" audio src pads, one for every PCM audio
stream created by WPEWebKit.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2252>
2021-05-19 13:41:15 +00:00
Thibault Saunier
cb4f6c877e wpe: Move wpesrc to wpevideosrc and add a wrapper bin wpesrc
Currently the bin contains a single element but we are going
to implement audio support and expose extra pads for audio

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2252>
2021-05-19 13:41:15 +00:00
Doug Nazar
be1c154f33 sctp: Ensure pad is still a child of element before removal
During pipeline shutdown there are several competing paths to remove
pads. Avoids tests failing due to:

Unexpected critical/warning: Padname '':sink_1 does not belong to element sctpenc1 when removing

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2256>
2021-05-19 05:49:48 +00:00
Doug Nazar
5663db236f sctp: Fix race of pad removal during reset/stop
Both reset & stop remove existing pads. Can result in warning from
gst_element_remove_pad().

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2256>
2021-05-19 05:49:48 +00:00
Doug Nazar
4fcfd5b7f9 webrtcbin: Fix race bringing up sctp data channel
Notifying before pads are linked can cause the stream to fail to start.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2256>
2021-05-19 05:49:48 +00:00
Matthew Waters
a836bd4766 webrtcbin: advertise harder the rtcp-mux-only requirement
And ignore rtcp ICE candidates

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2239>
2021-05-19 04:42:56 +00:00
Sid Sethupathi
abe7e724ed webrtcbin: update default jb latency docs
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2242>
2021-05-19 03:53:55 +00:00
Doug Nazar
20ca07d174 dtls: Let sender know when we are flushing
Prevents endless loop during shutdown where we end up sending 0 bytes.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2229>
2021-05-19 03:21:58 +00:00
Doug Nazar
8b8428aec2 dtls: Add ability to set custom GstFlowReturn on callback error
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2229>
2021-05-19 03:21:58 +00:00
Olivier Crête
3bdf1e691e webrtc: Remove reundundant context object in transportsendbin
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2260>
2021-05-18 20:26:38 -04:00
Olivier Crête
51821644ba webrtc: Wait until ICE is connected to start DTLS handshake process
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2260>
2021-05-18 20:18:28 -04:00
Olivier Crête
b6965e9906 webrtcbin: Remove pad probe on nicesink
This pad probe is no longer necessary, libnice now drops
all buffers before the stream is connected. This pad problem
also caused deadlocks in some situations.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2260>
2021-05-18 19:08:48 -04:00
Olivier Crête
28bd479ea2 kate: Initialize debug categories
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2258>
2021-05-18 13:22:49 +00:00
Olivier Crête
761206291b openh264: Don't use GOnce for ABI check
It turns out the value used for g_once_* APIs can't be
zero. And this is a very cheap check, so let's just do it every time.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2240>
2021-05-13 21:40:02 +00:00
Olivier Crête
f34be8a3bd webrtcbin: Intersect answer with codec prefs & capabilities
In case the local capabilities changed since the last negotiaton,
we need to re-intersect and see if the result would be different.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2183>
2021-05-13 15:05:00 -04:00
Olivier Crête
3065ac49fb webrtcbin: Ignore current caps for codec negotiation
On the sink pad, we want the caps of the current stream, those
are the "received_caps" field. If we haven't received caps yet, then
we only care about the caps that the next element can accept, that is
the caps from the peer pad (and the preferences). Otherwise, we prevent
re-negotiation to a better codec when possible.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2183>
2021-05-13 15:05:00 -04:00
Olivier Crête
4bb94c6970 webrtcbin: Remove dead code
The function is only called to create an offer, so no
need to pass the offer parameter and then check it.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2183>
2021-05-13 15:05:00 -04:00
Olivier Crête
f6345b4b03 webrtcbin: Refactor codec preference retrieval
Now intersect against pads on both sides if they are available.
If the intersection fails, we now just reject the creation of the offer
or answer as it means that the codec_preferences are too restrictive or
that the caps on both sides the webrtcbin are not compatible.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2183>
2021-05-13 15:05:00 -04:00
Olivier Crête
48f4498801 webrtcbin: Intersect codec preferences with caps from pads
When creating an offer or an answer, also take into account
the caps on the pads as well as the codec preferences when both are set.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2183>
2021-05-13 15:05:00 -04:00
Olivier Crête
70befc0b21 webrtcbin: Implement caps queries on sinkpad based on codec preferences
Also includes a unit test.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2183>
2021-05-13 15:05:00 -04:00
Olivier Crête
dc6655542d webrtcbin: Hold transceiver lock when accessing codec_preferences
This is required to allow the applications to modify the preferences.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2183>
2021-05-13 15:05:00 -04:00