=== release 1.22.2 ===

2023-04-11 17:29:28 +0100  Tim-Philipp Müller <tim@centricular.com>

	* NEWS:
	* RELEASE:
	* docs/gst_plugins_cache.json:
	* gst-plugins-good.doap:
	* meson.build:
	  Release 1.22.2

2023-04-04 09:21:47 +0200  Edward Hervey <edward@centricular.com>

	* gst/rtpmanager/rtptwcc.c:
	* tests/check/elements/rtpsession.c:
	  twcc: Better handle duplicate packets
	  The previous code would only check if two packets in a row were duplicates. If
	  not (i.e. a packet is a duplicate of a packet received slightly before) the code
	  would generate completely bogus FCI because it assumes there were no duplicates
	  present in the array.
	  In order to be efficient, just store all received packets and remove the
	  duplicates just before the FCI is generated once the array of observations have
	  been sorted by seqnum.
	  Fixes TWCC usage with moderate to high packet duplication.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4378>

2022-11-04 22:04:21 +0100  Alexande B <abobrikovich@gmail.com>

	* sys/osxvideo/cocoawindow.m:
	  osxvideosink: fix broken aspect ration and frame drawing region
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4346>

2023-04-04 19:23:14 +0300  Sebastian Dröge <sebastian@centricular.com>

	* gst/rtsp/gstrtspsrc.c:
	  rtspsrc: Skip PTs with caps incompatible to the global caps
	  Otherwise empty caps are created while all following code assumes that
	  the caps will have exactly one structure, and then run into assertions.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4343>

2023-03-28 15:29:46 +0800  Shengqi Yu <shengqi.yu@mediatek.com>

	* docs/gst_plugins_cache.json:
	* sys/v4l2/gstv4l2object.c:
	  v4l2object: Add support for YVU420M format
	  This is a multi-planar format with planes non contiguous in memory. It
	  is intended to be used only in drivers and applications that support the
	  multi-planar API.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4318>

2023-03-23 16:40:54 +0000  Tim-Philipp Müller <tim@centricular.com>

	* gst/rtp/gstrtpjpegdepay.c:
	  rtpjpegdepay: fix logic error when checking if an EOI is present
	  We wouldn't add the missing EOI marker if the frame ended with
	  either 0xFF NN or 0xNN D9.
	  Fixes #2407
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4269>

2023-03-20 16:35:45 +0100  Piotr Brzeziński <piotr@centricular.com>

	* gst/isomp4/qtdemux.c:
	  qtdemux: Fix seek adjustment with SNAP_AFTER flag
	  With GST_SEEK_FLAG_SNAP_AFTER present, the previous version would
	  adjust seek time based on the keyframe farthest away from desired_time.
	  This was incorrect, because we always want the *earliest* suitable keyframe
	  to seek to, not the last one.
	  With this fix, in case of the SNAP_AFTER, we now look for the closest keyframe
	  that can be found after desired_time. Behaviour for SNAP_BEFORE should remain
	  unchanged.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4251>

2023-01-31 16:02:03 +0100  Michael Tretter <m.tretter@pengutronix.de>

	* docs/gst_plugins_cache.json:
	* sys/v4l2/gstv4l2object.c:
	  v4l2object: mark jpeg as parsed
	  Assuming that V4L2 CAPTURE devices always use one buffer per JPEG image, we can
	  always mark JPEGs provided by a V4L2 element as parsed.
	  The V4L2 elements require that JPEG images sent to V4L2 OUTPUT devices must
	  always be parsed.
	  This is necessary to link a V4L2 CAPTURE device with a V4L2 OUTPUT device
	  without explicitly marking the stream as parsed or adding a jpegparse into the
	  pipeline.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4247>

2023-03-17 17:13:39 +0200  Sebastian Dröge <sebastian@centricular.com>

	* gst/matroska/matroska-read-common.c:
	  matroskademux: Make gst_byte_reader_get_data() usage less confusing
	  This is effectively the same behaviour but retrieving 0 bytes of data is
	  confusing to read.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4221>

2023-03-17 16:48:51 +0200  Sebastian Dröge <sebastian@centricular.com>

	* ext/flac/gstflacenc.c:
	  flacenc: Fix mapping of GStreamer image tag type to FLAC image tag type
	  These enums are not compatible so just casting them does not work.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4221>

2023-03-17 16:32:45 +0200  Sebastian Dröge <sebastian@centricular.com>

	* ext/adaptivedemux2/gstadaptivedemux-stream.c:
	* sys/oss/gstossaudio.c:
	* sys/oss/gstosshelper.c:
	  plugins: Fix various trivial clang compiler warnings
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4221>

2023-03-10 13:10:16 -0500  Arun Raghavan <arun@asymptotic.io>

	* docs/gst_plugins_cache.json:
	* gst/matroska/matroska-mux.c:
	  matroskamux: Set rate/channels in Opus template caps
	  For some reason these were missed, and if caps didn't have them, we would emit
	  an invalid Matroska file with a 0 value for Sampling Frequency or channels.
	  Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2354
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4172>

2023-03-10 12:06:08 -0500  Arun Raghavan <arun@asymptotic.io>

	* gst/rtp/gstrtpopusdepay.c:
	  rtpopusdepay: Assume 48 kHz if sprop-maxcapturerate is missing
	  This matches 7587, section 6.1:
	  >   sprop-maxcapturerate:  a hint about the maximum input sampling rate
	  >      [...]
	  >      bandwidths (Table 1).  By default, the sender is assumed to have
	  >      no limitations, i.e., 48000.
	  Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2354
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4172>

2023-03-06 19:56:08 +0000  Matt Feury <mattfeury@gmail.com>

	* gst/rtsp/gstrtspsrc.c:
	  rtspsrc: Consider "451: Parameter Not Understood" when handling broken control urls
	  similar to https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3854
	  it seems that some implementations return this when
	  the server does not implement URL handling correctly
	  this fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2334
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4129>

2023-03-04 16:13:04 +0000  Tim-Philipp Müller <tim@centricular.com>

	* docs/gst_plugins_cache.json:
	* meson.build:
	  Back to development

=== release 1.22.1 ===

2023-03-04 13:42:32 +0000  Tim-Philipp Müller <tim@centricular.com>

	* NEWS:
	* RELEASE:
	* docs/gst_plugins_cache.json:
	* gst-plugins-good.doap:
	* meson.build:
	  Release 1.22.1

2023-03-03 08:21:08 +0100  Edward Hervey <edward@centricular.com>

	* ext/adaptivedemux2/gstadaptivedemux-stream.c:
	  adaptivedemux2: Fix buffering treshold initialization
	  Properly initialize the stream default recommended buffering threshold so that
	  a default (10s) value is used until the subclass can provide a proper value
	  Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2064
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4105>

2023-02-23 11:18:44 +0200  Sebastian Dröge <sebastian@centricular.com>

	* gst/rtsp/gstrtspsrc.c:
	  rtspsrc: Use the correct vfunc for the `push-backchannel-sample` action signal
	  Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/446
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4056>

2023-02-22 22:18:48 +0900  Seungha Yang <seungha@centricular.com>

	* gst/isomp4/gstqtmux.c:
	  qtmux: Fix assertion on caps update
	  GstQTMuxPad.configured_caps should be protected since it's
	  updated from streaming thread and accessed in aggregate thread
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4055>

2023-02-22 11:52:21 +0000  Tim-Philipp Müller <tim@centricular.com>

	* 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/ka.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
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4041>

2023-02-02 16:48:05 +0200  Sebastian Dröge <sebastian@centricular.com>

	* gst/isomp4/gstqtmux.c:
	  qtmux: Implement writing of `av1C` version 1 box
	  Version 0 is ancient and not specified in any documents. Take it
	  directly from the `codec_data` if presents or otherwise try to construct
	  a reasonably looking `av1C` box.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4027>

2023-02-02 16:28:47 +0200  Sebastian Dröge <sebastian@centricular.com>

	* gst/isomp4/qtdemux.c:
	  qtdemux: Drop av1C version 0 parsing and implement version 1 parsing
	  The av1C box is optional so dropping parsing does not break anything
	  fundamentally, and there seems to be no historical record how version 0
	  even looks like while the comments and the parsing disagreed with each
	  other.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4027>

2023-02-01 12:09:52 +0100  Enrique Ocaña González <eocanha@igalia.com>

	* gst/isomp4/qtdemux.c:
	* gst/isomp4/qtdemux.h:
	  qtdemux: Don't emit GstSegment correcting start time when in MSE mode
	  When using qtdemux in a pipeline that should only work as a pure demuxer (not
	  for actual playback), qtdemux shouldn't emit new GstSegments to correct
	  the start time (jump to the future) to ensure that the user experiences no
	  playback delay. By doing so, it's generating the wrong segments when an append
	  of data from the past happens. When that happens, downstream elements such as
	  parsers (eg: aacparse) may clip those buffers laying before the GstSegment and
	  create problems on the GStreamer client app (eg: WebKit).
	  Getting buffers clipped out because of the wrong GstSegments started becoming
	  a problen when this commit was introduced:
	  ab6e49e9cc audioparsers: add back segment clipping to parsers that have lost it
	  This clipping makes test DASH shaka 35 from MVT tests[1] to fail in
	  WebKitGTK/WPE (at least) and can potentially cause a number of other problems
	  in the WebKit Media Source Extensions (MSE) code.
	  Note that this new behaviour of not emitting new GstSegments only makes sense
	  when qtdemux is being used as a pure demuxer and not as part of a regular
	  pipeline. This is why the variant field has been added. When equal to
	  VARIANT_MSE_BYTESTREAM, it will make qtdemux behave differently in push mode,
	  taking decisions that meet the expectations for an MSE-like processing mode.
	  This kind of tweaks have been done in the past for MSS streams, for instance.
	  That code has been refactored to use VARIANT_MSS_FRAGMENTED now, instead of
	  its own dedicated boolean flag.
	  Co-authored by: Alicia Boya García <ntrrgc@gmail.com>
	  ...who suggested to use "variant: mse-bytestream" in the caps to identify that
	  mode, as proposed in her unmerged patch:
	  https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/issues/467
	  [1] https://github.com/rdkcentral/mvt
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3990>

2023-02-10 15:43:45 +0200  Vivia Nikolaidou <vivia@ahiru.eu>

	* gst/isomp4/qtdemux.c:
	  qtdemux: Handle moov atom length=0 case by reading until the end
	  Previously it would fail to demux the file by trying to read G_MAXUINT64
	  bytes.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3938>

2023-02-10 15:35:15 +0200  Vivia Nikolaidou <vivia@ahiru.eu>

	* gst/isomp4/qtdemux.c:
	  qtdemux: Fix guint vs gsize type confusion
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3938>

2023-01-31 16:56:18 +0200  Sebastian Dröge <sebastian@centricular.com>

	* gst/rtsp/gstrtspsrc.c:
	  rtspsrc: Also consider "Method Not Valid In This State" error in broken control URL handling workaround
	  Some servers send a 455 error instead of any reasonable error when using
	  a correctly constructed control URL.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3864>

2023-01-31 16:44:10 +0100  Guillaume Desmottes <guillaume.desmottes@onestream.live>

	* gst/rtpmanager/gstrtpptdemux.c:
	  rtpptdemux: set different stream-id on each src pad
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3866>

2023-01-31 15:28:22 +0100  Guillaume Desmottes <guillaume.desmottes@onestream.live>

	* gst/rtpmanager/gstrtpssrcdemux.c:
	  rtpssrcdemux: set different stream-id on each src pad
	  All the RTP src pads were sharing the same stream-id while each actually
	  carry a different stream.
	  This was causing problem for example when funneling the streams together
	  and then trying to split them using 'streamiddemux'.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3866>

2023-01-25 00:52:28 +0000  Pawel Stawicki <stawel+gstreamer@gmail.com>

	* sys/v4l2/gstv4l2object.c:
	  v4l2h264dec: Fix Raspberry Pi4 will not play video in application
	  Ensure object v4l2object->pool will be released by
	  correctly releasing the temporary thread-safety lock
	  Fixes issue #1729
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3815>

2023-01-24 22:50:37 +0100  Mathieu Duponchelle <mathieu@centricular.com>

	* gst/rtp/gstrtpredenc.c:
	  redenc: fix setting of extension ID for twcc
	  1 was previously hardcoded in, and the bug went under the radar because
	  webrtcsink hardcodes the number too.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3812>

2023-01-23 12:01:00 +0100  David Svensson Fors <davidsf@axis.com>

	* gst/udp/gstudpsrc.c:
	  udpsrc: GstSocketTimestampMessage only for SCM_TIMESTAMPNS
	  Deserialize socket control messages as GstSocketTimestampMessage only
	  if (level, type) is (SOL_SOCKET, SCM_TIMESTAMPNS).
	  Without this patch, messages with types SCM_RIGHTS or SCM_CREDENTIALS
	  could be deserialized as GstSocketTimestampMessage instead of
	  GUnixFDMessage or GUnixCredentialsMessage from gio.
	  Fixes #1736
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3777>

2023-01-25 16:46:42 +0000  Tim-Philipp Müller <tim@centricular.com>

	* docs/gst_plugins_cache.json:
	* meson.build:
	  Back to development

=== release 1.22.0 ===

2023-01-23 19:29:34 +0000  Tim-Philipp Müller <tim@centricular.com>

	* NEWS:
	* RELEASE:
	* docs/gst_plugins_cache.json:
	* gst-plugins-good.doap:
	* meson.build:
	  Release 1.22.0

2023-01-23 16:27:56 +0000  Tim-Philipp Müller <tim@centricular.com>

	* po/hr.po:
	* po/ro.po:
	* po/zh_CN.po:
	  gst-plugins-good: update translations
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3773>

2023-01-17 17:51:16 +0200  Sebastian Dröge <sebastian@centricular.com>

	* docs/gst_plugins_cache.json:
	* gst/matroska/matroska-demux.c:
	* gst/matroska/matroska-mux.c:
	* gst/matroska/webm-mux.c:
	  matroska: Add `stream-format = (string) obu-stream` to AV1 caps
	  Anything else is not allowed in Matroska/WebM.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3740>

2023-01-17 17:50:27 +0200  Sebastian Dröge <sebastian@centricular.com>

	* docs/gst_plugins_cache.json:
	* gst/isomp4/gstqtmuxmap.c:
	* gst/isomp4/qtdemux.c:
	  isomp4: Add `stream-format = (string) obu-stream` to AV1 caps
	  Anything else is not allowed in MP4.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3740>

2023-01-17 15:04:10 +0100  Jan Alexander Steffens (heftig) <jan.steffens@ltnglobal.com>

	* gst/isomp4/fourcc.h:
	* gst/isomp4/qtdemux.c:
	* gst/isomp4/qtdemux_types.c:
	  qtdemux: Add basic support for AVC-Intra video
	  AVC-Intra is a range of H.264-compliant intra-only codecs from
	  Panasonic. The codes and descriptions have been taken from VLC.
	  The (encumbered) sample I have here produces byte-stream H.264,
	  including SPS and PPS and no `avcC` box.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3739>

=== release 1.21.90 ===

2023-01-13 19:08:48 +0000  Tim-Philipp Müller <tim@centricular.com>

	* NEWS:
	* RELEASE:
	* docs/gst_plugins_cache.json:
	* gst-plugins-good.doap:
	* meson.build:
	  Release 1.21.90

2023-01-12 14:32:30 -0500  Olivier Crête <olivier.crete@ocrete.ca>

	* gst/rtp/gstrtpopuspay.c:
	  rtopuspay: Use GstStaticCaps to cache parsed caps
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3674>

2023-01-12 14:25:52 -0500  Olivier Crête <olivier.crete@ocrete.ca>

	* gst/rtp/gstrtpopuspay.c:
	* tests/check/elements/rtpopus.c:
	  rtopuspay: Ignore the stereo parameter in multiopus caps
	  Also add unit tests for the various variants
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3674>

2023-01-03 18:55:24 -0500  Olivier Crête <olivier.crete@collabora.com>

	* gst/rtp/gstrtpopuspay.c:
	  rtpopuspay: Leave original caps as-is
	  This should make it work if someone specifies stereo with MULTIOPUS
	  somehow.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3674>

2023-01-03 18:06:56 -0500  Olivier Crête <olivier.crete@collabora.com>

	* gst/rtp/gstrtpopuspay.c:
	  rtpopuspay: Return upstream channel filter based on OPUS vs MULTICAPS
	  Only allow 1 or 2 channels if the caps are OPUS, or 3+ if they are
	  MULTIOPUS.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3674>

2023-01-03 17:44:37 -0500  Olivier Crête <olivier.crete@collabora.com>

	* docs/gst_plugins_cache.json:
	* gst/rtp/gstrtpopusdepay.c:
	* gst/rtp/gstrtpopuspay.c:
	  rtpopus: Put MULTIOPUS in all caps
	  The RTP payload encoding-name are always in caps in GStreamer.
	  In SDP, they are not case-sensitive, but since caps are, we need to pick
	  a caps, and we picked upper-case along time ago.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3674>

2023-01-11 15:41:09 +0000  Tim-Philipp Müller <tim@centricular.com>

	* po/LINGUAS:
	* 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/ka.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
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3711>

2023-01-11 14:53:39 +0000  Tim-Philipp Müller <tim@centricular.com>

	* scripts/dist-translations.py:
	* scripts/meson.build:
	  Fix translation pot files when creating dist tarballs
	  Add version as per Translation Project requirements and
	  also add a .pot file without the ABI suffix.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3711>

2023-01-07 20:03:31 +0100  Marek Vasut <marex@denx.de>

	* ext/jpeg/gstjpegdec.c:
	  jpegdec: Disable libjpeg-turbo SIMD acceleration support for now
	  The libjpeg-turbo SIMD acceleration support suffers from multiple
	  unresolved cornercases. Disable the libjpeg-turbo for now until
	  those cornercases are resolved.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3694>

2022-08-07 14:23:04 +1000  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/hls/gsthlsdemux.c:
	  hlsdemux: Consider starting stream time in presentation offset
	  When calculating the presentation offset for CMAF input in live
	  playback, subtract the stream_time of the fragment from the
	  calculated presentation offset, so that the first fragment
	  is played at running time zero.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3680>

2022-12-22 21:23:39 +0530  Nirbheek Chauhan <nirbheek@centricular.com>

	* ext/qt/meson.build:
	* ext/qt6/meson.build:
	* meson_options.txt:
	  meson: Add an option to select the method for finding Qt
	  This is needed by Cerbero, since we want to force the use of qmake to
	  find Qt on non-Linux platforms.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3628>

2022-12-26 23:00:18 +0900  Seungha Yang <seungha@centricular.com>

	* ext/gtk/gstgtkbasesink.c:
	  gtkbasesink: Fix widget leak
	  gst_gtk_base_sink_get_widget() will increase refcount and it should
	  be released after use
	  Fixing regression introduced by the commit
	  941c0e81ddf5c0ad6a9fac59b1d6bf7723025434
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3644>

2022-12-27 23:33:31 +0900  Seungha Yang <seungha@centricular.com>

	* gst/rtsp/gstrtspsrc.c:
	  rtspsrc: Fix string leak
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3645>

2022-12-27 23:26:48 +0900  Seungha Yang <seungha@centricular.com>

	* gst/rtpmanager/rtptimerqueue.c:
	  rtptimerqueue: Fix memory leak
	  Should chain up to parent's finalize
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3645>

2022-12-22 11:16:26 +0100  Patricia Muscalu <patricia@axis.com>

	* gst/isomp4/gstqtmux.c:
	  qtmux: Fix buffer leak in fragment_buffers
	  When pushing buffers from one of the sink pads fail,
	  make sure that all buffers added to fragment_buffers on other pads
	  are freed as well.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3624>

2022-09-19 21:11:39 +0200  Mathieu Duponchelle <mathieu@centricular.com>

	* gst/isomp4/atoms.c:
	  qtmux: For video with N/1001 framerates use N as timescale instead of centiframes
	  This is recommended by various specifications for such framerates, while
	  for integer framerates we continue using centiframes to allow for some
	  more accuracy.
	  Using N means that no rounding error accumulates, eventually leading to
	  outputting a packet with a different duration.
	  Some tools such as MediaInfo determine that a stream is variable
	  framerate if any packet has a different duration than the others, and
	  there is no reason I can see for not using the full 4 bytes of
	  resolution that the mp4 timescale offers.
	  Example problematic pipeline:
	  ```
	  videotestsrc num-buffers=5001 ! video/x-raw,framerate=60000/1001,width=320,height=240 ! \
	  videoconvert ! x264enc bitrate=80000 speed-preset=1 tune=zerolatency ! h264parse ! \
	  video/x-h264,profile=high-10 ! mp4mux ! filesink location="result2.mp4"
	  ```
	  This results in a media file that MediaInfo detects as variable
	  framerate because the 5000th packet has duration 99 instead of 100.
	  With this patch, the timescale is 60000 and all packets have duration
	  1001.
	  Related issue for context: https://bugzilla.gnome.org/show_bug.cgi?id=769041
	  Co-authored-by: Sebastian Dröge <sebastian@centricular.com>
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3049>

2022-12-21 02:37:58 +1100  Jan Schmidt <jan@centricular.com>

	* ext/qt/qtwindow.cc:
	  qmlglsrc: Handle HiDPI scaling
	  When calculating the capture framebuffer size, include
	  any device scaling applied to the rendered framebuffer
	  Fixes only capturing part of the window when there is
	  a global scale factor.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3612>

2022-12-21 02:32:41 +1100  Jan Schmidt <jan@centricular.com>

	* ext/qt/qtwindow.cc:
	  qmlglsrc: Unmap buffer before adding sync meta
	  Adding a sync meta to a GstBuffer requires that it
	  be writable. Mapping the buffer with the video frame API
	  holds an extra ref on the buffer, so unmap before
	  trying to modify it.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3612>

2022-12-21 02:31:05 +1100  Jan Schmidt <jan@centricular.com>

	* ext/qt/gstqtsrc.cc:
	  qmlglsrc: Stop when basesrc calls unlock()
	  Instead of stopping capture when the state changes,
	  handle other cases of basesrc stopping capture by - such
	  as handling an EOS event - by implementing an unlock()
	  method
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3612>

2022-12-16 17:27:33 +0200  Sebastian Dröge <sebastian@centricular.com>

	* gst/isomp4/qtdemux.c:
	  qtdemux: Always use `tfdt` if available in BYTE segments
	  This reverts the decision from
	  https://bugzilla.gnome.org/show_bug.cgi?id=754230
	  where it was decided that we rather play safe and only use the `tfdt` if
	  it is "significantly different" to the sum of sample durations.
	  As the specification says
	  If the time expressed in the track fragment decode time (‘tfdt’) box
	  exceeds the sum of the durations of the samples in the preceding
	  movie and movie fragments, then the duration of the last sample
	  preceding this track fragment is extended such that the sum now
	  equals the time given in this box.
	  we have to use the `tfdt` in general to allow for it to signal gaps in
	  the stream.
	  A muxer producing fragments might not yet know the full duration of the
	  last sample of a previous fragment if the next fragment starts with a
	  gap, and knowing the actual start of the next fragment would potentially
	  require to violate latency requirements.
	  Additionally, the existence of `tfdt` allows to avoid accumulating
	  rounding errors from summing up the durations.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3586>

2022-12-16 01:00:46 -0600  A. Wilcox <AWilcox@Wilcox-Tech.com>

	* tests/check/elements/rtpjitterbuffer.c:
	  tests: Cast drop-messages-interval type properly
	  The rtpjitterbuffer test drop_messages_interval uses a GstClockTime for
	  the message drop interval.  This property is defined as a guint.  On
	  systems with 64-bit time_t but 32-bit uint, this can cause the
	  g_object_set function to fail to read the arguments properly.
	  Fixes: #1656
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3580>

2022-12-13 12:23:56 +0100  Thibault Saunier <tsaunier@igalia.com>

	* ext/qt/qtitem.cc:
	* ext/qt6/qt6glitem.cc:
	  base:navigation: Cleanup navigation key modifiers enum
	  We were exposing the 'ALT' modifier as if we were guaranteeing its
	  accuracy but truth is we were only exposing configuration dependent
	  values.
	  Make the API simpler for now, the same way as Gtk3 was exposing it, and
	  when we have time to guarantee more values by making them take backends
	  configuration into account, we will expose those values in a accurate
	  way.
	  Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1402
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3565>

2022-12-09 11:35:25 +0100  Xabier Rodriguez Calvar <calvaris@igalia.com>

	* gst/isomp4/qtdemux.c:
	  qtdemux: Clear protection events when we get new ones
	  If we keep the old events they can be end up being passed to the app, that could
	  discard the protection information because it has been seen before.
	  Drive by improvement: use g_queue_clear_full instead of foreach+clear for
	  protection events.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3547>

2022-05-22 10:46:12 +0200  Víctor Manuel Jáquez Leal <vjaquez@igalia.com>

	* ext/jpeg/gstjpegdec.c:
	  jpegdec: Enable packetized if sink caps contains parsed as true.
	  jpegdec is capable to parse input frames, but if jpegparse is before,
	  there's no need to reparse frames. This patch configure jpegdec as
	  packetized, skipping parsing, if negotiated sink caps has the boolean
	  field 'parsed' as true.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2464>

2022-09-27 09:44:51 +0000  Henry Hoegelow <henry@hoegelow.com>

	* ext/pulse/pulsesink.c:
	  pulsesink: Fix occasional period of silence on resume
	  According to comment in gst_pulsering_stream_latency_cb, latency updates
	  happen every 100 ms. The code in gst_pulsering_stream_latency_cb does
	  not care about the actual state of the ringbuffer, pbuf->acquired or
	  not.
	  Thus, every 100 ms the ringbuf->segdone may be set, even though the
	  object itself might be in 'destroyed' state. On next
	  gst_pulseringbuffer_acquire the segdone is not touched, so playback may
	  resume with invalid/wrong segdone value. This finally leads to a period
	  of silence playing after resuming the pipeline.
	  The problem was found on 'not-yet-released'-hardware and so far was not
	  reproducible on desktop computer.
	  Removing the callback as long as the ringbuffer is not in 'acquired'
	  state solves the problem reliably on the hardware device that the issue
	  was detected on.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3082>

2021-05-14 23:06:43 +0200  Mathieu Duponchelle <mathieu@centricular.com>

	* docs/gst_plugins_cache.json:
	* gst/rtp/gstrtpvp9depay.c:
	* gst/rtp/gstrtpvp9depay.h:
	  rtpvp9depay: expose keyframe-related properties
	  This simply brings in the wait-for-keyframe and request-keyframe
	  properties from rtpvp8depay.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/909>

2022-12-07 09:47:49 +0100  Jacek Skiba <jacek.skiba@consult.red>

	* gst/isomp4/qtdemux.c:
	  qtdemux: exit when protection caps are not defined during PIFF parsing
	  Reproduction testcase (uses PlayReady):
	  https://developers.canal-plus.com/rx-player/upc/?appTileLocation=[object%20Object]
	  In test streams we are using PIFF box, but caps did not had
	  present GST_PROTECTION_SYSTEM_ID_CAPS_FIELD. In consequence, invalid
	  system_id was returned which caused SIGSEGV crash.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3535>

2022-12-05 10:55:57 +0100  Edward Hervey <edward@centricular.com>

	* ext/adaptivedemux2/gstadaptivedemux.c:
	  adaptivedemux2: Don't allow stream selection while switching periods
	  The stream selection is done on the currently outputting tracks, but in order to
	  (de)activate the backing streams we can only do it if the input and output
	  period are identical.
	  Fixes crash when doing stream selection during period migration
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3525>

2022-12-05 02:29:08 +0000  Tim-Philipp Müller <tim@centricular.com>

	* docs/gst_plugins_cache.json:
	* meson.build:
	  Back to development

=== release 1.21.3 ===

2022-12-05 01:28:21 +0000  Tim-Philipp Müller <tim@centricular.com>

	* NEWS:
	* RELEASE:
	* docs/gst_plugins_cache.json:
	* gst-plugins-good.doap:
	* meson.build:
	  Release 1.21.3

2022-12-04 12:25:41 +0000  Tim-Philipp Müller <tim@centricular.com>

	* ChangeLog:
	  Remove ChangeLog files from git repository
	  This information is tracked fully in the git repository, so
	  no point having the ChangeLog duplicate it, and it interferes
	  with grepping the repository.
	  We are going to create the ChangeLogs on the fly when generating
	  tarballs going forward (with a limited history), since it's still
	  valuable for tarball consumers to be able to easily see a list of
	  recent changes.
	  Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer-project/-/issues/73
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3521>

