+=== release 1.20.0 ===
+
+2022-02-03 19:53:25 +0000 Tim-Philipp Müller <tim@centricular.com>
+
+ * 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 <tim@centricular.com>
+
+ * ChangeLog:
+ Update ChangeLogs for 1.20.0
+
+2022-02-01 05:07:04 +0530 Nirbheek Chauhan <nirbheek@centricular.com>
+
+ * 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: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1614>
+
+2022-01-30 19:06:29 +0530 Nirbheek Chauhan <nirbheek@centricular.com>
+
+ * 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: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1607>
+
+2022-01-30 03:56:14 +0530 Nirbheek Chauhan <nirbheek@centricular.com>
+
+ * 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: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1601>
+
+2022-01-28 23:15:28 +0530 Nirbheek Chauhan <nirbheek@centricular.com>
+
+ * 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: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1601>
+
+2022-01-29 12:56:22 +0200 Sebastian Dröge <sebastian@centricular.com>
+
+ * 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: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1603>
+
+2022-01-29 12:55:30 +0200 Sebastian Dröge <sebastian@centricular.com>
+
+ * 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: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1603>
+
+2022-01-29 12:54:23 +0200 Sebastian Dröge <sebastian@centricular.com>
+
+ * 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: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1603>
+
+=== release 1.19.90 ===
+
+2022-01-28 14:28:35 +0000 Tim-Philipp Müller <tim@centricular.com>
+
+ * 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 <tim@centricular.com>
+
+ * ChangeLog:
+ Update ChangeLogs for 1.19.90
+
+2022-01-28 15:47:44 +0200 Sebastian Dröge <sebastian@centricular.com>
+
+ * ext/soup/gstsouphttpclientsink.c:
+ souphttpsink: Protect against spurious wakeups during startup
+ Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1594>
+
+2022-01-28 15:33:04 +0200 Sebastian Dröge <sebastian@centricular.com>
+
+ * 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: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1594>
+
+2022-01-28 15:31:55 +0200 Sebastian Dröge <sebastian@centricular.com>
+
+ * 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: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1594>
+
+2022-01-28 15:31:25 +0200 Sebastian Dröge <sebastian@centricular.com>
+
+ * ext/soup/gstsouphttpsrc.c:
+ souphttpsrc: Don't set boolean to FALSE right after checking that it is FALSE
+ Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1594>
+
+2022-01-28 15:30:56 +0200 Sebastian Dröge <sebastian@centricular.com>
+
+ * ext/soup/gstsouphttpsrc.c:
+ souphttpsrc: soup_session_new_with_options() can't fail with NULL
+ So don't check for it.
+ Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1594>
+
+2022-01-27 16:28:48 +0100 Stéphane Cerveau <scerveau@collabora.com>
+
+ * gst/autodetect/gstautodetect.h:
+ autodetect: fix debug init category
+ Since the split of elements, the debug category
+ was default for autodetect.
+ Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1590>
+
+2022-01-21 16:09:30 +0100 Daniel Kolesa <dkolesa@igalia.com>
+
+ * 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: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1555>
+
+2022-01-27 01:38:39 +0000 Tim-Philipp Müller <tim@centricular.com>
+
+ * po/de.po:
+ * po/fr.po:
+ * po/ro.po:
+ gst-plugins-good: update translations
+ Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1579>
+
+2022-01-26 11:22:31 +0530 Nirbheek Chauhan <nirbheek@centricular.com>
+
+ * 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: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1573>
+
+2022-01-24 10:45:33 +0200 Sebastian Dröge <sebastian@centricular.com>
+
+ * 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: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1557>
+
+2022-01-25 15:05:47 +0530 Nirbheek Chauhan <nirbheek@centricular.com>
+
+ * 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: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1565>
+
+2022-01-21 14:13:12 -0500 Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+ * 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: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/965>
+
+2022-01-17 11:44:47 -0500 Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+ * 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: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1478>
+
+2022-01-16 14:41:41 +0000 Philippe Normand <philn@igalia.com>
+
+ * 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: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1536>
+
+2022-01-16 14:40:11 +0000 Philippe Normand <philn@igalia.com>
+
+ * ext/soup/gstsoupelement.c:
+ soup: Initialize debug category before use
+ Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1536>
+
+2022-01-16 14:39:42 +0000 Philippe Normand <philn@igalia.com>
+
+ * ext/soup/gstsouploader.c:
+ soup: Fix return types for a couple VTable functions
+ Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1536>
+
+2022-01-14 19:53:29 +0530 Nirbheek Chauhan <nirbheek@centricular.com>
+
+ * ext/cairo/meson.build:
+ meson: Build cairo subproject when unavailable on the system
+ Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/952
+ Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1523>
+
+2022-01-20 17:59:30 +0100 Aleksandar Topic <aleks@qtec.com>
+
+ * 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: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1547>
+
+2021-05-07 18:22:06 +0200 Bastien Nocera <hadess@hadess.net>
+
+ * 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: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1137>
+
+2021-10-13 15:33:14 +0200 Bastien Nocera <hadess@hadess.net>
+
+ * 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: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1137>
+
+2021-10-13 15:38:52 +0200 Bastien Nocera <hadess@hadess.net>
+
+ * 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: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1137>
+
+2021-05-11 11:28:57 +0200 Bastien Nocera <hadess@hadess.net>
+
+ * 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: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1137>
+
+2021-05-07 18:19:55 +0200 Bastien Nocera <hadess@hadess.net>
+
+ * ext/gtk/gstgtkbasesink.c:
+ * ext/gtk/gtkgstbasewidget.c:
+ gtk: Rename display pixel aspect ratio related constants
+ Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1137>
+
+2021-05-07 18:16:30 +0200 Bastien Nocera <hadess@hadess.net>
+
+ * 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: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1137>
+
+2022-01-05 02:07:59 +0530 Nirbheek Chauhan <nirbheek@centricular.com>
+
+ * 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: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1507>
+
+2021-12-30 16:31:33 +0000 Heinrich Kruger <heinrich.kruger@sohonet.com>
+
+ * 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: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1482>
+
+2021-12-24 14:52:38 +0900 Jeongki Kim <jeongki.kim@jeongki.kim>
+
+ * gst/rtp/gstrtpg726depay.c:
+ rtpg726depay: fix endian conversion
+ Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1469>
+
+2021-12-23 14:29:55 +0000 Corentin Damman <c.damman@intopix.com>
+
+ * tests/check/elements/rtpjitterbuffer.c:
+ rtpjitterbuffer: fix typo in tests
+ Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1466>
+
+2021-12-20 09:28:50 +0000 Florian Zwoch <fzwoch@gmail.com>
+
+ * 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: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1459>
+
+2021-12-07 23:48:39 +0100 Mathieu Duponchelle <mathieu@centricular.com>
+
+ * 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: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1429>
+
+2021-12-07 23:43:21 +0100 Mathieu Duponchelle <mathieu@centricular.com>
+
+ * 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: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1429>
+
+2021-12-03 02:52:06 +0100 Mathieu Duponchelle <mathieu@centricular.com>
+
+ * 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: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1414>
+
+2021-12-02 13:32:33 +0000 Thibault Saunier <tsaunier@igalia.com>
+
+ * 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: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1410>
+
+2021-12-10 16:08:27 +0100 Jakub Adam <jakub.adam@collabora.com>
+
+ * 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: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1438>
+
+2021-12-10 17:36:30 +0100 Célestin Marot <marotcelestin@gmail.com>
+
+ * 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: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1436>
+
+2021-12-06 15:37:06 +0100 Guillaume Desmottes <guillaume.desmottes@onestream.live>
+
+ * 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: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1421>
+
+2021-11-29 15:35:36 +0100 Wim Taymans <wtaymans@redhat.com>
+
+ * 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: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1396>
+
+2021-11-23 20:54:57 +0100 Mathieu Duponchelle <mathieu@centricular.com>
+
+ * 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: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1384>
+
+2021-11-12 13:54:59 +0100 Jean Felder <jean.felder@gmail.com>
+
+ * ext/taglib/gstid3v2mux.cc:
+ id3v2mux: Map GST_TAG_MUSICBRAINZ_RELEASETRACKID
+ Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1342>
+
+2021-11-12 13:51:56 +0100 Jean Felder <jean.felder@gmail.com>
+
+ * ext/taglib/gstid3v2mux.cc:
+ id3v2mux: Map GST_TAG_MUSICBRAINZ_RELEASEGROUPID
+ Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1342>
+
+2021-11-18 16:27:17 +0000 Tobias Reineke <tobi@g3th.net>
+
+ * 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: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1363>
+
+2021-11-15 14:39:14 +1100 Matthew Waters <matthew@centricular.com>
+
+ * 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: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1346>
+
+2021-11-01 10:08:32 +0700 Trung Do <trung1.dothanh@toshiba.co.jp>
+
+ * 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: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1355>
+
+2021-11-09 19:41:14 +0100 Mathieu Duponchelle <mathieu@centricular.com>
+
+ * 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: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1278>
+
+2021-10-30 01:18:18 +0200 Mathieu Duponchelle <mathieu@centricular.com>
+
+ * 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: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1278>
+
+2021-11-12 17:59:22 +0200 Sebastian Dröge <sebastian@centricular.com>
+
+ * gst/isomp4/qtdemux.c:
+ qtdemux: Log cslg_shift that was determined
+ Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1294>
+
+2021-11-12 13:00:56 +0200 Sebastian Dröge <sebastian@centricular.com>
+
+ * 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: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1294>
+
+2021-11-12 12:46:56 +0200 Sebastian Dröge <sebastian@centricular.com>
+
+ * 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: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1294>
+
+2021-11-12 12:39:17 +0200 Sebastian Dröge <sebastian@centricular.com>
+
+ * 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: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1294>
+
+2021-11-12 11:36:31 +0200 Sebastian Dröge <sebastian@centricular.com>
+
+ * gst/isomp4/qtdemux.h:
+ qtdemux: Add a comment why only positive cslg shifts are considered
+ Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1294>
+
+2021-11-02 18:38:39 +0200 Sebastian Dröge <sebastian@centricular.com>
+
+ * gst/isomp4/qtdemux.c:
+ qtdemux: Only adjust segment.stop by cslg_shift if stop is not -1
+ Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1294>
+
+2021-11-02 18:29:53 +0200 Sebastian Dröge <sebastian@centricular.com>
+
+ * gst/isomp4/qtdemux.c:
+ qtdemux: Handle negative composition offsets in the trun box the same way as for non-fragmented streams
+ Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1294>
+
+2021-11-02 17:43:17 +0200 Sebastian Dröge <sebastian@centricular.com>
+
+ * 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: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1294>
+
+2021-11-02 17:41:01 +0200 Sebastian Dröge <sebastian@centricular.com>
+
+ * 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: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1294>
+
+2021-11-02 17:54:46 +0200 Sebastian Dröge <sebastian@centricular.com>
+
+ * gst/isomp4/qtdemux.c:
+ qtdemux: Don't free cslg data that we don't own on corrupt files
+ Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1294>
+
+2021-05-07 10:44:15 +0200 Rafał Dzięgiel <rafostar.github@gmail.com>
+
+ * 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: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1203>
+
+2021-11-12 11:28:23 +0100 Rafał Dzięgiel <rafostar.github@gmail.com>
+
+ * 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: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1203>
+
+2021-11-11 19:11:25 +0000 Tim-Philipp Müller <tim@centricular.com>
+
+ * ext/cairo/gstcairooverlay.c:
+ * gst/equalizer/gstiirequalizernbands.c:
+ docs: fix unnecessary ampersand, < and > escaping in code blocks
+ Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1340>
+
+2021-11-12 03:17:44 +0100 Mathieu Duponchelle <mathieu@centricular.com>
+
+ * 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: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1341>
+
+2021-11-11 15:49:19 +1100 Matthew Waters <matthew@centricular.com>
+
+ * 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: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1338>
+
+2021-09-27 16:52:22 +0100 James Cowgill <james.cowgill@blaize.com>
+
+ * 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: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1010>
+
+2021-11-09 15:10:06 +1100 Matthew Waters <matthew@centricular.com>
+
+ * 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: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1300>
+
+2021-11-09 21:20:19 +0800 Zhao, Gang <gang.zhao.42@gmail.com>
+
+ * 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: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1329>
+
+2021-11-09 13:36:28 +0800 Haihua Hu <jared.hu@nxp.com>
+
+ * 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: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1326>
+
+2021-11-06 16:48:20 +0800 Zhao, Gang <gang.zhao.42@gmail.com>
+
+ * 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: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1316>
+
+2021-10-05 18:07:06 +0100 Joe Todd <joextodd@gmail.com>
+
+ * sys/osxaudio/gstosxcoreaudio.h:
+ osxaudio: Increase max channels to 64
+ Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1059>
+
+2021-11-05 15:17:20 +0530 Sanchayan Maity <sanchayan@asymptotic.io>
+
+ * gst/imagefreeze/gstimagefreeze.c:
+ imagefreeze: Only set caps if they do not match current caps
+ Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1311>
+
+2021-11-04 16:04:30 +0200 Sebastian Dröge <sebastian@centricular.com>
+
+ * 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: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1308>
+
+2021-11-03 18:44:03 +0000 Tim-Philipp Müller <tim@centricular.com>
+
+ * 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 <tim@centricular.com>
+
+ * 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 <tim@centricular.com>
+
+ * ChangeLog:
+ Update ChangeLogs for 1.19.3
+
2021-11-02 16:46:08 +0200 Sebastian Dröge <sebastian@centricular.com>
* docs/gst_plugins_cache.json: