X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=subprojects%2Fgst-plugins-good%2FChangeLog;h=5bef7bc82ee956d3b1f43fb45d78c450cf3a7598;hb=9eb081ea0a8afcfbcb78a04068897e79022d5161;hp=f997cc95b774a3dc6c080c536d74367015d5fb85;hpb=07ad3439ce3859244d67bfd19b4c578400a2274c;p=platform%2Fupstream%2Fgstreamer.git diff --git a/subprojects/gst-plugins-good/ChangeLog b/subprojects/gst-plugins-good/ChangeLog index f997cc9..5bef7bc 100644 --- a/subprojects/gst-plugins-good/ChangeLog +++ b/subprojects/gst-plugins-good/ChangeLog @@ -1,3 +1,5566 @@ +=== release 1.21.2 === + +2022-11-07 23:53:59 +0000 Tim-Philipp Müller + + * NEWS: + * RELEASE: + * docs/gst_plugins_cache.json: + * gst-plugins-good.doap: + * meson.build: + Release 1.21.2 + +2022-11-07 23:53:57 +0000 Tim-Philipp Müller + + * ChangeLog: + Update ChangeLogs for 1.21.2 + +2020-09-02 10:49:40 +0100 Justin Chadwell + + * gst/isomp4/qtdemux.c: + qtdemux: use unsigned int types to store result of QT_UINT32 + In a few cases throughout qtdemux, the results of QT_UINT32 were being + stored in a signed integer, which could cause subtle bugs in the case of + an integer overflow, even allowing the the result to equal a negative + number! + This patch prevents this by simply storing the results of this function + call properly in an unsigned integer type. Additionally, we fix up the + length checking with stsd parsing to prevent cases of child atoms + exceeding their parent atom sizes. + Part-of: + +2022-11-04 17:48:01 +0000 Tim-Philipp Müller + + * ext/qt/gstqtglutility.cc: + qt: initialize GError properly in gst_qt_get_gl_wrapcontext() + Spotted by Claus Stovgaard. + Fixes #1545 + Part-of: + +2022-11-04 11:10:52 +0200 Sebastian Dröge + + * gst/isomp4/gstqtmux.c: + qtmux: Add durations to raw audio buffers from the raw audio adapter in prefill mode + This ensures that a duration can also be calculated and stored for the + last buffer at EOS. + Part-of: + +2022-11-04 10:49:31 +0200 Sebastian Dröge + + * gst/isomp4/gstqtmux.c: + qtmux: Release object lock before posting an error message + GST_ELEMENT_ERROR() also takes the object lock and this would then + deadlock. + Part-of: + +2022-11-03 14:08:57 +0100 Edward Hervey + + * gst/multifile/gstimagesequencesrc.c: + imagesequencesrc; Fix leaks + * The path was leaked + * The custom buffer was never freed + Part-of: + +2022-11-03 14:08:02 +0100 Edward Hervey + + * gst/isomp4/qtdemux.c: + qtdemux: Fix cenc-related leaks + Part-of: + +2022-11-03 14:06:58 +0100 Edward Hervey + + * gst/deinterlace/gstdeinterlace.c: + deinterlace: Don't leak metas + There is no correlation between the frame being NULL and the metas not being + present. + Part-of: + +2022-10-31 16:08:23 +0100 Edward Hervey + + * ext/adaptivedemux2/gstadaptivedemux-period.c: + * ext/adaptivedemux2/gstadaptivedemux.c: + adaptivedemux2: Fix collection leaks + * The collection on the period was never unreffed + * The collection in the message handler was never unreffed + Part-of: + +2022-11-05 03:23:43 +1100 Jan Schmidt + + * ext/adaptivedemux2/mss/gstmssdemux.c: + mssdemux2: Update for adaptivedemux2 refactoring + Part-of: + +2022-11-03 01:48:08 +1100 Jan Schmidt + + * ext/adaptivedemux2/dash/gstdashdemux.c: + * ext/adaptivedemux2/gstadaptivedemux-private.h: + * ext/adaptivedemux2/gstadaptivedemux-stream.c: + * ext/adaptivedemux2/gstadaptivedemux-stream.h: + * ext/adaptivedemux2/gstadaptivedemux.c: + * ext/adaptivedemux2/gstadaptivedemux.h: + * ext/adaptivedemux2/hls/gsthlsdemux.c: + adaptivedemux2: Move stream_seek() to the Stream class + Move the last stream specific vfunc from the demux + class to the stream class. + Part-of: + +2022-08-21 04:31:53 +1000 Jan Schmidt + + * ext/adaptivedemux2/dash/gstdashdemux.c: + * ext/adaptivedemux2/gstadaptivedemux-private.h: + * ext/adaptivedemux2/gstadaptivedemux-stream.c: + * ext/adaptivedemux2/gstadaptivedemux-stream.h: + * ext/adaptivedemux2/gstadaptivedemux-types.h: + * ext/adaptivedemux2/gstadaptivedemux.c: + * ext/adaptivedemux2/gstadaptivedemux.h: + * ext/adaptivedemux2/hls/gsthlsdemux.c: + adaptivedemux2: Refactor stream methods into the stream + Unlike the legacy elements, GstAdaptiveDemuxStream is a GObject now, + so a bunch of things that were actually stream methods on the + parent demux object can directly become stream methods now. + Move the stream class out to a header of its own. + Part-of: + +2022-06-07 14:36:24 +1000 Jan Schmidt + + * ext/adaptivedemux2/hls/m3u8.c: + * ext/adaptivedemux2/hls/m3u8.h: + hlsdemux2/m3u8: Implement EXT-X-GAP parsing + Read the EXT-X-GAP tag and set is_gap on the segment. + Part-of: + +2022-06-07 14:13:39 +1000 Jan Schmidt + + * ext/adaptivedemux2/hls/m3u8.c: + hlsdemux2/m3u8: Refactor parsing for readability + Small readability improvements in the parsing code + Part-of: + +2022-10-14 06:21:41 +1100 Jan Schmidt + + * ext/adaptivedemux2/downloadrequest.c: + * ext/adaptivedemux2/downloadrequest.h: + adaptivedemux2/downloadhelper: Remove return val for download_request_add_buffer() + The function can't actually fail, and the only caller + was ignoring the result anyway, so remove the return value. + Part-of: + +2022-10-14 06:20:06 +1100 Jan Schmidt + + * ext/adaptivedemux2/downloadhelper.c: + adaptivedemux2/downloadhelper: Add debug output of response headers + Dump the HTTP response headers at TRACE level + Part-of: + +2022-10-14 06:19:11 +1100 Jan Schmidt + + * ext/adaptivedemux2/downloadhelper.c: + adaptivedemux2/downloadhelper: Don't mark transfer as complete/error if cancelled. + If the state of the download request was reset to UNSENT, + it was cancelled. Don't update the state to COMPLETE or ERRORED + in on_read_ready(). + Part-of: + +2022-10-14 06:17:00 +1100 Jan Schmidt + + * ext/adaptivedemux2/downloadhelper.c: + adaptivedemux2/downloadhelper: Ignore spurious read failure + Sometimes g_input_stream_read_all_finish() can return + 0 bytes, but still succeed (return TRUE) and have more + data available later. Only finish the transfer + if it returns 0 bytes *and* FALSE with no error. + Part-of: + +2022-10-14 06:15:45 +1100 Jan Schmidt + + * ext/adaptivedemux2/downloadhelper.c: + * ext/adaptivedemux2/downloadrequest.c: + * ext/adaptivedemux2/downloadrequest.h: + adaptivedemux2/downloadhelper: Fix function name + Fix a typo in the name of function download_request_despatch_progress() + Part-of: + +2022-10-12 02:14:32 +1100 Jan Schmidt + + * ext/adaptivedemux2/gstadaptivedemux-private.h: + * ext/adaptivedemux2/gstadaptivedemux.c: + adaptivedemux2: Remove scheduler_lock mutex + Remove the old unused scheduler_lock + Part-of: + +2022-10-11 03:20:11 +1100 Jan Schmidt + + * ext/adaptivedemux2/gstadaptivedemux.c: + adaptivedemux2: Hold tracks lock accessing input_period + The input_period is protected by the TRACKS_LOCK, + so make sure to hold that when accessing it. + Part-of: + +2022-08-16 23:01:46 +1000 Jan Schmidt + + * ext/adaptivedemux2/gstadaptivedemux-stream.c: + * ext/adaptivedemux2/gstadaptivedemux.h: + adaptivedemux2: Add state checks and clean up obsolete variables + The cancelled flag was only set in the stream finalize() + method, after all activity on the stream has stopped anyway. + Replace uses of cancelled with checks on the stream state. + Remove the replaced flag, which was checked but never set + to TRUE anywhere any more. + Part-of: + +2022-10-30 20:28:25 +0900 Seungha Yang + + * docs/gst_plugins_cache.json: + * ext/vpx/gstvp9dec.c: + * ext/vpx/gstvp9enc.c: + * ext/vpx/gstvpxenc.c: + vpx: Complete high bitdepth vp9 en/decoding support + Adding 12bits variant formats to en/decoder, and high bitdepth + 4:4:4 (except for GBR) encoding support + Part-of: + +2022-10-30 20:03:10 +0900 Seungha Yang + + * ext/vpx/gstvp9dec.c: + * ext/vpx/gstvp9enc.c: + * ext/vpx/gstvpxcompat.h: + * ext/vpx/gstvpxdec.h: + * ext/vpx/gstvpxenc.h: + vpx: Define formats for compatibility + ifdef for enum values never work. Instead, define new enum type + and use it + Part-of: + +2022-10-27 23:57:58 +1100 Jan Schmidt + + * ext/adaptivedemux2/hls/m3u8.c: + hlsdemux2: m3u8: Use PDT to offset stream time when aligning playlist + When matching segments across playlists with Program-Date-Times, + use the difference in segment PDTs to adjust the stream time + that's being transferred. This can fix cases where the + segment boundaries don't align across different streams + and the first download gets thrown away once the PTS + is seen and found not to match. + Part-of: + +2022-11-01 02:17:46 +1100 Jan Schmidt + + * ext/adaptivedemux2/hls/gsthlsdemux.c: + * ext/adaptivedemux2/hls/gsthlsdemux.h: + hlsdemux2: Download new header when it changes + Check whether the init file / MAP data for a segment + is different to the current data and trigger an + update if so. Previously, the header would only + be checked in HLS after switching bitrate or + after a seek / first download. + Part-of: + +2022-11-01 01:41:35 +1100 Jan Schmidt + + * ext/adaptivedemux2/hls/m3u8.c: + * ext/adaptivedemux2/hls/m3u8.h: + m3u8: Expose GstM3U8InitFile methods + Exposure ref/unref methods for the GstM3U8InitFile type, + and add a gst_m3u8_init_file_equal() comparison method. + Part-of: + +2022-10-21 17:24:41 +0200 Edward Hervey + + * docs/gst_plugins_cache.json: + * ext/adaptivedemux2/gstadaptivedemux-stream.c: + * ext/adaptivedemux2/gstadaptivedemux.c: + * ext/adaptivedemux2/gstadaptivedemux.h: + * ext/adaptivedemux2/hls/gsthlsdemux.c: + * ext/adaptivedemux2/hls/m3u8.c: + * ext/adaptivedemux2/hls/m3u8.h: + adaptivedemux2: Improve minimum buffering threshold + Previously the minimum buffering threshold was hardcoded to a specific + value (10s). This is suboptimal this an actual value will depend on the actual + stream being played. + This commit sets the low watermark threshold in time to 0, which is an automatic + mode. Subclasses can provide a stream `recommended_buffering_threshold` when + update_stream_info() is called. + Currently implemented for HLS, where we recommended 1.5 average segment + duration. This will result in buffering being at 100% when the 2nd segment has + been downloaded (minus a bit already being consumed downstream) + Part-of: + +2022-10-28 18:57:44 +0530 Sanchayan Maity + + * gst/wavparse/gstwavparse.c: + wavparse: Speed up type finding for DTS + In order to figure out if the "raw" audio contained within the wav + container is actually DTS, right now we call the typefinder helper + which runs all typefinders. + Speed up this type finding process by specifying the extension. + Part-of: + +2022-10-25 13:30:15 +1100 Matthew Waters + + * docs/gst_plugins_cache.json: + * gst/isomp4/gstqtmuxmap.c: + mp4mux: enable muxing VP9 streams + As specified in https://www.webmproject.org/vp9/mp4/ + Part-of: + +2022-10-25 13:28:26 +1100 Matthew Waters + + * docs/gst_plugins_cache.json: + * gst/isomp4/atoms.c: + * gst/isomp4/atoms.h: + * gst/isomp4/gstqtmux.c: + * gst/isomp4/gstqtmuxmap.c: + qtmux: add support for writing vpcC box for VP9 + Increases compatibility for VP9 in .mov in at least VLC. + Part-of: + +2022-10-04 18:21:15 -0300 Thibault Saunier + + * ext/adaptivedemux2/dash/gstdashdemux.c: + * ext/adaptivedemux2/gstadaptivedemux.c: + dashdemux2: Fix the way we determine current_position after seeks + Without that the current_position was off after seeks, potentially + leading to not properly push a last fragment when a `.stop` time was + set. + Part-of: + +2022-09-20 15:32:52 -0300 Thibault Saunier + + * ext/adaptivedemux2/dash/gstmpdclient.c: + dash: Fix computing `repeat_index` when seeking in stream with a start !=0 on the first fragment + Part-of: + +2022-09-22 11:20:55 -0300 Thibault Saunier + + * gst/matroska/matroska-demux.c: + matroskademux: Let upstream handle seeking/duration query in time if possible + So proper response are given for dash streams + Part-of: + +2022-09-21 15:01:39 -0300 Thibault Saunier + + * gst/matroska/matroska-demux.c: + * gst/matroska/matroska-demux.h: + matroskademux: Start support for upstream segments in TIME format + So we can use matroskademux for dash webm dash streams. + Part-of: + +2022-01-24 16:49:52 +0100 Jakub Adam + + * sys/ximage/gstximagesrc.c: + ximagesrc: grab the server while capturing screen image + Makes sure screen resolution doesn't change in the middle of the + process. + Part-of: + +2021-12-17 14:57:57 +0100 Jakub Adam + + * sys/ximage/gstximagesrc.c: + * sys/ximage/gstximagesrc.h: + ximagesrc: change video resolution when X11 screen gets resized + Part-of: + +2022-10-23 20:32:35 +0100 Tim-Philipp Müller + + * docs/gst_plugins_cache.json: + * gst/meson.build: + * gst/xingmux/gstxingmux.c: + * gst/xingmux/gstxingmux.h: + * gst/xingmux/meson.build: + * gst/xingmux/plugin.c: + * meson_options.txt: + * tests/check/elements/xingmux.c: + * tests/check/elements/xingmux_testdata.h: + * tests/check/meson.build: + xingmux: move from gst-plugins-ugly to gst-plugins-good + Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/issues/415 + Part-of: + +2022-10-21 16:23:08 +0300 Sebastian Dröge + + * gst/rtsp/gstrtspsrc.c: + rtspsrc: Only EOS on timeout if all streams are timed out/EOS + Otherwise a stream that is just temporarily inactive might time out and + then can never become active again because the EOS event was sent + already. + Part-of: + +2022-10-18 16:51:39 +1100 Matthew Waters + + * docs/gst_plugins_cache.json: + * gst/rtp/gstrtpulpfecdec.c: + * gst/rtp/gstrtpulpfecdec.h: + rtpulpfecdec: add property for passthrough + Support for enabling and disabling decoding of FEC data decoding on + packet loss events and unconditional seqnum rewriting of packets. + See + https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/issues/581 + for background. + Part-of: + +2022-10-14 01:23:04 +0000 Devin Anderson + + * gst/wavparse/gstwavparse.c: + wavparse: Avoid occasional crash due to referencing freed buffer. + We've seen occasional crashes in the `wavparse` module associated with + referencing a buffer in `gst_wavparse_chain` that's already been freed. The + reference is stolen when the buffer is transferred to the adapter with + `gst_adapter_push` and, IIUC, assuming the source doesn't hold a reference to + the buffer, the buffer could be freed during interaction with the adapter in + `gst_wavparse_stream_headers`. + Part-of: + +2022-10-13 11:21:42 -0400 Julian Bouzas + + * docs/gst_plugins_cache.json: + riff: Mark jpeg as parsed + This is needed so that autoplugging works with avidemux and JPEG decoders that + need parsed sink caps (eg rockchip 'mppjpegdec' decoder). It also works fine + with 'jpegdec' decoder regardless. + Part-of: + +2022-10-13 00:20:45 +0000 Devin Anderson + + * gst/wavparse/gstwavparse.c: + * tests/check/elements/wavparse.c: + * tests/files/corruptheadertestsrc.wav: + wavparse: Fix crash that occurs in push mode when header chunks are corrupted in certain ways. + In the case that a test is provided for, the size of the `fmt ` chunk is + changed from 16 bytes to 18 bytes (bytes 17 - 20 below): + ``` + $ hexdump -C corruptheadertestsrc.wav + 00000000 52 49 46 46 e4 fd 00 00 57 41 56 45 66 6d 74 20 |RIFF....WAVEfmt | + 00000010 12 00 00 00 01 00 01 00 80 3e 00 00 00 7d 00 00 |.........>...}..| + 00000020 02 00 10 00 64 61 74 61 |....data| + 00000028 + ``` + (Note that the original file is much larger. This was the smallest sub-file + I could find that would generate the crash.) + Note that, while the same issue doesn't cause a crash in pull mode, there's a + different issue in that the file is processed successfully as if it was a .wav + file with zero samples. + Part-of: + +2022-10-11 15:00:37 +0200 Edward Hervey + + * sys/oss4/oss4-sink.c: + * sys/oss4/oss4-source.c: + oss4: Fix debug category initialization + Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1456 + Part-of: + +2022-10-08 01:03:13 +0200 Mathieu Duponchelle + + * gst/multifile/gstsplitmuxpartreader.c: + splitmuxsrc: don't queue data on unlinked pads + Once a pad has returned NOT_LINKED, the part reader shouldn't let its + corresponding data queue run full and eventually (after 20 seconds) + stall playback. + Part-of: + +2022-10-03 20:28:47 +0300 Sebastian Dröge + + * gst/rtpmanager/gstrtpsession.c: + * gst/rtpmanager/rtpsession.c: + * gst/rtpmanager/rtpsession.h: + * gst/rtpmanager/rtpsource.c: + * gst/rtpmanager/rtpsource.h: + rtpsource: Don't do probation for RTX sources + Disable probation for RTX sources as packets will arrive very + irregularly and waiting for a second packet usually exceeds the deadline + of the retransmission. + Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/issues/181 + Part-of: + +2022-10-03 19:58:38 +0300 Sebastian Dröge + + * tests/examples/rtp/client-rtpaux.c: + rtp: examples: client-rtpaux: Provide correct caps by payload type and RTX pt map by session + Part-of: + +2019-01-25 17:04:50 -0500 George Kiagiadakis + + * tests/check/elements/rtpsession.c: + tests/check/rtpsession: extend test_internal_sources_timeout + to verify that rtx SSRCs do not BYE after timeout + See https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/issues/360 + Part-of: + +2022-10-03 19:12:55 +0300 Sebastian Dröge + + * gst/rtpmanager/rtpsession.c: + * gst/rtpmanager/rtpsource.c: + * gst/rtpmanager/rtpsource.h: + rtpsession: Remember the corresponding media SSRC for RTX sources + This allows timing out the RTX source and sending BYE for it when the + actual media source belonging to it is timed out. + This change only applies to sending sources from this session. + Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/issues/360 + Part-of: + +2022-10-03 19:20:14 +0300 Sebastian Dröge + + * gst/rtpmanager/rtpsession.c: + * gst/rtpmanager/rtpsource.c: + * gst/rtpmanager/rtpsource.h: + rtpsource: Rename rtp_source_update_caps to rtp_source_update_send_caps + To make it clear that this is only used for sending RTP sources. + Part-of: + +2022-10-03 13:48:36 +0300 Sebastian Dröge + + * gst/rtpmanager/gstrtpsession.c: + rtpsession: Rename gst_rtp_session_sink_setcaps to gst_rtp_session_setcaps_recv_rtp + to make it clearer that this is for setting receiver caps and to make it + more consistent with gst_rtp_session_setcaps_send_rtp. + Part-of: + +2022-10-06 15:02:22 +0300 Sebastian Dröge + + * gst/rtsp/gstrtspsrc.c: + rtspsrc: Retry SETUP with non-compliant URL resolution on "Bad Request" and "Not found" + Various RTSP servers/cameras assume base and control URL to be simply + appended instead of being resolved according to the relative URL + resolution algorithm as mandated by the RTSP specification. + To work around this, try using such a non-compliant control URL if the + server didn't like the URL used in the first SETUP request. + Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1447 + Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/issues/922 + Part-of: + +2022-10-04 03:57:31 +0100 Tim-Philipp Müller + + * docs/gst_plugins_cache.json: + * meson.build: + Back to development + Part-of: + +=== release 1.21.1 === + +2022-10-04 01:14:01 +0100 Tim-Philipp Müller + + * ChangeLog: + * NEWS: + * RELEASE: + * docs/gst_plugins_cache.json: + * gst-plugins-good.doap: + * meson.build: + Release 1.21.1 + +2022-10-04 01:13:59 +0100 Tim-Philipp Müller + + * ChangeLog: + Update ChangeLogs for 1.21.1 + +2022-07-27 11:19:50 +0200 Edward Hervey + + * gst/isomp4/qtdemux.c: + qtdemux: Don't stop task when resetting + This is a regression that was introduced in + cca2f555d14b5751f7f9d466b66127544dad5138 (yes, 9 years ago). + The only place where a demuxer streaming thread should be stopped is when the + sinkpad is deactivated from pull mode (i.e. PAUSED->READY). + Attempting to stop the task in this function would cause this to happen when a + FLUSH_STOP or STREAM_START event is received... which can cause deadlocks. + Part-of: + +2022-09-30 18:57:01 +0200 Mathieu Duponchelle + + * gst/multifile/gstsplitmuxpartreader.c: + splitmuxsrc: don't consider unlinked pads when deactivating part + If splitmuxsrc exposes multiple pads, but only one is linked, part pads + will never see an EOS event. This shouldn't prevent the part from being + eventually deactivated. + Part-of: + +2022-03-01 16:30:10 +0530 Nirbheek Chauhan + + * gst/rtsp/gstrtspsrc.c: + rtspsrc: Fix usage of IPv6 connections in SETUP + If the SETUP request returns an IPv6 server address in the Transport + field, we would generate an incorrect URI, and multiudpsink would fail + to initialize: + ``` + rtspsrc gstrtspsrc.c:9780:dump_key_value: key: 'Transport', value: 'RTP/AVP;unicast;source=fe80::dc27:25ff:fe5e:bd13:8080;client_port=62696-62697;server_port=4000-4001' + ... + rtspsrc gstrtspsrc.c:4595:gst_rtspsrc_stream_configure_udp_sinks: configure RTP UDP sink for fe80::dc27:25ff:fe5e:bd13:8080:4000 + ... + multiudpsink gstmultiudpsink.c:1229:gst_multiudpsink_configure_client: error: Invalid address family (got 23) + ``` + We can't look at stream->is_ipv6 because we can't rely on the server + returning the right value there. In the issue reported about this, + server reported itself as `KuP RTSP Server/0.1`, and the SDP was: + ``` + c=IN IP4 + m=video 54608 RTP/AVP 96 + a=rtpmap:96 H264/90000 + ``` + So we need to parse the string value and figure out the family + ourselves. + Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1058 + Part-of: + +2022-09-27 13:56:54 +0100 Tim-Philipp Müller + + * gst/isomp4/qtdemux.c: + qtdemux: guard against timestamp calculation overflow in gap event loop + Could possibly cause an endless loop. + Fixes #1400. + Part-of: + +2022-09-27 00:08:41 +1000 Jan Schmidt + + * tests/check/elements/dash_mpd.c: + dashdemux2: fix mpd unit test expectations + Update unit test for some mpd cases that were reporting + timestamps including the period start time, while + dashdemux2 expects that it needs to add the period + start time itself. + Fix the tests to not expect the period start time + to be included. + Part-of: + +2022-08-23 23:12:44 +0900 Junsoo Park + + * ext/adaptivedemux2/dash/gstmpdclient.c: + dashdemux2: Set timestamp relative to period start + These values will be referred to as timestamp relative to period start + so need to subtract period start time from the values. + Fixes a problem with determining the start position when playing Live content + with SegmentTimeline, presentationTimeOffset and a non-0 period start time. + Part-of: + +2022-09-22 19:02:10 +0200 Jakub Adam + + * ext/vpx/gstvp9dec.c: + * ext/vpx/gstvp9enc.c: + vp9: check if libvpx supports high bit depth + Detect at runtime if libvpx is compiled with --enable-vp9-highbitdepth + and enable 10bit video formats in element caps accordingly. + Part-of: + +2022-09-21 19:19:45 +0530 Nirbheek Chauhan + + * meson.build: + meson: Use implicit builtin dirs in pkgconfig generation + Starting with Meson 0.62, meson automatically populates the variables + list in the pkgconfig file if you reference builtin directories in the + pkgconfig file (whether via a custom pkgconfig variable or elsewhere). + We need this, because ${prefix}/libexec is a hard-coded value which is + incorrect on, for example, Debian. + Bump requirement to 0.62, and remove version compares that retained + support for older Meson versions. + Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1245 + Part-of: + +2022-09-21 00:26:38 +0900 Seungha Yang + + * ext/adaptivedemux2/gstadaptivedemuxutils.c: + adaptivedemux2: Always wake up loop thread on unpause + Otherwise loop thread will sleep forever because + GstAdaptiveDemuxLoop.paused flag update is not signalled + when loop was marked as stopped already from other thread. + Part-of: + +2022-09-16 02:01:58 +1000 Jan Schmidt + + * ext/adaptivedemux2/gstadaptivedemux-period.c: + * ext/adaptivedemux2/gstadaptivedemux-private.h: + * ext/adaptivedemux2/gstadaptivedemux-stream.c: + * ext/adaptivedemux2/gstadaptivedemux-track.c: + * ext/adaptivedemux2/gstadaptivedemux.c: + * ext/adaptivedemux2/gstadaptivedemux.h: + adaptivedemux2: Rework input download wakeups + Change the way streams are woken up to download more data. + Instead of checking the level on tracks that are being + output as data is dequeued, calculate a 'wakeup time' + at which it should download more data, and wake up + the stream when the global output position crosses + that threshold. + For efficiency, compute the earliest wakeup time + for all streams and store it on the period, so the + output loop can quickly check only a single value + to decide if something needs waking up. + Does the same buffering as the previous method, + but ensures that as we approach the end of + one period, the next period continues incrementally + downloading data so that it is fully buffered when + the period starts. + Fixes issues with multi-period VOD content where + download of the second period resumes only after + the first period is completely drained. + Part-of: + +2022-09-15 09:04:10 +0200 Edward Hervey + + * ext/adaptivedemux2/hls/gsthlsdemux.c: + hlsdemux2: Handle negative time mappings + Some servers can return playlists with "old" media playlists and different + Discont Sequence. + In those cases, the segment stream times would be negative when creating a new + time mapping. In order to properly handle such scenarios, shift the values to + stored accordingly to end up with non-negative reference stream time. + Part-of: + +2022-09-19 20:48:01 +0300 Mart Raudsepp + + * ext/shout2/meson.build: + shout: fix minimum requirement to libshout >= 2.4.3 + commit e64c6f0b93ced added usage of the SHOUT_USAGE_UNKNOWN symbol, but this + became available in the Icecast-libshout 2.4.3 release, not 2.4.2 + Part-of: + +2022-08-31 11:13:06 +0800 Elliot Chen + + * sys/v4l2/gstv4l2videodec.c: + v4l2videodec: add cap negotiation fail check in the capture configuration change + The capture configuration change may cause negotiation fail. + Need to check it to avoid enter the endless loop. + Part-of: + +2022-08-29 10:17:45 -0400 Thibault Saunier + + * docs/meson.build: + doc: Do not build plugins to build the doc + It is not actually necessary + Part-of: + +2022-09-15 12:14:56 +0100 Tim-Philipp Müller + + * tests/check/meson.build: + tests: add a few more orc tests + Part-of: + +2022-09-14 10:15:41 +0200 Edward Hervey + + * ext/adaptivedemux2/hls/m3u8.c: + hlsdemux2: Fix crash on live playlist with single entry + If there is a single entry, we would end up computing a minimum distance of 0, + and would therefore read entries from after the segment array + Part-of: + +2021-03-24 14:20:18 -0500 Zebediah Figura + + * meson.build: + meson: Build with -Wl,-z,nodelete to prevent unloading of dynamic libraries and plugins + GLib made the unfortunate decision to prevent libgobject from ever being + unloaded, which means that now any library which registers a static type + can't ever be unloaded either (and any library that depends on those, + ad nauseam). + Part-of: + +2022-09-13 00:56:53 +1000 Jan Schmidt + + * ext/adaptivedemux2/gstadaptivedemux.c: + adaptivedemux2: Always check bitrate in live + When advancing fragment in live, it's normal to return + GST_FLOW_EOS when playing at the live edge of the available + fragments. In that case, we still want to adjust bitrate + dynamically. + Fixes issue with dashdemux2 where the current bitrate of + each adaptation set is changed to the lowest one when + updating the mpd for a live stream. + Part-of: + +2022-09-12 14:18:47 -0400 Matt Crane + + * gst/rtpmanager/gstrtpjitterbuffer.c: + rtpjitterbuffer: Fix calculation of reference timestamp metadata + Add support for RTCP SRs that contain RTP timestamps later than the + current timestamps in the RTP stream packet buffers. + Part-of: + +2022-09-08 17:06:26 +0000 Filip Hanes + + * docs/gst_plugins_cache.json: + * ext/libpng/gstpngenc.c: + pngenc: lower minimum width and height to 1x1 + Part-of: + +2022-08-30 11:45:05 +0200 Edward Hervey + + * ext/adaptivedemux2/dash/gstxmlhelper.c: + * tests/check/elements/dash_mpd.c: + dashdemux2: Remove bogus limitation checks for duration fields + Just like for the seconds field, there are no limitations on the hours and + minutes fields. The specification for xml schema duration fields doesn't forbid + specifying durations with only (huge) minutes or hours values. + Part-of: + +2022-08-21 03:37:40 +1000 Jan Schmidt + + * ext/adaptivedemux2/dash/gstdashdemux.c: + * ext/adaptivedemux2/dash/gstdashdemux.h: + * ext/adaptivedemux2/dash/gstmpdclient.c: + * ext/adaptivedemux2/dash/gstmpdclient.h: + dashdemux2: Preserve current representation on live manifest updates + When updating a manifest during live playback, preserve the current + representation for each stream. + During update_fragment_info, if the current representation changed + because it couldn't be matched, trigger a caps change and new + header download. + This reverts commit e0e1db212fd0df2239583b9099fc4361adeded05 + and reapplies "dashdemux: Fix issue when manifest update sets slow start + without passing necessary header & caps changes downstream" with + changes. + Part-of: + +2022-09-02 17:21:43 +0300 Sebastian Dröge + + * tests/check/elements/rtpjitterbuffer.c: + rtpjitterbuffer: Add test for crash caused by removing timers twice + Part-of: + +2022-09-02 12:20:58 +0300 Sebastian Dröge + + * gst/rtpmanager/gstrtpjitterbuffer.c: + rtpjitterbuffer: Make it more explicit that update_rtx_timers() takes ownership of the passed in timer + It is not valid anymore afterwards and must not be used, otherwise an + already freed pointer might be used. + Part-of: + +2022-09-02 12:20:30 +0300 Sebastian Dröge + + * gst/rtpmanager/gstrtpjitterbuffer.c: + rtpjitterbuffer: Don't shadow variable + While this didn't cause any problems in this context it is simply + confusing. + Part-of: + +2022-09-02 12:19:26 +0300 Sebastian Dröge + + * gst/rtpmanager/gstrtpjitterbuffer.c: + rtpjitterbuffer: Change RTX timer availability checks to assertions + It's impossible to end up in the corresponding code without a timer for + RTX packets because otherwise it would be an unsolicited RTX packet and + we would've already returned early. + Part-of: + +2022-09-02 12:17:39 +0300 Sebastian Dröge + + * gst/rtpmanager/gstrtpjitterbuffer.c: + rtpjitterbuffer: Only unschedule timers for late packets if they're not RTX packets and only once + Timers for RTX packets are dealt with later in update_rtx_timers(), and + timers for non-RTX packets would potentially also be unscheduled a + second time from there so avoid that. + Also don't shadow the timer variable from the outer scope but instead + make use of it directly. + Part-of: + +2022-07-05 16:15:19 +0200 Patricia Muscalu + + * gst/rtp/gstrtph265pay.c: + * gst/rtp/gstrtph265pay.h: + * tests/check/elements/rtph265.c: + rtph265: keep delta unit flag + Without this patch all buffers that pass the payloader + are marked as non-delta-unit buffers. + Part-of: + +2022-09-01 15:11:31 -0400 Thibault Saunier + + * ext/aalib/meson.build: + * ext/cairo/meson.build: + * ext/dv/meson.build: + * ext/flac/meson.build: + * ext/gdk_pixbuf/meson.build: + * ext/gtk/meson.build: + * ext/jack/meson.build: + * ext/jpeg/meson.build: + * ext/lame/meson.build: + * ext/libpng/meson.build: + * ext/mpg123/meson.build: + * ext/pulse/meson.build: + * ext/qt/meson.build: + * ext/shout2/meson.build: + * ext/speex/meson.build: + * ext/taglib/meson.build: + * ext/twolame/meson.build: + * ext/vpx/meson.build: + * ext/wavpack/meson.build: + * gst/alpha/meson.build: + * gst/apetag/meson.build: + * gst/audiofx/meson.build: + * gst/audioparsers/meson.build: + * gst/auparse/meson.build: + * gst/autodetect/meson.build: + * gst/avi/meson.build: + * gst/cutter/meson.build: + * gst/debugutils/meson.build: + * gst/deinterlace/meson.build: + * gst/dtmf/meson.build: + * gst/effectv/meson.build: + * gst/equalizer/meson.build: + * gst/flv/meson.build: + * gst/flx/meson.build: + * gst/goom/meson.build: + * gst/goom2k1/meson.build: + * gst/icydemux/meson.build: + * gst/id3demux/meson.build: + * gst/imagefreeze/meson.build: + * gst/interleave/meson.build: + * gst/isomp4/meson.build: + * gst/law/meson.build: + * gst/level/meson.build: + * gst/matroska/meson.build: + * gst/monoscope/meson.build: + * gst/multifile/meson.build: + * gst/multipart/meson.build: + * gst/replaygain/meson.build: + * gst/rtp/meson.build: + * gst/rtpmanager/meson.build: + * gst/rtsp/meson.build: + * gst/shapewipe/meson.build: + * gst/smpte/meson.build: + * gst/spectrum/meson.build: + * gst/udp/meson.build: + * gst/videobox/meson.build: + * gst/videocrop/meson.build: + * gst/videofilter/meson.build: + * gst/videomixer/meson.build: + * gst/wavenc/meson.build: + * gst/wavparse/meson.build: + * gst/y4m/meson.build: + * meson.build: + * sys/directsound/meson.build: + * sys/osxaudio/meson.build: + * sys/osxvideo/meson.build: + * sys/rpicamsrc/meson.build: + * sys/v4l2/meson.build: + * sys/waveform/meson.build: + * sys/ximage/meson.build: + meson: Call pkgconfig.generate in the loop where we declare plugins dependencies + Removing some copy pasted code + Part-of: + +2022-09-01 11:51:48 -0400 Thibault Saunier + + * docs/meson.build: + meson: Namespace the plugins_doc_dep/libraries variables + Part-of: + +2022-08-31 18:44:14 -0400 Thibault Saunier + + * meson.build: + meson: Rename plugins list and make them "dependency" objects + Part-of: + +2022-08-18 17:08:51 +0300 Raul Tambre + + * gst/rtpmanager/gstrtpjitterbuffer.c: + * tests/check/elements/rtpjitterbuffer.c: + rtpjitterbuffer: remove lost timer for out of order packets + When receiving old packets remove the running lost timer if present. + This fixes incorrect reporting of a lost packet even if it arrived in time. + Part-of: + +2022-08-26 18:42:44 +0300 Sebastian Dröge + + * gst/rtp/gstrtpvp8depay.c: + rtpvp8depay: If configured to wait for keyframes after packet loss, also do that if incomplete frames are detected + This can happen if the data inside the packets is incomplete without the + seqnums being discontinuous because of ULPFEC being used. + Part-of: + +2022-05-31 15:18:03 +0200 Stéphane Cerveau + + * docs/meson.build: + * meson.build: + docs: disable in static build + Following gst-plugins-base, disable docs if static_build + in: + - gstreamer + - gst-plugins-good + - gst-plugins-ugly + - gst-libav + - gstreamer-vaapi + Part-of: + +2022-08-24 17:30:34 +0800 Jianhui Dai + + * sys/v4l2/gstv4l2allocator.c: + v4l2allocator: Fix invalid imported dmabuf fd + Fix a typo that set userptr to dmabuf fd. It leads to failure of + dmabuf-import io-mode. + Part-of: + +2022-07-22 13:41:17 +0200 Mathieu Duponchelle + + * gst/isomp4/qtdemux.c: + playback: add onvif metadata caps to raw caps + + remove encoding from x-onvif-metadata caps output by qtdemux + Part-of: + +2022-08-23 10:28:30 +0000 zhiyuan.liu + + * gst/isomp4/gstisoff.c: + isoff: Fix earliest pts field parse issue + earliest pts will be covered by first_offset field on version 0 case. + Part-of: + +2022-08-18 16:36:45 +0200 Jan Alexander Steffens (heftig) + + * ext/adaptivedemux2/downloadhelper.c: + adaptivedemux2: Fix download helper with libsoup 3.0.x + libsoup 3.0.x dispatches using a single source attached when the session + is created, so we need to create the session with the same context that + our download thread is later using. + 2.74 or 3.1 will dispatch a response using the context which sent the + request. However, for any context other than the one that created the + session, this will also create and destroy sources, so there's still + some slight performance benefit. + Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1384 + Part-of: + +2022-08-18 09:48:15 +1000 Jan Schmidt + + * ext/adaptivedemux2/gstadaptivedemux.c: + adaptivedemux2: Implement send_event() vfunc + Handle select-streams and seek events in an element + level send_event() vfunc, so they can be received + before any source pads are created. + This allows preferred streams to be selected before + segment downloading starts. + Part-of: + +2022-08-17 09:11:52 +1000 Jan Schmidt + + * gst/multifile/gstsplitmuxsrc.c: + splitmuxsrc: Stop pad task before cleanup + When stopping the element, make sure the pad task + is stopped before destroying the part readers. + Closes a race where the pad task might access + a freed pointer. + Also add a guard against this sort of thing + by holding a ref to the reader in the pad loop. + Part-of: + +2022-08-12 20:20:43 +1000 Jan Schmidt + + * gst/isomp4/qtdemux.c: + qtdemux: Avoid crash on reconfiguring. + When reconfiguring a stream that never created + an output pad, don't access a NULL GstPad pointer. + Part-of: + +2022-08-16 19:01:19 +0300 Sebastian Dröge + + * gst/isomp4/qtdemux.c: + qtdemux: Set parsed=true on ONVIF Timed Metadata caps + Inside MP4 the metadata must be properly parsed into frames and in + order. + Part-of: + +2022-08-15 14:30:50 -0400 Nicolas Dufresne + + * sys/v4l2/gstv4l2bufferpool.c: + v4l2bufferpool: Fix debug trace + The tracing of the buffer pointer was done on the secondary pointer, which + does not match with other traces of the same buffer. This made the trace + confusing and less useful. + Fixes #1379 + Part-of: + +2022-08-12 21:57:25 +1000 Jan Schmidt + + * ext/adaptivedemux2/gstadaptivedemux-stream.c: + * ext/adaptivedemux2/gstadaptivedemux.c: + adaptivedemux2: Fix for period switching in live streams + When playing live, it's possible that one stream reaches + the end of the available playback window and goes to sleep + waiting for a manifest update, and the manifest update + introduces a new period. In that case, the sleeping + stream needs to wake up and go 'properly' EOS before we + can advance the input to the new period. + Accordingly, make sure that a stream's last_ret value + is not marked as EOS if it's just sleeping waiting for a live + manifest update. + Also fix the output loop to go back and re-check if it's + time to switch to the next period after dequeuing and + discarding an EOS event. + https://livesim.dashif.org/livesim/periods_20/testpic_2s/Manifest.mpd + Part-of: + +2022-08-11 09:34:58 +0900 Hosang Lee + + * ext/adaptivedemux2/mss/gstmssdemux.c: + mssdemux2: Use gsturi structure to form fragment urls + Utilize gsturi to form fragment url paths. + A token query may contain the string "manifest" and this would lead + to improper url creations. + Part-of: + +2022-08-12 13:20:01 +0300 Sebastian Dröge + + * gst/rtsp/gstrtspsrc.c: + rtspsrc: Consider the actual control base URI also in case the connection URI contains a query string + That is, get rid of unnecessary and wrong special-casing. + This could always use gst_rtsp_url_get_request_uri_with_control() but as + we only have the control base URI as string it is easier to just call + gst_uri_join_strings(). + Part-of: + +2022-08-11 18:37:18 +0300 Sebastian Dröge + + * gst/isomp4/fourcc.h: + * gst/isomp4/qtdemux.c: + * gst/isomp4/qtdemux.h: + * gst/isomp4/qtdemux_types.c: + qtdemux: Add reference timestamp meta with UTC times based on the ONVIF Export File Format CorrectStartTime box to outgoing buffers + Part-of: + +2022-08-11 05:17:05 +1000 Jan Schmidt + + * ext/adaptivedemux2/hls/gsthlsdemux.c: + hlsdemux2: Fix reference leak of variant stream + When switching back to the previous variant stream + in gst_hls_demux_change_playlist(), fix a couple of + paths that would leak a reference to the previous + variant. + Part-of: + +2022-08-11 05:07:10 +1000 Jan Schmidt + + * ext/adaptivedemux2/hls/gsthlsdemux.c: + hlsdemux2: Don't leak the datetime in time map structs + Add a function to clean up GstHLSTimeMap structs + and free the ref on the optional associated GDateTime + Part-of: + +2022-08-11 05:03:10 +1000 Jan Schmidt + + * ext/adaptivedemux2/hls/gsthlsdemux.c: + hlsdemux2: Fix typefind leak and invalid memory access + When typefinding aggregates incoming data to a pending + typefind buffer and then succeeds in typefinding, it + leaks the aggregated buffer, and leaves the caller + accessing an unreffed buffer. + Part-of: + +2022-08-11 05:36:15 +1000 Jan Schmidt + + * ext/adaptivedemux2/hls/m3u8.c: + hlsdemux2: m3u8: Fix memory leaks on parsing + Fix memory leaks when parsing of an m3u8 file is + incomplete, with EXTINF or EXT-X-PROGRAM-DATE-TIME + directives, but no segment url. + Part-of: + +2022-08-11 00:59:50 +1000 Jan Schmidt + + * ext/adaptivedemux2/hls/m3u8.c: + hlsdemux2: m3u8: Fix memory leak + Clear the GValue holding intermediate GstStructure field + data. + Part-of: + +2022-08-11 01:01:07 +1000 Jan Schmidt + + * ext/adaptivedemux2/gstadaptivedemuxutils.c: + adaptivedemux2: Fix uninitialised memory usage in debug + Fix printing uninitialised memory by clearing the + GstAdaptiveDemuxClock structure when allocating. + Part-of: + +2022-08-12 02:20:40 +0530 Nirbheek Chauhan + + * gst/rtpmanager/gstrtpst2022-1-fecenc.c: + rtpst2022-1-fecenc: Drain column packets on EOS + Otherwise we won't send the protection packets for the last few + packets when a stream ends. + Also send EOS on the FEC src row pad immediately, and on the FEC src + column pad after draining is complete. This makes it so that the FEC + src pads on rtpbin behave the same way as the RTCP src pads on rtpbin + when EOS is received on the send_rtp_sink pad. + Part-of: + +2022-08-11 08:48:08 +0200 Edward Hervey + + * gst/isomp4/qtdemux.c: + qtdemux: Don't use invalid values from failed trex parsing + If parsing the fragment default values (`trex` atom) failed, don't try to + compute a bogus sample_description_id value. + Fixes #1369 + Part-of: + +2022-08-09 09:42:23 +0200 Piotr Brzeziński + + * docs/gst_plugins_cache.json: + * gst/videofilter/gstvideoflip.c: + videoflip: Add support for 10/12bit planar formats + Implements support for I420, I422 and Y444 in 10/12 bit LE/BE variants. + I422 is handled separately from the rest, as it needs to consider + the endianness of the current format during most transforms. + Part-of: + +2022-08-04 18:09:52 +0800 Haihua Hu + + * gst/alpha/gstalpha.c: + alpha: fix stride issue when out buffer has padding on right + if outbuf has padding on right, need jump to next line use stride, + otherwise downstream element will show a wrong picture when use the + same stride + Part-of: + +2022-08-09 00:12:58 +1000 Jan Schmidt + + * ext/adaptivedemux2/hls/gsthlsdemux.c: + hlsdemux2: Requeue header buffer when restarting fragment + When returning GST_ADAPTIVE_DEMUX_FLOW_RESTART_FRAGMENT + for the first segment data, we might need to requeue the + header. + This was leading to occasional prerolling stalls on + HLS live streams with renditions. + Part-of: + +2022-08-07 20:56:49 +1000 Jan Schmidt + + * ext/adaptivedemux2/hls/gsthlsdemux.c: + hlsdemux2: Fix buffer leak when resynching + Unref the buffer in gst_hls_demux_handle_buffer() when + returning GST_ADAPTIVE_DEMUX_FLOW_LOST_SYNC + Part-of: + +2022-08-04 23:54:27 +1000 Jan Schmidt + + * ext/adaptivedemux2/gstadaptivedemuxutils.c: + adaptivedemux2: Fix a small race on shutdown + Make sure gst_adaptive_demux_loop_cancel_call() + never tries to operate on an invalidated main context. Make + sure to clear the main context pointer while holding the lock, + and to check it in gst_adaptive_demux_loop_cancel_call() + Part-of: + +2022-07-22 03:32:39 +1000 Jan Schmidt + + * ext/adaptivedemux2/gstadaptivedemux-stream.c: + adaptivedemux2-stream: Silence a compiler warning + Part-of: + +2022-07-28 04:17:26 +1000 Jan Schmidt + + * ext/adaptivedemux2/gstadaptivedemux-private.h: + adaptivedemux2: Move internal FLOW_SWITCH return value. + Move the internal-only FLOW_SWITCH custom return value + to GST_FLOW_CUSTOM_SUCCESS+2 to avoid collision with + GST_ADAPTIVE_DEMUX_FLOW_LOST_SYNC + Part-of: + +2022-07-20 10:57:41 +0200 Edward Hervey + + * ext/adaptivedemux2/gstadaptivedemux.h: + adaptivedemux2: Modify custom sync loss flow return + Make it a custom sucess and not an error + Part-of: + +2022-07-12 10:44:51 +0200 Edward Hervey + + * ext/adaptivedemux2/hls/m3u8.c: + hlsdemux2: Always check DSN if required + We don't want to consider the candidate as being before the playlist if the DSN + don't match + Part-of: + +2022-07-11 10:31:42 +0200 Edward Hervey + + * ext/adaptivedemux2/gstadaptivedemux-stream.c: + * ext/adaptivedemux2/hls/gsthlsdemux.c: + adaptivedemux2/hlsdemux2: Handle loss of sync when dowloading. + Media playlist updates and fragment downloads happen in an interleaved + fashion. When a media playlist update fails *while* a segment is being + downloaded, this means we lost synchronization. + Properly propagate and handle this + Part-of: + +2022-07-08 10:48:05 +0200 Edward Hervey + + * ext/adaptivedemux2/hls/gsthlsdemux.c: + hlsdemux2: Fix initial playlist setup. + There is now only a single case where we setup the initial playlist to 0, which + is for the very first variant stream. + Rendition streams will have the initial playlist "synchronized" against the + variant stream media playlist. + Part-of: + +2022-07-08 10:44:51 +0200 Edward Hervey + + * ext/adaptivedemux2/hls/gsthlsdemux.c: + hlsdemux2: Handle loss of synchronization in live + Loss of synchronization happens when the updated media playlist has no + relationship to the previous ones. This could happen because of network issues, + server issues, etc... + When this happens, we take no chance and "reset" ourselves so that we can "seek + back to live" against the new updated playlists. + Since this happens at the "media playlist update" level, make sure the custom + flow return is propagated up. + Part-of: + +2022-07-08 10:40:33 +0200 Edward Hervey + + * ext/adaptivedemux2/gstadaptivedemux-stream.c: + * ext/adaptivedemux2/gstadaptivedemux.c: + adaptivedemux2: Handle synchronously to lost sync + We are already in the main scheduler thread, therefore we can do the "seek back + to live" directly. This also avoids other pending actions to take place. + Also handle the loss of sync when doing manifest updates. + Part-of: + +2022-07-06 11:44:57 +0200 Edward Hervey + + * ext/adaptivedemux2/hls/gsthlsdemux.c: + hlsdemux2: Prune time maps when possible + Add a new method to prune unused time mappings (i.e. which aren't used by any + current media playlist). + Do that when doing flushing seeks. Could be used in other places later too. + Part-of: + +2022-06-13 15:26:22 +0200 Edward Hervey + + * ext/adaptivedemux2/hls/m3u8.c: + hlsdemux2: Allow DSN mismatches when re-syncing playlists + Some providers provide completely incompatible DSN across bitrates/renditions, + but do keep MSN consistent. + If we fail to synchronize playlist with DSN, retry without the DSN taken into + account. + Part-of: + +2022-07-12 01:58:30 +1000 Jan Schmidt + + * ext/adaptivedemux2/gstadaptivedemux.c: + adaptivedemux2: Fixes for period switching in the output loop + Close some race conditions in switching to the next period, + by ensuring the tracks are completely drained first and by + not outputting EOS events to the output source pad + if there is another period pending. + Fixes Manifest_MultiPeriod_1080p.mpd some more. + Part-of: + +2022-07-12 01:55:54 +1000 Jan Schmidt + + * ext/adaptivedemux2/gstadaptivedemux-stream.c: + adaptivedemux2: stream: Set period has_next_period flag before EOS + Before sending EOS, update the period's has_next_period + flag and/or create the next period. This closes a race + where the output loop might receive the EOS event + and either push it downstream (causing premature EOS), + or receive it and try and switch to the next period + before that period is completely set up. + Part-of: + +2022-07-12 01:24:31 +1000 Jan Schmidt + + * ext/adaptivedemux2/gstadaptivedemux.c: + * ext/adaptivedemux2/gstadaptivedemux.h: + adaptivedemux2: period: Rename 'closed' flag to 'has_next_period' + The flag is used to tell the output loop that a + next period is present, since the output loop + can't call the gst_adaptive_demux_has_next_period() + method. + Part-of: + +2022-07-01 02:07:05 +1000 Jan Schmidt + + * ext/adaptivedemux2/gstadaptivedemux.c: + adaptivedemux2: Recheck for a pending track on drain + When a track is completely drained and EOS, but + there's a pending track on the slot loop again + to switch to that track. + Part-of: + +2022-07-01 02:05:36 +1000 Jan Schmidt + + * ext/adaptivedemux2/gstadaptivedemux-period.c: + adaptivedemux2: Check stream selected instead of state + When combining stream flows, ignore streams that + are not selected, instead of checking whether + the stream state has changed yet. + Fixes another issue with dashdemux2 where it fails to + change to the next period when playing content with + several video, audio and text streams, as with + Manifest_MultiPeriod_1080p.mpd when seeking to 730 + just before the end of the first period. + Part-of: + +2022-05-25 18:40:30 +0530 Nirbheek Chauhan + + * gst/rtsp/gstrtspsrc.c: + rtsp+rtmp: Forward warning added to tls-validation-flags to our users + With the 2.72 release, glib-networking developers have decided that + TLS certificate validation cannot be implemented correctly by them, so + they've deprecated it. + In a nutshell: a cert can have several validation errors, but there + are no guarantees that the TLS backend will return all those errors, + and things are made even more complicated by the fact that the list of + errors might refer to certs that are added for backwards-compat and + won't actually be used by the TLS library. + Our best option is to ignore the deprecation and pass the warning onto + users so they can make an appropriate security decision regarding + this. + We can't deprecate the tls-validation-flags property because it is + very useful when connecting to RTSP cameras that will never get + updates to fix certificate errors. + Relevant upstream merge requests / issues: + https://gitlab.gnome.org/GNOME/glib/-/merge_requests/2214 + https://gitlab.gnome.org/GNOME/glib-networking/-/issues/179 + https://gitlab.gnome.org/GNOME/glib-networking/-/merge_requests/193 + Part-of: + +2022-07-22 14:51:11 +0200 Mark Nauwelaerts + + * gst/videobox/gstvideobox.c: + videobox: avoid dropping caps fields for passthrough caps transform + Fixes potential negotiation failure in case downstream element + is a bit picky regarding the fields in question. + Part-of: + +2022-07-27 15:44:09 +0200 Adrian Fiergolski + + * gst/videofilter/gstvideoflip.c: + videoflip: Fix caps negotiation when method is selected + The caps negotiation should respect the selected method to the test pipeline below works properly. + gst-launch-1.0 videotestsrc ! video/x-raw,width=320,height=600 ! videoflip method=clockwise ! video/x-raw,width=600,height=320 ! fakesink + Signed-off-by: Adrian Fiergolski + Part-of: + +2022-07-24 23:44:10 -0400 fduncanh + + * sys/v4l2/gstv4l2object.c: + v4l2object.c: add support for Apple's full-range bt709 colorspace variant + Part-of: + +2022-07-08 18:22:58 +0800 Elliot Chen + + * sys/v4l2/gstv4l2bufferpool.c: + v4l2: fix the critical log when unreference the buffer with no data + In the trick mode, driver may queue a valid buffer follow by an + empty buffer which has no valid data to indicate EOS.For the empty + buffer whose memory is multi-plane, need to resize it before + unreference it. + Part-of: + +2022-07-15 13:22:14 +0300 Sebastian Dröge + + * ext/qt/qtglrenderer.cc: + qt: Fix another instance of Qt/GStreamer both defining `GLsync` differently + In file included from ../gstreamer1.0-plugins-good/1.20.3-r0/recipe-sysroot/usr/include/gstreamer-1.0/gst/gl/gstglfuncs.h:87, + from ../gst-plugins-good-1.20.3/ext/qt/qtglrenderer.cc:14: + ../gstreamer1.0-plugins-good/1.20.3-r0/recipe-sysroot/usr/include/gstreamer-1.0/gst/gl/glprototypes/gstgl_compat.h:40:18: error: conflicting declaration 'typedef void* GLsync' + 40 | typedef gpointer GLsync; + | ^~~~~~ + In file included from ../gstreamer1.0-plugins-good/1.20.3-r0/recipe-sysroot/usr/include/QtGui/qopengl.h:127, + from ../gstreamer1.0-plugins-good/1.20.3-r0/recipe-sysroot/usr/include/QtQuick/qsggeometry.h:44, + from ../gstreamer1.0-plugins-good/1.20.3-r0/recipe-sysroot/usr/include/QtQuick/qsgnode.h:43, + from ../gstreamer1.0-plugins-good/1.20.3-r0/recipe-sysroot/usr/include/QtQuick/qsgrendererinterface.h:43, + from ../gstreamer1.0-plugins-good/1.20.3-r0/recipe-sysroot/usr/include/QtQuick/qquickwindow.h:44, + from ../gstreamer1.0-plugins-good/1.20.3-r0/recipe-sysroot/usr/include/QtQuick/QQuickWindow:1, + from ../gst-plugins-good-1.20.3/ext/qt/qtglrenderer.cc:6: + ../gstreamer1.0-plugins-good/1.20.3-r0/recipe-sysroot/usr/include/QtGui/qopengles2ext.h:24:26: note: previous declaration as 'typedef struct __GLsync* GLsync' + 24 | typedef struct __GLsync *GLsync; + | ^~~~~~ + Part-of: + +2022-07-15 06:40:05 +0530 Nirbheek Chauhan + + * sys/osxaudio/gstosxaudiodeviceprovider.c: + * sys/osxaudio/gstosxcoreaudiohal.c: + osxaudio: Fix deprecation in macOS 12.0 + kAudioObjectPropertyElementMaster has been renamed to + kAudioObjectPropertyElementMain + Part-of: + +2022-07-12 21:19:35 +1000 Jan Schmidt + + * gst/multifile/gstsplitmuxsink.c: + splitmuxsink: Fix memory leak + Fix a leak of the buffer info struct when reaching + EOS without data on the reference input. + Part-of: + +2022-06-24 13:32:34 +0300 Sebastian Dröge + + * gst/rtpmanager/rtpjitterbuffer.c: + rtpjitterbuffer: Fix calculation of RFC7273 RTP time period start + This has to be based directly on the current estimated clock time and + has to allow for negative period starts. + Part-of: + +2022-04-14 01:19:51 +0900 Seungha Yang + + * gst/multifile/gstsplitmuxsink.c: + * tests/check/elements/splitmuxsink.c: + splitmuxsink: Don't crash on EOS without buffer + Fix a case where upstream pushed EOS without buffers. + Part-of: + +2022-06-30 15:15:22 +0000 Thibault Saunier + + * gst/rtpmanager/gstrtprtxreceive.c: + * gst/rtpmanager/gstrtprtxsend.c: + * tests/check/elements/rtprtx.c: + rtprtx: Fix copying extension headers + There was a typo leading to reading memory from the buffer we were + writing to. + Part-of: + +2022-05-28 15:04:10 -0400 fduncanh + + * sys/v4l2/gstv4l2videodec.c: + v4l2videodec: replace multiple decoder bug warnings with single one + Achieve this by dropping frames after a drain if the driver failed to so. + This works around RaspberryPi driver issue [1]. + [1] https://github.com/raspberrypi/linux/issues/5059#issuecomment- + Fixes #1103 + Part-of: + +2022-06-25 19:23:11 +0100 Tim-Philipp Müller + + * tests/check/elements/udpsink.c: + tests: udpsink: make test work in environments without IPv6 + Part-fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/issues/939 + Part-of: + +2022-05-28 16:47:42 -0400 fduncanh + + * sys/v4l2/gstv4l2videodec.c: + v4l2videodec: replace multiple decoder bug warnings by a single warning (warning due to incorrectly dropped frames at initial caps adjustment) + Part-of: + +2022-06-29 00:51:28 +1000 Jan Schmidt + + * ext/adaptivedemux2/gstadaptivedemux-period.c: + adaptivedemux2: Ignore stopped stream flow state + When calculating the combined stream flow state + for a period, don't consider stopped streams. + Fixes switching to the next period in DASH streams + with multiple video/audio/subtitle streams. + Part-of: + +2022-06-29 01:25:41 +1000 Jan Schmidt + + * ext/adaptivedemux2/gstadaptivedemux-stream.c: + adaptivedemux2: Clean up stream parsebins on finalize + Remove the parsebin for a stream from the overall + bin when cleaning up the stream, to avoid + keeping around old ones when moving between periods + Part-of: + +2022-06-24 02:54:22 +1000 Jan Schmidt + + * ext/adaptivedemux2/gstadaptivedemux.c: + * ext/adaptivedemux2/gstadaptivedemuxutils.c: + adaptivedemux2: Fix memory leaks and use-after-free + Fix various small memory leaks, and an invalid + access to GstEvent after giving away the ref + via gst_pad_push_event() + Part-of: + +2022-06-24 02:57:54 +1000 Jan Schmidt + + * ext/adaptivedemux2/hls/gsthlsdemux-util.c: + hlsdemux2: Fix potential segfault + Fix a potential segfault if we receive a ISO-FF stream + with moof before moov. + Part-of: + +2022-06-24 02:57:03 +1000 Jan Schmidt + + * ext/adaptivedemux2/hls/gsthlsdemux.c: + * ext/adaptivedemux2/hls/m3u8.c: + hlsdemux2: Fix memory leaks + Clean up various memory leaks + Part-of: + +2022-06-23 19:24:03 +1000 Jan Schmidt + + * ext/adaptivedemux2/hls/gsthlsdemux.c: + hlsdemux2: Free current_segment on finalize + Avoid a memory leak by making sure to release the + current segment on exit if non-NULL + Part-of: + +2022-06-29 10:55:13 +0100 Tim-Philipp Müller + + * meson.build: + coding style: allow declarations after statement + See https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1243/ + and https://gitlab.freedesktop.org/gstreamer/gstreamer-project/-/issues/78 + Part-of: + +2022-06-22 03:35:03 +1000 Jan Schmidt + + * ext/adaptivedemux2/gstadaptivedemux-track.c: + adaptivedemux2: track: Fix buffering time calc before output + Use the lowest track input time as the output + time when calculating track buffering levels + before anything has been dequeued. + Fixes multi-period DASH not advancing to the + next period in some cases. + Part-of: + +2022-06-22 03:34:19 +1000 Jan Schmidt + + * ext/adaptivedemux2/gstadaptivedemux-period.c: + * ext/adaptivedemux2/gstadaptivedemux-track.c: + * ext/adaptivedemux2/gstadaptivedemux.c: + * ext/adaptivedemux2/gstadaptivedemux.h: + adaptivedemux2: track: Add period number to most debug statements + Store the period number the track belongs to, and + add it in various debug statements + Part-of: + +2022-06-22 03:30:16 +1000 Jan Schmidt + + * ext/adaptivedemux2/gstadaptivedemux-stream.c: + adaptivedemux2: stream: Don't take TRACKS_LOCK when sending EOS event + The stream tracks list can't change while we're + iterating it from the scheduling thread, + and the event handler immediately takes the + tracks lock, causing a deadlock. + Part-of: + +2022-06-08 11:17:09 +0200 Edward Hervey + + * ext/adaptivedemux2/hls/gsthlsdemux.c: + hlsdemux2: Improve media playlist updates + * When dealing with rendition streams, we attempt to synchronize the media + playlist against the variant stream. This helps with speeding up the correct + initial fragment search and avoids issues when streams at activated at a much + later time. + * Also add checks for variant stream existence before attempting to use them + Part-of: + +2022-06-08 11:16:15 +0200 Edward Hervey + + * ext/adaptivedemux2/hls/gsthlsdemux.c: + hlsdemux2: Only seek on selected streams + When handling seeks, there is no need to seek on unselected streams. If they + later get activated they will be properly seek onto + Part-of: + +2022-06-08 09:33:22 +0200 Edward Hervey + + * tests/check/elements/hlsdemux_m3u8.c: + tests: check: Update hlsdemux2 tests for playlist changes + We no longer do auto-magic fallbacks when synchronizing a disconnected + playlist. It is handled at a higher level. + Part-of: + +2022-06-03 10:25:34 +0200 Edward Hervey + + * ext/adaptivedemux2/hls/m3u8.c: + hlsdemux2: Fix debug return statement + Due to latest commits res could have been NULL. + Part-of: + +2022-06-02 09:46:22 +0200 Edward Hervey + + * ext/adaptivedemux2/hls/m3u8.c: + hlsdemux2: No longer re-add segments from before the playlist + When updating playlists, there is a possibility that the playlists don't + perfectly align, but the last entry of the previous playlist is *just* before + the first entry of the new playlist. + In those cases, we still can transfer the timing information from one playlist + to another, but we do not want to return that segment as being the matching one. + Part-of: + +2022-06-01 15:45:23 +0200 Edward Hervey + + * ext/adaptivedemux2/hls/gsthlsdemux.c: + hlsdemux2: Use variant stream as support for synchronizing playlists + When matching playlists, there is a possibility that rendition streams will not + have been updated in time (for example because that stream started later, or + playback was paused). This would cause several playback failures and seeking + failures. + In order to still fall back on our feet, attempt to synchronize that rendition + playlist against the current variant playlist. This will attempt to match the + stream time using SN/DNS/PDT/... + Part-of: + +2022-05-23 15:51:23 +0200 Edward Hervey + + * ext/adaptivedemux2/hls/gsthlsdemux.c: + * ext/adaptivedemux2/hls/m3u8.c: + * ext/adaptivedemux2/hls/m3u8.h: + hlsdemux2: Detect synchronization loss + If we have been updating too slowly and have gone out of the current live + window, inform the baseclass accordingly. + This is different from the case where we have been updating quicker than what + the server provides. + Part-of: + +2022-05-23 15:48:16 +0200 Edward Hervey + + * ext/adaptivedemux2/hls/gsthlsdemux.c: + hlsdemux2: More improvement/fixes to position tracking + Part-of: + +2022-05-23 15:43:04 +0200 Edward Hervey + + * ext/adaptivedemux2/gstadaptivedemux-private.h: + * ext/adaptivedemux2/gstadaptivedemux-stream.c: + * ext/adaptivedemux2/gstadaptivedemux.c: + * ext/adaptivedemux2/gstadaptivedemux.h: + adaptivedemux2: Handle loss of synchronization + Add a new custom GstFlowReturn so that subclasses can notify that they have lost + live synchronization. + When that happens, do a flushing seek back to the live position + Part-of: + +2022-05-23 09:11:24 +0200 Edward Hervey + + * ext/adaptivedemux2/gstadaptivedemux.c: + adaptivedemux2: Fix SNAP seek handling + * Since only flushing seeks are allowed, the "current" position is always the + global output position (and not "some" stream current position). + * In terms of figuring out to which stream to "snap" to, we can send it to any + selected stream. Removes the requirement of this function to a specific output + pad. + Part-of: + +2022-05-17 07:16:48 +0200 Edward Hervey + + * ext/adaptivedemux2/hls/gsthlsdemux.c: + * ext/adaptivedemux2/hls/gsthlsdemux.h: + hlsdemux2: Fix position tracking + Remove the "pending advance" hack and instead rely on the base stream current + position to track our position (instead of a potentially NULL "current + segment"). + Also ensure the media playlists are always refreshed with valid stream time, + even if there is no current segment. + Part-of: + +2022-05-17 07:11:17 +0200 Edward Hervey + + * ext/adaptivedemux2/hls/m3u8.c: + * ext/adaptivedemux2/hls/m3u8.h: + hlsdemux2: Add a new method to synchronize two media playlist + This allows transfering the stream time of the playlist to an updated + variant/rendition. + This allows updating that information without having a "current segment" + Part-of: + +2022-05-17 07:07:23 +0200 Edward Hervey + + * ext/adaptivedemux2/gstadaptivedemux-stream.c: + * ext/adaptivedemux2/gstadaptivedemux.c: + adaptivedemux2: Initialize and use stream start/current position + The stream start and current position would be properly set when seeking or + activating a stream after playback started. But it would never be properly + initialized. + Set it to NONE initially to indicate to subclasses that no position has been + tracked yet. This will allow them to detect initial stream usage. + Futhermore, once the initial streams setup is done, make sure that it is set to + a valid initial value: + * The minimum stream time in live + * Or else the period start + Part-of: + +2022-05-19 15:51:03 -0400 Nicolas Dufresne + + * sys/v4l2/gstv4l2videodec.c: + v4l2videodec: Fix activation of internal pool + If the driver does not support VIDIOC_CREATE_BUFS ioctl, the pool + configuration may get changed, which requires a validation. This would + fail to activate a pool in a case it shouldn't normally fail unless we + are out of memory. + Part-of: + +2022-06-28 01:29:06 +0100 Tim-Philipp Müller + + * ext/dv/meson.build: + dv, opusparse: fix duplicate symbols in static build + Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1262 + Part-of: + +2022-06-25 19:50:10 +0100 Tim-Philipp Müller + + * tests/check/meson.build: + tests: skip unit tests for dependency-less elements that have been disabled + Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1136 + Part-of: + +2022-06-24 12:10:02 +0100 Tim-Philipp Müller + + * tests/examples/jack/meson.build: + examples: don't try and build jack examples if jack was disabled + Fixes meson build ERROR: Unknown variable "libjack_dep". + Fixes #1301 + Part-of: + +2022-06-17 14:02:54 +0200 Marc Leeman + + * gst/rtpmanager/rtpsession.c: + rtpsession: properly initialise favor-new property + Part-of: + +2022-05-27 11:20:06 +0200 Edward Hervey + + * ext/adaptivedemux2/hls/gsthlsdemux-util.c: + hlsdemux2: Look for mpegts synchronization point further + Some mpeg-ts streams have extra data at the beginning. While it's not ideal, we + should be able to cope with it. + Therefore increase the initial search window for at least 4 consecutive + synchronization points to 1kB. + Part-of: + +2022-05-18 10:23:15 +0300 Sebastian Dröge + + * gst/matroska/matroska-demux.c: + matroskademux: Avoid integer-overflow resulting in heap corruption in WavPack header handling code + blocksize + WAVPACK4_HEADER_SIZE might overflow gsize, which then + results in allocating a very small buffer. Into that buffer blocksize + data is memcpy'd later which then causes out of bound writes and can + potentially lead to anything from crashes to remote code execution. + Thanks to Adam Doupe for analyzing and reporting the issue. + CVE: CVE-2022-1920 + https://gstreamer.freedesktop.org/security/sa-2022-0004.html + Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1226 + Part-of: + +2022-05-30 10:15:37 +0300 Sebastian Dröge + + * gst/isomp4/qtdemux.c: + qtdemux: Fix integer overflows in zlib decompression code + Various variables were of smaller types than needed and there were no + checks for any overflows when doing additions on the sizes. This is all + checked now. + In addition the size of the decompressed data is limited to 200MB now as + any larger sizes are likely pathological and we can avoid out of memory + situations in many cases like this. + Also fix a bug where the available output size on the next iteration in + the zlib decompression code was provided too large and could + potentially lead to out of bound writes. + Thanks to Adam Doupe for analyzing and reporting the issue. + CVE: tbd + https://gstreamer.freedesktop.org/security/sa-2022-0003.html + Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1225 + Part-of: + +2022-05-18 11:24:37 +0300 Sebastian Dröge + + * gst/matroska/matroska-read-common.c: + matroskademux: Fix integer overflows in zlib/bz2/etc decompression code + Various variables were of smaller types than needed and there were no + checks for any overflows when doing additions on the sizes. This is all + checked now. + In addition the size of the decompressed data is limited to 120MB now as + any larger sizes are likely pathological and we can avoid out of memory + situations in many cases like this. + Also fix a bug where the available output size on the next iteration in + the zlib/bz2 decompression code was provided too large and could + potentially lead to out of bound writes. + Thanks to Adam Doupe for analyzing and reporting the issue. + CVE: CVE-2022-1922, CVE-2022-1923, CVE-2022-1924, CVE-2022-1925 + https://gstreamer.freedesktop.org/security/sa-2022-0002.html + Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1225 + Part-of: + +2022-05-18 12:00:48 +0300 Sebastian Dröge + + * gst/avi/gstavidemux.c: + avidemux: Fix integer overflow resulting in heap corruption in DIB buffer inversion code + Check that width*bpp/8 doesn't overflow a guint and also that + height*stride fits into the provided buffer without overflowing. + Thanks to Adam Doupe for analyzing and reporting the issue. + CVE: CVE-2022-1921 + See https://gstreamer.freedesktop.org/security/sa-2022-0001.html + Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1224 + Part-of: + +2022-05-19 04:16:25 +0000 Adam Doupe + + * gst/smpte/gstmask.c: + smpte: Fix integer overflow with possible heap corruption in GstMask creation. + Check that width*height*sizeof(guint32) doesn't overflow when + allocated user_data for mask, potential for heap overwrite when + inverting. + Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1231 + Part-of: + +2022-06-14 23:03:26 +0200 Piotr Brzeziński + + * ext/adaptivedemux2/dash/gstmpd-prelude.h: + * ext/adaptivedemux2/dash/gstmpdhelper.h: + * ext/adaptivedemux2/dash/gstmpdnode.h: + * ext/adaptivedemux2/dash/gstmpdparser.h: + * ext/adaptivedemux2/dash/gstxmlhelper.h: + * ext/adaptivedemux2/hls/gsthlsdemux.c: + * ext/adaptivedemux2/hls/gsthlselement.c: + * ext/adaptivedemux2/hls/gsthlselements.h: + * ext/adaptivedemux2/hls/m3u8.c: + * ext/adaptivedemux2/mss/gstmss-prelude.h: + * ext/adaptivedemux2/mss/gstmssdemux.c: + * ext/adaptivedemux2/mss/gstmssdemux.h: + * ext/adaptivedemux2/mss/gstmssfragmentparser.h: + * ext/adaptivedemux2/mss/gstmssmanifest.h: + * ext/soup/gstsouploader.c: + * ext/soup/gstsouploader.h: + * tests/check/elements/hlsdemux_m3u8.c: + adaptivedemux2: Prevent duplicate symbols on static builds + Uses prelude header files with #defines to rename DASH and MSS + symbols duplicated in their old standalone versions. + Also redefines soup-related functions when building it for + adaptivedemux2 to prevent symbol conflicts there. + Part-of: + +2022-05-12 02:51:00 +1000 Jan Schmidt + + * ext/adaptivedemux2/gstadaptivedemux-track.c: + * ext/adaptivedemux2/gstadaptivedemux.h: + adaptivedemux2: Improve reverse playback buffering. + In reverse playback, store the lowest running time in each GOP + as the input_time for buffering purposes. That means we end up + storing at least a complete GOP before declaring buffering + 100% + Part-of: + +2022-04-08 23:06:09 +1000 Jan Schmidt + + * docs/gst_plugins_cache.json: + * ext/adaptivedemux2/gstadaptivedemux-private.h: + * ext/adaptivedemux2/gstadaptivedemux-track.c: + * ext/adaptivedemux2/gstadaptivedemux.c: + adaptivedemux2: reverse playback running times + Account for running time moving non-monotonically in + reverse playback by tracking the highest running time + seen at each point. + Part-of: + +2022-04-06 12:56:30 +0100 Tim-Philipp Müller + + * ext/adaptivedemux2/hls/m3u8.h: + * gst/rtpmanager/gstrtpjitterbuffer.c: + * gst/rtpmanager/gstrtpst2022-1-fecenc.c: + * gst/udp/gstudpelement.c: + * meson.build: + Bump GLib requirement to >= 2.62 + Can't require 2.64 yet because of + https://gitlab.freedesktop.org/gstreamer/cerbero/-/issues/323 + Part-of: + +2022-06-08 14:11:57 +0200 Marc Leeman + + * docs/gst_plugins_cache.json: + * gst/udp/gstmultiudpsink.c: + fix trivial distination -> destination + Part-of: + +2022-04-21 12:47:31 +0200 Ignacio Casal Quinteiro + + * sys/osxaudio/gstosxcoreaudiohal.c: + osxaudio: remove usage of goto + It is easier to follow the code without the goto now + Part-of: + +2022-03-30 12:59:46 +0200 Ignacio Casal Quinteiro + + * sys/osxaudio/gstosxcoreaudiohal.c: + osxaudio: support hidden devices + macOS features hidden devices. These are devices that will + not be shown in the macOS UIs and that cannot be retrieved + without having the specific UID of the hidden device. There + are cases when you might want to have a hidden device, for example + when having a virtual speaker that forwards the data to a virtual + hidden input device from which you can then grab the audio. + The blackhole project supports these hidden devices and + this patch provides a way that if the device id is a hidden + device it will use it instead of check the hardware list of devices + to understand if the device is valid. + Part-of: + +2022-04-20 18:12:02 +0200 Ignacio Casal Quinteiro + + * sys/osxaudio/gstosxcoreaudiohal.c: + osx: fix indent + Part-of: + +2022-03-30 12:48:02 +0200 Ignacio Casal Quinteiro + + * sys/osxaudio/gstosxcoreaudiohal.c: + osxaudio: iterate device only if needed + Part-of: + +2022-03-30 09:59:59 +0200 Ignacio Casal Quinteiro + + * sys/osxaudio/gstosxcoreaudiohal.c: + osxaudio: reduce scope of default device id variable + Part-of: + +2022-06-07 17:31:43 +0200 Bastien Nocera + + * ext/gtk/gtkgstglwidget.c: + gtk: Fix double-free when OpenGL can't be initialised + gtk_gl_area_get_error() doesn't return a copy of the error, but just the + error. If initialising OpenGL fails, then GtkGstGLWidget will consume + the error, and cause GTK to try and display freed memory. + ==50914== Invalid read of size 8 + ==50914== at 0x4C4CB8A: gtk_gl_area_draw_error_screen (gtkglarea.c:663) + ==50914== by 0x4C4CB8A: gtk_gl_area_draw (gtkglarea.c:687) + ==50914== by 0x4E061CA: gtk_widget_draw_internal (gtkwidget.c:7084) + ==50914== by 0x4BAEFB1: gtk_container_propagate_draw (gtkcontainer.c:3854) + ==50914== by 0x4D4B6BF: gtk_stack_render (gtkstack.c:2207) + ==50914== by 0x4BB4B03: gtk_css_custom_gadget_draw (gtkcsscustomgadget.c:159) + ==50914== by 0x4BBA4C4: gtk_css_gadget_draw (gtkcssgadget.c:885) + ==50914== by 0x4D4D780: gtk_stack_draw (gtkstack.c:2119) + ==50914== by 0x4E061CA: gtk_widget_draw_internal (gtkwidget.c:7084) + ==50914== by 0x4BAEFB1: gtk_container_propagate_draw (gtkcontainer.c:3854) + ==50914== by 0x4BAF0C3: gtk_container_draw (gtkcontainer.c:3674) + ==50914== by 0x4E061CA: gtk_widget_draw_internal (gtkwidget.c:7084) + ==50914== by 0x4BAEFB1: gtk_container_propagate_draw (gtkcontainer.c:3854) + ==50914== Address 0x187a0818 is 8 bytes inside a block of size 16 free'd + ==50914== at 0x48480E4: free (vg_replace_malloc.c:872) + ==50914== by 0x49A5B8C: g_free (gmem.c:218) + ==50914== by 0x49C1013: g_slice_free1 (gslice.c:1183) + ==50914== by 0x4990DE4: g_error_free (gerror.c:870) + ==50914== by 0x4990FE9: g_clear_error (gerror.c:1052) + ==50914== by 0x1A489780: _get_gl_context (gtkgstglwidget.c:540) + ==50914== by 0x1A4863CB: gst_gtk_invoke_func (gstgtkutils.c:39) + ==50914== by 0x49A3834: g_main_context_invoke_full (gmain.c:6137) + ==50914== by 0x1A486450: gst_gtk_invoke_on_main (gstgtkutils.c:59) + ==50914== by 0x1A48A29E: gtk_gst_gl_widget_init_winsys (gtkgstglwidget.c:632) + ==50914== by 0x1A4887E7: gst_gtk_gl_sink_start (gstgtkglsink.c:267) + ==50914== by 0x6579810: gst_base_sink_change_state (gstbasesink.c:5662) + ==50914== Block was alloc'd at + ==50914== at 0x484586F: malloc (vg_replace_malloc.c:381) + ==50914== by 0x49A9278: g_malloc (gmem.c:125) + ==50914== by 0x49C1BA5: g_slice_alloc (gslice.c:1072) + ==50914== by 0x49C3BCC: g_slice_alloc0 (gslice.c:1098) + ==50914== by 0x499096B: g_error_allocate (gerror.c:708) + ==50914== by 0x4990AF1: UnknownInlinedFun (gerror.c:722) + ==50914== by 0x4990AF1: g_error_copy (gerror.c:892) + ==50914== by 0x4C4B9F9: gtk_gl_area_set_error (gtkglarea.c:1036) + ==50914== by 0x4C4BAF7: gtk_gl_area_real_create_context (gtkglarea.c:346) + ==50914== by 0x4B21B28: _gtk_marshal_OBJECT__VOIDv (gtkmarshalers.c:2730) + ==50914== by 0x4920B78: UnknownInlinedFun (gclosure.c:893) + ==50914== by 0x4920B78: g_signal_emit_valist (gsignal.c:3406) + ==50914== by 0x4920CB2: g_signal_emit (gsignal.c:3553) + ==50914== by 0x4C4B927: gtk_gl_area_realize (gtkglarea.c:308) + Reproduced by running: + MESA_GL_VERSION_OVERRIDE=2.7 totem + See https://gitlab.gnome.org/GNOME/totem/-/issues/522 + Part-of: + +2022-06-06 12:31:52 +0300 Sebastian Dröge + + * gst/flv/gstflvdemux.c: + * gst/flv/gstflvdemux.h: + flvdemux: Make use of the streams API if used in a streams-aware bin + This allows adding audio/video streams after 6s. + Part-of: + +2022-06-03 18:35:54 +0200 Jan Alexander Steffens (heftig) + + * gst/audioparsers/gstaacparse.c: + aacparse: Avoid mismatch between src_caps and output_header_type + If our downstream caps didn't intersect, we attempted to convert between + raw and ADTS stream formats, if possible. If the caps still did not + intersect, we then used the modified `src_caps` but left the + `output_header_type` unmodified. + This caused a mismatch between caps and actual stream format. + Avoid this by first copying the `src_caps` to `convcaps` for the + additional intersection tests, replacing `src_caps` if we succeed. + While we're here, clean up the code a bit and remove the `codec_data` + field from outgoing ADTS caps. + Part-of: + +2022-06-04 10:27:09 +0300 Sebastian Dröge + + * gst/flv/gstflvdemux.c: + * gst/flv/gstflvelement.c: + flvdemux: Actually make use of the debug category + Part-of: + +2022-06-01 16:14:24 +0200 Stéphane Cerveau + + * ext/soup/gstsoup.c: + * ext/soup/gstsoupelement.c: + * ext/soup/gstsouploader.c: + soup: fix soup debug category + Use soup debug category in souploader + for soup plugin element load. + Inititalize properly soup utils category. + Part-of: + +2022-05-29 06:05:27 +0900 Seungha Yang + + * ext/adaptivedemux2/hls/m3u8.c: + hlsdemux2: Adjust debug log level + HLS manifest might not be represented by a single common caps + when different codecs are mixed in a playlist, but it + does not seem to be a critical issue we need to warn. + Part-of: + +2022-05-02 16:55:34 +0200 Stéphane Cerveau + + * ext/adaptivedemux2/dash/gstdashdemux.c: + * ext/adaptivedemux2/dash/gstdashdemux.h: + * ext/adaptivedemux2/gstadaptivedemux.c: + * ext/adaptivedemux2/gstadaptivedemuxelement.c: + * ext/adaptivedemux2/gstadaptivedemuxelements.h: + * ext/adaptivedemux2/hls/gsthlsdemux.c: + * ext/adaptivedemux2/hls/gsthlsdemux.h: + * ext/adaptivedemux2/meson.build: + * ext/adaptivedemux2/mss/gstmssdemux.c: + * ext/adaptivedemux2/mss/gstmssdemux.h: + * ext/adaptivedemux2/plugin.c: + adaptivedemux2: fix plugin/element init + In case of per features registration such as the + customizable gstreamer-full library, each + element should check that the soup library can be loaded to + facilitate the element registration. + Initialize the debug categories properly + Part-of: + +2022-05-29 20:27:38 +1000 Jan Schmidt + + * gst/rtpmanager/gstrtpptdemux.c: + rtpptdemux: Don't GST_FLOW_ERROR when ignoring invalid packets + https://bugzilla.gnome.org/show_bug.cgi?id=741398 changed + rtpptdemux in 2014 to not post a GST_ELEMENT_ERROR on the + bus when dropping an invalid (non-RTP) packet, but still + returned GST_FLOW_ERROR upstream - so the pipeline still + stops, but now without a useful bus error. + Return GST_FLOW_OK instead, so the pipeline keeps + running. Some old telephony equipment can send invalid + packets before the real RTP traffic starts. + Part-of: + +2022-05-28 16:46:04 +0530 Nirbheek Chauhan + + * ext/jack/gstjackaudiosrc.c: + jack: Always use jack_free as specified by the docs + Fixes a crash on Windows due to a CRT mismatch. The JACK installation + still uses MSVCRT, and we the Universal CRT for both MinGW and MSVC. + Part-of: + +2022-05-26 01:21:43 +0530 Nirbheek Chauhan + + * ext/jack/meson.build: + jack: Add support for detecting libjack on Windows + No source code changes were necessary to get the plugin working on + Windows with MSVC. + Run QJackCtl and audiotestsrc ! jackaudiosink just works. + Part-of: + +2022-05-24 16:07:13 +0800 Hou Qi + + * sys/v4l2/gstv4l2object.c: + v4l2: Reset transfer in gst_v4l2_object_acquire_format() + get_colorspace() checks input caps transfer when mapping V4L2_XFER_FUNC_709 + back to V4L2_COLORSPACE_BT2020 and GST_VIDEO_TRANSFER_BT2020_12. After + receiving source change event, decoder will G_FMT and S_FMT again. So need + to reset transfer when acquiring format to avoid using the old transfer. + Part-of: + +2022-05-25 13:00:58 +0200 Piotrek Brzeziński + + * gst/cutter/gstcutter.c: + * gst/cutter/gstcutter.h: + cutter: Include running/stream-time in messages + Part-of: + +2022-05-03 11:34:15 +0200 Stéphane Cerveau + + * ext/soup/gstsoup.c: + * ext/soup/gstsoupelement.c: + * ext/soup/gstsoupelements.h: + * ext/soup/gstsouphttpclientsink.c: + * ext/soup/gstsouphttpsrc.c: + soup: Fix plugin/element init + In case of per features registration such as the + customizable gstreamer-full library, each + element should check that the soup library can be loaded to + facilitate the element registration. + Initialize the debug category properly + Part-of: + +2022-05-23 21:24:40 -0400 Eli Schwartz + + * meson.build: + meson: use better zlib dependency fallback + zlib is required, and if it isn't found it is checked several ways and + then forced via subproject(). This code was added in commit + b93e37592a3ccc0eaece1c8fef2d362b1e5fe685, to account for systems where + zlib doesn't have pkg-config files installed. + But Meson already does dependency fallback, and also, since 0.54.0, does + the in-between checks for find_library('z') and has_header('zlib.h') via + the "system" type dependency. Simplify dependency lookup by marking it + as required, which also makes sure that the console log doesn't + confusingly list "not found". + Part-of: + +2022-05-19 16:33:47 -0400 Nicolas Dufresne + + * sys/v4l2/gstv4l2videodec.c: + v4l2videodec: Fix missing handling of resolution-change + The pool process function may poll and get the resolution-change event + whenever it is not possible to share our buffers. This typically happen + when downstream does not support GstVideoMeta. + Not handling this would cause the decoder thread to exit silently and the + pipeline to stall. + Part-of: + +2022-05-19 16:39:14 -0400 Nicolas Dufresne + + * sys/v4l2/gstv4l2videodec.c: + v4l2videodec: Downgrade to info resolution-change trace + Part-of: + +2022-05-23 20:23:38 +0100 Tim-Philipp Müller + + * ext/shout2/gstshout2.c: + * ext/shout2/gstshout2.h: + * ext/shout2/meson.build: + shout2: fix compiler warnings and bump req to libshout >= 2.4.2 + Fix compiler warnings with latest libshout version (2.4.6). + Part-of: + +2022-05-14 14:58:04 +0200 László Károlyi + + * docs/gst_plugins_cache.json: + * ext/shout2/gstshout2.c: + * ext/shout2/gstshout2.h: + shout2send: Adding send-title-info and user-agent options + Part-of: + +2022-05-19 11:47:57 +0300 Sebastian Dröge + + * gst/isomp4/qtdemux.c: + * gst/isomp4/qtdemux.h: + qtdemux: Add support for ONVIF XML Timed MetaData + Part-of: + +2022-05-19 11:30:20 +0300 Sebastian Dröge + + * gst/isomp4/fourcc.h: + * gst/isomp4/qtdemux_dump.c: + * gst/isomp4/qtdemux_types.c: + qtdemux: Add parsing/dumping of nmhd / metx boxes + Part-of: + +2022-05-19 11:06:31 +0300 Sebastian Dröge + + * gst/isomp4/fourcc.h: + * gst/isomp4/qtdemux.c: + qtdemux: Parse styp box for informational purposes + And include some more details in the debug logs for the ftyp box too. + Part-of: + +2022-05-10 16:20:46 +0800 Hou Qi + + * sys/v4l2/gstv4l2object.c: + v4l2: set default resolution if caps has no such information + Output may attemp to set the width and height to zero values if + caps has no such information, which will cause capture get invalid + dimensions. Then decoder reports negotiation failure. + So need to set default resolution if caps has no such information. + Real values can be set again until source change event is signaled. + Part-of: + +2022-05-17 05:21:19 +1000 Jan Schmidt + + * gst/multifile/gstsplitmuxpartreader.c: + splitmuxsrc: Re-queue sticky events after probing. + When processing the first event after probing the + file and being activated, requeue sticky events + as there's no requirement that demuxers send tag + and other events again after a seek - that's + why they're sticky. + Part-of: + +2022-05-16 14:14:46 +0200 Jan Alexander Steffens (heftig) + + * gst/deinterlace/gstdeinterlace.c: + deinterlace: Clean up error handling in chain and _push_history + - Consistently unref the chained buffer at the end of the chain + function, if we're not handing it off to `gst_pad_push`. This avoids a + few buffer leaks in the error paths in `_chain` and `_push_history`. + - When mapping the video frame fails, return a flow error instead of + crashing. + Part-of: + +2022-05-16 14:40:41 +0200 Jan Alexander Steffens (heftig) + + * gst/multifile/gstsplitmuxsink.c: + * gst/multifile/gstsplitmuxsink.h: + splitmuxsink: When flushing, exit handle_mq_input quickly + If we just break the loop, we might run into the `gop != NULL` assert + that follows it. Rather, exit immediately with flushing flow. + Also use this flushing mechanism when we release a pad. This avoids + having an extra flag. + Part-of: + +2021-01-26 16:33:25 +0100 Jan Alexander Steffens (heftig) + + * gst/multifile/gstsplitmuxsink.c: + splitmuxsink: Avoid deadlock on release, harder + Unlock after broadcasting and wait for the pad to be free before + relocking the muxer, giving the input probe a chance to react to our + broadcast. + Improves the fix from + https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/838. + Part-of: + +2022-05-16 19:31:18 +0900 Shingo Kitagawa + + * gst/wavparse/gstwavparse.c: + wavparse: fix typo in debug message + Part-of: + +2022-05-13 01:42:21 +0000 Thibault Saunier + + * gst/rtpmanager/gstrtpbin.c: + rtpbin: Avoid holding lock GST_RTP_BIN_LOCK when emitting pad-added + Part-of: + +2022-05-12 17:11:38 +0300 Sebastian Dröge + + * gst/isomp4/qtdemux.c: + qtdemux: Don't use tfdt for parsing subsequent trun boxes + The timestamp in the tfdt refers to the first trun box and if there are + multiple trun boxes then the distance between the first timestamps will + grow. + At some point this distance reaches a threshold and triggers the + resetting of the first sample's timestamp of this trun box to be reset + to the tfdt. + This threshold is implemented for files where there is a jump in the + timeline between fragments and where this can be detected via a jump + between the end timestamp of the previous fragment and the tfdt of the + next. This behaviour is preserved. + Part-of: + +2022-05-11 16:20:42 +0200 Guillaume Desmottes + + * ext/vpx/gstvpxenc.c: + * ext/vpx/gstvpxenc.h: + vpxenc: enforce strictly increasing pts + From vpx_codec_encode() documentation: + "The presentation time stamp (PTS) MUST be strictly increasing." + Part-of: + +2022-05-11 15:37:44 +0200 Guillaume Desmottes + + * ext/vpx/gstvpxenc.c: + vpxenc: conver input pts to running time + The input pts needs to be strictly increasing, see vpx_codec_encode() doc, so convert it to + running time as we don't want to reset the encoder for each segment. + Part-of: + +2022-05-11 15:18:42 +0200 Guillaume Desmottes + + * ext/vpx/gstvpxenc.c: + vpxenc: fix crash if encoder produces unmatching ts + If for some reason the encoder produces frames with a pts higher than + the input one, we were dropping all the video encoder frames and ended + up crashing when trying to access the pts of a NULL pointer returned by + gst_video_encoder_get_oldest_frame(). + I hit this scenario by feeding a decreasing timestamp to vp8enc which + seem to confuse the encoder. + Part-of: + +2022-04-28 09:19:57 -0400 Nicolas Dufresne + + * sys/v4l2/gstv4l2object.c: + * sys/v4l2/gstv4l2videoenc.c: + v4l2videoenc: Setup crop rectangle if needed + Hantro H1 and Rockchip VEPU2 drivers will pad the width/height to a + multiple of 16. In order to obtain the right JPEG size, the image needs + to be cropped using the S_SELECTION API. This support is added as best + effort since older drivers may emulate this by looking at the capture + queue width/height. + Part-of: + +2022-05-05 20:36:04 +0300 Sebastian Dröge + + * gst/isomp4/gstqtmux.c: + mp4mux: Disable aggregator's default negotiation + mp4mux can't negotiate caps with upstream/downstream and always outputs + specific caps based on the input streams. This will always happen before + it produces the first buffers. + By having the default aggregator negotiation enabled the same caps + would be pushed twice in the beginning, and again every time a + reconfigure event is received. + Part-of: + +2022-05-05 20:24:57 +0300 Sebastian Dröge + + * gst/flv/gstflvmux.c: + flvmux: Disable aggregator's default negotiation + flvmux can't negotiate caps with upstream/downstream and always outputs + specific caps based on the input streams. This will always happen before + it produces the first buffers. + By having the default aggregator negotiation enabled the same caps + would be pushed twice in the beginning, and again every time a + reconfigure event is received. + Part-of: + +2022-05-03 17:27:32 +1000 Matthew Waters + + * gst/wavparse/gstwavparse.c: + wavparse: ensure that any pending segment is sent before an EOS event is sent + Specifically fixes seqnum handling when an aggregator-based element + (audiomixer et al) is downstream and a seek is performed that + immediately causes an EOS from wavparse. + Part-of: + +2022-04-29 23:33:47 +0300 Sebastian Dröge + + * gst/rtpmanager/gstrtpjitterbuffer.c: + rtpjitterbuffer: Free CNAME/SSRC mappings on finalize and PAUSED->READY + Part-of: + +2022-04-29 23:13:15 +0300 Sebastian Dröge + + * gst/rtpmanager/gstrtpbin.c: + * gst/rtpmanager/gstrtpjitterbuffer.c: + rtpmanager: Refactor RTCP packet loops to fix control flow + Mixing C loops with switch statements is a bad idea as break has a + different meaning in both. Breaking inside the switch statements wrongly + caused further loop iterations. + Instead use goto to get out of the loop and continue to do another loop + iteration, and never ever use break except for the end of a case. + Part-of: + +2022-04-28 00:58:30 +0900 Seungha Yang + + * gst/rtpmanager/gstrtpjitterbuffer.c: + rtpjitterbuffer: Initialize variables + Avoid use of uninitialized variable + Fixing MSVC warning + gstrtpjitterbuffer.c(4733) : warning C4700: uninitialized local variable 'have_sdes' used + Part-of: + +2022-04-28 10:49:55 +0200 Edward Hervey + + * ext/adaptivedemux2/mss/gstmssdemux.c: + mssdemux2: Don't expose/use streams we can't handle yet + Avoids issues further down + Part-of: + +2022-04-28 10:46:34 +0200 Edward Hervey + + * ext/adaptivedemux2/mss/gstmssdemux.c: + * ext/adaptivedemux2/mss/gstmssmanifest.c: + * ext/adaptivedemux2/mss/gstmssmanifest.h: + mssdemux2: Ensure stream/track uniqueness + If there is more than one track of the same type (say audio), we would end up + creating several stream/types with the same name. + Instead use the MSS stream name property to make them unique + Part-of: + +2022-04-27 12:24:23 +0900 dongil.park + + * gst/wavparse/gstwavparse.c: + wavparse: Unset DISCONT buffer flag for divided into multiple buffers in push mode + In push mode (streaming), if the received chunk buffer size from _chain is bigger + than output buffer size, the flags of the divided-buffers are propagated to the + DISCONT flag from first received chunk buffer. This unexpected buffers contained DISCONT + flags are abnormally transformed when changing the sampling rate by audioresample element. + So unset unnecessary DISCONT flag before pad_push(). + Part-of: + +2022-04-26 22:17:51 +0300 Sebastian Dröge + + * docs/gst_plugins_cache.json: + * gst/rtpmanager/gstrtpbin.c: + * gst/rtpmanager/gstrtpjitterbuffer.c: + rtpjitterbuffer: add the reference timestamp meta in more situations + Previously, we only added it when actually performing synchronization + based on the NTP time. + The information can be useful downstream in other situations too, and + we can compute a NTP time as soon as we get a sender report with the + relevant information. + Co-authored-by: Mathieu Duponchelle + Part-of: + +2022-04-20 17:35:29 +0300 Sebastian Dröge + + * gst/rtp/gstrtpgstpay.c: + * gst/rtp/gstrtpgstpay.h: + rtpgstpay: Don't push packets before the first input buffer is received + It's not possible to create a valid RTP timestamp for them, which would + cause a potentially very big RTP timestamp discontinuity between those + first packets (created from initial events) and the packet based on the + first input buffer. + As a side-effect, also simplify the packet aggregation code a bit and + work with only a single level of buffer lists. + Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1157 + Part-of: + +2022-04-22 12:19:03 +0200 Havard Graff + + * gst/rtpmanager/rtptwcc.c: + rtptwcc: don't map the buffer twice + ...and use the pt extracted rather than the one from RTPPacketInfo + when logging. + Part-of: + +2022-04-22 02:41:16 +0000 Thibault Saunier + + * gst/rtpmanager/rtpsession.c: + rtpsession: Emit "notify::stats" when we update stats from RR or SR + Sensibily optimizing caching the pspecs and using them directly + Part-of: + +2022-04-23 01:57:53 +0200 Mathieu Duponchelle + + * gst/rtp/gstrtpredenc.c: + * gst/rtp/gstrtpredenc.h: + rtpredenc: quieten warning about ignoring header extensions + Turn it into a FIXME, and only log once + Part-of: + +2021-02-01 10:36:42 +0100 Havard Graff + + * gst/rtpmanager/gstrtprtxsend.c: + * tests/check/elements/rtprtx.c: + rtprtxsend: mark RTX buffers with GST_RTP_BUFFER_FLAG_RETRANSMISSION + It is useful for elements downstream from rtxsend to know if the RTP + buffer they are dealing with is an RTX buffer or not. + Part-of: + +2022-04-19 18:40:31 -0400 Tristan Matthews + + * docs/gst_plugins_cache.json: + * gst/isomp4/gstqtmux.c: + mp4mux: fix spelling + Part-of: + +2022-01-21 14:21:18 +0100 Jonas Bonn + + * gst/udp/gstmultiudpsink.c: + multiudpsink: allow binding to IPv6 address + When the sink is configured to create sockets with an explicit bind + address, then the created socket gets set to the udp_socket field + irregardless of whether the bind address indicated that the socket + family should be IPv4 or IPv6. When binding to an IPv6 address, this + results in the following error: + gstmultiudpsink.c:1285:gst_multiudpsink_configure_client: + error: Invalid address family (got 10) + This patch adds a check of the address family being bound to and sets + the created socket to used_socket or used_socket_v6, accordingly. + Part-of: + +2022-04-18 18:20:00 +0900 Camilo Celis Guzman + + * tests/check/elements/rtphdrextsdes.c: + rtphdrextsdes: fixup test trying to g_free a local variable + Part-of: + +2022-04-21 11:47:55 +0200 Edward Hervey + + * ext/adaptivedemux2/hls/m3u8.c: + hls/m3u8: Fix starting segment for live playlist + RFC 8216 6.3.3 "Playing the Media Playlist File" : states that for live media + playlists "the client SHOULD NOT choose a segment that starts less than three + target durations from the end of the Playlist file" + This is an off-by-one error. Since we are looking for the "index" of the + segment, we need to subtract 1 from the searched position. + Ex: For a playlist with 12 entries, we want to start playback on the 9th segment + ... which is at index 8. + Part-of: + +2022-04-20 14:50:35 +0200 Edward Hervey + + * ext/adaptivedemux2/hls/gsthlsdemux-util.c: + hls: Relax webvtt checks + If no hour field is present (which is allowed), the remaining data can be less + than 15 character. + Fix time translation failures if the hour field wasn't present + Part-of: + +2022-04-20 10:53:16 +0300 Sebastian Dröge + + * gst/rtpmanager/gstrtpbin.c: + * gst/rtpmanager/gstrtpfunnel.c: + * gst/rtpmanager/gstrtpjitterbuffer.c: + * gst/rtpmanager/gstrtpsession.c: + * gst/rtpmanager/gstrtputils.c: + * gst/rtpmanager/gstrtputils.h: + * gst/rtpmanager/meson.build: + * gst/rtpmanager/rtpsession.c: + * gst/rtpmanager/rtptwcc.c: + rtpmanager: Move some duplicated constant and helper function to a single place + Part-of: + +2022-04-18 16:22:50 +0300 Sebastian Dröge + + * gst/rtpmanager/gstrtpbin.c: + * gst/rtpmanager/gstrtpjitterbuffer.c: + rtpbin/rtpjitterbuffer: Don't parse RTCP SRs twice unless needed + Part-of: + +2022-04-18 11:50:48 +0300 Sebastian Dröge + + * docs/gst_plugins_cache.json: + * gst/rtpmanager/gstrtpbin.c: + * gst/rtpmanager/gstrtpjitterbuffer.c: + rtpjitterbuffer: Add property to throttle handling of RTCP SR / NTP-64 syncing + This proxies the "rtcp-sync-interval" property of rtpbin. + Part-of: + +2022-04-11 19:14:43 +0300 Sebastian Dröge + + * gst/rtpmanager/rtpsession.c: + * gst/rtpmanager/rtpsession.h: + rtpsession: Handle RTCP-SR-REQ (RFC6051) RTCP feedback message + This causes an RTCP SR to be sent at the earliest possible time. + Part-of: + +2022-04-11 19:25:43 +0300 Sebastian Dröge + + * gst/rtpmanager/gstrtpbin.c: + * gst/rtpmanager/gstrtpjitterbuffer.c: + rtpbin/rtpjitterbuffer: Allow syncing to an SR without CNAME if the CNAME is already known + The RTCP SR packet might be without SDES in case of a reduced-size RTCP + packet. For syncing purposes the CNAME is needed but it might be known + already from an earlier RTCP packet or out of band, via the SDP for + example. + Part-of: + +2022-04-07 18:59:07 +0300 Sebastian Dröge + + * gst/rtpmanager/gstrtpbin.c: + * gst/rtpmanager/gstrtpjitterbuffer.c: + rtpbin/jitterbuffer: Use inband 64-bit NTP timestamps according to RFC6051 for faster synchronization + When signalled via the caps that the header extension is used, it will + be read and used in the same way as the RTP/NTP time mapping from RTCP + SRs. + If the CNAME of the stream's SSRC is provided out of band via e.g. the + SDP then this allows streams to be synchronized immediately on the first + packet instead of having to wait for the first RTCP SR to arrive. + Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/issues/383 + Part-of: + +2022-04-09 11:00:52 +0300 Sebastian Dröge + + * gst/rtpmanager/gstrtpsession.c: + rtpsession: Only add send latency to the running time if it is actually known + Otherwise we can't know the running time yet if rtcp-sync-send-time is + set, and have to wait until the latency is known later. + Part-of: + +2022-04-06 15:39:14 +0300 Sebastian Dröge + + * gst/rtpmanager/gstrtpsession.c: + * gst/rtpmanager/rtpsession.c: + * gst/rtpmanager/rtpsession.h: + * gst/rtpmanager/rtpstats.h: + rtpsession: Update 64-bit NTP header extensions with the actual NTP time in senders + Part-of: + +2022-04-05 20:05:57 +0300 Sebastian Dröge + + * docs/gst_plugins_cache.json: + * gst/rtpmanager/gstrtphdrext-ntp.c: + * gst/rtpmanager/gstrtphdrext-ntp.h: + * gst/rtpmanager/gstrtpmanager.c: + * gst/rtpmanager/meson.build: + rtpmanager: Add header extension implementation for the 64-bit RFC6051 NTP header extension + Part-of: + +2022-03-25 10:18:34 -0400 Xavier Claessens + + * meson.build: + Always define ENABLE_NLS + GLib guarantees libintl API is always available, provided by + proxy-libintl as last resort. GLib itself unconditionally define + ENABLE_NLS. + Part-of: + +2022-03-25 10:20:24 -0400 Xavier Claessens + + * gst-libs/gst/gettext.h: + * gst-libs/gst/gst-i18n-plugin.h: + Delete unused i18n headers + Part-of: + +2022-03-25 09:59:23 -0400 Xavier Claessens + + * ext/adaptivedemux2/gstadaptivedemux-stream.c: + * ext/adaptivedemux2/gstadaptivedemux.c: + * ext/adaptivedemux2/mss/gstmssdemux.c: + * ext/flac/gstflacdec.c: + * ext/flac/gstflacelement.c: + * ext/jack/gstjackaudiosink.c: + * ext/jack/gstjackaudiosrc.c: + * ext/jpeg/gstjpegdec.c: + * ext/lame/gstlamemp3enc.c: + * ext/lame/plugin.c: + * ext/libpng/gstpngdec.c: + * ext/pulse/gstpulseelement.c: + * ext/pulse/pulsesink.c: + * ext/shout2/gstshout2.c: + * ext/soup/gstsoup.c: + * ext/soup/gstsoupelement.c: + * ext/soup/gstsouphttpsrc.c: + * ext/twolame/gsttwolamemp2enc.c: + * ext/wavpack/gstwavpackelement.c: + * gst/apetag/gstapedemux.c: + * gst/avi/gstavidemux.c: + * gst/avi/gstavielement.c: + * gst/avi/gstavimux.c: + * gst/icydemux/gsticydemux.c: + * gst/id3demux/gstid3demux.c: + * gst/isomp4/gstisomp4element.c: + * gst/isomp4/isomp4-plugin.c: + * gst/isomp4/qtdemux.c: + * gst/multifile/gstsplitmuxsrc.c: + * gst/rtsp/gstrtspelement.c: + * gst/rtsp/gstrtspsrc.c: + * gst/wavparse/gstwavparse.c: + * sys/oss/gstossaudio.c: + * sys/oss/gstossaudioelement.c: + * sys/oss/gstosshelper.c: + * sys/oss/gstosssink.c: + * sys/oss/gstosssrc.c: + * sys/oss4/oss4-audio.c: + * sys/oss4/oss4-sink.c: + * sys/oss4/oss4-source.c: + * sys/osxaudio/gstosxaudioringbuffer.c: + * sys/rpicamsrc/gstrpicamsrcdeviceprovider.c: + * sys/v4l2/gstv4l2.c: + * sys/v4l2/gstv4l2bufferpool.c: + * sys/v4l2/gstv4l2element.c: + * sys/v4l2/gstv4l2fwhtenc.c: + * sys/v4l2/gstv4l2h263enc.c: + * sys/v4l2/gstv4l2h264enc.c: + * sys/v4l2/gstv4l2h265enc.c: + * sys/v4l2/gstv4l2jpegenc.c: + * sys/v4l2/gstv4l2mpeg4enc.c: + * sys/v4l2/gstv4l2object.c: + * sys/v4l2/gstv4l2radio.c: + * sys/v4l2/gstv4l2sink.c: + * sys/v4l2/gstv4l2src.c: + * sys/v4l2/gstv4l2transform.c: + * sys/v4l2/gstv4l2videodec.c: + * sys/v4l2/gstv4l2videoenc.c: + * sys/v4l2/gstv4l2vp8enc.c: + * sys/v4l2/gstv4l2vp9enc.c: + * sys/v4l2/v4l2_calls.c: + * sys/ximage/gstximagesrc.c: + Replace gst-i18n-*.h with gi18n-lib.h + GLib guarantees libintl is always present, using proxy-libintl as + last resort. There is no need to mock gettex API any more. + This fix static build on Windows because G_INTL_STATIC_COMPILATION must + be defined before including libintl.h, and glib does it for us as part + as including glib.h. + Part-of: + +2022-04-19 09:52:51 +0100 Tim-Philipp Müller + + * tests/check/elements/dash_mpd.c: + tests: dash_mpd: fix linker issues with non-optimizing compilers + undefined reference to `download_request_take_buffer' + Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2117#note_1344646 + Part-of: + +2021-11-12 20:13:10 +0100 Ruben Gonzalez + + * docs/gst_plugins_cache.json: + gst_plugin_load_file: force plugin reload if diff filename + If a file includes a new version of a plugin that exits in the + registry, the output of gst-inspect is incorrect. The output has the + correct version but incorrect filename, and element description. + This seems to have also fixed some documentation issues. + Part-of: + +2022-03-11 17:11:50 +0100 Edward Hervey + + * docs/gst_plugins_cache.json: + * docs/meson.build: + * ext/adaptivedemux2/dash/gstdash_debug.h: + * ext/adaptivedemux2/dash/gstdashdemux.c: + * ext/adaptivedemux2/dash/gstdashdemux.h: + * ext/adaptivedemux2/dash/gstmpdadaptationsetnode.c: + * ext/adaptivedemux2/dash/gstmpdadaptationsetnode.h: + * ext/adaptivedemux2/dash/gstmpdbaseurlnode.c: + * ext/adaptivedemux2/dash/gstmpdbaseurlnode.h: + * ext/adaptivedemux2/dash/gstmpdclient.c: + * ext/adaptivedemux2/dash/gstmpdclient.h: + * ext/adaptivedemux2/dash/gstmpdcontentcomponentnode.c: + * ext/adaptivedemux2/dash/gstmpdcontentcomponentnode.h: + * ext/adaptivedemux2/dash/gstmpddescriptortypenode.c: + * ext/adaptivedemux2/dash/gstmpddescriptortypenode.h: + * ext/adaptivedemux2/dash/gstmpdhelper.c: + * ext/adaptivedemux2/dash/gstmpdhelper.h: + * ext/adaptivedemux2/dash/gstmpdlocationnode.c: + * ext/adaptivedemux2/dash/gstmpdlocationnode.h: + * ext/adaptivedemux2/dash/gstmpdmetricsnode.c: + * ext/adaptivedemux2/dash/gstmpdmetricsnode.h: + * ext/adaptivedemux2/dash/gstmpdmetricsrangenode.c: + * ext/adaptivedemux2/dash/gstmpdmetricsrangenode.h: + * ext/adaptivedemux2/dash/gstmpdmultsegmentbasenode.c: + * ext/adaptivedemux2/dash/gstmpdmultsegmentbasenode.h: + * ext/adaptivedemux2/dash/gstmpdnode.c: + * ext/adaptivedemux2/dash/gstmpdnode.h: + * ext/adaptivedemux2/dash/gstmpdparser.c: + * ext/adaptivedemux2/dash/gstmpdparser.h: + * ext/adaptivedemux2/dash/gstmpdperiodnode.c: + * ext/adaptivedemux2/dash/gstmpdperiodnode.h: + * ext/adaptivedemux2/dash/gstmpdprograminformationnode.c: + * ext/adaptivedemux2/dash/gstmpdprograminformationnode.h: + * ext/adaptivedemux2/dash/gstmpdreportingnode.c: + * ext/adaptivedemux2/dash/gstmpdreportingnode.h: + * ext/adaptivedemux2/dash/gstmpdrepresentationbasenode.c: + * ext/adaptivedemux2/dash/gstmpdrepresentationbasenode.h: + * ext/adaptivedemux2/dash/gstmpdrepresentationnode.c: + * ext/adaptivedemux2/dash/gstmpdrepresentationnode.h: + * ext/adaptivedemux2/dash/gstmpdrootnode.c: + * ext/adaptivedemux2/dash/gstmpdrootnode.h: + * ext/adaptivedemux2/dash/gstmpdsegmentbasenode.c: + * ext/adaptivedemux2/dash/gstmpdsegmentbasenode.h: + * ext/adaptivedemux2/dash/gstmpdsegmentlistnode.c: + * ext/adaptivedemux2/dash/gstmpdsegmentlistnode.h: + * ext/adaptivedemux2/dash/gstmpdsegmenttemplatenode.c: + * ext/adaptivedemux2/dash/gstmpdsegmenttemplatenode.h: + * ext/adaptivedemux2/dash/gstmpdsegmenttimelinenode.c: + * ext/adaptivedemux2/dash/gstmpdsegmenttimelinenode.h: + * ext/adaptivedemux2/dash/gstmpdsegmenturlnode.c: + * ext/adaptivedemux2/dash/gstmpdsegmenturlnode.h: + * ext/adaptivedemux2/dash/gstmpdsnode.c: + * ext/adaptivedemux2/dash/gstmpdsnode.h: + * ext/adaptivedemux2/dash/gstmpdsubrepresentationnode.c: + * ext/adaptivedemux2/dash/gstmpdsubrepresentationnode.h: + * ext/adaptivedemux2/dash/gstmpdsubsetnode.c: + * ext/adaptivedemux2/dash/gstmpdsubsetnode.h: + * ext/adaptivedemux2/dash/gstmpdurltypenode.c: + * ext/adaptivedemux2/dash/gstmpdurltypenode.h: + * ext/adaptivedemux2/dash/gstmpdutctimingnode.c: + * ext/adaptivedemux2/dash/gstmpdutctimingnode.h: + * ext/adaptivedemux2/dash/gstxmlhelper.c: + * ext/adaptivedemux2/dash/gstxmlhelper.h: + * ext/adaptivedemux2/downloadhelper.c: + * ext/adaptivedemux2/downloadhelper.h: + * ext/adaptivedemux2/downloadrequest.c: + * ext/adaptivedemux2/downloadrequest.h: + * ext/adaptivedemux2/gstadaptivedemux-period.c: + * ext/adaptivedemux2/gstadaptivedemux-private.h: + * ext/adaptivedemux2/gstadaptivedemux-stream.c: + * ext/adaptivedemux2/gstadaptivedemux-track.c: + * ext/adaptivedemux2/gstadaptivedemux.c: + * ext/adaptivedemux2/gstadaptivedemux.h: + * ext/adaptivedemux2/gstadaptivedemuxutils.c: + * ext/adaptivedemux2/gstadaptivedemuxutils.h: + * ext/adaptivedemux2/gstisoff.c: + * ext/adaptivedemux2/gstisoff.h: + * ext/adaptivedemux2/hls/gsthlsdemux-util.c: + * ext/adaptivedemux2/hls/gsthlsdemux.c: + * ext/adaptivedemux2/hls/gsthlsdemux.h: + * ext/adaptivedemux2/hls/gsthlselement.c: + * ext/adaptivedemux2/hls/gsthlselements.h: + * ext/adaptivedemux2/hls/m3u8.c: + * ext/adaptivedemux2/hls/m3u8.h: + * ext/adaptivedemux2/hls/meson.build: + * ext/adaptivedemux2/meson.build: + * ext/adaptivedemux2/mss/gstmssdemux.c: + * ext/adaptivedemux2/mss/gstmssdemux.h: + * ext/adaptivedemux2/mss/gstmssfragmentparser.c: + * ext/adaptivedemux2/mss/gstmssfragmentparser.h: + * ext/adaptivedemux2/mss/gstmssmanifest.c: + * ext/adaptivedemux2/mss/gstmssmanifest.h: + * ext/adaptivedemux2/plugin.c: + * ext/meson.build: + * ext/soup/gstsouploader.c: + * ext/soup/gstsouploader.h: + * meson_options.txt: + * tests/check/elements/dash_mpd.c: + * tests/check/elements/hlsdemux_m3u8.c: + * tests/check/meson.build: + New HLS, DASH and MSS adaptive demuxer elements + This provides new HLS, DASH and MSS adaptive demuxer elements as a single plugin. + These elements offer many improvements over the legacy elements. They will only + work within a streams-aware context (`urisourcebin`, `uridecodebin3`, + `decodebin3`, `playbin3`, ...). + Stream selection and buffering is handled internally, this allows them to + directly manage the elementary streams and stream selection. + Authors: + * Edward Hervey + * Jan Schmidt + * Piotrek Brzeziński + * Tim-Philipp Müller + Part-of: + +2022-04-15 09:53:19 +0800 Hou Qi + + * sys/v4l2/gstv4l2videodec.c: + v4l2videodec: copy colorimetry values to output_state caps + This is to avoid transcoding negotiation fail between v4l2h265dec + and v4l2h264enc caused by colorimetry mismatch. + Part-of: + +2022-04-14 20:10:46 +1000 Brad Hards + + * tests/interactive/equalizer-test.c: + * tests/interactive/gdkpixbufoverlay-test.c: + * tests/interactive/gdkpixbufsink-test.c: + * tests/interactive/meson.build: + * tests/interactive/test-accurate-seek.c: + * tests/interactive/test-oss4.c: + * tests/interactive/test-segment-seeks.c: + * tests/interactive/videobox-test.c: + * tests/interactive/videocrop-test.c: + * tests/interactive/videocrop2-test.c: + * tests/interactive/ximagesrc-test.c: + * tests/meson.build: + tests: rename 'icles' subdir to be more descriptive + Part-of: + +2022-04-07 11:12:47 +1000 Havard Graff + + * gst/isomp4/qtdemux.c: + qtdemux: fix leak of channel_mapping + Part-of: + +2022-04-13 10:17:15 +0800 Ming Qian + + * docs/gst_plugins_cache.json: + doc: Update cache after NV12_8L128 and NV12_10BE_8L128 addition + Part-of: + +2022-04-12 14:15:01 +0800 Ming Qian + + * sys/v4l2/gstv4l2object.c: + v4l2: Add NV12_8L128 in gst_v4l2_object_get_caps_info + It should be included in + + Part-of: + +2022-04-12 10:35:26 +0800 Ming Qian + + * sys/v4l2/gstv4l2object.c: + v4l2: Add a missed break + Fix a typo that miss a break in the switch statement + Part-of: + +2022-04-11 13:40:56 +0200 Robert Rosengren + + * gst/rtpmanager/gstrtpbin.c: + rtpbin: Fix division by zero when using ts-offset-smoothing-factor + avg_ts_offset may cause division by zero when calculating potential + overflow protection. This fix will avoid the division. + Part-of: + +2022-04-06 09:46:30 -0400 Tristan Matthews + + * gst/rtp/gstrtpopusdepay.c: + rtpopusdepay: assume 2 channels if sprop-stereo is missing + Fixes #1064 + Part-of: + +2022-03-11 15:13:21 +0100 Matthias Fuchs + + * ext/qt/gstqtsrc.cc: + * ext/qt/qtwindow.cc: + * ext/qt/qtwindow.h: + qmlglsrc: Fix deadlock when stopping + This fix makes sure that streaming thread stops waiting when the + qmlglsrc element transitions from playing to paused. + Part-of: + +2022-03-14 17:20:38 +0100 Matthias Fuchs + + * ext/qt/qtwindow.cc: + qmlglsrc: Fix missing depth & stencil buffer + Qt Quick primitives which have some kind of alpha blending + (transparency, rounded corners) are z-sorted by Qt and rendered in the + correct order. For opaque primitives Qt relies on the OpenGL depth + buffer to correctly determine the visibility of stacked elements. + This change enables the depth buffer to make sure that opaque primitives + are correctly z-stacked. + https://doc.qt.io/qt-6/qtquick-visualcanvas-scenegraph-renderer.html#opaque-primitives + Part-of: + +2022-04-06 10:14:19 +0300 Sebastian Dröge + + * gst/rtpmanager/rtpstats.h: + rtpstats: Remove non-existing twcc field docs from RTPPacketInfo and add missing field docs + Part-of: + +2022-04-05 20:28:36 +0300 Sebastian Dröge + + * gst/rtpmanager/rtpsession.h: + rtpsession: Remove unused twcc fields from the struct + Part-of: + +2022-03-30 11:06:02 -0400 Xavier Claessens + + * meson.build: + Use gmodule-no-export-2.0 + We don't need `-Wl,--export-dynamic`, that's used only for executables + that needs to export an API to be used by plugins they load. + Part-of: + +2022-03-25 15:00:20 -0400 Xavier Claessens + + * ext/qt/meson.build: + * ext/soup/meson.build: + * gst/imagefreeze/meson.build: + * gst/rtsp/meson.build: + * gst/shapewipe/meson.build: + * meson.build: + * tests/check/meson.build: + Remove glib and gobject dependencies everywhere + They are part of gst_dep already and we have to make sure to always have + gst_dep. The order in dependencies matters, because it is also the order + in which Meson will set -I args. We want gstreamer's config.h to take + precedence over glib's private config.h when it's a subproject. + While at it, remove useless fallback args for gmodule/gio dependencies, + only gstreamer core needs it. + Part-of: + +2022-03-31 23:41:41 +0200 Thibault Saunier + + * gst/debugutils/gstnavigationtest.c: + navigation: Rename parse_state to parse_modifier_state + `parse_state` sounds a bit weird and `parse_modifier_state` is clearer. + Part-of: + +2022-03-26 01:02:02 +0530 Nirbheek Chauhan + + * ext/soup/meson.build: + meson: Add some messages when selecting libsoup + Part-of: + +2022-03-26 00:59:12 +0530 Nirbheek Chauhan + + * ext/soup/gstsouphttpsrc.c: + soup: Fix usage of symbols / defines that are gone in libsoup3 + I am not sure about the SOUP_MESSAGE_OVERWRITE_CHUNKS change, but it + was definitely already broken when using libsoup-3.0 in a shared + build. souphttpsrc probably needs to be ported from SoupMessage to + SoupServerMessage when using libsoup-3.0. + Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1111 + Part-of: + +2022-03-26 00:56:04 +0530 Nirbheek Chauhan + + * ext/soup/gstsouploader.c: + * ext/soup/gstsouploader.h: + soup: Fix pre-processor macros in souploader for libsoup-3.0 + Some of the preprocessor conditionals in the loader were very broken + with libsoup-3.0 + --default-library=static + Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1111 + Part-of: + +2022-03-28 18:12:03 +1100 Matthew Waters + + * sys/osxaudio/gstosxcoreaudio.c: + osxcoreaudio: fix unused-but-set warning + ../sys/osxaudio/gstosxcoreaudio.c:480:18: error: variable 'interleaved' set but not used [-Werror,-Wunused-but-set-variable] + gboolean sign, interleaved; + ^ + Part-of: + +2022-03-28 10:10:45 +0300 Sebastian Dröge + + * docs/gst_plugins_cache.json: + video-format: Move NV12_8L128 into the correct position in GST_VIDEO_FORMATS_ALL + Part-of: + +2022-03-28 13:35:17 +1100 Matthew Waters + + * gst/deinterlace/tvtime/tomsmocomp/SearchLoopTop.inc: + deinterlace: silence unused-but-set werror from imported code + Part-of: + +2022-03-28 09:50:38 +1100 Matthew Waters + + * sys/osxvideo/osxvideosink.m: + osxvideosink: fix unused-but-set-variable warning + ../sys/osxvideo/osxvideosink.m:859:11: error: variable 'data' set but not used [-Werror,-Wunused-but-set-variable] + guint8 *data, *readp, *writep; + ^ + Part-of: + +2022-03-25 11:42:03 -0300 Thibault Saunier + + * gst/debugutils/gstnavigationtest.c: + * gst/debugutils/gstnavigationtest.h: + navigationtest: Add some support for modifiers + Part-of: + +2022-03-18 16:59:32 +0000 Thibault Saunier + + * ext/gtk/gtkgstbasewidget.c: + * ext/qt/qtitem.cc: + navigation: Add support for key Modifiers in all relevant events + Part-of: + +2021-11-17 17:27:13 +1100 Matthew Waters + + * gst/rtpmanager/gstrtpptdemux.c: + rtpptdemux: fix leak of caps when ignoring a pt + Part-of: + +2022-02-23 12:53:04 +0100 Vivienne Watermeier + + * ext/qt/qtitem.cc: + * ext/qt/qtitem.h: + qt: Add touch event support + Part-of: + +2022-02-21 20:16:06 +0100 Vivienne Watermeier + + * ext/gtk/gtkgstbasewidget.c: + gtk: Add touch event support + Add a handler for touch events to gtkbasewidget. + Part-of: + +2022-02-02 15:46:57 +0100 Vivienne Watermeier + + * docs/gst_plugins_cache.json: + * gst/debugutils/gstnavigationtest.c: + * gst/debugutils/gstnavigationtest.h: + navigationtest: Display touchscreen events, log all events + Represents touchscreen events as a trail of black squares, one for each + reported position. Additionally, this adds the `display-mouse` and + `display-touch` properties to toggle visibility of mouse/touchscreen + events, since touchscreens often emulate mouse events, as well as + logging for all received navigation events. + Part-of: + +2022-02-14 16:08:23 +0100 Vivienne Watermeier + + * ext/gtk/gstgtkbasesink.c: + * ext/gtk/gtkgstbasewidget.c: + * ext/qt/gstqtsink.cc: + * ext/qt/qtitem.cc: + * ext/qt/qtitem.h: + * gst/debugutils/gstnavigationtest.c: + * gst/debugutils/gstnavseek.c: + * gst/videobox/gstvideobox.c: + * gst/videocrop/gstvideocrop.c: + * gst/videofilter/gstvideoflip.c: + all: Use new navigation interface and API + Use and implement the new navigation interface in all relevant sink elements, + and use API functions everywhere instead of directy accessing the event structure. + Part-of: + +2022-03-18 15:20:49 +0100 Stéphane Cerveau + + * gst/wavparse/gstwavparse.c: + * tests/check/elements/wavparse.c: + wavparse: handle query in any parse state + In order to create the stream_id, we need to + pass the query to the default query handler. + If the parse state is different from GST_WAVPARSE_DATA + the query should be passed to the default query + handler. + Part-of: + +2020-09-13 02:17:59 +0200 Jan Alexander Steffens (heftig) + + * gst/flv/gstflvmux.c: + flvmux: Clean up aggregate's control flow + This unifies exits to go through a single out label. It mostly + simplifies how EOS is handled. + Part-of: + +2022-03-18 16:34:38 -0400 Nicolas Dufresne + + * docs/gst_plugins_cache.json: + doc: Update cache after NV12_8L128 addition + Part-of: + +2021-10-19 14:41:04 +0800 Ming Qian + + * sys/v4l2/ext/videodev2.h: + * sys/v4l2/gstv4l2object.c: + v4l2: Add NV12_8L128 and NV12_10BE_8L128 + These formats are used by i.MX 8QXP/8QM VPU. + Part-of: + +2021-09-09 23:43:33 +1000 Matthew Waters + + * docs/gst_plugins_cache.json: + * gst/rtpmanager/gstrtprtxreceive.c: + * gst/rtpmanager/gstrtprtxreceive.h: + * gst/rtpmanager/gstrtprtxsend.c: + * gst/rtpmanager/gstrtprtxsend.h: + * tests/check/elements/rtprtx.c: + rtpmanager/rtx: implement initial support for reading/writing rid extensions + Two RTP Header extensions are very relevant for rtprtxsend/receive. + 1. "urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id": will always be removed + 2. "urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id": will be written + instead of the "rtp-stream-id" header extension. + Currently it's only a simple replacement of one header extension for + another however a future change would only add the relevant extension + based on some heuristics (like, video frames only on one of the rtp key + frame buffers, or only until the rtx ssrc has been validated by the peer) + in order to reduce the required bandwidth. + Part-of: + +2021-08-25 16:59:40 +1000 Matthew Waters + + * tests/check/elements/rtphdrextsdes.c: + * tests/check/meson.build: + test: add tests for sdes-based RTP header extensions + mid, stream id and repaired stream id. + Part-of: + +2021-08-25 16:58:16 +1000 Matthew Waters + + * docs/gst_plugins_cache.json: + * gst/rtpmanager/gstrtphdrext-repairedstreamid.c: + * gst/rtpmanager/gstrtphdrext-repairedstreamid.h: + * gst/rtpmanager/gstrtphdrext-streamid.c: + * gst/rtpmanager/gstrtphdrext-streamid.h: + * gst/rtpmanager/gstrtpmanager.c: + * gst/rtpmanager/meson.build: + rtpmanager: add support for RFC8852 (rid) RTP header extensions + Both for regular RID and for adding on a repaired (RTX) etc stream. + Part-of: + +2021-08-25 16:38:44 +1000 Matthew Waters + + * docs/gst_plugins_cache.json: + * gst/rtpmanager/gstrtphdrext-mid.c: + * gst/rtpmanager/gstrtphdrext-mid.h: + * gst/rtpmanager/gstrtpmanager.c: + * gst/rtpmanager/meson.build: + rtpmanager: add support for writing RFC8843 (BUNDLE mid) RTP header extension + Part-of: + +2022-03-18 19:33:00 +0200 Sebastian Dröge + + * docs/gst_plugins_cache.json: + * gst/videocrop/gstvideocrop-private.h: + * gst/videocrop/gstvideocrop.c: + * gst/videocrop/gstvideocrop.h: + videocrop: Add support for v210 + Like UYVY and similar formats this is rounding down to the start of the + previous macro-pixel to not mix up the different components. + Part-of: + +2022-03-18 19:06:05 +0200 Sebastian Dröge + + * gst/videocrop/gstvideocrop.c: + videocrop: Use GST_ROUND_DOWN_2 instead of re-defining a local version + Part-of: + +2022-03-18 19:03:57 +0200 Sebastian Dröge + + * gst/videocrop/gstvideocrop.c: + * gst/videocrop/gstvideocrop.h: + videocrop: Rename PACKED_COMPLEX to PACKED_YVYU + It's not handling any kind of complex packed format, only formats that + are like YVYU. + Part-of: + +2022-03-18 13:42:27 +0530 Nirbheek Chauhan + + * meson.build: + meson: Bump all meson requirements to 0.60 + Lots of new warnings ever since + https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1934 + Part-of: + +2022-03-15 15:44:17 +0900 Sangchul Lee + + * gst/rtpmanager/rtpjitterbuffer.c: + rtpjitterbuffer: Fix invalid memory access in rtp_jitter_buffer_pop() + Part-of: + +2022-03-14 16:19:33 +0800 Hou Qi + + * sys/v4l2/gstv4l2videodec.c: + v4l2videodec: set frame duration according to framerate + Part-of: + +2022-03-15 13:49:09 +0000 Tim-Philipp Müller + + * docs/gst_plugins_cache.json: + * gst/rtsp/gstrtspsrc.c: + * gst/rtsp/gstrtspsrc.h: + rtspsrc: proxy new "add-reference-timestamp-meta" property from rtpjitterbuffer + When syncing to an RFC7273 clock this will add the original + reconstructed reference clock timestamp to buffers in form + of a GstReferenceTimestampMeta. + This is useful when we want to process or analyse data based + on the original timestamps untainted by any local adjustments, + for example reconstruct AES67 audio streams with sample accuracy. + Part-of: + +2022-03-15 11:56:28 +0000 Tim-Philipp Müller + + * docs/gst_plugins_cache.json: + * gst/rtpmanager/gstrtpbin.c: + * gst/rtpmanager/gstrtpbin.h: + rtpbin: proxy new "add-reference-timestamp-meta" property from rtpjitterbuffer + When syncing to an RFC7273 clock this will add the original + reconstructed reference clock timestamp to buffers in form + of a GstReferenceTimestampMeta. + This is useful when we want to process or analyse data based + on the original timestamps untainted by any local adjustments, + for example reconstruct AES67 audio streams with sample accuracy. + Part-of: + +2022-03-15 01:35:17 +0000 Tim-Philipp Müller + + * docs/gst_plugins_cache.json: + * gst/rtpmanager/gstrtpjitterbuffer.c: + * gst/rtpmanager/rtpjitterbuffer.c: + * gst/rtpmanager/rtpjitterbuffer.h: + rtpjitterbuffer: add "add-reference-timestamp-meta" property + When syncing to an RFC7273 clock this will add the original + reconstructed reference clock timestamp to buffers in form + of a GstReferenceTimestampMeta. + This is useful when we want to process or analyse data based + on the original timestamps untainted by any local adjustments, + for example reconstruct AES67 audio streams with sample accuracy. + Part-of: + +2022-03-15 09:49:59 +0800 Hou Qi + + * sys/v4l2/gstv4l2videodec.c: + v4l2videodec: safely retrun from video_dec_loop with stream unlock + This is to avoid decoder hang when doing trick play between + different resolutions. + Part-of: + +2022-03-14 13:59:37 +0200 Sebastian Dröge + + * gst/rtpmanager/rtpjitterbuffer.c: + rtpjitterbuffer: Improve accuracy of RFC7273 clock time calculations + Previously the result of the calculations included inaccuracies caused + by the NTP clock estimation, which caused the timestamps to jitter + +/- 1/clockrate. + By reorganizing the calculations it is possible to get rid of this + inaccuracy and calculate deterministic and exact packet timestamps based + on the actual NTP clock as long as the estimation is not off by more + than 2**31 clockrate units. + The only remaining inaccuracy that is introduced now is caused by the + conversion from the NTP clock to the pipeline clock. + Also split up debug output, demote many messages to the trace debug + level and output more intermediate results. + Part-of: + +2022-03-14 12:29:04 +0530 Nirbheek Chauhan + + * gst/rtpmanager/rtpsession.c: + * gst/rtpmanager/rtptwcc.c: + twcc: Add some logging to debug TWCC feedback + This should allow people to debug when TWCC feedback is not enabled + because they haven't set the extmap in the caps. + Part-of: + +2022-03-14 13:45:36 +0530 Nirbheek Chauhan + + * gst/rtpmanager/gstrtpsession.c: + twcc: Note that packet-loss-pct can count reordering as loss + This is difficult to encounter in ordinary networks, but is + encountered when using tc-netem to add random delays to packets, and + also when your UDP stream is bonded over multiple links with varying + characteristics. + Part-of: + +2017-08-11 16:33:23 +0200 Havard Graff + + * gst/rtpmanager/gstrtprtxsend.c: + * tests/check/elements/rtprtx.c: + rtprtxsend: don't require clock-rate in caps + For multiplexing, the rtpstreams you are multiplexing might not use + the same clock-rate. + Part-of: + +2016-11-04 11:47:20 +0100 Havard Graff + + * gst/rtpmanager/gstrtprtxsend.c: + * tests/check/elements/rtprtx.c: + rtprtxsend: don't start the task unless we are doing rtx + The rtxsend element can do pass-through when not enabled (no pt-map set) + and in those cases there is no point in starting an additional task + that does absolutely nothing. + Part-of: + +2016-06-27 14:28:06 +0200 Havard Graff + + * docs/gst_plugins_cache.json: + * gst/rtpmanager/gstrtprtxreceive.c: + * gst/rtpmanager/gstrtprtxreceive.h: + rtprtxreceive: add ssrc-map property + Mirroring the rtxsend, this allows the application to "pre-map" the + retransmission-ssrcs to the "real" ssrc, if this information is known. + Part-of: + +2019-09-08 15:54:08 +0200 Carlos Rafael Giani + + * ext/mpg123/gstmpg123audiodec.c: + * ext/mpg123/gstmpg123audiodec.h: + * gst/audioparsers/gstmpegaudioparse.c: + * tests/check/elements/mpg123audiodec.c: + * tests/files/sine-1009ms-1ch-32000hz-gapless-with-lame-tag.mp3: + mpg123: Add gapless playback support + Co-authored-by: Sebastian Dröge + Part-of: + +2019-09-07 19:15:42 +0200 Carlos Rafael Giani + + * gst/audioparsers/gstmpegaudioparse.c: + * gst/audioparsers/gstmpegaudioparse.h: + * tests/check/elements/mpegaudioparse.c: + mpegaudioparse: Support gapless playback + Gapless playback is handled by adjusting buffer timestamps & durations + and by adding GstAudioClippingMeta. + Support for "Frankenstein" streams (= poorly stitched together streams) + is also added, so that gapless playback support doesn't prevent those + from being properly played. + Co-authored-by: Sebastian Dröge + Part-of: + +2022-03-11 10:32:42 +0100 Jan Alexander Steffens (heftig) + + * gst/deinterlace/tvtime/scalerbob.c: + deinterlace: scalerbob: Reduce latency to 0 + We only need the current field, just like `linear`. + Part-of: + +2022-03-12 17:13:48 +0200 Vivia Nikolaidou + + * gst/deinterlace/yadif.c: + yadif: Fix CHECK macro for YUY2 format + Used to make comb artifacts for videotestsrc pattern=ball for YUY2 + format only (not AYUV). + Part-of: + +2022-03-10 17:03:45 +0900 Damian Hobson-Garcia + + * docs/gst_plugins_cache.json: + doc: New cropping parameters added to v4l2src + v4l2src add several new parameters to control cropping of + the captured video stream. Update the doc cache to reflect + this. + Part-of: + +2021-10-15 18:33:50 +0900 Damian Hobson-Garcia + + * tests/examples/v4l2/meson.build: + * tests/examples/v4l2/v4l2src-crop.c: + examples: v4l2: Add v4l2src crop example + Add a simple utility to illustrate how to set input cropping on v4l2src. + Part-of: + +2021-10-14 17:22:19 +0900 Damian Hobson-Garcia + + * sys/v4l2/gstv4l2src.c: + * sys/v4l2/gstv4l2src.h: + v4l2src: Add support for cropping at capture source input + Add properties to control input cropping in the V4L2 device. + The input cropping is applied before composing the result to the + capture buffer. By default the capture size will be set to the same + size as the crop region, but it can be scaled to a different output + frame size if supported by the V4L2 device. + If scaling is not supported, the cropped image will + be composed as is into the top-left corner of the capture buffer. + Part-of: + +2021-10-13 17:33:12 +0900 Damian Hobson-Garcia + + * sys/v4l2/gstv4l2object.c: + * sys/v4l2/gstv4l2object.h: + v4l2object: Add function to get crop regions from device + Get the current crop bounding region from the V4L2 device so + that it can be provided to applications and used to validate + crop settings. Also make the default crop region available so + that it can be used to reset the crop when appropriate. + Uses the selection API when available with fallback to the crop + API for older kernels. + Part-of: + +2021-09-30 17:56:56 +0900 Damian Hobson-Garcia + + * sys/v4l2/gstv4l2object.c: + * sys/v4l2/gstv4l2object.h: + * sys/v4l2/gstv4l2transform.c: + v4l2object: rename crop function to reflect its usage + The gst_v4l2_object_set_crop() is used for removing buffer + alignment padding. Give it a name that better reflects + that usage. This helps to distinguish from cropping of the + input image (e.g. cropping at the image sensor on a captre + device), which can be unrelated to the memory buffer padding, + especially if scaling is involved. + Part-of: + +2022-03-10 18:43:45 +0900 Sangchul Lee + + * gst/rtp/gstrtpvp8depay.c: + rtpvp8depay: Fix crash when making 'GstRTPPacketLost' custom event + This patch fixes a seg.fault in gst_structure_new() with warnings as below. + GLib-GObject-WARNING **: + ../gobject/gtype.c:4330: type id '0' is invalid + GLib-GObject-WARNING **: + can't peek value table for type '' which is not currently referenced + Part-of: + +2022-03-04 18:58:56 +0100 Tomasz Andrzejak + + * gst/rtpmanager/gstrtpbin.c: + rtpbin: allow FEC elements with Always pads + This patch enable picking up FEC decoder or enocder that have + static repair packets pad. + Part-of: + +2022-03-09 12:17:11 +0530 Nirbheek Chauhan + + * ext/soup/gstsouploader.c: + soup: Load the runtime library, not the development library + libsoup-2.4.so / libsoup-3.0.so are symlinks installed by development + packages, they are not available at runtime. + Also eliminate G_MODULE_SUFFIX since it's not useful for us, and is + actually incorrect on macOS anyway. + Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1071 + Part-of: + +2019-07-10 17:21:01 +0200 Edward Hervey + + * gst/isomp4/qtdemux.c: + qtdemux: Propagate stick events downstream when creating pads + If upstream provided a stream collection event before any pads were created, + make sure it's propagated downstream when pads are created. + Part-of: + +2021-02-01 16:07:08 +0100 Havard Graff + + * gst/rtpmanager/gstrtprtxsend.c: + rtprtxsend: if no rtx is present, don't expose a rtx-ssrc in caps + The point here is that rtpsession will create a new rtpsource when + the field "rtx-ssrc" is present, and when not doing rtx, that means + a random ssrc will create a new rtpsource that will be included in RTCP + messages for the current session. + Part-of: + +2016-06-22 14:48:59 +0200 Havard Graff + + * gst/rtpmanager/gstrtprtxsend.c: + rtprtxsend: don't process or warn if no map is set + This makes it more gentle when doing "pass-through" + Part-of: + +2016-08-23 19:06:49 +0200 Mikhail Fludkov + + * gst/rtpmanager/gstrtprtxreceive.c: + * tests/check/elements/rtprtx.c: + rtprtxreceive: fix crash when RTX payload has zero length + Part-of: + +2016-06-26 22:25:46 +0200 Havard Graff + + * gst/rtpmanager/gstrtprtxreceive.c: + rtprtxreceive: allow passthrough and non-rtp buffers + To avoid mapping rtp buffers when RTX is not in use, and to not + do a full error on receiving a non-rtp buffer, since you have no control + of what a rouge sender might send you. + Part-of: + +2021-02-08 21:40:19 +0100 Havard Graff + + * gst/rtpmanager/gstrtprtxreceive.c: + * gst/rtpmanager/gstrtprtxreceive.h: + * gst/rtpmanager/gstrtprtxsend.c: + * gst/rtpmanager/gstrtprtxsend.h: + rtprtx: don't access type-system per buffer + When doing only a single stream of audio/video this hardly matters, + but when doing many at the same time, the fact that you have to get + a hold of the glib global type-system lock every time you process a buffer, + means that there is a limit to how many streams you can process in + parallel. + Luckily the fix is very simple, by doing a cast rather than a full + type-check. + Part-of: + +2020-02-10 14:37:30 +0100 Havard Graff + + * tests/check/elements/rtprtx.c: + rtprtx: signed/unsigned and style fixes + Part-of: + +2022-03-03 13:47:05 +0800 Hou Qi + + * sys/v4l2/gstv4l2bufferpool.c: + v4l2bufferpool: Fix race condition between qbuf and pool streamoff + There is a chance that pool->buffers[index] sets BUFFER_STATE_QUEUED, but + it has not been queued yet which makes pool->buffers[index] still NULL. + At this time, if pool_streamff release all buffers with BUFFER_STATE_QUEUED + state regardless of whether the buffer is NULL or not, it will cause segfault. + To fix this, also check buffer when streamoff release buffer. + Part-of: + +2022-03-03 14:22:10 +0800 Hou Qi + + * gst/flv/gstflvmux.c: + flvmux: Add protection when unref GstFlvMuxPad + This is to avoid gst_object_unref: assertion 'object != NULL' failed. + Part-of: + +2022-03-04 14:57:30 -0500 Nicolas Dufresne + + * docs/gst_plugins_cache.json: + doc: AV1 demuxers now expose their alignment + Update the chache accordingly. + Part-of: + +2022-03-02 16:31:24 -0500 Nicolas Dufresne + + * gst/matroska/matroska-demux.c: + * gst/matroska/matroska-mux.c: + matroska: Fix AV1 alignment to TU + Matroska stores AV1 in temporal unit, so that all OBU sharing the same + timestamp are put together. This was previously just assumed, which isn't + safe now that we have more alignments. + Part-of: + +2022-03-02 16:24:38 -0500 Nicolas Dufresne + + * gst/isomp4/gstqtmuxmap.c: + * gst/isomp4/qtdemux.c: + isomp4: Fix AV1 default alignment + ISOMP4 store TU (temporal units) worth of AV1. Expose this in the + caps to reduce overhead in the parser, and in the muxer to avoid + storing frames split in the wrong way. + Part-of: + +2022-02-07 17:51:39 -0500 Tristan Matthews + + * gst/matroska/matroska-mux.c: + matroskamux: allow width+height caps changes for VP8/9 + For VP8 and VP9, width+height changes are signalled inband. + Refs https://github.com/Kurento/bugtracker/issues/535 and + https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/1047/diffs?commit + Part-of: + +2022-02-07 16:41:40 -0500 Tristan Matthews + + * gst/matroska/matroska-mux.c: + matroskamux: allow width + height changes for avc3|hev1 + For avc3 and hev1, the intent was to allow more flexibility for caps changes + (see https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/1047/diffs?commit_id=9bd8d608d5bae27ec5ff09e733f76ca32b17420c) + however width and resolution were previously omitted. + avc3 and hev1 specifically support changing stream-parameters on the fly, whereas avc1/hvc1 disallow in-band SPS. + This commit allows for changes to width and height for these which is in line with matroskamux's behaviour prior to 1.14.0. + Practically speaking, one use case where this is commonly seen is when capturing a WebRTC stream, as the browser will adapt the resolution live. + Suggested-by: Mathieu Duponchelle "" + Part-of: + +2022-03-04 15:36:20 +0100 Jan Alexander Steffens (heftig) + + * gst/deinterlace/gstdeinterlace.c: + deinterlace: Prevent race between _set_method and latency query + It's possible that the method is being manipulated while downstream + queries our latency, leading to crashes. + Prevent that from happening. + Part-of: + +2022-03-03 23:04:36 +0530 Nirbheek Chauhan + + * ext/soup/gstsouploader.c: + soup: Fix static build with MSVC + ../ext/soup/gstsouploader.c(818): error C4098: '_soup_session_send_async': 'void' function returning a value + It's technically a false warning, but that's how MSVC works, so fix + it. + Part-of: + +2022-03-03 00:37:57 +0530 Nirbheek Chauhan + + * ext/soup/meson.build: + soup: Fix pkgconfig generation and documentation + Part-of: + +2022-03-02 23:22:39 +0530 Nirbheek Chauhan + + * ext/soup/meson.build: + soup: Fix static build when default_library=both + Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1007 + Part-of: + +2022-03-02 23:11:09 +0530 Nirbheek Chauhan + + * ext/soup/meson.build: + soup: Don't error out in static build unless option is enabled + Part-of: + +2022-02-27 15:45:01 +0100 Philippe Normand + + * ext/soup/gstsouploader.c: + soup: Lookup libsoup dylib files on Apple platforms + Fixes #1007 + Part-of: + +2021-10-15 15:32:22 +0900 Damian Hobson-Garcia + + * sys/v4l2/gstv4l2object.c: + v4l2src: Reset the compose window to the default after setting format + When the size of V4L2 capture or output is changes with VIDIOC_S_FMT, + the device is only required to update the compisition window to fit + inside the new frame size. This can result in captured data only being + updated on a portion of the frame after a resize. + Update the composition window to the default value determined by the + V4L2 device driver whenever the format is changed to make sure that + all image data is composed to its full size. + Fixes #765 + Part-of: + +2022-03-01 20:59:30 +0200 Sebastian Dröge + + * gst/matroska/matroska-mux.c: + matroska-mux: Handle pixel-aspect-ratio caps field correctly when checking caps equality + Not having this field is equivalent with it being 1/1 so consider + it like that. The generic caps functions are not aware of these + semantics and would consider the caps different, causing a negotiation + failure when caps are changing from caps with to caps without or the + other way around. + Part-of: + +2022-03-01 20:56:43 +0200 Sebastian Dröge + + * gst/matroska/matroska-mux.c: + matroska-mux: Handle multiview-mode/flags caps fields correctly when checking caps equality + Not having these fields is equivalent with them being mono/0 so consider + them like that. The generic caps functions are not aware of these + semantics and would consider the caps different, causing a negotiation + failure when caps are changing from caps with to caps without or the + other way around. + Part-of: + +2022-02-27 03:17:26 +1100 Jan Schmidt + + * gst/matroska/matroska-mux.c: + matroska-mux: If a stream has a TITLE tag, use it for the name. + If a title tag is pushed to a pad, store it as the Track name. + This means that players will use it as the human readable + description of the track, instead of something generic like 'Video' + or 'Subtitle' + Part-of: + +2022-02-27 02:39:28 +1100 Jan Schmidt + + * gst/matroska/matroska-demux.c: + * gst/matroska/matroska-demux.h: + matroskademux: Don't parse Tracks element twice + If the tracks element was parsed from the SeekEntry, don't + parse it a second time and recreate tracks, as this + loses any tags that were read using the seek table. + If a genuinely new Tracks element is found, do read that + as it is needed for MSE support. + Part-of: + +2022-02-23 11:10:11 +0100 Sebastian Fricke + + * README.md: + Maintain build instructions at a single location + Do not maintain similar build instructions within each gst-plugins-* + subproject and the subproject/gstreamer subproject. Use the build + instructions from the mono-repository and link to them via hyperlink. + Part-of: + +2022-03-01 00:12:56 +0200 Vivia Nikolaidou + + * gst/deinterlace/x86/yadif.asm: + yadif.asm: Fix improper usage of LOAD macro + LOAD macro relies in m7 being zero for interleaving purposes. Using LOAD + on the m7 register makes it interleave with its new content instead of + with 0. + The effect of this bug was bobbing on some static lines that appeared + over fast-moving content. + Part-of: + +2022-03-01 00:12:33 +0200 Vivia Nikolaidou + + * gst/deinterlace/x86/yadif.asm: + yadif.asm: Typo fixes in comments + Part-of: + +2022-02-28 20:39:11 +0200 Vivia Nikolaidou + + * gst/deinterlace/yadif.c: + yadif: Fix bug in C implementation of CHECK + It was different compared to the corresponding part in both ffmpeg and + the asm implementation. Fixing this makes videotestsrc pattern=spokes + not jump at all when not using the asm optimisations. + Part-of: + +2021-10-19 16:10:06 +0800 Ming Qian + + * sys/v4l2/gstv4l2videodec.c: + * sys/v4l2/gstv4l2videodec.h: + v4l2videodec : enable resolution change + The dynamic resolution changes when + the sequence starts when the decoder detects a coded frame with one or + more of the following parameters different from those previously + established (and reflected by corresponding queries): + 1.coded resolution (OUTPUT width and height), + 2.visible resolution (selection rectangles), + 3.the minimum number of buffers needed for decoding, + 4.bit-depth of the bitstream has been changed. + Although gstreamer parser has parsed the stream resolution. + but there are some case that we need to handle resolution change event. + 1. bit-depth is different from the negotiated format. + 2. the capture buffer count can meet the demand + 3. there are some hardware limitations that the decoded resolution may + be larger than the display size. For example, the stream size is + 1920x1080, but some vpu may decode it to 1920x1088. + Part-of: + +2021-10-26 10:03:42 +0800 Ming Qian + + * sys/v4l2/gstv4l2object.c: + * sys/v4l2/gstv4l2object.h: + * sys/v4l2/gstv4l2videodec.c: + v4l2videodec : refactor the setup process of capture + v4l2videodec do some refactoring so that it can support + dynamic resolution change event. + 1.wrap the setup process of capture as a function, + as decoder need setup the capture again when + dynamic resolution change event is received. + 2.move the function "remove_padding" + Part-of: + +2022-02-22 11:18:53 +0200 Sebastian Dröge + + * gst/rtp/gstrtpac3pay.c: + * gst/rtp/gstrtpamrpay.c: + * gst/rtp/gstrtpdvpay.c: + * gst/rtp/gstrtpg723pay.c: + * gst/rtp/gstrtpg729pay.c: + * gst/rtp/gstrtpgstpay.c: + * gst/rtp/gstrtph261pay.c: + * gst/rtp/gstrtph263pay.c: + * gst/rtp/gstrtph263ppay.c: + * gst/rtp/gstrtph264pay.c: + * gst/rtp/gstrtph265pay.c: + * gst/rtp/gstrtpj2kpay.c: + * gst/rtp/gstrtpjpegpay.c: + * gst/rtp/gstrtpklvpay.c: + * gst/rtp/gstrtpmp4apay.c: + * gst/rtp/gstrtpmp4gpay.c: + * gst/rtp/gstrtpmp4vpay.c: + * gst/rtp/gstrtpmpapay.c: + * gst/rtp/gstrtpmpvpay.c: + * gst/rtp/gstrtpreddec.c: + * gst/rtp/gstrtpvp8pay.c: + * gst/rtp/gstrtpvp9pay.c: + * gst/rtp/gstrtpvrawpay.c: + * gst/rtp/rtpulpfeccommon.c: + * tests/check/elements/rtpred.c: + rtp: In payloaders map the RTP marker flag to the corresponding buffer flag + This allows downstream of a payloader to know the RTP header's marker + flag without first having to map the buffer and parse the RTP header. + Especially inside RTP header extension implementations this can be + useful to decide which packet corresponds to e.g. the last packet of a + video frame. + Part-of: + +2021-12-06 12:49:18 -0500 Joseph Donofry + + * sys/osxaudio/gstosxaudiodeviceprovider.c: + osxaudiosrc: Support a device as both input and output + osxaudiodeviceprovider now probes devices more than once to determine + if the device can function as both an input AND and output device. + Previously, if the device provider detected that a device had any output + capabilities, it was treated solely as an Audio/Sink. This causes issues + that have both input and output capabilities (for example, USB interfaces + for professional audio have both input and output channels). Such devices + are now listed as both an Audio/Sink as well as an Audio/Source. + Part-of: + +2022-02-24 20:28:23 +0530 Sanchayan Maity + + * docs/gst_plugins_cache.json: + * gst/rtp/gstrtpldacpay.c: + * gst/rtp/gstrtpldacpay.h: + rtp: ldac: Set frame count information in payload + The RTP payload seems to be required as it carries the frame count + information. Also, gst_rtp_base_payload_allocate_output_buffer had + the second argument incorrect. + Strangely some devices like Shanling MP4 and Sony XM3 would still + work without this while some like the Sony XM4 do not. + Part-of: + +2022-02-21 11:37:26 -0500 Xavier Claessens + + * ext/vpx/meson.build: + * gst/equalizer/meson.build: + * gst/isomp4/meson.build: + devenv: Add some missing GStreamer specific env variables + This should make "meson devenv" closer to what "gst-env.py" sets. + - GST_VALIDATE_SCENARIOS_PATH + - GST_VALIDATE_APPS_DIR + - GST_OMX_CONFIG_DIR + - GST_ENCODING_TARGET_PATH + - GST_PRESET_PATH + - GST_PLUGIN_SCANNER + - GST_PTP_HELPER + - _GI_OVERRIDES_PATH + Part-of: + +2022-02-25 12:44:26 +0100 Jan Alexander Steffens (heftig) + + * gst/deinterlace/tvtime/greedyh.c: + deinterlace: greedyh: Stop adding 2 to cur_field_idx + Just a simplification. + Part-of: + +2022-02-24 17:36:40 +0100 Jan Alexander Steffens (heftig) + + * gst/deinterlace/tvtime/greedyh.c: + deinterlace: greedyh: Use _plane in _packed, fix planar formats + This greatly reduces code duplication. It also exposed the cause for + planar formats not being properly deinterlaced: + The planar path was missing the initial offset adjustment that the + packed path did to `L2` and `L2P` in the case of an even field, which + caused it to select the wrong weave lines every other field. + Add those offsets in `_plane`. + Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1047 + Part-of: + +2022-02-25 12:39:31 +0100 Jan Alexander Steffens (heftig) + + * gst/deinterlace/tvtime/greedyh.c: + deinterlace: greedyh: Rename _planar_plane to _plane + As well as `i` to `plane`. + Part-of: + +2022-02-25 12:36:17 +0100 Jan Alexander Steffens (heftig) + + * gst/deinterlace/tvtime/greedyh.c: + deinterlace: greedyh: Move code from _planar into _planar_plane + Part-of: + +2022-02-25 12:30:21 +0100 Jan Alexander Steffens (heftig) + + * gst/deinterlace/tvtime/greedyh.c: + deinterlace: greedyh: Move _planar_plane upwards + In preparation of refactoring. No functional change. + Part-of: + +2022-02-22 10:13:28 +0100 Guillaume Desmottes + + * gst/rtpmanager/rtpsource.c: + rtpsource: fix rtp_source_get_nack_deadlines doc + Part-of: + +2022-02-21 13:27:06 +1100 Matthew Waters + + * gst/rtp/gstrtpulpfecenc.c: + ulpfecenc: slightly safer dispose impl + Technically dispose can be called more than once (even if gstelement is + not actually set up to do that) so need to protect against that. + Part-of: + +2022-02-21 13:24:07 +1100 Matthew Waters + + * gst/rtp/gstrtpulpfecenc.c: + ulpfecenc: fix unmatched free() call + One must always match a g_slice_new with a g_slice_free and a g_new with + a g_free. This was not the case for the internal ctx struct. + Part-of: + +2021-11-09 17:37:24 +1100 Matthew Waters + + * gst/rtp/gstrtpulpfecenc.c: + rtpulpfecenc: add some debug logging + Like, what configuration we are using or whether a fec packet is + generated. + Part-of: + +2022-02-18 15:23:13 +0530 Nirbheek Chauhan + + * gst/matroska/matroska-demux.c: + matroska-demux: Emit a warning when no codec data found + It is bad if an mkv file does not have codec data for the ProRes + variant, so we should emit a warning. ffmpeg does the same thing. + Part-of: + +2022-02-20 15:20:07 -0500 Nicolas Dufresne + + * docs/gst_plugins_cache.json: + doc: Add NV12_16L32S into the cache + Autogenerated by CI + Part-of: + +2022-01-26 10:06:50 -0500 Nicolas Dufresne + + * sys/v4l2/gstv4l2transform.c: + v4l2transform: Handle caps changes + As this element is single threaded, we only need to stop the objects to + allow changing the format again. Fixes assertion notably on shutdown and + on some other situation where the format may be set twice without + actually activating the element. + Part-of: + +2022-01-26 09:55:09 -0500 Nicolas Dufresne + + * sys/v4l2/gstv4l2object.c: + v4l2object: Avoid crash on early failure + This happens while an external error lead to an early shutdown. + Part-of: + +2022-01-25 14:34:32 -0500 Nicolas Dufresne + + * sys/v4l2/gstv4l2object.c: + video4linux2: Add MM21 support + This enables mtk-vcodec and MDP driver from mainline Linux kernel. + Part-of: + +2022-01-25 14:08:47 -0500 Nicolas Dufresne + + * sys/v4l2/gstv4l2bufferpool.c: + * sys/v4l2/gstv4l2object.c: + * sys/v4l2/gstv4l2object.h: + Port plugins to gst_video_format_info_extrapolate_stride() + This reduces code duplication and simplify addition of new + pixel formats into related plugins. + Part-of: + +2022-02-02 12:49:29 +0100 Rouven Czerwinski + + * sys/v4l2/gstv4l2tuner.c: + gstv4l2tuner: return NULL if no norm set + If the video4linux device supports norms but has no norm set, norm is + returned as an uninitialized variable after the ioctl call, leading to + gst_v4l2_tuner_get_norm_by_std_id() returning a random norm from the + supported norms. Catch this case and instead return NULL to indicate + that no norm is setup. + Part-of: + +2022-01-14 23:42:27 -0600 Tim Mooney + + * sys/v4l2/ext/types-compat.h: + v4l2: include on Illumos + Needed for _IOR/_IORW + Part-of: + +2022-02-17 17:36:22 +0100 Sebastian Wick + + * gst/matroska/matroska-demux.c: + matroska: default prores fourcc apcn + If there is no codec private data for prores it should default to Apple + ProRes 422 Standard Definition (apcn). Can be tested with + strobe_scientist.mkv from + https://developers.google.com/media/vp9/hdr-encoding + Part-of: + +2021-11-16 17:35:25 +0900 Seungha Yang + + * gst/isomp4/qtdemux.c: + qtdemux: Do not send unnecessary GAP events + Each stream may have its own segment timeline + (i.g., different segment.start or segment.base) + depending on edit-list and composition-to-decode atom. + Make sure whether time position of a stream has been actually + far behind than that of current target stream. + Part-of: + +2021-10-01 20:27:28 +0900 Seungha Yang + + * meson.build: + meson: Do hard build error for some MSVC warnings + Handle various MSVC warnings as errors for development version. + Part-of: + +2021-04-08 12:18:09 +0300 Sebastian Dröge + + * gst/isomp4/gstqtmux.c: + qtmux: Don't post an error message if pushing a sample failed with FLUSHING + Part-of: + +2022-02-11 21:35:54 +0100 Heiko Becker + + * ext/lame/meson.build: + meson: Don't build lame plugin with -Dlame=disabled + Part-of: + +2022-02-11 23:55:57 +0100 Marek Vasut + + * ext/jpeg/gstjpegdec.c: + jpegdec: Pull row_stride from GST_VIDEO_FRAME_PLANE_STRIDE() + The libjpeg-turbo internal state might not be correctly initialized for + the first frame in a stream, pull the frame stride from gstreamer frame + metadata instead, which is correct even for the first frame, and which + makes this code consistent with the surrounding lines. + Fixes: e6d83d8f96 ("jpegdec: Support libjpeg-turbo colorspace conversion") + Part-of: + +2022-02-11 23:44:24 +0100 Marek Vasut + + * ext/jpeg/gstjpegdec.c: + jpegdec: Call gst_jpeg_turbo_parse_ext_fmt_convert() before jpeg_start_decompress() + It is imperative that the libjpeg-turbo state is properly initialized + before jpeg_start_decompress() is called. Make sure cinfo.out_color_space + and cinfo.raw_data_out are set to their final values matching their peer + caps before calling jpeg_start_decompress(). + Fixes: e6d83d8f96 ("jpegdec: Support libjpeg-turbo colorspace conversion") + Part-of: + +2022-02-11 23:44:20 +0100 Marek Vasut + + * ext/jpeg/gstjpegdec.c: + jpegdec: Factor out gst_jpeg_turbo_parse_ext_fmt_convert() + Pull out peer caps checking code into gst_jpeg_turbo_parse_ext_fmt_convert(). + This code is used by libjpeg-turbo extras to determine whether peer is capable + of handling buffers into which libjpeg-turbo can directly decode data. This + kind of check must be performed before jpeg_start_decompress() is called in + gst_jpeg_dec_prepare_decode() as well as in gst_jpeg_dec_negotiate(), hence + the common code. + This commit does modify the code a little to make it easier to call from both + call sites without much duplication, hence the extra `if (*clrspc)` test. + Part-of: + +2022-02-11 23:29:27 +0100 Marek Vasut + + * ext/jpeg/gstjpegdec.c: + Revert "jpegdec: only allow conversions from RGB" + This reverts commit 2aa2477208c029b0e1b8232d69f4f99a3bf1d473. + The commit is completely wrong, libjpeg-turbo is perfectly capable + of decoding I420 (YUV) to RGB. The test case provided alongside the + aforementioned commit passes without this revert because it decodes + image of JCS_YCrCb color space, so the new `if (clrspc == JCS_RGB)` + condition is false on that image, and the libjpeg-turbo decoding + does not get used. The real bug is hidden by that commit. + The real problem is in the call order of gst_jpeg_dec_prepare_decode() + and gst_jpeg_dec_negotiate(). The gst_jpeg_dec_prepare_decode() calls + jpeg_start_decompress() which sets up internal state of the libjpeg, + however, neither cinfo.out_color_space nor cinfo.raw_data_out are + set correctly yet. Those two are set up in gst_jpeg_dec_negotiate() + which is called a bit later. Therefore, the real fix is the set up + cinfo.out_color_space and cinfo.raw_data_out before calling + jpeg_start_decompress(). This is however a separate patch. + Fixes: 2aa2477208 ("jpegdec: only allow conversions from RGB") + Part-of: + +2022-02-01 14:28:24 +0100 Bastien Nocera + + * ext/gtk/gtkgstglwidget.c: + gtk: Fix rotation not being applied when paused + The video wouldn't be redrawn immediately when a rotation was applied + but the pipeline was paused, as no new buffers were scheduled to be + displayed. + Part-of: + +2022-02-01 14:26:02 +0100 Bastien Nocera + + * ext/gtk/gtkgstbasewidget.c: + * ext/gtk/gtkgstbasewidget.h: + gtk: Add a way to queue redrawing the base GTK widget + This will be used to request a redraw of the GTK widget should the + display be changed using properties not directly handled by the base GTK + widget, but by one of its descendants. + Part-of: + +2022-01-18 17:53:30 +0100 Robert Rosengren + + * gst/rtpmanager/gstrtpbin.c: + rtpbin: Safer ts-offset-smoothing-factor calculation + Protect the ts-offset-smoothing-factor calculation from overflow. Output + warning and fallback to ts-offset if it is detected. + Part-of: + +2021-11-23 09:03:28 +0100 Robert Rosengren + + * docs/gst_plugins_cache.json: + * gst/rtpmanager/gstrtpbin.c: + * gst/rtpmanager/gstrtpbin.h: + rtpbin: add ts-offset-smoothing-factor property + Add property to set the TS offset smoothing factor and set default value + to not use it. + Part-of: + +2019-02-26 16:39:55 +0100 Danny Smith + + * gst/rtpmanager/gstrtpbin.c: + rtpbin: applied smoothing to jittery sender time-stamps + Applying a moving average filter to the timestamp offsets + for smoothing jittery and preventing aggressive skew handling. + Part-of: + +2018-05-29 16:24:02 +0200 Danny Smith + + * docs/gst_plugins_cache.json: + * gst/rtpmanager/gstrtpbin.c: + * gst/rtpmanager/gstrtpbin.h: + rtpbin: added option for setting min_ts_offset in ntp-sync mode + Constantly updating the ts_offset results in audiable glitches + when streaming audio using ntp-sync=true. By requiring a minimum + offset before updating ts_offset this can be mitigated. Added a + parameter which can be used to set min_ts_offset in ntp-sync mode. + Part-of: + +2022-02-04 11:15:47 +0000 Tim-Philipp Müller + + * docs/gst_plugins_cache.json: + * meson.build: + Back to development + Part-of: + +=== release 1.20.0 === + +2022-02-03 19:53:25 +0000 Tim-Philipp Müller + + * ChangeLog: + * NEWS: + * README: + * RELEASE: + * docs/gst_plugins_cache.json: + * gst-plugins-good.doap: + * meson.build: + Release 1.20.0 + +2022-02-03 19:53:18 +0000 Tim-Philipp Müller + + * ChangeLog: + Update ChangeLogs for 1.20.0 + +2022-02-01 05:07:04 +0530 Nirbheek Chauhan + + * docs/meson.build: + * sys/osxvideo/osxvideosink.m: + docs: Add objc and objcpp files to hotdoc gst_c_sources + Hotdoc should be able to extract and parse comments out of these. Just + need to be careful to only add the glob in directories that actually + contain *.m (objc) and *.mm (objcpp) files. + Also fix some doc comments and remove redundant ones. + Part-of: + +2022-01-30 19:06:29 +0530 Nirbheek Chauhan + + * sys/osxaudio/gstosxaudiosink.c: + * sys/osxaudio/gstosxaudiosrc.c: + * sys/osxvideo/osxvideosink.m: + docs: Rename "OS X" to "macOS" in some documentation + No one uses the term "Mac OS X" anymore, it's "macOS". "OS X" is even + worse, because people will usually start the search with "mac". + Part-of: + +2022-01-30 03:56:14 +0530 Nirbheek Chauhan + + * docs/gst_plugins_cache.json: + * sys/osxaudio/gstosxaudioelement.c: + osxaudio: Document GstOsxAudioElement interface + This is listed as a public interface implemented by osxaudio, so we + need to mark it as a plugin API so that it's listed in the + documentation correctly. + This is an ancient symbol, so add it to the symbol index too. + Part-of: + +2022-01-28 23:15:28 +0530 Nirbheek Chauhan + + * docs/gst_plugins_cache.json: + applemedia: Document vtenc / vtdec elements + Also preserve-alpha property should only be exposed on the + vtenc_prores element since h264 does not support transparency. + Fixes https://gitlab.freedesktop.org/gstreamer/gst-docs/-/issues/94 + Part-of: + +2022-01-29 12:56:22 +0200 Sebastian Dröge + + * ext/soup/gstsouputils.c: + soup: Don't store a strong reference to the logging object + Otherwise this causes a reference cycle between the session, the logger + and the logging object (i.e. the sink element or session wrapper). + Part-of: + +2022-01-29 12:55:30 +0200 Sebastian Dröge + + * ext/soup/gstsouphttpsrc.c: + souphttpsrc: Always abort the session once its last user is gone + And wait until there are no pending GSources on the main context anymore + afterwards. + Part-of: + +2022-01-29 12:54:23 +0200 Sebastian Dröge + + * ext/soup/gstsouphttpsrc.c: + souphttpsrc: Post context message after setting up the context from the source's thread + This simplifies the code and especially the locking a bit, and makes + sure we only export the session after it is fully set up. + Part-of: + +=== release 1.19.90 === + +2022-01-28 14:28:35 +0000 Tim-Philipp Müller + + * ChangeLog: + * NEWS: + * RELEASE: + * docs/gst_plugins_cache.json: + * gst-plugins-good.doap: + * meson.build: + Release 1.19.90 + +2022-01-28 14:28:28 +0000 Tim-Philipp Müller + + * ChangeLog: + Update ChangeLogs for 1.19.90 + +2022-01-28 15:47:44 +0200 Sebastian Dröge + + * ext/soup/gstsouphttpclientsink.c: + souphttpsink: Protect against spurious wakeups during startup + Part-of: + +2022-01-28 15:33:04 +0200 Sebastian Dröge + + * ext/soup/gstsouphttpclientsink.c: + * ext/soup/gstsouphttpsrc.c: + * ext/soup/gstsouputils.c: + * ext/soup/gstsouputils.h: + souphttpsrc: Don't use the source element after setup from the session thread + The source element might be gone already if the session is shared with + other source elements. + As a consequence, do all logging via the session object instead of using + the source element. + Part-of: + +2022-01-28 15:31:55 +0200 Sebastian Dröge + + * ext/soup/gstsouphttpsrc.c: + souphttpsrc: Don't abort all pending operations on the session if shutting down a source with a shared session + Only do it for a non-shared session. Other sources would otherwise get + their requests cancelled unexpectedly. + Part-of: + +2022-01-28 15:31:25 +0200 Sebastian Dröge + + * ext/soup/gstsouphttpsrc.c: + souphttpsrc: Don't set boolean to FALSE right after checking that it is FALSE + Part-of: + +2022-01-28 15:30:56 +0200 Sebastian Dröge + + * ext/soup/gstsouphttpsrc.c: + souphttpsrc: soup_session_new_with_options() can't fail with NULL + So don't check for it. + Part-of: + +2022-01-27 16:28:48 +0100 Stéphane Cerveau + + * gst/autodetect/gstautodetect.h: + autodetect: fix debug init category + Since the split of elements, the debug category + was default for autodetect. + Part-of: + +2022-01-21 16:09:30 +0100 Daniel Kolesa + + * ext/soup/gstsouphttpsrc.c: + * ext/soup/gstsouphttpsrc.h: + * ext/soup/gstsouploader.c: + * ext/soup/gstsouploader.h: + soup: move libsoup session into its own thread + Starting with libsoup3, there is no attempt to handle thread safety + inside the library, and it was never considered fully safe before + either. Therefore, move all session handling into its own thread. + The libsoup thread has its own context and main loop. When some + request is made or a response needs to be read, an idle source + is created to issue that; the gstreamer thread issuing that waits + for that to be complete. There is a per-src condition variable to + deal with that. + Since the thread/loop needs to be longer-lived than the soup + session itself, a wrapper object is provided to contain them. The + soup session only has a single reference, owned by the wrapper + object. + It is no longer possible to force an external session, since this + does not seem to be used anywhere within gstreamer and would be + tricky to implement; this is because one would not have to provide + just a session, but also the complete thread arrangement made in + the same way as the system currently does internally, in order to + be safe. + Messages are still built gstreamer-side. It is safe to do so until + the message is sent on the session. Headers are also processed on + the gstreamer side, which should likewise be safe. + All requests as well as reads on the libsoup thread are issued + asynchronously. That allows libsoup to schedule things with as + little blocking as possible, and means that concurrent access + to the session is possible, when sharing the session. + Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/947 + Part-of: + +2022-01-27 01:38:39 +0000 Tim-Philipp Müller + + * po/de.po: + * po/fr.po: + * po/ro.po: + gst-plugins-good: update translations + Part-of: + +2022-01-26 11:22:31 +0530 Nirbheek Chauhan + + * gst/rtsp/gstrtspsrc.c: + rtspsrc: Fix critical while serializing timeout element message + The "cause" field wasn't registered as a GEnumValue, so do that. + Fixes this critical in gst_structure_to_string(): + `gst_value_serialize: assertion 'G_IS_VALUE (value)' failed` + Part-of: + +2022-01-24 10:45:33 +0200 Sebastian Dröge + + * gst/multifile/gstsplitmuxsink.c: + splitmuxsink: Warn when calculating the next fragment time in timecode mode fails + But only if timecode mode is enabled as it will fail all the time + otherwise. + Part-of: + +2022-01-25 15:05:47 +0530 Nirbheek Chauhan + + * tests/examples/qt/qmlsink-multisink/videoitem/videoitem.cpp: + qt: Retain compatibility with Qt 5.9 + QSharedPointer.get() was added in Qt 5.11, and it does the same thing + as .data() + https://doc.qt.io/qt-5/qsharedpointer.html#get + Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/867 + Part-of: + +2022-01-21 14:13:12 -0500 Nicolas Dufresne + + * sys/v4l2/ext/types-compat.h: + * sys/v4l2/ext/v4l2-common.h: + * sys/v4l2/ext/v4l2-controls.h: + * sys/v4l2/ext/videodev2.h: + video4linux2: Sync kernel headers against 5.16.0 + Part-of: + +2022-01-17 11:44:47 -0500 Nicolas Dufresne + + * sys/v4l2/gstv4l2videodec.c: + v4l2videdec: Fix race condition between drain and state changes + This is due to an unsafe usage of the pad task. We didn't ensure proper + ownership of the task. That race involved the task being released too early, + and was detected, luckily, by the glib mutex implementationt that + reported the mutex being disposed while being locked. + Part-of: + +2022-01-16 14:41:41 +0000 Philippe Normand + + * ext/soup/gstsoup.c: + * ext/soup/gstsouploader.c: + * ext/soup/gstsouploader.h: + * ext/soup/gstsouputils.h: + * ext/soup/meson.build: + soup: Reintroduce compile-time libsoup dependency for static builds + On Android (especially) and for static builds in general it is safer to link + against libsoup and have the dynamic custom loading disabled. For those cases we + can safely assume the application will use either libsoup2 or libsoup3 and not + both. + Fixes #939 + Part-of: + +2022-01-16 14:40:11 +0000 Philippe Normand + + * ext/soup/gstsoupelement.c: + soup: Initialize debug category before use + Part-of: + +2022-01-16 14:39:42 +0000 Philippe Normand + + * ext/soup/gstsouploader.c: + soup: Fix return types for a couple VTable functions + Part-of: + +2022-01-14 19:53:29 +0530 Nirbheek Chauhan + + * ext/cairo/meson.build: + meson: Build cairo subproject when unavailable on the system + Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/952 + Part-of: + +2022-01-20 17:59:30 +0100 Aleksandar Topic + + * gst/imagefreeze/gstimagefreeze.c: + imagefreeze: Fix example launch line format issue + The currently shown example launch line will not run, because it + cannot handle png images. + Part-of: + +2021-05-07 18:22:06 +0200 Bastien Nocera + + * docs/gst_plugins_cache.json: + * ext/gtk/gstgtkbasesink.c: + * ext/gtk/gstgtkbasesink.h: + * ext/gtk/gtkgstbasewidget.c: + * ext/gtk/gtkgstbasewidget.h: + gtk: Add "video-aspect-ratio-override" property + Allow front-ends to override the pixel aspect ratio found inside the + video file itself, or most likely, missing from the video file. + This is a long-standing feature of totem. + Part-of: + +2021-10-13 15:33:14 +0200 Bastien Nocera + + * ext/gtk/gtkgstbasewidget.c: + gtk: Remove _update_par() forward declaration + No functional changes. + https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1137/diffs#note_1102782 + Part-of: + +2021-10-13 15:38:52 +0200 Bastien Nocera + + * ext/gtk/gtkgstbasewidget.c: + gtk: Mark properties as changeable in the PLAYING state + https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1137#note_1102789 + Part-of: + +2021-05-11 11:28:57 +0200 Bastien Nocera + + * docs/gst_plugins_cache.json: + * ext/gtk/gstgtkbasesink.c: + * ext/gtk/gtkgstbasewidget.c: + gtk: Fix "pixel-aspect-ratio" property range + Fix the arguments passed to gst_param_spec_fraction in the incorrect + order. + Part-of: + +2021-05-07 18:19:55 +0200 Bastien Nocera + + * ext/gtk/gstgtkbasesink.c: + * ext/gtk/gtkgstbasewidget.c: + gtk: Rename display pixel aspect ratio related constants + Part-of: + +2021-05-07 18:16:30 +0200 Bastien Nocera + + * ext/gtk/gtkgstbasewidget.c: + gtk: Make "pixel-aspect-ratio" changes immediate + Schedule a resize when the display's pixel aspect ratio has changed, if + one isn't already scheduled. + Closes: https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/issues/883 + Part-of: + +2022-01-05 02:07:59 +0530 Nirbheek Chauhan + + * docs/meson.build: + * meson.build: + meson: Add explicit check: kwarg to all run_command() calls + This is required since Meson 0.61.0, and causes a warning to be + emitted otherwise: + https://github.com/mesonbuild/meson/commit/2c079d855ed87488bdcc6c5c06f59abdb9b85b6c + https://github.com/mesonbuild/meson/issues/9300 + This exposed a bunch of places where we had broken run_command() + calls, unnecessary run_command() calls, and places where check: true + should be used. + Part-of: + +2021-12-30 16:31:33 +0000 Heinrich Kruger + + * gst/rtp/gstrtphdrext-colorspace.c: + rtp-hdrext-colorspace: Fix color range encoding + The color space RTP header extension encodes color range as specified in + https://www.webmproject.org/docs/container/#Range. In other words: + 0: Unspecified, + 1: Broadcast Range, + 2: Full range, + 3: Defined by matrix coefficients and transfer characteristic. + This does not match the values of GstVideoColorRange, so it is not + correct to just write the colorimetry.range value to the header + extension. + Part-of: + +2021-12-24 14:52:38 +0900 Jeongki Kim + + * gst/rtp/gstrtpg726depay.c: + rtpg726depay: fix endian conversion + Part-of: + +2021-12-23 14:29:55 +0000 Corentin Damman + + * tests/check/elements/rtpjitterbuffer.c: + rtpjitterbuffer: fix typo in tests + Part-of: + +2021-12-20 09:28:50 +0000 Florian Zwoch + + * ext/aalib/gstaatv.c: + aatv: Fixes for rain-mode + Some rain-mode properties tried to read float from int value. + Initialize rain after setting rain-mode. Rain was non-functional if + width/height were left at default values. + Part-of: + +2021-12-07 23:48:39 +0100 Mathieu Duponchelle + + * docs/gst_plugins_cache.json: + * gst/rtp/gstrtpreddec.c: + * gst/rtp/gstrtpreddec.h: + reddec: implement support for the BUNDLE case + When multiple streams are bundled together, there may be more + than one red payload type to handle. + In addition, as the red decoder works by filling in gaps in + the seqnums, there needs to be one rtp_history queue per sequence + domain. + Part-of: + +2021-12-07 23:43:21 +0100 Mathieu Duponchelle + + * docs/gst_plugins_cache.json: + * gst/rtpmanager/gstrtpbin.c: + rtpbin: add new request-fec-decoder-full signal for BUNDLE + When multiple streams are bundled together, the application needs + to know about the payload type in order to instantiate the appropriate + FEC decoder. + Part-of: + +2021-12-03 02:52:06 +0100 Mathieu Duponchelle + + * gst/rtp/gstrtpredenc.c: + * gst/rtp/gstrtpredenc.h: + * gst/rtp/gstrtpulpfecenc.c: + * gst/rtp/gstrtpulpfecenc.h: + * tests/check/elements/rtpred.c: + rtp/redenc|ulpfecenc: add support for TWCC + In redenc, when input buffers have a header for the TWCC extension, + we now add one to our wrapper buffers. + In ulpfecenc we add one in that case to our protection buffers. + This makes TWCC functional when UlpRed is used in webrtcbin. + Part-of: + +2021-12-02 13:32:33 +0000 Thibault Saunier + + * gst/rtp/gstrtph264pay.c: + * gst/rtp/gstrtph264pay.h: + rtph264pay: Handle 'profile' field + In order to allow "level-asymmetry-allowed" we now handle a new + "profile" field, which as the same semantics as the "profile" field in + H.264 stream so that we can force payloaded stream to have the right + format when using the `gst_sdp_media_get_caps_from_media` to set caps + filter after the payloader. This allows a simple negotiation in standard + RTP negotiation based on SDPs (like webrtc) for that particular case, + closely respecting the specs. + Part-of: + +2021-12-10 16:08:27 +0100 Jakub Adam + + * sys/ximage/gstximagesrc.c: + ximagesrc: avoid blocking wait for X events + XNextEvent() blocks indefinitely in absence of X11 events, which can + prevent the pipeline from stopping. + This can cause problems when ximagesrc is used in "remote desktop" + scenarios and the GStreamer application itself, through which the user + is viewing and controlling the machine, is the only source of input + events. + Replace the call with non-blocking XCheckTypedEvent(). + Part-of: + +2021-12-10 17:36:30 +0100 Célestin Marot + + * gst/multifile/gstmultifilesrc.c: + multifilesrc: fix caps leak + since `gst_caps_replace()` and `gst_pad_set_caps()` both ref the caps and neither of them takes the ownership of the caps -> it must be unreffed in `gst_multi_file_src_set_property()` + to test the leak (on Unix): `echo coucou > /tmp/file.txt && GST_TRACERS=leaks GST_DEBUG="GST_TRACER:7" gst-launch-1.0 multifilesrc location=/tmp/file.txt caps='txt' ! fakesink` + Part-of: + +2021-12-06 15:37:06 +0100 Guillaume Desmottes + + * ext/jpeg/gstjpegdec.c: + jpegdec: only allow conversions from RGB + libjpeg-turbo only supports converting from RGB to other RGB formats. + Fix runtime error when trying to convert from a YUV format for example. + Fix #916 + Part-of: + +2021-11-29 15:35:36 +0100 Wim Taymans + + * sys/v4l2/gstv4l2object.c: + v4l2: handle 0x0 sizes gracefully + Also ignore 0x0 sizes in the fallback case and assume the size can be + anything between 1x1 and MAXxMAX. + This fixes the case where a width=0, height=0 caps are created. Whith + this patch the caps will contain width=[1,MAX], height=[1,MAX]. + Part-of: + +2021-11-23 20:54:57 +0100 Mathieu Duponchelle + + * gst/rtpmanager/gstrtpfunnel.c: + * tests/check/elements/rtpfunnel.c: + rtpfunnel: fix extmap handling on accept-caps + Follow-up on 97d83056b315c56834eaa6776ae4c6a0848b5ef9, only check + for intersection with the current srccaps when checking if a sinkpad + can accept caps. + I must have been lucky in my firefox testing then, and always entered + the code path with audio getting negotiated first, thus not failing + the is_subset check when srccaps had been negotiated as + application/x-rtp, and an accept-caps query was made for the video + caps with a defined extmap. + Part-of: + +2021-11-12 13:54:59 +0100 Jean Felder + + * ext/taglib/gstid3v2mux.cc: + id3v2mux: Map GST_TAG_MUSICBRAINZ_RELEASETRACKID + Part-of: + +2021-11-12 13:51:56 +0100 Jean Felder + + * ext/taglib/gstid3v2mux.cc: + id3v2mux: Map GST_TAG_MUSICBRAINZ_RELEASEGROUPID + Part-of: + +2021-11-18 16:27:17 +0000 Tobias Reineke + + * ext/shout2/gstshout2.c: + shout2: Add compatibility for libshout >= 2.4.2 + In libshout >=2.4.2 shout_open() can return SHOUTERR_RETRY in addition + to SHOUTERR_BUSY. + The nonblocking example in libshout fixes the problem in a similar + way, as mentioned by the author in this issue: + https://gitlab.xiph.org/xiph/icecast-libshout/-/issues/2316 + Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/issues/848 + Part-of: + +2021-11-15 14:39:14 +1100 Matthew Waters + + * ext/qt/qtitem.cc: + qmlglsink: fix another resize case + If qt asks us to redraw before we have both set a buffer and caps we + would attempt to use the new caps with the old buffer which could result + in bad things happening. + Only update caps from new_caps once the buffer has actually been set. + Part-of: + +2021-11-01 10:08:32 +0700 Trung Do + + * sys/v4l2/gstv4l2object.c: + v4l2: Update fmt if padded height is greater than fmt height + If padded height is greater, buffer bytesused could be larger than plane length, + and cause VIDIOC_QBUF failure. + Part-of: + +2021-11-09 19:41:14 +0100 Mathieu Duponchelle + + * gst/rtpmanager/gstrtpfunnel.c: + * tests/check/elements/rtpfunnel.c: + rtpfunnel: don't enforce twcc during upstream negotiation + A previous patch has caused rtpfunnel to output twcc-related + information downstream, however this leaked into upstream + negotiation (through funnel->srccaps), causing payloader to + negotiate twcc caps even when not prompted to do so by the user. + Fix this by only enforcing that upstream sends us application/x-rtp + caps as was the case originally. + Part-of: + +2021-10-30 01:18:18 +0200 Mathieu Duponchelle + + * gst/rtpmanager/rtptwcc.c: + rtptwcc: complete bufferlist fix + When dealing with bufferlists, we need to store one "SentPacket" + structure per buffer, not one per buffer list! + Part-of: + +2021-11-12 17:59:22 +0200 Sebastian Dröge + + * gst/isomp4/qtdemux.c: + qtdemux: Log cslg_shift that was determined + Part-of: + +2021-11-12 13:00:56 +0200 Sebastian Dröge + + * gst/isomp4/qtdemux.c: + qtdemux: Use a composition time offset of 0 for "no decode samples" for the time being + This needs codec-specific handling, but using 0 instead of G_MININT32 at + least gives somewhat reasonable behaviour. + See https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/883 + Part-of: + +2021-11-12 12:46:56 +0200 Sebastian Dröge + + * gst/isomp4/qtdemux.c: + qtdemux: Always check ctts for unreasonably large offsets + If this happens then ignore the whole ctts. Previously we only did this + if the PTS/DTS shift was determined from the ctts instead of the cslg. + Part-of: + +2021-11-12 12:39:17 +0200 Sebastian Dröge + + * gst/isomp4/qtdemux_dump.c: + qtdemux: Dump composition time offsets in trun as signed integers + Just like we do for ctts without regard of the version of the box. + Huge offsets are interpreted as negative offsets by qtdemux so this + works. + Part-of: + +2021-11-12 11:36:31 +0200 Sebastian Dröge + + * gst/isomp4/qtdemux.h: + qtdemux: Add a comment why only positive cslg shifts are considered + Part-of: + +2021-11-02 18:38:39 +0200 Sebastian Dröge + + * gst/isomp4/qtdemux.c: + qtdemux: Only adjust segment.stop by cslg_shift if stop is not -1 + Part-of: + +2021-11-02 18:29:53 +0200 Sebastian Dröge + + * gst/isomp4/qtdemux.c: + qtdemux: Handle negative composition offsets in the trun box the same way as for non-fragmented streams + Part-of: + +2021-11-02 17:43:17 +0200 Sebastian Dröge + + * gst/isomp4/qtdemux.c: + qtdemux: Parse ctts version + Negative composition time offsets are only allowed with version 1 of the + box, however we parse it as a signed value also for version 0 boxes as + unfortunately there are such files out there and it's unlikely to have + (valid) huge composition offsets. + Part-of: + +2021-11-02 17:41:01 +0200 Sebastian Dröge + + * gst/isomp4/qtdemux.c: + * gst/isomp4/qtdemux.h: + * gst/isomp4/qtdemux_dump.c: + qtdemux: Add support for version 1 cslg boxes + They use 64 bit fields instead of 32 bit. + Also parse offset as a signed integer (in both versions) and clamp it to + a positive value as negative values don't really interest us here. + Part-of: + +2021-11-02 17:54:46 +0200 Sebastian Dröge + + * gst/isomp4/qtdemux.c: + qtdemux: Don't free cslg data that we don't own on corrupt files + Part-of: + +2021-05-07 10:44:15 +0200 Rafał Dzięgiel + + * gst/matroska/matroska-demux.c: + * gst/matroska/matroska-read-common.c: + matroska: Ref index table when updating track info + Track index table array was being lost during track info update. + Ref it over to updated info, so it can be used for finding + nearest seek points. + Part-of: + +2021-11-12 11:28:23 +0100 Rafał Dzięgiel + + * gst/matroska/ebml-read.c: + * gst/matroska/matroska-demux.c: + * gst/matroska/matroska-ids.c: + * gst/matroska/matroska-read-common.c: + matroska: Use g_array_unref everywhere + Instead of using g_array_free which is not thread safe use g_array_unref instead + Part-of: + +2021-11-11 19:11:25 +0000 Tim-Philipp Müller + + * ext/cairo/gstcairooverlay.c: + * gst/equalizer/gstiirequalizernbands.c: + docs: fix unnecessary ampersand, < and > escaping in code blocks + Part-of: + +2021-11-12 03:17:44 +0100 Mathieu Duponchelle + + * gst/rtpmanager/gstrtpst2022-1-fecdec.c: + st2022-1-fecdec: fix packet trimming + g_sequence_remove_range's end iter is exclusive, so if one + wants to remove that item as well, it should be called with + the next iter. + This could in theory fix an issue where: + * The sequence isn't entirely trimmed, with an old item lingering + * Following FEC packets are immediately discarded because they + arrived later than corresponding media packets, long enough for + seqnums to wrap around + * We now try to reconstruct a media packet with a completely obsolete + FEC packet, chaos ensues. + Part-of: + +2021-11-11 15:49:19 +1100 Matthew Waters + + * ext/qt/qtitem.cc: + qmlsink: support caps changes better + We need to hold onto the last buffer until the next buffer arrives. + Before, if a caps change comes we would remove the currently rendering + buffer. if Qt asks use to render something, we would render the dummy + black texture. + Fixes a period of black output when upstream is e.g. changing resolution + as in hls adaptive bitrate scenarios. + Part-of: + +2021-09-27 16:52:22 +0100 James Cowgill + + * sys/v4l2/gstv4l2bufferpool.c: + * sys/v4l2/gstv4l2bufferpool.h: + v4l2: Record buffer states in pool to fix dequeue race + The `gst_v4l2_buffer_pool_dqbuf` function contains this ominous comment: + /* get our GstBuffer with that index from the pool, if the buffer was + * outstanding we have a serious problem. + */ + outbuf = pool->buffers[group->buffer.index]; + Unfortunately it is common for buffers in _output_ buffer pools to be + both queued and outstanding at the same time. This can happen if the + upstream element keeps a reference to the buffer, or in an encoder + element itself when it keeps a reference to the input buffer for each + frame. + Since the current code doesn't handle this case properly we can end up + with crashes in other elements such as: + (gst-launch-1.0:32559): CRITICAL **: 17:33:35.740: gst_video_frame_map_id: assertion 'GST_IS_BUFFER (buffer)' failed + and: + (gst-launch-1.0:231): GStreamer-CRITICAL **: 00:16:20.882: write map requested on non-writable buffer + Both these crashes are caused by a race condition related to releasing + the same buffer twice from two different threads. If a buffer is queued + and outstanding this situation is possible: + **Thread 1** + - Calls `gst_buffer_unref` decrementing the reference count to zero. + - The core GstBufferPool object marks the buffer non-outstanding. + - Calls the V4L2 release buffer function. + - If the buffer is _not_ queued: + - Release it back to the free pool (containing non-queued buffers). + **Thread 2** + - Dequeues the queued output buffer. + - Marks the buffer as not queued. + - If the buffer is _not_ outstanding: + - Calls the V4L2 release buffer function. + - Release it back to the free pool (containing non-queued buffers). + If both of these threads run at exactly the same time there is a small + window where the buffer is marked both not outstanding and not queued + but before it has been released. In this case the buffer will be freed + twice causing the above crashes. + Unfortunately the variable recording whether a buffer is outstanding is + part of the core `GstBuffer` object and is managed by `GstBufferPool` so + it's not as straightforward as adding a mutex. Instead we can fix this + by additionally recording the buffer state in `GstV4l2BufferPool`, and + handle "internal" and "external" buffer release separately so we can + detect when a buffer becomes not outstanding. + In the new solution: + - The "external" buffer pool release and the "dqbuf" functions + atomically update the buffer state and determine if a buffer is still + queued or outstanding. + - Subsequent code and a new + `gst_v4l2_buffer_pool_complete_release_buffer` function can proceed to + release (or not) a buffer knowing that it's not racing with another + thread. + Part-of: + +2021-11-09 15:10:06 +1100 Matthew Waters + + * gst/rtpmanager/gstrtpbin.c: + rtpbin: separate out the two fec decoder locations + The pipeline flow for receiving looks like this: + rtpsession ! rtpssrcdemux ! session_fec_decoder ! rtpjitterbuffer ! \ + rtpptdemux ! stream_fec_decoder ! ... + There are two places where a fec decoder could be placed. + 1. As requested from the 'request-fec-decoder' signal: after rtpptdemux + for each ssrc/pt produced + 2. after rtpssrcdemux but before rtpjitterbuffer: added for the + rtpst2022-1-fecenc/dec elements, + However, there was some cross-contamination of the elements involved and + the request-fec-decoder signal was also being used to request the fec + decoder for the session_fec_decoder which would then be cached and + re-used for subsequent fec decoder requests. This would cause the same + element to be attempted to be linked to multiple elements in different + places in the pipeline. This would fail and cause all kinds of havoc + usually resulting in a not-linked error being returned upstream and an + error message being posted by the source. + Fix by not using the request-fec-decoder signal for requesting the + session_fec_decoder and instead solely rely on the added properties for + that case. + Part-of: + +2021-11-09 21:20:19 +0800 Zhao, Gang + + * gst/isomp4/qtdemux.c: + qtdemux: Fix can not demux Opus track made by qtmux + Opus stream info is read from dOps box [1]. The offset of dOps box in Opus box is different in mp4a version 1 and 0 [2]. Calculate the offset of dOps box according to mp4a version. + [1] https://opus-codec.org/docs/opus_in_isobmff.html + [2] subprojects/gst-plugins-good/gst/isomp4/atoms.c:sample_entry_mp4a_copy_data:2146 + Fixed: https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/issues/918 + Part-of: + +2021-11-09 13:36:28 +0800 Haihua Hu + + * sys/v4l2/gstv4l2bufferpool.c: + v4l2bufferpool: set video alignment of video meta + need apply video alignment info on video meta, downstream + element can get buffer alignment from video meta + Part-of: + +2021-11-06 16:48:20 +0800 Zhao, Gang + + * ext/vpx/gstvpxdec.c: + vpxdec: Skip check of key frame when open GOP + Valid stream [1] might has no key frame. + Fixed: https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/issues/890 + [1] https://storage.googleapis.com/downloads.webmproject.org/test_data/libvpx/vp90-2-16-intra-only.webm + Part-of: + +2021-10-05 18:07:06 +0100 Joe Todd + + * sys/osxaudio/gstosxcoreaudio.h: + osxaudio: Increase max channels to 64 + Part-of: + +2021-11-05 15:17:20 +0530 Sanchayan Maity + + * gst/imagefreeze/gstimagefreeze.c: + imagefreeze: Only set caps if they do not match current caps + Part-of: + +2021-11-04 16:04:30 +0200 Sebastian Dröge + + * sys/v4l2/v4l2_calls.c: + v4l2: Support bools for setting extra-controls + They're just mapped to 0 / 1 and can already be set as integers, but + being able to set them as booleans seems useful. + Part-of: + +2021-11-03 18:44:03 +0000 Tim-Philipp Müller + + * docs/gst_plugins_cache.json: + * meson.build: + Back to development + +=== release 1.19.3 === + +2021-11-03 15:43:36 +0000 Tim-Philipp Müller + + * ChangeLog: + * NEWS: + * RELEASE: + * docs/gst_plugins_cache.json: + * gst-plugins-good.doap: + * meson.build: + Release 1.19.3 + +2021-11-03 15:43:32 +0000 Tim-Philipp Müller + + * ChangeLog: + Update ChangeLogs for 1.19.3 + +2021-11-02 16:46:08 +0200 Sebastian Dröge + + * docs/gst_plugins_cache.json: + * gst/multifile/gstmultifilesink.c: + * gst/multifile/gstmultifilesink.h: + multifilesink: Make minimum distance between keyframes in next-file=key-frame mode configurable + Previously this was hardcoded to 10s, which is not necessarily the + desired behaviour. + Part-of: + +2021-11-01 16:32:10 +0100 Erlend Eriksen + + * gst/isomp4/gstqtmux.c: + qtmux: Fix deadlock in gst_qt_mux_prepare_moov_recovery + Regression from 5766731bd4200c3a374522a749386f740347661a + Part-of: + +2021-10-30 16:22:39 +0300 Sebastian Dröge + + * docs/gst_plugins_cache.json: + video: Fix order of new video formats + Part-of: + +2021-10-30 00:58:55 +0100 Tim-Philipp Müller + + * tests/check/elements/rtphdrext-colorspace.c: + Couple more g_memdup() -> g_memdup2() fixes + Fixes deprecation warnings with newer GLib versions. + Part-of: + +2021-10-23 00:44:57 +0200 Piotrek Brzeziński + + * docs/gst_plugins_cache.json: + video-format: Add support for ARGB64 LE/BE and similar variants + Co-authored-by: Sebastian Dröge + Part-of: + +2021-10-29 03:46:25 +0200 Mathieu Duponchelle + + * gst/rtpmanager/rtptwcc.c: + rtptwcc: don't assume all PacketInfo->data are buffers + They can also be buffer lists + Part-of: + +2021-10-25 11:37:45 +0100 Tim-Philipp Müller + + * meson.build: + meson: require matching GStreamer dep versions for unstable development releases + Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/issues/929 + Part-of: + +2021-10-28 21:37:47 +1100 Jan Schmidt + + * gst/isomp4/qtdemux.c: + qtdemux: Fix text and closed-caption handling. + https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1182 + broke text and and closed caption extraction when introducing WebVTT + support, by making the output buffers not have timestamps any more. + Fix that by making the process functions copy buffer metadata + when generating new output buffers. + Part-of: + +2021-10-25 01:02:07 +0100 Tim-Philipp Müller + + * po/af.po: + * po/az.po: + * po/bg.po: + * po/ca.po: + * po/cs.po: + * po/da.po: + * po/de.po: + * po/el.po: + * po/en_GB.po: + * po/eo.po: + * po/es.po: + * po/eu.po: + * po/fi.po: + * po/fr.po: + * po/fur.po: + * po/gl.po: + * po/hr.po: + * po/hu.po: + * po/id.po: + * po/it.po: + * po/ja.po: + * po/ky.po: + * po/lt.po: + * po/lv.po: + * po/mt.po: + * po/nb.po: + * po/nl.po: + * po/or.po: + * po/pl.po: + * po/pt_BR.po: + * po/ro.po: + * po/ru.po: + * po/sk.po: + * po/sl.po: + * po/sq.po: + * po/sr.po: + * po/sv.po: + * po/tr.po: + * po/uk.po: + * po/vi.po: + * po/zh_CN.po: + * po/zh_HK.po: + * po/zh_TW.po: + gst-plugins-good: update translations + Fixes #656 + Part-of: + +2021-10-23 14:38:06 +0300 Sebastian Dröge + + * gst/isomp4/qtdemux_types.c: + qtdemux: Add pasp box to the list of known boxes + Part-of: + +2021-01-20 11:53:51 +0100 Rafał Dzięgiel + + * gst/matroska/matroska-read-common.c: + matroska: Set image/attachment structure mimetype + Set structure mimetype to fix data detection by mimetype in other plugins. + Part-of: + +2021-01-20 11:33:39 +0100 Rafał Dzięgiel + + * gst/matroska/matroska-read-common.c: + matroska: Treat non-image structure as attachment + Otherwise each structure is named as GstTagImageInfo even if + it does not contain any images which is misleading. + Part-of: + +2021-10-21 20:32:05 +1100 Matthew Waters + + * gst/rtpmanager/gstrtpbin.c: + rtpbin: fix leak of pad when a fec encoder and aux sender a created + The ghost sink pad retrieved by rtpbin from the aux sender was not freed + when there was a previous element (fec encoder) in the chain. + Part-of: + +2021-10-18 15:47:00 +0100 Tim-Philipp Müller + + * tests/check/meson.build: + meson: update for meson.build_root() and .build_source() deprecation + -> use meson.project_build_root() or .global_build_root() instead. + Part-of: + +2021-10-18 00:40:14 +0100 Tim-Philipp Müller + + * docs/meson.build: + * meson.build: + * tests/check/meson.build: + meson: update for dep.get_pkgconfig_variable() deprecation + ... in favour of dep.get_variable('foo', ..) which in some + cases allows for further cleanups in future since we can + extract variables from pkg-config dependencies as well as + internal dependencies using this mechanism. + Part-of: + +2021-10-18 00:03:47 +0100 Tim-Philipp Müller + + * meson.build: + meson: clean up conditional paths after version bump + Part-of: + +2021-09-15 14:19:06 -0400 Olivier Crête + + * docs/gst_plugins_cache.json: + * gst/rtpmanager/gstrtphdrext-clientaudiolevel.c: + * gst/rtpmanager/gstrtphdrext-clientaudiolevel.h: + * gst/rtpmanager/gstrtpmanager.c: + * gst/rtpmanager/meson.build: + * tests/check/elements/rtphdrextclientaudiolevel.c: + * tests/check/meson.build: + rtphdrext-clientaudiolevel: Rename RFC 6464 element + Multiplying elements named after RFC numbers is confusing, + so let's give them meaningful names. + Part-of: + +2021-06-05 03:13:52 +1000 Jan Schmidt + + * gst/isomp4/fourcc.h: + * gst/isomp4/meson.build: + * gst/isomp4/qtdemux-webvtt.c: + * gst/isomp4/qtdemux-webvtt.h: + * gst/isomp4/qtdemux.c: + * gst/isomp4/qtdemux_types.c: + qtdemux: Add support for wvtt (WebVTT) subtitles. + WebVTT in ISO MP4 is specified in ISO 14496-30, + and needed for DASH support. It's stored in an + mp4 specific format. To handle it compatibly, + the wvtt boxes are converted back into WebVTT text + and pushed as application/x-subtitle-vtt + Part-of: + +2021-08-27 22:45:18 +1000 Jan Schmidt + + * gst/isomp4/qtdemux.c: + isomp4: Split buffer process functions. + Split the different handling for closed captions, VobSub subpicture + and timed text samples into separate simplified process functions. + Part-of: + +2021-08-27 21:58:25 +1000 Jan Schmidt + + * gst/isomp4/qtdemux.c: + * gst/isomp4/qtdemux.h: + isomp4: Use a function pointer for buffer splitting. + Swap the `need_process` boolean check on qtdemux streams + for a direct function pointer to the splitting function, + so we can stop adding extra cases to the single growing + `gst_qtdemux_process_buffer()` function. + Part-of: + +2021-10-14 18:38:26 +0100 Tim-Philipp Müller + + * meson.build: + meson: bump meson requirement to >= 0.59 + For monorepo build and ugly/bad, for advanced feature + option API like get_option('xyz').required(..) which + we use in combination with the 'gpl' option. + For rest of modules for consistency (people will likely + use newer features based on the top-level requirement). + Part-of: + +2021-10-05 12:28:22 -0300 Thibault Saunier + + * gst/isomp4/gstqtmux.c: + qtmux: Allow more fields changes renegotiating h264 + And consider interlace-mode=progress as equivalent to the field not + being specified. + Part-of: + +2021-10-05 10:50:32 -0300 Thibault Saunier + + * gst/matroska/matroska-mux.c: + matroskamux: Ignore some fields when renegotiating + Those values are never used in the muxer so we should not fail the + negotiation if those are changing. + Part-of: + +2021-10-17 01:59:35 -0300 Thibault Saunier + + * ext/lame/meson.build: + lame:meson: Avoid using fallback when we could use system install + Part-of: + +2021-10-05 11:38:33 -0300 Thibault Saunier + + * ext/lame/gstlamemp3enc.h: + * ext/lame/meson.build: + meson: Support building lame as subproject + Part-of: + +2021-10-12 15:52:48 -0300 Thibault Saunier + + * docs/meson.build: + meson: Streamline the way we detect when to build documentation + Part-of: + +2021-10-13 14:42:15 +0100 Philippe Normand + + * ext/soup/stub/soup.h: + soup-stub: Gate G_URI_FLAGS_SCHEME_NORMALIZE behind glib version check + Part-of: + +2021-10-13 10:38:07 +0200 Bastien Nocera + + * ext/gtk/gtkgstglwidget.c: + gtkglsink: Avoid assertion when applying "auto" rotation method + Guard against the orientation not coming from an inexistant tag, nor + from the application (rotation set to "auto") which caused an assertion. + When the application requests the auto rotation method, make sure it is + resolved to a rotation that's applicable. + ERROR:gstreamer/subprojects/gst-plugins-good/ext/gtk/gtkgstglwidget.c:745:gtk_gst_gl_widget_set_rotate_method: code should not be reached + Fixes: 103ceb853a5f7dade07a1ac4aa517e9df6ed5ded + Part-of: + +2021-10-04 09:31:02 +0100 Philippe Normand + + * ext/soup/gstsoup.c: + * ext/soup/gstsouphttpclientsink.c: + * ext/soup/gstsouphttpclientsink.h: + * ext/soup/gstsouphttpsrc.c: + * ext/soup/gstsouphttpsrc.h: + * ext/soup/gstsouploader.c: + * ext/soup/gstsouploader.h: + * ext/soup/gstsouputils.c: + * ext/soup/gstsouputils.h: + * ext/soup/meson.build: + * ext/soup/stub/soup.h: + * meson.build: + * tests/check/elements/souphttpsrc.c: + * tests/check/meson.build: + soup: Runtime compatibility support for libsoup2 and libsoup3 + The src and sink elements no longer link against libsoup. It is now loaded at + runtime. If any version is resident already, it is used. Otherwise we first try + to load libsoup3 and if it's not found we fallback to libsoup2. + For the unit-tests, we now build one version of the test unit file per libsoup + version found. So if both libsoup2 and libsoup3 are available on the host, the + CI will cover them both. + Based on initial patch by Daniel Kolesa and + Patrick Griffis . + Part-of: + +2021-09-10 18:03:55 -0400 Olivier Crête + + * gst/rtp/gstrtpopuspay.c: + rtopuspay: Set marker bit inside RTP packet too + At the end of a talk spurt, not only set the marker flag on the + GstBuffer, but also set the bit inside the RTP header as recommended + by the RFC. + Part-of: + +2021-10-11 14:27:24 +0200 Bastien Nocera + + * ext/gtk/gstgtkbasesink.c: + gtksink: Fetch the default "widget" value in the docs + There's really no interesting "widget" value that could be shown in the + docs, so use the GST_PARAM_DOC_SHOW_DEFAULT flag to avoid showing + another value. + Part-of: + +2021-10-11 10:22:41 +0200 Bastien Nocera + + * ext/gtk/gstgtkbasesink.c: + * ext/gtk/gstgtkglsink.c: + gtksink: Avoid errors fetching widget property + Avoid errors when fetching the "widget" property and GTK initialisation + fails, such as when running in a non-graphical environment. + Part-of: + +2021-05-04 13:27:30 -0400 Olivier Crête + + * ext/gtk/gstgtkbasesink.c: + * ext/gtk/gstgtkglsink.c: + gtksink: Return reference to GtkWidget in the acquire function + This should ensure thread safety. + Part-of: + +2020-09-03 18:27:19 -0400 Olivier Crête + + * docs/gst_plugins_cache.json: + * ext/gtk/gstgtkbasesink.c: + * ext/gtk/gstgtkbasesink.h: + * ext/gtk/gstgtkglsink.c: + * ext/gtk/gtkgstglwidget.c: + * ext/gtk/gtkgstglwidget.h: + gtkglsink: Add rotate-method property + This mostly just takes code out of glimagesink and applies it here. + Part-of: + +2021-10-12 19:01:37 +0300 Sebastian Dröge + + * gst/multifile/gstsplitmuxsink.c: + splitmuxsink: Don't assert on the input side if no GOP is available when shutting down + Part-of: + +2021-10-12 11:43:16 +0530 Nirbheek Chauhan + + * ext/soup/meson.build: + libsoup: Bump to 2.74 to fix gssapi build failure on macOS + See: https://gitlab.gnome.org/GNOME/libsoup/-/merge_requests/255 + We also need to disable sysprof by default because it only builds on + native Linux. If someone really wants it, they can enable the option + on the command-line by passing -Dlibsoup:sysprof=enabled + Part-of: + +2020-06-05 16:20:18 +0200 Marek Vasut + + * ext/jpeg/gstjpegdec.c: + * ext/jpeg/gstjpegdec.h: + jpegdec: Support libjpeg-turbo colorspace conversion + The libjpeg-turbo has a built-in support for performing colorspace + conversion. The performance of this conversion is much better than + doing the same separately using videoconvert. Implement support for + this conversion to RGBx/xRGB/BGRx/xBGR formats. Other formats can + be easily added later. + - The decoding of various pixel formats can be tested and compared to + non-libjpeg-turbo decoding as follows: + for gfmt in {RGB,BGR}{,x} x{RGB,BGR} ; do + echo "$gfmt" + gst-launch-1.0 -q \ + videotestsrc pattern=colors ! \ + video/x-raw,format=${gfmt} ! \ + fakesink dump=true | \ + head -n 200 | tail -n 1 + gst-launch-1.0 -q --gst-plugin-path=build/ext/jpeg/ \ + videotestsrc pattern=colors ! \ + video/x-raw,format=${gfmt} ! \ + jpegenc ! \ + jpegdec ! \ + video/x-raw,format=${gfmt} ! \ + fakesink dump=true | \ + head -n 200 | tail -n 1 + done + Result looks as follows, i.e. comparable: + RGB + 00000c70 (0x7f7736fbdd10): 05 33 19 05 33 26 05 33 33 05 33 40 05 33 4c 05 .3..3&.33.3@.3L. + 00000c70 (0x7f389e8f7d10): 05 32 17 04 32 22 04 32 31 04 32 3e 04 32 4a 04 .2..2".21.2>.2J. + RGBx + 00000c70 (0x7f79efd0ad10): cc 07 22 ff d9 07 22 ff e6 07 22 ff f3 07 22 ff .."..."..."...". + 00000c70 (0x7fb6989f3d10): cd 06 22 00 d9 06 22 00 e6 06 22 00 f4 06 22 00 .."..."..."...". + BGR + 00000c70 (0x7fa0a6c42d10): 05 0c 33 05 19 33 05 26 33 05 33 33 05 40 33 05 ..3..3.&3.33.@3. + 00000c70 (0x7fc74165fd10): 05 08 32 04 17 32 04 22 32 04 31 32 04 3e 32 04 ..2..2."2.12.>2. + BGRx + 00000c70 (0x7fbf399f1d10): 22 07 cc ff 22 07 d9 ff 22 07 e6 ff 22 07 f3 ff "..."..."..."... + 00000c70 (0x7f50e3d1cd10): 22 06 cd 00 22 06 d9 00 22 06 e6 00 22 06 f4 00 "..."..."..."... + xRGB + 00000c70 (0x7f0b950a2d10): ff cc 07 22 ff d9 07 22 ff e6 07 22 ff f3 07 22 ..."..."..."..." + 00000c70 (0x7f4416b8dd10): 00 cd 06 22 00 d9 06 22 00 e6 06 22 00 f4 06 22 ..."..."..."..." + xBGR + 00000c70 (0x7f237d74dd10): ff 22 07 cc ff 22 07 d9 ff 22 07 e6 ff 22 07 f3 ."..."..."...".. + 00000c70 (0x7f095547dd10): 00 22 06 cd 00 22 06 d9 00 22 06 e6 00 22 06 f4 ."..."..."...".. + ^^ ^^ ^^ ^^ + Notice how the alpha channel is set to arbitrary value in case of the + libjpeg-turbo decoding into RGBx/BGRx/xRGB/xBGR pixel formats. This is + documented in libjpeg-turbo README.md as follows: + " + When using the RGBX, BGRX, XBGR, and XRGB colorspaces during decompression, the + X byte is undefined, and in order to ensure the best performance, libjpeg-turbo + can set that byte to whatever value it wishes. + " + - The interlaced num_fields=2 mjpeg stream can be generated and + tested as follows (this does require mjpegtools): + $ gst-launch-1.0 videotestsrc num-buffers=10 ! jpegenc ! multifilesink location=in%04d.jpg + $ jpeg2yuv -f 25 -I t -L 0 -j in%04d.jpg | yuv2lav -f avi -o result.avi + ... + $ gst-launch-1.0 --gst-plugin-path=build/ext/jpeg/ filesrc location=result.avi ! \ + avidemux ! jpegdec ! video/x-raw,format=RGBx ! videoconvert ! autovideosink + Signed-off-by: Marek Vasut + Part-of: + +2021-09-21 13:37:35 +0300 Sebastian Dröge + + * gst/multifile/gstsplitmuxsink.c: + * gst/multifile/gstsplitmuxsink.h: + splitmuxsink: Keep track of the pending input GOPs in a queue + This cleans up input GOP handling and makes it possible to handle more + than 2 pending GOPs, which could happen before if keyframes are arriving + with too short of a distance between them. + Part-of: + +2021-09-16 19:36:27 +0300 Sebastian Dröge + + * gst/multifile/gstsplitmuxsink.c: + * gst/multifile/gstsplitmuxsink.h: + splitmuxsink: Handle frame reordering due to B frames better + Instead of assuming that the PTS of a keyframe is the lowest PTS of a + GOP, wait until the DTS has passed this PTS and take the minimum PTS up + to that point. That way the minimum PTS of a GOP can be determined, at + least for closed GOP streams. Open GOP streams still can't be handled + properly. + By knowing the minimum PTS of each GOP, keyframes can be requested at + the correct time relative to the GOP (and thus fragment) start and + fragment overflow calculations can calculate the correct durations of + the GOPs. + Part-of: + +2021-09-16 14:07:27 +0300 Sebastian Dröge + + * gst/multifile/gstsplitmuxsink.c: + splitmuxsink: Reset timecodes when resetting the sink + Part-of: + +2021-09-16 13:11:20 +0300 Sebastian Dröge + + * gst/multifile/gstsplitmuxsink.c: + splitmuxsink: Use GST_CLOCK_STIME_NONE instead of 0 to initialize max out running time + Otherwise streams with only DTS would misbehave while it is negative. + For outputting everything immediately at EOS, use G_MAXINT64 instead + which is bigger-or-equal to any other running time. + Part-of: + +2021-09-16 13:02:29 +0300 Sebastian Dröge + + * gst/multifile/gstsplitmuxsink.c: + splitmuxsink: Only update max in/out running time if it's actually bigger + Part-of: + +2021-09-16 12:53:12 +0300 Sebastian Dröge + + * gst/multifile/gstsplitmuxsink.c: + splitmuxsink: Only count keyframes for the reference context, consistently + Part-of: + +2021-09-24 13:38:39 -0400 Olivier Crête + + * gst/rtpmanager/gstrtphdrext-rfc6464.c: + rtphdrext: Pass just the attributes to the subclass + Since the base class now does the parsing, there is no need + to reproduce that code in all the subclasses, just pass the attributes + which are the only relevant bit anyway. + Also, only store the direction if the subclass accepted the caps + Part-of: + +2021-09-24 12:52:37 -0400 Olivier Crête + + * gst/rtpmanager/gstrtphdrext-rfc6464.c: + rtphdrext-rfc6464: Use helper function to set caps field + Part-of: + +2021-09-23 16:01:40 -0400 Olivier Crête + + * gst/rtp/gstrtphdrext-colorspace.c: + * gst/rtpmanager/gstrtphdrext-twcc.c: + rtphdrext: Set caps without attributes as the default + Most subclasses just use the simple function, so just let the base class + do it. It makes less code in subclasses. + Part-of: + +2021-09-23 15:36:00 -0400 Olivier Crête + + * gst/rtp/gstrtphdrext-colorspace.c: + * gst/rtpmanager/gstrtphdrext-rfc6464.c: + * gst/rtpmanager/gstrtphdrext-twcc.c: + rtphdrext: Put simple caps generation as the base class default + Instead of having a helper function that gets called by almost every + subclass, just let the base class set the caps fields automatically. + Part-of: + +2021-09-28 10:11:15 +1000 Brad Hards + + * README: + * RELEASE: + doc: update IRC links to OFTC + Part-of: + +2021-09-26 01:07:02 +0100 Tim-Philipp Müller + + * docs/gst_plugins_cache.json: + * meson.build: + Back to development + Part-of: + === release 1.19.2 === 2021-09-23 01:33:39 +0100 Tim-Philipp Müller @@ -5,6 +5568,7 @@ * ChangeLog: * NEWS: * RELEASE: + * docs/gst_plugins_cache.json: * gst-plugins-good.doap: * meson.build: Release 1.19.2