2022-11-07 00:10:39 +0000  Tim-Philipp Müller <tim@centricular.com>

	* meson.build:
	* scripts/gen-changelog.py:
	  meson: Generate ChangeLog files for release tarballs on dist
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3521>

2022-12-04 11:44:17 +0000  Philippe Normand <philn@igalia.com>

	* gst/audioparsers/gstflacparse.c:
	  flacparse: Fix handling of headers advertising 32bps
	  According to the flac bitstream format specification, the sample size in bits
	  corresponding to `111` is 32 bits per sample.
	  https://xiph.org/flac/format.html#frame_header
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3517>

2022-12-02 12:15:34 -0500  Nicolas Dufresne <nicolas.dufresne@collabora.com>

	* sys/v4l2/gstv4l2src.c:
	  v4l2src: Fix crash in renegotiation
	  This regression was introduce by fix for making buffer pool thread safe. When
	  we renegotiate, the pool will be setup after we set the format. But the code
	  has been simplified to only get the pool once before, which caused a null
	  pointer deref.
	  Fixes 94ba019 ("v4l2: Fix SIGSEGV on 'change state' during 'format change'")
	  Related to !3481
	  Fixes #1626
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3513>

2022-12-01 10:34:10 +0100  Aleksandr Slobodeniuk <aslobodeniuk@fluendo.com>

	* gst/rtsp/gstrtspsrc.c:
	  rtspsrc: fix seek event leaks
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3500>

2022-11-30 14:32:52 +0100  Bo Elmgreen <bo.elmgreen@gmail.com>

	* ext/qt/gstqtglutility.cc:
	* ext/qt6/gstqt6glutility.cc:
	  qt: deactivate context if fill_info fails
	  Now the OpenGL context is deactivated if call to gst_gl_context_fill_info()
	  fails in gst_qt_get_gl_wrapcontext(), preventing that the context is left
	  activated, which could lead to invalid memory reads.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3492>

2022-11-28 22:26:50 +0000  Pawel Stawicki <stawel+gstreamer@gmail.com>

	* sys/v4l2/gstv4l2bufferpool.c:
	* sys/v4l2/gstv4l2bufferpool.h:
	* sys/v4l2/gstv4l2object.c:
	* sys/v4l2/gstv4l2object.h:
	* sys/v4l2/gstv4l2sink.c:
	* sys/v4l2/gstv4l2src.c:
	* sys/v4l2/gstv4l2transform.c:
	* sys/v4l2/gstv4l2videodec.c:
	* sys/v4l2/gstv4l2videoenc.c:
	  v4l2: Fix SIGSEGV on 'change state' during 'format change'
	  Ensure all access to v4l2object->pool imply taking a lock and a hard ref on the pool
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3481>

2022-11-22 11:32:57 -0500  Matt Crane <matt@standard.ai>

	* docs/gst_plugins_cache.json:
	* gst/rtpmanager/gstrtpbin.c:
	* gst/rtpmanager/gstrtpbin.h:
	* gst/rtpmanager/gstrtpsession.c:
	* gst/rtpmanager/rtpsession.c:
	* gst/rtpmanager/rtpsession.h:
	  rtpsession: Support disabling late adjustment of ntp-64 header ext
	  Currently in rtp_session_send_rtp(), the existing ntp-64 RTP header
	  extension timestamp is updated with the actual NTP time before sending
	  the packet. However, there are some circumstances where we would like
	  to preserve the original timestamp obtained from reference timestamp
	  buffer metadata.
	  This commit provides the ability to configure whether or not to update
	  the ntp-64 header extension timestamp with the actual NTP time via the
	  update-ntp64-header-ext boolean property. The property is also exposed
	  via rtpbin. Default property value of TRUE will preserve existing
	  behavior (update ntp-64 header ext with actual NTP time).
	  Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1580
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3451>

2022-10-06 17:08:54 +1100  Matthew Waters <matthew@centricular.com>

	* ext/meson.build:
	* ext/qt6/gstplugin.cc:
	* ext/qt6/gstqml6glsink.cc:
	* ext/qt6/gstqml6glsink.h:
	* ext/qt6/gstqsg6glnode.cc:
	* ext/qt6/gstqsg6glnode.h:
	* ext/qt6/gstqt6element.cc:
	* ext/qt6/gstqt6elements.h:
	* ext/qt6/gstqt6gl.h:
	* ext/qt6/gstqt6glutility.cc:
	* ext/qt6/gstqt6glutility.h:
	* ext/qt6/meson.build:
	* ext/qt6/qt6glitem.cc:
	* ext/qt6/qt6glitem.h:
	* meson_options.txt:
	* tests/examples/meson.build:
	* tests/examples/qt6/meson.build:
	* tests/examples/qt6/qmlsink/main.cpp:
	* tests/examples/qt6/qmlsink/main.qml:
	* tests/examples/qt6/qmlsink/meson.build:
	* tests/examples/qt6/qmlsink/play.pro:
	* tests/examples/qt6/qmlsink/qmlsink.qrc:
	  add new plugin for Qt 6 rendering inside a QML scene
	  - Based heavily on the existing Qt5 integration however:
	  - The sharing of OpenGL resources is slightly different
	  - The integration with the scengraph is a bit different
	  - Wayland, XCB and KMS have been smoke tested.  Android, MacOS/iOS,
	  Windows may or may not work.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3281>

