=== release 1.20.4 ===

2022-10-12 16:39:47 +0100  Tim-Philipp Müller <tim@centricular.com>

	* NEWS:
	* RELEASE:
	* gst-plugins-base.doap:
	* meson.build:
	  Release 1.20.4

2022-10-12 16:39:40 +0100  Tim-Philipp Müller <tim@centricular.com>

	* ChangeLog:
	  Update ChangeLogs for 1.20.4

2022-10-01 04:51:21 +1000  Jan Schmidt <jan@centricular.com>

	* sys/xvimage/xvimageallocator.c:
	  xvimagesink: Don't leak XvShmImage
	  If allocating an XvShmImage generates an X error, but
	  still returns some allocated memory, make sure to free it
	  so it doesn't leak.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3147>

2022-10-01 04:41:06 +1000  Jan Schmidt <jan@centricular.com>

	* gst/playback/gstdecodebin3.c:
	  decodebin3: Make sure event is writable before modifying
	  Make sure we're operating on a private copy of an event when
	  modifying it.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3146>

2022-10-01 04:40:09 +1000  Jan Schmidt <jan@centricular.com>

	* gst/playback/gsturisourcebin.c:
	  urisourcebin: Make sure event is writable before modifying.
	  Make sure we're operating on a private copy of an event before
	  modifying it.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3146>

2022-10-01 04:37:05 +1000  Jan Schmidt <jan@centricular.com>

	* gst/playback/gstdecodebin3.c:
	  decodebin3: Don't lose a ref on EOS event
	  Make sure not to give away the ref on the final EOS
	  event for which the probe handler is returning GST_PAD_PROBE_REMOVE
	  when pushing the event manually.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3146>

2022-10-06 13:03:26 +0200  Aleksandr Slobodeniuk <aslobodeniuk@fluendo.com>

	* gst/playback/gstdecodebin3.c:
	  decodebin3: fix mutex leaks
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3130>

2022-10-01 02:33:49 +1000  Jan Schmidt <jan@centricular.com>

	* gst/playback/gstplaysink.c:
	* gst/playback/gstplaysinkaudioconvert.c:
	* gst/playback/gstplaysinkaudioconvert.h:
	  playsink: Hold a reference to the soft volume element
	  Always hold a reference to the soft volume element
	  provided by the playsinkaudioconvert bin helper, the
	  same as when volume is provided by a sink element,
	  or the soft volume element gets unreffed too soon.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3113>

2022-09-30 00:07:07 +0100  Tim-Philipp Müller <tim@centricular.com>

	* gst-libs/gst/pbutils/descriptions.c:
	* tests/check/libs/pbutils.c:
	  pbutils: descriptions: fix gst_pb_utils_get_caps_description_flags()
	  And add a little unit test.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3098>

2022-09-29 09:39:15 +0100  James Cowgill <james.cowgill@blaize.com>

	* gst-libs/gst/tag/gstxmptag.c:
	  xmptag: Call gst_tag_register_musicbrainz_tags during init
	  We need to call this to register the MusixBrainz tags before we use
	  them in an XMP schema.
	  Fixes this critical when attempting to run jpegparse on a JPEG
	  containing MusicBrainz XMP tags:
	  GStreamer-CRITICAL **: 20:41:07.885: gst_tag_get_type: assertion 'info != NULL' failed
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3095>

2018-03-28 17:54:15 +0200  Philipp Zabel <p.zabel@pengutronix.de>

	* gst-libs/gst/audio/gstaudiodecoder.c:
	* gst-libs/gst/audio/gstaudioencoder.c:
	* gst-libs/gst/video/gstvideodecoder.c:
	* gst-libs/gst/video/gstvideoencoder.c:
	  buffer: drop parent meta in deep copy/foreach_metadata
	  The purpose of a deep buffer copy is to be able to release the source
	  buffer and all its dependencies. Attaching the parent buffer meta to
	  the newly created deep copy needlessly keeps holding a reference to the
	  parent buffer.
	  The issue this solves is the fact you need to allocate more
	  buffers, as you have free buffers being held for no reason. In the good
	  cases it will use more memory, in the bad case it will stall your
	  pipeline (since codecs often need a minimum number of buffers to
	  actually work).
	  Fixes #283
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3090>

2022-09-27 13:41:37 +0200  Edward Hervey <edward@centricular.com>

	* gst/playback/gstdecodebin3.c:
	  decodebin3: Fix memory issues with active selection list
	  This had a couple of issues:
	  * The backing strings (from GstStream) could disappear
	  * The actual list wasn't properly reset/freed when decodebin3 was re-used
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3087>

2022-09-07 16:35:38 +1000  Matthew Waters <matthew@centricular.com>

	* gst/subparse/mpl2parse.c:
	  subparse: fix crash when parsing invalid timestamps in mpl2
	  Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=49245
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2999>

2022-08-30 14:29:41 +0200  Rafael Caricio <rafael@caricio.com>

	* gst-libs/gst/pbutils/gstaudiovisualizer.c:
	  audiovisualizer: fix buffer mapping to not increase refcount
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2987>

2022-08-12 22:42:28 -0700  Khem Raj <raj.khem@gmail.com>

	* gst/subparse/gstssaparse.c:
	  ssaparse: include required system headers for isspace() and sscanf() functions
	  Newer compilers ( clang 15 ) have turned stricter and errors out instead
	  of warning on implicit function declations
	  Fixes
	  gstssaparse.c:297:12: error: call to undeclared library function 'isspace' with type 'int (int)'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
	  while (isspace(*t))
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2882>

