summaryrefslogtreecommitdiff
path: root/ext
Commit message (Collapse)AuthorAgeFilesLines
* wpe: Rename `undeserializable_type` to `not_deserializable_type`Thibault Saunier2021-06-081-4/+4
| | | | | | Making it more readable. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2273>
* wpe: Make forwarded messages layout more like GstBinForwaded messagesThibault Saunier2021-06-083-51/+61
| | | | | | | 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>
* wpe: Make wpesrc!video pad an always padThibault Saunier2021-06-081-26/+20
| | | | | | There should always be a `video` pad no matter what. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2273>
* wpe: Remove unused env varThibault Saunier2021-06-081-4/+0
| | | | Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2273>
* wpe: Fix atomic usageThibault Saunier2021-06-081-2/+1
| | | | Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2273>
* wpe: Add a note able requiring tracing subsystem for message forwardingThibault Saunier2021-06-081-0/+2
| | | | Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2273>
* wpe: Fix check on whether MEMFD_CREATE is availableThibault Saunier2021-06-081-1/+2
| | | | | | The ordering of the ifdef was wrong Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2273>
* wpe: Plug a leakThibault Saunier2021-06-082-3/+7
| | | | | | We were freeing after returning Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2273>
* Revert "wpe: Properly respect LIBGL_ALWAYS_SOFTWARE"Thibault Saunier2021-06-081-15/+13
| | | | | | | | | | | | | | | 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 9415106b029e5469ca28d882dc46ecc38786d4c9. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2273>
* waylandsink: Fix for missing initial configureNicolas Dufresne2021-06-021-1/+1
| | | | | | | | | | | 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>
* webrtcbin: Stop transceivers update after first SDP errorPhilippe Normand2021-05-301-0/+2
| | | | | | | | | | 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>
* hlssink2: Initialize debug category to prevent an assert with `fatal-warnings`Roman Sivriver2021-05-281-1/+4
| | | | Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2288>
* Use gst_buffer_new_memdup()Tim-Philipp Müller2021-05-247-8/+10
| | | | | | | | 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>
* wpe: Bump wpebackend-fdo version requirement to 1.8Philippe Normand2021-05-235-83/+4
| | | | | | | 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>
* Use new gst_buffer_new_copy()Tim-Philipp Müller2021-05-237-23/+14
| | | | Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2279>
* wpe: Bump WPE dependency to 2.28Thibault Saunier2021-05-192-2/+2
| | | | | | | 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>
* wpe: Update doc cacheThibault Saunier2021-05-192-55/+51
| | | | Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2252>
* wpe: Properly respect LIBGL_ALWAYS_SOFTWAREThibault Saunier2021-05-191-13/+15
| | | | Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2252>
* wpe: Relay messages from WPE internal pipelinesThibault Saunier2021-05-196-2/+284
| | | | | | | 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>
* wpe: Base wpe audio implementation on a web extensionThibault Saunier2021-05-1912-100/+577
| | | | | | | 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>
* wpe: Enable WebAudioPhilippe Normand2021-05-191-0/+3
| | | | Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2252>
* wpe: Implement audio supportPhilippe Normand2021-05-198-30/+384
| | | | | | | 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>
* wpe: Move wpesrc to wpevideosrc and add a wrapper bin `wpesrc`Thibault Saunier2021-05-198-161/+402
| | | | | | | 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>
* sctp: Ensure pad is still a child of element before removalDoug Nazar2021-05-191-1/+4
| | | | | | | | | 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>
* sctp: Fix race of pad removal during reset/stopDoug Nazar2021-05-191-1/+4
| | | | | | | 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>
* webrtcbin: Fix race bringing up sctp data channelDoug Nazar2021-05-191-1/+2
| | | | | | 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>
* webrtcbin: advertise harder the rtcp-mux-only requirementMatthew Waters2021-05-192-0/+9
| | | | | | And ignore rtcp ICE candidates Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2239>
* webrtcbin: update default jb latency docsSid Sethupathi2021-05-191-1/+5
| | | | Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2242>
* dtls: Let sender know when we are flushingDoug Nazar2021-05-191-0/+5
| | | | | | 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>
* dtls: Add ability to set custom GstFlowReturn on callback errorDoug Nazar2021-05-192-3/+25
| | | | Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2229>
* webrtc: Remove reundundant context object in transportsendbinOlivier Crête2021-05-182-93/+55
| | | | Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2260>
* webrtc: Wait until ICE is connected to start DTLS handshake processOlivier Crête2021-05-182-8/+44
| | | | Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2260>
* webrtcbin: Remove pad probe on nicesinkOlivier Crête2021-05-182-35/+0
| | | | | | | | 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>
* kate: Initialize debug categoriesOlivier Crête2021-05-185-10/+10
| | | | Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2258>
* openh264: Don't use GOnce for ABI checkOlivier Crête2021-05-131-16/+8
| | | | | | | 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>
* webrtcbin: Intersect answer with codec prefs & capabilitiesOlivier Crête2021-05-131-4/+19
| | | | | | | 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>
* webrtcbin: Ignore current caps for codec negotiationOlivier Crête2021-05-131-2/+0
| | | | | | | | | | 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>
* webrtcbin: Remove dead codeOlivier Crête2021-05-131-13/+8
| | | | | | | 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>
* webrtcbin: Refactor codec preference retrievalOlivier Crête2021-05-132-45/+103
| | | | | | | | | 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>
* webrtcbin: Intersect codec preferences with caps from padsOlivier Crête2021-05-131-9/+29
| | | | | | | 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>
* webrtcbin: Implement caps queries on sinkpad based on codec preferencesOlivier Crête2021-05-131-0/+75
| | | | | | Also includes a unit test. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2183>
* webrtcbin: Hold transceiver lock when accessing codec_preferencesOlivier Crête2021-05-131-52/+65
| | | | | | This is required to allow the applications to modify the preferences. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2183>
* webrtcbin: Fix deadlock when receiving new sctp streamJohan Sternerup2021-05-122-30/+49
| | | | | | | | | | | | | | | | | | | | When receiving an sctp message for a stream that not yet has an sctpdec pad associated with it means we end up in _on_sctpdec_pad_added. At this point we're holding the sctpassocation lock. Then it's not possible to take the pc_lock because then code executing under the pc_lock (which means anything in the webrtc thread) may not take the sctpassociation lock. For example, running the data channel close procedure from the webrtc thread means we eventually end up sending a SCTP_RESET_STREAMS packet which needs to grab the sctpassociation lock. This means _on_sctpdec_pad_added simply cannot take the pc_lock and also it is not possible to postpone the channel creation as we need to link the pads right there. The solution is to introduce a more granular dc_lock that protects only the things that needs to be done to create the datachannel. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2186>
* webrtcbin: Support closing of data channelsJohan Sternerup2021-05-125-36/+63
| | | | | | | | | | | | | | | | | | | | | | | Support for closing WebRTC data channels as described in RFC 8831 (section 6.7) now fully supported. This means that we can now reuse data channels that have been closed properly. Previously, an application that created a lot of short-lived on-demand data channels would quickly exhaust resources held by lingering non-closed data channels. We now use a one-to-one style socket interface to SCTP just like the Google implementation (i.e. SOCK_STREAM instead of SOCK_SEQPACKET, see RFC 6458). For some reason the socket interface to use was made optional through a property "use-sock-stream" even though code wasn't written to handle the SOCK_SEQPACKET style. Specifically the SCTP_RESET_STREAMS command wouldn't work without passing the correct assocation id. Changing the default interface to use from SOCK_SEQPACKET to SOCK_STREAM now means we don't have to bother about the association id as there is only one association per socket. For the SCTP_RESET_STREAMS command we set it to SCTP_ALL_ASSOC just to match the Google implementation. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2186>
* openaptx: Fix to v0.2.0 due to license changeDaniel Stone2021-05-111-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | openaptx has recently changed its license to explicitly exclude 'Freedesktop projects' from using it, which would include GStreamer, as well as shifting to base terms of GPLv3: https://github.com/pali/libopenaptx/commit/811bc18586d634042618d633727ac0281d4170b8 This unilateral license change is legally dubious in many ways. The original work came from ffmpeg under the LGPL v2.1, to which third parties may not add additional restrictions (per sections 2 and 7 of the LGPL v2.1), so LGPLv2.1 + may-not-use restrictions are not permissible without the explicit consent of the original copyright holder. The upgrade to LGPL v3.0 without explicit consent from the original copyright holder is in itself permissible through the upgrade terms of the LGPL, however the additional restrictions imposed again conflict with sections 7 and 10 of the GPLv3 (as the base of the LGPLv3, with those sections not being invalidated by the additional LGPLv3 text). Though it does not impact the legal validity of the redeclaration of licensing, the claims that freedesktop.org has violated the terms of the openaptx license in the past are false; the work was contributed to the PulseAudio project with an explicit open license, with the original contributor later attempting to revoke permission for its use, despite the explicit terms of the license giving no ability to do so as they lack a change-of-heart provision. The claims that Collabora violated the license are even more baseless; they are based on an assertion that when I (acting on behalf of freedesktop.org rather than Collabora, in my own unpaid time) banned users from freedesktop.org's GitLab instance due to sustained violations of the Code of Conduct users agree to when creating an account on that platform, this somehow constituted a violation of the license. Even if Collabora were somehow involved in this - which they were not at all - there is no requirement under open licenses that users be given unlimited access under all terms to any platform on the internet. Such terms would mean that open development could only be conducted on completely unmoderated platforms, which does not stand up to any scrutiny. Regardless of the declared license having no legal validity, the LGPL's explicit provision in both v2.1 and v3.0 for such additional restrictions to be stripped, and the low likelihood of it ever being used together with GStreamer as its licensing terms would not be acceptable to any distribution, enforcing a version check seems like the safest way to ensure complete legal clarity, not put users or downstreams in any jeopardy, and comply with the author's stated wishes for v0.2.1 and above to not be used by GStreamer. Signed-off-by: Daniel Stone <daniel@fooishbar.org> Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2235>
* wpe: Properly free property fieldsJan Alexander Steffens (heftig)2021-05-072-2/+6
| | | | | | | The set location (in two places) and loaded bytes were not freed when the element is destroyed. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2222>
* wpe: Properly lock property fieldsJan Alexander Steffens (heftig)2021-05-071-7/+30
| | | | | | | | | | | | Use the object lock for the following fields: - `bytes`: Written by the `load-bytes` signal unless running; consumed on start. - `draw_background`: Read and written by the `draw-background` property. - `location`: Read and written by the `location` property and the URI handler. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2222>
* webrtc: only add nack pli by default if kind is videoMatthew Waters2021-05-062-2/+4
| | | | | | | Sending/receiving PLI's (Picture Loss Indication) for non-video doesn't really make sense. This also matches what the browsers do. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2220>
* webrtc: move webrtc_kind_from_caps() to utilsMatthew Waters2021-05-063-29/+33
| | | | Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2220>
* hlssink(2): Don't write deprecated EXT-X-ALLOW-CACHE metadataSebastian Dröge2021-05-064-13/+5
| | | | | | | | It's deprecated since quite a few versions and various validators complain about it. Instead of the in-manifest metadata this should be handled by the normal HTTP caching headers. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2221>