2022-11-21 15:35:58 +0800  Elliot Chen <elliot.chen@nxp.com>

	* sys/v4l2/gstv4l2object.c:
	  v4l2: bypass check some transfer types in colorimetry
	  v4l2 will report fail for some streams whose colorimetry value such as 2:4:8:3.
	  Can bypass check these transfer types in colorimetry to avoid error.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3440>

2022-10-27 17:30:28 +0200  Johan Sternerup <johast@axis.com>

	* gst/rtpmanager/rtpsession.c:
	* tests/check/elements/rtpsession.c:
	  Use the correct SSRC(s) when routing a RTCB FB FIR
	  Previously we tried to route an incoming RTCP FB FIR to the correct ssrc
	  using the "media source" component of the RTCP FB message. However,
	  according to RFC5104 (section 4.3.1.2) the "media source" SHALL be set
	  to 0. Instead the ssrc(s) in use are propagated via the FCI data. Now
	  a specific GstForceKeyUnit event is sent for every ssrc.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3292>

2022-11-23 16:37:40 +1100  Jan Schmidt <jan@centricular.com>

	* gst/rtpmanager/rtpsource.c:
	  rtpsource: Track the seqnum for senders
	  RTP source statistics are tracked for local senders by
	  treating them as a receiver of their own outbound packets.
	  Accordingly, track the highest packet seqnum so that the
	  packets-lost calculation generates a sensible number instead
	  of always reporting -$number_of_packets_sent
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3454>

2022-11-22 21:57:16 +1100  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/meson.build:
	  adaptivedemux2: Add GStreamer to the deps list
	  Explicitly dep on GStreamer so as not to accidentally
	  link to the system version in a git build
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3453>

2022-11-15 11:56:35 +0100  Jan Alexander Steffens (heftig) <jan.steffens@ltnglobal.com>

	* gst/rtsp/gstrtspsrc.c:
	  rtspsrc: Don't replace 404 errors with "no auth protocol found"
	  When getting a "404 Not Found" response from the DESCRIBE request, the
	  source produced a "No supported authentication protocol was found" error
	  instead of passing on the 404, which was confusing.
	  Only produce this error message when we're handling a response of "401
	  Unauthorized" without a compatible WWW-Authenticate header.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3414>

2022-11-21 17:24:38 +0100  Edward Hervey <edward@centricular.com>

	* ext/adaptivedemux2/gstadaptivedemux-stream.c:
	  adaptivedemux2: Don't leak caps in debug statements
	  Instead just directly use the stream object (which will report the caps)
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3443>

2022-11-21 17:23:44 +0100  Edward Hervey <edward@centricular.com>

	* ext/adaptivedemux2/gstadaptivedemux-stream.c:
	  adaptivedemux2: Don't leak tags
	  If we got them from GstStream, we should unref them when done
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3443>

2022-11-21 17:23:10 +0100  Edward Hervey <edward@centricular.com>

	* ext/adaptivedemux2/gstadaptivedemux-stream.c:
	* ext/adaptivedemux2/gstadaptivedemux.c:
	  adaptivedemux: Use gst_clear_tag_list_where applicable
	  Clearer and ensures fields are reset
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3443>

2022-11-21 15:11:21 +0100  Edward Hervey <edward@centricular.com>

	* gst/rtsp/gstrtspsrc.c:
	  rtspsrc: Don't leak sticky events
	  We have incremented the reference 2 lines above, and
	  gst_pad_store_sticky_event() does not take a reference, therefore release it
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3443>

2022-11-15 21:42:34 +1100  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/gstadaptivedemuxutils.c:
	  adaptivedemux2: Fix sticky event storage.
	  Use the new gst_event_type_to_sticky_ordering() method to retrieve
	  the order that sticky events should be sent / stored in, instead
	  of assuming it's the event type value.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3387>

2022-11-15 13:50:13 -0500  Nicolas Dufresne <nicolas.dufresne@collabora.com>

	* sys/v4l2/gstv4l2bufferpool.c:
	* sys/v4l2/gstv4l2object.c:
	  video: Add arbitrary tile dimensions support
	  In current tile representation, only tiles with power of two
	  width and height in bytes are supported. This limitation
	  prevents adding more complex tiles formats.
	  In this patch, we deprecate tile_ws and tile_hs from GstVideoFormatInfo and
	  replace if with an array of GstVideoTileInfo. Each plane tiles are then