2022-08-12 13:16:50 +0300  Sebastian Dröge <sebastian@centricular.com>

	* gst-libs/gst/rtsp/gstrtspurl.c:
	* tests/check/libs/rtsp.c:
	  rtspurl: Use gst_uri_join_strings() in gst_rtsp_url_get_request_uri_with_control() instead of a hand-crafted, wrong version
	  For example the query string of the base must not be taken over to the
	  request URL unless there is no control path, and control paths can be
	  absolute and must not be considered relative if they start with a /.
	  Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/issues/971
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2877>

2022-08-12 13:15:46 +0300  Sebastian Dröge <sebastian@centricular.com>

	* tests/check/libs/rtsp.c:
	  rtspurl: Use fail_unless_equals_string() in tests
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2877>

2022-07-27 22:34:42 +1000  Jan Schmidt <jan@centricular.com>

	* ext/pango/gstbasetextoverlay.c:
	* ext/pango/gstbasetextoverlay.h:
	  basetextoverlay: Don't miscalculate text running times
	  When a new segment event arrives, it immediately updates
	  the current stored segment, which was used for calculating
	  the running time of the current text buffer for every
	  passing video frame. This means a segment that arrives
	  after the text buffer might get used to (mis)calculate
	  the running times subsequently.
	  Instead, calculate and store the right running time
	  using the current segment when storing the buffer. Later
	  the stored segment can get freely updated.
	  This fixes the case where pieces of video and text streams
	  are seamlessly concatenated and fed through the text overlay.
	  Previously, it could lead to the current text buffer suddenly
	  have a massive running time and blocking all further input.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2872>

2022-08-09 18:06:41 +0100  Tim-Philipp Müller <tim@centricular.com>

	* docs/plugins/gst_plugins_cache.json:
	* ext/opus/gstopusenc.c:
	  opusenc: improve inband-fec property documentation
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2855>

2022-06-12 05:35:27 -0600  James Hilliard <james.hilliard1@gmail.com>

	* gst/playback/gstdecodebin3-parse.c:
	* gst/playback/gstdecodebin3.c:
	  decodebin3: fix EOS event sequence
	  See docs:
	  https://gstreamer.freedesktop.org/documentation/additional/design/seqnums.html?gi-language=c#seqnums-sequence-numbers
	  Per docs:
	  When a sink element receives an EOS event and creates a new EOS
	  message to post, it should copy the seqnum from the event to the
	  message because the EOS message is a consequence of the EOS event
	  being received.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2837>

2021-12-14 16:14:56 +0100  Edward Hervey <edward@centricular.com>

	* gst/subparse/gstsubparse.c:
	  subparse: Handle GAP events before buffers
	  Make sure we did initial negotiation and segment pushing if we get GAP events
	  before buffers.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2834>

2021-11-17 15:30:38 +0100  Edward Hervey <edward@centricular.com>

	* gst-libs/gst/tag/gsttagdemux.c:
	  tagdemux: Properly propagate sequence numbers
	  If we received a time segment from upstream, we need to make sure we propagate
	  it downstream with the same sequence number.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2834>

2022-08-01 17:25:56 +0200  Edward Hervey <edward@centricular.com>

	* gst/playback/gstparsebin.c:
	  parsebin: Avoid crash with unknown streams
	  With the new addition of handling unknown sream types we *could* end up with a
	  chain which doesn't have a current_pad (it's an intermediary one)
	  Fixes #1287
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2827>

2022-05-25 18:40:30 +0530  Nirbheek Chauhan <nirbheek@centricular.com>

	* gst-libs/gst/rtsp/gstrtspconnection.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: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2818>

2022-07-27 15:42:44 +1000  Matthew Waters <matthew@centricular.com>

	* gst-libs/gst/rtsp/gstrtspconnection.c:
	  rtspconnection: protect cancellable by a mutex
	  It is entirely possible for the cancellable to be cancelled (and freed)
	  in gst_rtsp_connection_flush() while there may be an ongoing read/write
	  operation.
	  Nothing prevents gst_rtsp_connection_flush() from waiting for the
	  outstanding read/writes.
	  This could lead to a crash like (where cancellable has been freed
	  within gst_rtsp_connection_flush()):
	  #0  0x00007ffff4351096 in g_output_stream_writev (stream=stream@entry=0x7fff30002950, vectors=vectors@entry=0x7ffe2c6afa80, n_vectors=n_vectors@entry=3, bytes_written=bytes_written@entry=0x7ffe2c6af950,  cancellable=cancellable@entry=0x7fff300288a0, error=error@entry=0x7ffe2c6af958) at ../subprojects/glib/gio/goutputstream.c:377
	  #1  0x00007ffff44b2c38 in writev_bytes (stream=0x7fff30002950, vectors=vectors@entry=0x7ffe2c6afa80, n_vectors=n_vectors@entry=3, bytes_written=bytes_written@entry=0x7ffe2c6afb90, block=block@entry=1, cancellable=0x7fff300288a0) at ../subprojects/gst-plugins-base/gst-libs/gst/rtsp/gstrtspconnection.c:1320
	  #2  0x00007ffff44b583e in gst_rtsp_connection_send_messages_usec (conn=0x7fff30001370, messages=messages@entry=0x7ffe2c6afcc0, n_messages=n_messages@entry=1, timeout=timeout@entry=3000000) at ../subprojects/gst-plugins-base/gst-libs/gst/rtsp/gstrtspconnection.c:2056
	  #3  0x00007ffff44d2669 in gst_rtsp_client_sink_connection_send_messages (sink=0x7fffac0192c0, timeout=3000000, n_messages=1, messages=0x7ffe2c6afcc0, conninfo=0x7fffac019610) at ../subprojects/gst-rtsp-server/gst/rtsp-sink/gstrtspclientsink.c:1929
	  #4  gst_rtsp_client_sink_try_send (sink=sink@entry=0x7fffac0192c0, conninfo=conninfo@entry=0x7fffac019610, requests=requests@entry=0x7ffe2c6afcc0, n_requests=n_requests@entry=1, response=response@entry=0x0, code=code@entry=0x0) at ../subprojects/gst-rtsp-server/gst/rtsp-sink/gstrtspclientsink.c:2845
	  #5  0x00007ffff44d3077 in do_send_data (buffer=0x7fff38075c60, channel=<optimized out>, context=0x7fffac042640) at ../subprojects/gst-rtsp-server/gst/rtsp-sink/gstrtspclientsink.c:3896
	  #6  0x00007ffff4281cc6 in gst_rtsp_stream_transport_send_rtp (trans=trans@entry=0x7fff20061f80, buffer=<optimized out>) at ../subprojects/gst-rtsp-server/gst/rtsp-server/rtsp-stream-transport.c:632
	  #7  0x00007ffff4278e9b in push_data (stream=0x7fff40019bf0, is_rtp=<optimized out>, buffer_list=0x0, buffer=<optimized out>, trans=0x7fff20061f80) at ../subprojects/gst-rtsp-server/gst/rtsp-server/rtsp-stream.c:2586
	  #8  check_transport_backlog (stream=0x7fff40019bf0, trans=0x7fff20061f80) at ../subprojects/gst-rtsp-server/gst/rtsp-server/rtsp-stream.c:2645
	  #9  0x00007ffff42793b3 in send_tcp_message (idx=<optimized out>, stream=0x7fff40019bf0) at ../subprojects/gst-rtsp-server/gst/rtsp-server/rtsp-stream.c:2741
	  #10 send_func (stream=0x7fff40019bf0) at ../subprojects/gst-rtsp-server/gst/rtsp-server/rtsp-stream.c:2776
	  #11 0x00007ffff7d59fad in g_thread_proxy (data=0x7fffbc062920) at ../subprojects/glib/glib/gthread.c:827
	  #12 0x00007ffff7a8ce2d in start_thread () from /lib64/libc.so.6
	  #13 0x00007ffff7b12620 in clone3 () from /lib64/libc.so.6
	  Fix by adding a cancellable lock and returning an extra reference used
	  across all read/write operations.  gst_rtsp_connection_flush() can free
	  the in-use cancellable and it will no longer affect any in progress
	  read/write.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2816>

2022-07-23 02:49:20 +1000  Jan Schmidt <jan@centricular.com>

	* gst-libs/gst/video/video-chroma.c:
	  video: Fix scaling in 4x horizontal co-sited chroma
	  4x downscaling of chroma with co-sited chroma has never worked
	  it seems.
	  Fixes incorrect videotestsrc output and videoconvert conversions
	  to Y41B, YUV9, YVU9 and IYU9 with co-sited chroma.
	  e.g.
	  gst-launch-1.0 videotestsrc ! video/x-raw,format=Y41B,width=1280,height=720 ! \
	  videoconvert ! autovideosink
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2791>

2022-07-12 14:47:20 +1000  Matthew Waters <matthew@centricular.com>

	* ext/gl/gstglimagesink.c:
	  glimagesink: only allow setting the GL display/context if it is a valid value
	  Otherwise, when setting the external application context, then the
	  display may be cleared and then not used and the asharing mechanism does
	  not work anymore.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2757>

2022-07-11 20:12:30 +0200  Mathieu Duponchelle <mathieu@centricular.com>

	* gst-libs/gst/video/gstvideoaggregator.c:
	  videoaggregator: always convert when user provides converter-config
	  The `converter-config` property may be used to perform cropping,
	  conversion should always be performed when the user set the property
	  to a non-NULL value.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2748>

2022-07-08 20:49:21 +0200  Andoni Morales Alastruey <ylatuya@gmail.com>

	* gst-libs/gst/gl/cocoa/gstglwindow_cocoa.m:
	  glwindow_cocoa: fix a leak of the GstNSView
	  This leak is also causing a leak of the GstGLCAOpenGLLayer
	  which leaks the GstGLWrappedContext and the GstGLDisplay
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2744>

2022-07-08 20:38:51 +0200  Andoni Morales Alastruey <ylatuya@gmail.com>

	* gst-libs/gst/gl/cocoa/gstglcontext_cocoa.m:
	  gl: Fix leak of the whole CGL context
	  This was leaking the CGL context and several resources
	  allocated in the context, around 70MB for a 1080p clip
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2744>

2022-06-30 00:13:19 +0100  Tim-Philipp Müller <tim@centricular.com>

	* gst/subparse/samiparse.c:
	* tests/check/elements/subparse.c:
	  samiparse: fix handling of self-closing tags
	  We would check the wrong string (rest of line rather than element)
	  for the / suffix of self-closing tags, which is not only wrong but
	  also has atrocious performance with certain strings like the garbled
	  nonsense clusterfuzz feeds us, which might cause discoverer to time
	  out when processing garbled SAMI files.
	  Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=47461
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2706>

2022-06-30 09:02:00 +0300  Sebastian Dröge <sebastian@centricular.com>

	* gst-libs/gst/sdp/gstsdpmessage.c:
	  sdpmessage: Don't set SDP medias from caps without media/payload/clock-rate fields
	  Previously it would've silently failed reading the payload/clock-rate
	  and instead would've used some random value that happened to be on the
	  stack.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2705>

2022-06-29 10:55:13 +0100  Tim-Philipp Müller <tim@centricular.com>

	* 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: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2702>

2022-06-25 19:50:10 +0100  Tim-Philipp Müller <tim@centricular.com>

	* 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: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2672>

2022-06-16 00:59:00 +0100  Tim-Philipp Müller <tim@centricular.com>

	* meson.build:
	  Back to development
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2619>

=== release 1.20.3 ===

2022-06-15 23:36:18 +0100  Tim-Philipp Müller <tim@centricular.com>

	* ChangeLog:
	* NEWS:
	* RELEASE:
	* gst-plugins-base.doap:
	* meson.build:
	  Release 1.20.3

2022-06-15 23:36:10 +0100  Tim-Philipp Müller <tim@centricular.com>

	* ChangeLog:
	  Update ChangeLogs for 1.20.3

2022-05-25 02:10:30 +0900  Seungha Yang <seungha@centricular.com>

	* gst/playback/gstplaybin3.c:
	  playbin3: Configure combiner on pad-added if needed
	  When collection is updated, decodebin3 exposes pad first and then
	  streams-selected message is posted.
	  The condition can cause a situation where playbin3 links non-existing
	  combiner/playsink pads (since streams-selected is not posted yet) with
	  new decodebin output pad. This commit will re-check selected/active
	  streams condition on pad-added and reconfigure output if needed.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2495>

2022-05-23 21:24:40 -0400  Eli Schwartz <eschwartz@archlinux.org>

	* gst-libs/gst/tag/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: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2486>

2022-04-26 09:29:39 +0200  Edward Hervey <edward@centricular.com>

	* ext/ogg/gstoggstream.c:
	  oggdemux: Protect against invalid framerates
	  This check wasn't done for all mappings.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2455>

2022-05-15 16:53:12 +0000  Thibault Saunier <tsaunier@igalia.com>

	* gst-libs/gst/rtp/gstrtcpbuffer.c:
	* gst-libs/gst/rtp/gstrtcpbuffer.h:
	* tests/check/libs/rtp.c:
	  rtcpbuffer: Allow padding on first reduced size packets
	  It is valid to have the padding set to 1 on the first packet and it
	  happens very often from TWCC packets coming from libwebrtc. This means
	  that we were totally ignoring many TWCC packets.
	  Fix test that checked that a first packet with padding was not valid and
	  instead test a single twcc packet with padding to check precisely what
	  this patch was about.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2447>

2022-05-13 13:31:55 +0200  Alicia Boya García <aboya@igalia.com>

	* gst-libs/gst/app/gstappsink.c:
	* tests/check/elements/appsink.c:
	  appsink: Fix race condition on caps handling
	  Background:
	  Whenever a caps event is received by appsink, the caps are stored in the
	  same internal queue as buffers. Only when enough buffers have been
	  popped from the queue to reach the caps, `priv->sample` gets its caps
	  updated to match, so that they are correct for the following buffers.
	  Note that as far as upstream elements are concerned, the caps of appsink
	  are updated immediately when the CAPS event is sent. Samples pulled from
	  appsink retain the old caps until a later buffer -- one that was sent by
	  upstream elements after the new caps -- is pulled.
	  The race condition:
	  When a flush is received, appsink clears the entire internal queue. The
	  caps of `priv->sample` are not updated as part of this process, and
	  instead remain as those of the sample that was last pulled by the user.
	  This leaves open a race condition where:
	  1. Upstream sends a new caps event, and possibly some buffers for the
	  new caps.
	  2. Upstream sends a flush (possibly from a different thread).
	  3. Upstream sends a new buffer for the new caps. Since as far as
	  upstream is concerned, appsink caps are the new caps already, no new
	  CAPS event is sent.
	  4. The appsink user pulls a sample, having not pulled before enough
	  samples to reach the buffers sent in step 1.
	  Bug: the pulled sample has the old caps instead of the new caps.
	  Fixing the race condition:
	  To avoid this problem, when a buffer is received after a flush,
	  `priv->sample`'s caps should be updated with the current caps before the
	  buffer is added to the internal queue.
	  Interestingly, before this patch, appsink already had code for this, in
	  gst_app_sink_render_common():
	  /* queue holding caps event might have been FLUSHed,
	  * but caps state still present in pad caps */
	  if (G_UNLIKELY (!priv->last_caps &&
	  gst_pad_has_current_caps (GST_BASE_SINK_PAD (psink)))) {
	  priv->last_caps = gst_pad_get_current_caps (GST_BASE_SINK_PAD (psink));
	  gst_sample_set_caps (priv->sample, priv->last_caps);
	  GST_DEBUG_OBJECT (appsink, "activating pad caps %" GST_PTR_FORMAT,
	  priv->last_caps);
	  }
	  This code assumes `priv->last_caps` is reset when a flush is received,
	  which makes sense, but unfortunately, there was no code in the flush
	  code path resetting it.
	  This patch adds such code, therefore fixing the race condition. A unit
	  test demonstrating the bug and testing its behavior with the fix has
	  also been added.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2442>

2022-05-16 12:34:36 -0400  U. Artie Eoff <ullysses.a.eoff@intel.com>

	* gst-libs/gst/video/gstvideoaggregator.c:
	  videoaggregator: unref temporary caps
	  The "possible_caps" needs unref after finished using to
	  avoid memory leak.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2440>

