summaryrefslogtreecommitdiff
path: root/ext
Commit message (Collapse)AuthorAgeFilesLines
* webrtcbin: Return typed "sctp-transport"Johan Sternerup2021-08-251-1/+2
| | | | | | | With GstWebRTCSCTPTransport type exposed we can now define "sctp-transport" property as being of this type. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2214>
* webrtc: Split sctptransport into lib and implementation partsJohan Sternerup2021-08-258-158/+128
| | | | | | | | | | | | | | | GstWebRTCSCTPTransport is now made into into an abstract base class that only contains property specifications matching the RTCSctpTransport interface of the W3C WebRTC specification, see https://w3c.github.io/webrtc-pc/#rtcsctptransport-interface. This class is put into the WebRTC library to expose it for applications and to allow for generation of bindings for non-dynamic languages using GObject introspection. The actual implementation is moved to the subclass WebRTCSCTPTransport located in the WebRTC plugin. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2214>
* webrtcbin: Expose SCTP TransportJohan Sternerup2021-08-251-1/+18
| | | | | | | | | | | | | | | | | | Being able to access the SCTP Transport object from the application means the application can access the associated DTLS Transport object and its ICE Transport object. This means we can observe the ICE state also for a data-channel-only session. The collated ice-connection-state on webrtcbin only includes the ICE Transport objects that resides on the RTP transceivers (which is exactly how it is specified in https://w3c.github.io/webrtc-pc/#rtciceconnectionstate-enum). For the consent freshness functionality (RFC 7675) to work the ICE state must be accessible and consequently the SCTP transport must be accessible for enabling consent freshness checking for a data-channel-only session. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2214>
* openh264enc: fix broken header AU emission by base classTim-Philipp Müller2021-08-241-25/+0
| | | | | | | | | | | | | | | | This encoder advertises alignment=au as output format, which means each output frame should contain a full decodable access unit. The video encoder base class is not aware of our output alignment and will output spurious buffers with just the SPS/PPS inside when we call gst_video_encoder_set_headers(), which is broken because each buffer is supposed to contain a full decodable access unit in our case. Just don't tell the base class about our headers, they will be sent at the beginning of each IDR frame anyway. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2178>
* openh264enc: fix caps and header buffer leakTim-Philipp Müller2021-08-241-1/+3
| | | | Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2178>
* openh264enc: fix broken sps/pps header generationTim-Philipp Müller2021-08-241-2/+7
| | | | | | | | | | | | | This was putting a truncated SPS into the initial header instead of the PPS because it was always reading from the beginning of the bitstream buffer (pBsBuf) and not from the offset where the current NAL is at in the bitstream buffer (psBsBuf + nal_offset). This was broken in commit 17113695. Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1576 Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2178>
* dashdemux: Properly initalize GErrorEdward Hervey2021-08-201-1/+1
| | | | Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2476>
* webrtc: improve matching on the correct jitterbufferMatthew Waters2021-08-161-13/+32
| | | | | | | | | | | | | | | | | | | | The mapping between an RTP session and the SDP m= line is not always the same, especially when BUNDLEing is used. This causes a failure in a specific case where if when bundling, if mline 0 is a data channel, and mline 1 an audio/video section, then retrieving the transceiver at mline 0 (rtp session used) will fail and cause an assertion. This fix is actually potentially a regression for cases where the remote part does not provide the a=ssrc: media level SDP attributes as is now becoming common, especially when simulcast is involved. The correct fix actually requires reading out header extensions as used with bundle for signalling in the actual data, what media and therefore transceiver is being used. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2467>
* fdkaacdec: Add Converter class to hint gst-validateThibault Saunier2021-08-131-1/+1
| | | | | | | | | | fdkaacdec have minimal conversion capability, adding the Converter class allow gst-validate to behave properly and not spit an error when it notice that the number of channels or rate miss-match in and out. Same logic as with opusdec, see: https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1142> Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2462>
* ccconverter: fix overflow when not doing framerate conversionMathieu Duponchelle2021-08-131-0/+6
| | | | | | | | | When converting from one framerate to another, counters are reset periodically, however when not converting they never are and can_genearte_output ends up making overflow-prone calculations with large values for input_frames and output_frames. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2465>
* webrtcbin: Don't assume that non-audio medias are video medias when creating ↵Sebastian Dröge2021-08-121-3/+10
| | | | | | | | transceivers And print the unknown media kind in the logs. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2464>
* webrtcbin: Use the correct media for deciding the media kind when creating ↵Sebastian Dröge2021-08-121-1/+1
| | | | | | the transceiver from the SDP Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2464>
* openh264: Respect level set downstreamThibault Saunier2021-08-092-1/+16
| | | | | | | | We were not specifying the requested level to openh264 meaning that it was choosing anything and was not respecting what was specified\ downstream Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2289>
* x265: Fix a deadlock when failing to create the x265enc.He Junyan2021-08-091-2/+5
| | | | | | | | | The GST_ELEMENT_ERROR will call the gst_object_get_path_string and use gst_object_get_parent to get the full object path name, which needs to lock the object. But we are already in a locked context and so this will cause a deadlock, the pipeline can not exit normally. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2451>
* rtmpsrc: mention setting librtmp flags in docsR S Nikhil Krishna2021-08-091-0/+10
| | | | Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2424>
* mpeg2enc: fix interlace-mode detectionMathieu Duponchelle2021-08-051-1/+19
| | | | | | | Previously, the code was always assuming progressive input, fix this by looking at the caps. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2455>
* Use g_memdup2() where available and add fallback for older GLib versionsTim-Philipp Müller2021-08-055-5/+5
| | | | | | | g_memdup() is deprecated since GLib 2.68 and we want to avoid deprecation warnings with recent versions of GLib. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2280>
* cccombiner: fix CDP padding detectionMathieu Duponchelle2021-07-281-1/+1
| | | | | | | | While a cc_data_pkt with cc_valid 0 should be considered padding, it might be followed up by valid DTVCC packets, and should not cause the whole CDP packet to get discarded. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2440>
* dash: Store entire ContentProtection node in protection event dataPhilippe Normand2021-07-151-29/+8
| | | | | | | | | | | | | | | | Some manifests use the ContentProtection node to store additional information such as the license server url. Our MPD parser used to process the ContentProtection node, extracting Playready PSSH boxes. However for other DRM systems, only the `value` attribute was passed down to the protection event, so for example, Widevine data was not parsed at all and "Widevine" was passed to the event, which is not very useful for decryptors that require a PSSH init data. Parsing should now be done by decryptors which will receive the entire ContentProtection XML node as a string. This gives more "freedom" to the decryptor which can then detect and parse custom nodes as well. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2400>
* wpesrcbin: Use gst_buffer_new_memdup()Philippe Normand2021-07-131-1/+1
| | | | | | g_memdup() is deprecated. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2406>
* vulkansink: Fix element metadata.Víctor Manuel Jáquez Leal2021-07-121-1/+1
| | | | Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2396>
* dashdemux: Log protection events on corresponding padPhilippe Normand2021-07-081-2/+4
| | | | | | | GstDashDemuxStream is not a GstObject, so use its pad as associated object when emitting log messages. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2389>
* cccombiner: mark field 0 as valid when generating padding CDPMathieu Duponchelle2021-07-081-1/+1
| | | | Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2383>
* dashsink: fix crash with no pad name for representationStéphane Cerveau2021-07-071-1/+38
| | | | | | | | | | | if there is no pad name, the representation id was NULL, causing a crash when writing the mpd file. gst-launch-1.0 videotestsrc num-buffers=900 ! video/x-raw, width=800, height=600, framerate=30/1 ! x264enc ! video/x-h264, profile=high ! dashsink Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2064>
* dashsink: Add signals for allowing custom playlist/fragmentStéphane Cerveau2021-07-071-56/+200
| | | | | | | | | | | | Instead of always going through the file system API we allow the application to modify the behaviour. For the playlist itself and fragments, the application can provide a GOutputStream. In addition the sink notifies the application whenever a fragment can be deleted. Following the HLS change: https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/918 Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2064>
* ccconverter: fix framerate caps negotiation from non-cdp to cdpMatthew Waters2021-07-021-2/+9
| | | | | | | | | We can only convert from non-cdp to cdp within the confines of valid cdp framerates. The existing caps negotiation code was allowing any framerate to convert to a cdp output which is incorrect and would hit an assertion later. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2372>
* webrtc receivebin: Drop serialized queries before receive queueOlivier Crête2021-06-291-1/+18
| | | | | | | | | | | | If they're not dropped, they can be blocked in the queue even if it is leaky in the case where there is a buffer being pushed downstream. Since in webrtc, it's unlikely that there will be a special allocator to receive RTP packets, there is almost no downside to just ignoring the queries. Also drop queries if they get caught in the pad probe after the queue. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2363>
* webrtc receivebin: Only set queue to leaky when the pad is blockedOlivier Crête2021-06-292-7/+13
| | | | | | | When the pad is no longer blocked, remove the leakyness to make sure everything gets into the jitterbuffer. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2363>
* webrtc receivebin: Don't unblock pad until sender is unblockedOlivier Crête2021-06-291-2/+27
| | | | | | | | | | As ther OpenSSL session is created when the receiver goes into playing, we have to wait for the ICE session to be connected before we can start delivering packets to the DTLS element. Fixes #1599 Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2363>
* webrtcbin: Sync to the clock per stream and not per bundleSebastian Dröge2021-06-281-25/+41
| | | | | | | | | | | | | By using the clocksync inside the dtlssrtpenc, all streams inside a bundled are synchronized together. This will cause problems if their buffers are not already arriving synchronized: clocksync would wait for a buffer on one stream and then buffers from the other stream(s) with lower timestamps would all be sent out too late. Placing the clocksync before the rtpbin and rtpfunnel synchronizes each stream individually and they will be send out more smoothly as a result. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2355>
* webrtc: Remove the webrtc-priv.h header from public headersOlivier Crête2021-06-283-0/+3
| | | | | | | | | And this time for real, also import it in a couple more places inside the webrtc element to make it build. Fixes #1607 Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2359>
* webrtcbin: Set transceiver kind and codec preferences immediately when ↵Sebastian Dröge2021-06-252-22/+28
| | | | | | | | | | creating it Otherwise the on-new-transceiver signal will always be emitted with kind set to UNKNOWN and no codec preferences although both are often known at this point already. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2360>
* webrtcbin: Store newly created transceivers when creating an answer also in ↵Sebastian Dröge2021-06-251-2/+2
| | | | | | | | the seen transceivers list Otherwise it might be used a second time for another media afterwards. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2310>
* webrtcbin: When creating a new transceiver as part of creating the answer ↵Sebastian Dröge2021-06-251-13/+29
| | | | | | also take its codec preferences into account Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2310>
* webrtcbin: Fix a couple of caps leaks of the offer capsSebastian Dröge2021-06-251-0/+3
| | | | Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2310>
* webrtcbin: Stop transceivers update after first SDP error on data channelPhilippe Normand2021-06-251-0/+2
| | | | | | | | | | | | When invalid SDP is supplied, _update_data_channel_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. This change is similar to the one applied in 064428cb34572fa1a018ebbaba6925967ba99dc0. See also #1595 Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2356>
* webrtc lib: Make the datachannel struct privateOlivier Crête2021-06-211-0/+2
| | | | | | This will prevent any unsafe access. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2241>
* webrtc lib: Make the icetransport struct privateOlivier Crête2021-06-211-0/+2
| | | | | | This will prevent any unsafe access. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2241>
* webrtc lib: Make the rtpsender struct privateOlivier Crête2021-06-211-0/+2
| | | | | | This will prevent any unsafe access. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2241>
* webrtc lib: Make the transceiver struct privateOlivier Crête2021-06-211-0/+1
| | | | | | This will prevent any unsafe access. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2241>
* x265enc: add negative DTS supportMathieu Duponchelle2021-06-211-0/+4
| | | | | | | 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>
* faad: fix typo in element documentationStéphane Cerveau2021-06-211-1/+1
| | | | | | seealso is now see_also Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2323>
* waylandsink: prevent frame callback being released twiceRandy Li (ayaka)2021-06-154-14/+18
| | | | | | | | | | | | | | | | | 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>
* jpeg2000parse, openjpeg: add support for YCrCb 4:1:1 samplingStéphane Cerveau2021-06-141-0/+3
| | | | | | | 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>
* 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>