2022-03-29 17:51:13 +0200  Stéphane Cerveau <scerveau@collabora.com>

	* gst-libs/gst/gl/meson.build:
	* tests/check/libs/gstglmatrix.c:
	* tests/check/meson.build:
	  base:gl: add x11 deps to gstglx11_dep
	  On MacOS with homebrew the xlib-xcb.h is in
	  own cellar /opt/homebrew/Cellar/libx11/1.7.3.1/include
	  Need to add the windowing dependencies to gl tests
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2426>

2022-05-05 02:54:37 +0900  Seungha Yang <seungha@centricular.com>

	* tools/gst-play.c:
	  tools: gst-play: Print position even if duration is unknown
	  Gives better visual feedback regarding position information
	  although duration is unknown, live streams for example.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2419>

2022-05-07 04:43:49 +0900  Seungha Yang <seungha@centricular.com>

	* tools/gst-device-monitor.c:
	  tools: device-monitor: Print string property as-is without serialize
	  gst_value_serialize() does more than what's needed to printf-ing
	  especially when given GValue is already string. Just print string
	  value as-is without gst_value_serialize() to avoid unreadable
	  string print, especially for multi-bytes character encoding cases.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2416>

2022-05-03 16:25:19 +0200  Edward Hervey <edward@centricular.com>

	* gst/playback/gstparsebin.c:
	  parsebin: Don't modify inexistant GstStream
	  When handling exposing un-handled streams, we can only replace the GstStream for
	  those we are creating ourselves (i.e. the fallback collection).
	  Fixes assertions when the demuxer creates those streams
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2368>

2022-05-03 16:08:39 +0200  Edward Hervey <edward@centricular.com>

	* gst/playback/gstdecodebin3.c:
	  playbin3: Don't use unknown types for default selection
	  When creating a fallback default selection from a collection, don't attempt to
	  use unknown stream types
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2368>

2022-05-03 13:37:31 +0300  Sebastian Dröge <sebastian@centricular.com>

	* gst/audioconvert/gstaudioconvert.c:
	  audioconvert: If no channel-mask can be fixated then use a NONE channel layout
	  Otherwise this is generating caps without a channel-mask, which is
	  invalid for >1 channels and will always fail negotiation.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2359>

2022-03-07 08:46:57 -0500  Xavier Claessens <xavier.claessens@collabora.com>

	* gst-libs/gst/gl/meson.build:
	  Meson: Fix deprecation warnings
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2358>

2021-11-12 20:13:10 +0100  Ruben Gonzalez <rgonzalez@fluendo.com>

	* docs/plugins/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: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2357>

2022-05-03 00:39:09 +0100  Tim-Philipp Müller <tim@centricular.com>

	* meson.build:
	  Back to development
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2347>

=== release 1.20.2 ===

2022-05-02 23:29:25 +0100  Tim-Philipp Müller <tim@centricular.com>

	* ChangeLog:
	* NEWS:
	* RELEASE:
	* gst-plugins-base.doap:
	* meson.build:
	  Release 1.20.2

2022-05-02 23:29:19 +0100  Tim-Philipp Müller <tim@centricular.com>

	* ChangeLog:
	  Update ChangeLogs for 1.20.2

2022-04-27 10:18:39 +0100  Philippe Normand <philn@igalia.com>

	* gst-libs/gst/video/gstvideodecoder.c:
	  videodecoder: release stream lock after handling gap events
	  The stream lock is taken before handling gap events but was not released in all
	  possible runtime situations. This issue was introduced in:
	  https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1274
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2326>

2022-04-28 15:32:27 +1000  Matthew Waters <matthew@centricular.com>

	* gst/subparse/samiparse.c:
	  subparse: don't deref a potentially NULL variable
	  If the html SAMI data is malformed, then retrieving the attribute name
	  may fail.  We then cannot retrieve the attribute value.
	  Fixes: https://oss-fuzz.com/testcase-detail/4700130671984640
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2325>

2022-04-27 09:22:40 +0200  Edward Hervey <edward@centricular.com>

	* gst/playback/gstparsebin.c:
	* tools/gst-play.c:
	  parsebin: Expose streams of unknown type
	  This actually respects the existing `expose-all-streams` property by exposing
	  them and having them present in the stream collection (as streams of type
	  unknown).
	  Fixes #1179
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2323>

2022-04-27 02:08:00 +0200  Mathieu Duponchelle <mathieu@centricular.com>

	* gst-libs/gst/rtp/gstrtpbasepayload.c:
	  rtpbasepayload: always store input buffer meta before negotiation
	  The decision to store the input buffer depends on whether extensions
	  are to be added to the output buffer, I assume as an optimization.
	  This creates an issue for subclasses that call negotiate(), where
	  header_exts is actually populated, from their handle_buffer()
	  implementation: at chain time, no header extension has been negotiated
	  yet, which means that we don't add extensions to the first batch of
	  buffers that comes out.
	  Keep track of whether negotiate has been called (this is different
	  from the negotiated field) and always store the input buffer until
	  then. This fixes the issue while largely preserving the optimization.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2321>

2022-04-26 10:58:08 +0200  Guillaume Desmottes <guillaume.desmottes@onestream.live>

	* gst/videorate/gstvideorate.c:
	  videorate: fix assertion when pushing last and only buffer without duration
	  Fixing this pipeline:
	  gst-launch-1.0 filesrc location=sample.png ! pngdec ! videorate ! fakesink
	  - videorate receives a single buffer with pts = 0, duration = invalid;
	  - then it receives eos triggering this buffer to be pushed downstream;
	  - the pushing code was assuming that a duration was set, which is
	  impossible as we received a single buffer and no output framerate was
	  set either. So the best we can do is to push the buffer without
	  duration.
	  Fix #1177
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2320>

2022-04-21 11:41:43 +0300  Sebastian Dröge <sebastian@centricular.com>

	* gst/videorate/gstvideorate.c:
	  Revert "videorate: Update the base time on segment updates"
	  This reverts commit 75b4809ebc23814009bebc70c775ab44d85decf2.
	  See https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2186
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2255>

2022-04-21 11:41:36 +0300  Sebastian Dröge <sebastian@centricular.com>

	* tests/check/elements/videorate.c:
	  Revert "videorate: Add test for segment update"
	  This reverts commit a76f38b2c7ddbed546bb058c32ebcf8a553c003f.
	  See https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2186
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2255>

2022-04-21 11:41:25 +0300  Sebastian Dröge <sebastian@centricular.com>

	* gst/videorate/gstvideorate.c:
	* tests/check/elements/videorate.c:
	  Revert "videorate: Only "close" the segment if it is discontinous"
	  This reverts commit 6f7922b4dbba5ed780e7b0988669a81848a9e333.
	  See https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2186
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2255>

2022-04-21 11:41:15 +0300  Sebastian Dröge <sebastian@centricular.com>

	* gst/videorate/gstvideorate.c:
	  Revert "videorate: Drop incoming buffers that are outside of the segment"
	  This reverts commit 24fd80344dbc059b72e13d813ca82f414a9d6cce.
	  See https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2186
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2255>

2022-04-21 11:40:47 +0300  Sebastian Dröge <sebastian@centricular.com>

	* tests/check/elements/videorate.c:
	  Revert "videorate: Add unit test for closing a segment and opening a separate one"
	  This reverts commit 98f2a84a289ed4d4cfac9bc5c73182a56eefa99c.
	  See https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2186
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2255>

2022-03-02 03:45:48 +1100  Jan Schmidt <jan@centricular.com>

	* gst/playback/gstplaybin3.c:
	  playbin3: Remove stale code
	  Remove now-unused get_stream_type_for_event() function.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2236>

2022-01-18 05:48:08 +1100  Jan Schmidt <jan@centricular.com>

	* gst/playback/gstplaybin3.c:
	  playbin3: Hold playbin lock on pad-added
	  Take the playbin lock when accessing the combiner
	  to add a new pad to link to. Fixes races against
	  streams-selected messages triggering reconfiguration.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2236>

2022-01-18 02:52:47 +1100  Jan Schmidt <jan@centricular.com>

	* gst/playback/gstplaybin3.c:
	  playbin3: Reconfigure on streams-selected message.
	  Don't reconfigure outputs when the select-streams
	  event is sent from the app, as the selection may
	  not take effect for some time. Instead, wait
	  for the pipeline to confirm the new set of
	  selected streams when it sends the message.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2236>

2021-11-11 03:20:23 +1100  Jan Schmidt <jan@centricular.com>

	* gst/playback/gstplaysink.c:
	  playsink: Fix reconfiguration after removing text_sink
	  If we previously had subtitles coming in, the video
	  may be chained through a text overlay block. Before,
	  the code would end up trying to link pads that were
	  already linked and video would not get reconnected
	  properly.
	  To fix that, make sure that the candidate
	  pads are actually unlinked first. If a textoverlay
	  is present and no longer needed, it will be cleaned
	  up later in the reconfiguration sequence.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2236>

2021-05-25 14:41:51 +0200  Guillaume Desmottes <guillaume.desmottes@collabora.com>

	* gst/playback/gstdecodebin3.c:
	  decodebin3: fix collection leak
	  get_merged_collection() returns an owned stream collection and was
	  leaked in the else block.
	  Fix leak when running:
	  GST_TRACERS=leaks GST_DEBUG="GST_TRACER:7,leaks:6" gst-play-1.0 --use-playbin3 test.mkv
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2216>

2022-04-15 14:03:08 +0900  hoonhee.lee <hoonhee.lee@lge.com>

	* gst/playback/gstplaybin3.c:
	  playbin3: fix missing lock when unknown stream type in pad-removed cb
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2209>

2022-04-14 15:21:48 +0200  Edward Hervey <edward@centricular.com>

	* gst/playback/gstdecodebin3.c:
	  decodebin3: Don't duplicate stream selections
	  Make sure that the requested stream selection isn't identical to the current
	  one. If that's the case, just carry on as usual.
	  This avoids multiple `streams-selected` posting ... when the selection didn't
	  change.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2208>

2022-04-15 19:55:34 +0300  Sebastian Dröge <sebastian@centricular.com>

	* gst-libs/gst/rtp/gstrtpbasepayload.c:
	  rtpbasepayload: Don't write header extensions if there's no corresponding input buffer for the packet
	  The GstRTPHeaderExtension API requires the input buffer to exist.
	  This can happen if the output packet is generated e.g. from a caps or
	  tags event like in the case for rtpgstpay.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2205>

2022-04-12 01:01:23 +0900  Seungha Yang <seungha@centricular.com>

	* tools/gst-play.c:
	* tools/meson.build:
	  win32: Enable high-resolution timer for MinGW build
	  timeapi.h is missing in our MinGW toolchain. Include mmsystem.h
	  header instead, which defines struct and APIs in case of our MinGW
	  toolchain. Note that in case of native Windows10 SDK (MSVC build),
	  mmsystem.h will include timeapi.h
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2167>

2022-04-14 18:44:48 +0100  Tim-Philipp Müller <tim@centricular.com>

	* gst-libs/gst/app/gstappsrc.c:
	  appsrc: fix annotations
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2189>

2022-04-12 15:23:08 +0300  Sebastian Dröge <sebastian@centricular.com>

	* gst-libs/gst/rtp/gstrtpbasepayload.c:
	  Fix `transfer` gobject-introspection annotation typos
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2163>

2022-04-10 10:55:02 +1000  Matthew Waters <matthew@centricular.com>

	* gst/subparse/gstsubparseelement.c:
	  subparse: don't try to index string with -1
	  If the len of the string turns out to be 0, str[len - 1] resolved to
	  str[-1] which is not a good idea.
	  Fixes: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=46543
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2148>

2022-04-08 11:10:49 +1000  Matthew Waters <matthew@centricular.com>

	* ext/ogg/gstoggstream.c:
	* ext/ogg/vorbis_parse.c:
	* ext/ogg/vorbis_parse.h:
	  ogg: fix possible buffer overrun
	  If an ogg stream does not match our expectations of how the end of a
	  buffer may be structured, it was possible to read memory past the end of
	  the buffer parsed by libogg.  Include a bounds check for this case and
	  stop parsing.
	  Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=3930
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2138>

2022-04-08 01:52:32 +0200  Mathieu Duponchelle <mathieu@centricular.com>

	* gst-libs/gst/rtp/gstrtpbasepayload.c:
	  rtpbasepayload: fix transfer annotation for push and push_list
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2137>

2022-04-07 10:08:37 +0900  hoonhee.lee <hoonhee.lee@lge.com>

	* gst-libs/gst/riff/riff-media.c:
	  riff-media: fix memory leak after usage for g_strjoin
	  This leak is observed with valgrind.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2136>

2022-04-06 18:08:46 +0200  Bastian Krause <bst@pengutronix.de>

	* ext/gl/gstgltransformation.c:
	* ext/gl/gstgltransformation.h:
	  gltransformation: let graphene alloc its structures memory aligned
	  With NEON instructions enabled, graphene expects the memory passed to it
	  16-byte-aligned. Otherwise unaligned memory access faults occur causing
	  SIGBUS signals.
	  graphene has alloc functions for its structures that take care of this,
	  so use them.
	  See also: https://github.com/ebassi/graphene/issues/215#issuecomment-794744829
	  Suggested-by: Sebastian Dröge <sebastian@centricular.com>
	  Signed-off-by: Bastian Krause <bst@pengutronix.de>
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2128>

2022-04-04 10:46:24 +0530  Nirbheek Chauhan <nirbheek@centricular.com>

	* gst-libs/gst/app/gstappsrc.c:
	  appsrc: Clarify buffer ref semantics in signals
	  The documentation could be read to mean that the caller continuous to
	  'own' the buffer, and that there is some other mechanism to find out
	  when to unref it.
	  Clarify that "not taking ownership" here means "taking a reference",
	  and specify that you can unref it at any time after calling the
	  function.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2118>

2021-01-21 16:01:38 +0800  Zhao Zhili <quinkblack@foxmail.com>

	* tests/examples/gl/gtk/gstgtk.c:
	* tests/examples/playback/playback-test.c:
	  examples: fix build on macOS with gtk+-quartz-3.0
	  gdk_quartz_window_get_nsview is not declared in the header file now:
	  error: implicit declaration of function 'gdk_quartz_window_get_nsview'
	  is invalid in C99 [-Werror,-Wimplicit-function-declaration]
	  fixes #979
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2116>

2022-04-01 10:25:23 +0300  Sebastian Dröge <sebastian@centricular.com>

	* gst/playback/gstplaybin2.c:
	* gst/playback/gstplaybin3.c:
	  playbin/playbin3: Allow setting a NULL URI
	  The URI is already initialized to NULL at the beginning and GstPlayer
	  was assuming that it is possible to set to NULL at a later time too.
	  Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1124
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2105>

2022-03-28 12:13:12 +0200  Edward Hervey <edward@centricular.com>

	* gst-libs/gst/pbutils/descriptions.c:
	  pbutils: Fix wmv screen detection
	  strncmp vs !strncmp :)
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2076>

2022-03-16 10:31:56 +0000  Corentin Damman <c.damman@intopix.com>

	* gst/rawparse/gstrawvideoparse.c:
	  rawvideoparse: set format from caps in gst_raw_video_parse_set_config_from_caps
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2054>

2022-03-27 16:35:14 +1100  Matthew Waters <matthew@centricular.com>

	* ext/gl/gstglmixerbin.c:
	  glmixerbin: slightly better pad/element creation
	  Use the return value from gst_element_link_pads() and gst_bin_add()
	  Fixes:
	  ../ext/gl/gstglmixerbin.c:305:12: error: variable 'res' set but not used [-Werror,-Wunused-but-set-variable]
	  gboolean res = TRUE;
	  ^
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2053>

2022-03-18 20:43:24 +1100  Matthew Waters <matthew@centricular.com>

	* gst-libs/gst/pbutils/gstdiscoverer-types.c:
	  discoverer: chain up to parent finalize methods in all our types
	  Fixes a memory leak:
	  Direct leak of 32 byte(s) in 1 object(s) allocated from:
	  #0 0x5ac5cd in malloc /src/llvm-project/compiler-rt/lib/asan/asan_malloc_linux.cpp:129:3
	  #1 0x1007007 in g_malloc /work/glib-2.72.0/_builddir/../glib/gmem.c:125:13
	  #2 0xf82e82 in g_data_set_internal /work/glib-2.72.0/_builddir/../glib/gdataset.c:464:8
	  #3 0xf833f7 in g_datalist_id_set_data_full /work/glib-2.72.0/_builddir/../glib/gdataset.c:670:3
	  #4 0xef81be in g_object_notify_queue_freeze /work/glib-2.72.0/_builddir/../gobject/gobject.c:295:7
	  #5 0xef79c6 in g_object_unref /work/glib-2.72.0/_builddir/../gobject/gobject.c:3632:16
	  #6 0x5e58bf in LLVMFuzzerTestOneInput /src/gstreamer/ci/fuzzing/gst-discoverer.c:132:5
	  #7 0x4dd1a2 in fuzzer::Fuzzer::ExecuteCallback(unsigned char const*, unsigned long) /src/llvm-project/compiler-rt/lib/fuzzer/FuzzerLoop.cpp:611:15
	  #8 0x4dc98a in fuzzer::Fuzzer::RunOne(unsigned char const*, unsigned long, bool, fuzzer::InputInfo*, bool, bool*) /src/llvm-project/compiler-rt/lib/fuzzer/FuzzerLoop.cpp:514:3
	  #9 0x4de6c4 in fuzzer::Fuzzer::ReadAndExecuteSeedCorpora(std::__Fuzzer::vector<fuzzer::SizedFile, std::__Fuzzer::allocator<fuzzer::SizedFile> >&) /src/llvm-project/compiler-rt/lib/fuzzer/FuzzerLoop.cpp:809:5
	  #10 0x4dea29 in fuzzer::Fuzzer::Loop(std::__Fuzzer::vector<fuzzer::SizedFile, std::__Fuzzer::allocator<fuzzer::SizedFile> >&) /src/llvm-project/compiler-rt/lib/fuzzer/FuzzerLoop.cpp:857:3
	  #11 0x4ce4a0 in fuzzer::FuzzerDriver(int*, char***, int (*)(unsigned char const*, unsigned long)) /src/llvm-project/compiler-rt/lib/fuzzer/FuzzerDriver.cpp:912:6
	  #12 0x4f6f52 in main /src/llvm-project/compiler-rt/lib/fuzzer/FuzzerMain.cpp:20:10
	  #13 0x7f1c709980b2 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x240b2)
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1996>

2022-03-15 12:57:49 +0530  Nirbheek Chauhan <nirbheek@centricular.com>

	* gst-libs/gst/rtp/gstrtpbuffer.c:
	  rtpbuffer: The out args for rtp extension data are optional
	  The code checks that these are != NULL before dereferencing them.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1980>

2021-08-06 19:27:02 +1000  Jan Schmidt <jan@centricular.com>

	* gst/playback/gstplaysink.c:
	  playsink: Complete reconfiguration on pad release.
	  Requesting a new pad can start a reconfiguration cycle, where
	  playsink will block all input pads and wait for data on them
	  before doing internal reconfiguration. If a pad is released,
	  that reconfiguration might never trigger because it's now waiting
	  for a pad that doesn't exist any more.
	  In that case, complete the reconfiguration on pad release.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1940>

2022-03-14 14:48:01 +0000  Tim-Philipp Müller <tim@centricular.com>

	* meson.build:
	  Back to development

=== release 1.20.1 ===

2022-03-14 11:33:33 +0000  Tim-Philipp Müller <tim@centricular.com>

	* ChangeLog:
	* NEWS:
	* RELEASE:
	* gst-plugins-base.doap:
	* meson.build:
	  Release 1.20.1

2022-03-14 11:33:25 +0000  Tim-Philipp Müller <tim@centricular.com>

	* ChangeLog:
	  Update ChangeLogs for 1.20.1

2022-03-09 16:02:06 +0530  Nirbheek Chauhan <nirbheek@centricular.com>

	* gst-libs/gst/rtp/gstrtpbasepayload.c:
	* tests/check/libs/rtpbasepayload.c:
	  rtpbasepayload: Remove dead twcc code
	  This feature was removed in 7a53fbad68d702ca4905f7da223f4d2884548edc,
	  but this code was left behind.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1922>

2022-03-02 03:43:00 +1100  Jan Schmidt <jan@centricular.com>

	* gst/playback/gstplaybin3.c:
	  playbin3: Add lock to protect buffering messages
	  Fix a small race where a group can receive stream-start
	  and post a pending buffering message just as another
	  thread posts a different buffering message, causing them
	  to be received by the application out of order. In the
	  worst case, this leads the application receiving a
	  stale 99% buffering message and going back to buffering
	  right after the 100% buffering message.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1901>

2022-03-04 22:21:13 +0900  Seungha Yang <seungha@centricular.com>

	* gst-libs/gst/gl/gstgldisplay.c:
	  gldisplay: Reorder GST_GL_WINDOW check for egl-device
	  "egl-device" should be checked before the "egl", otherwise unexpected egl will be picked
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1862>

2022-02-21 10:49:15 +0100  Sebastian Fricke <sebastian.fricke@collabora.com>

	* gst-libs/gst/tag/licenses.c:
	  Remove the uninstalled term
	  Remove the symbolic link `gst-uninstalled` which points to `gst-env`.
	  The `uninstalled` is the old name and the project should stick to a
	  single name for the procedure.
	  Remove the term from all the files, exceptions are variables from
	  dependencies like `uninstalled_variables` from pkgconfig and
	  `meson-uninstalled`.
	  Adjust mentions of the script in the documentation and README.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1829>

2022-02-23 11:10:11 +0100  Sebastian Fricke <sebastian.fricke@collabora.com>

	* 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.
